:root{--brand:#288dc1;--link:#1e76a6;--hover:#155a80;--accent:#5eb3db;--surface-tint:#e9f3f9;--ink:#13303f;--page:#f7f9fb;--card:#fff;--border:#d4e2ec;--muted:#5b7280;--critical:#b4231f;--watch:#b06a00;--good:#1d7a4c;--radius:10px;--tap:44px;--font:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;--mono:"IBM Plex Mono", ui-monospace, "Cascadia Mono", Consolas, monospace}*{box-sizing:border-box}body{background:var(--page);color:var(--ink);font-family:var(--font);padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);margin:0;font-size:16px;line-height:1.5}.page{max-width:900px;margin:0 auto;padding:16px 16px 48px}.page-title{color:var(--ink);margin:0 0 2px;font-size:26px}.subtitle{color:var(--muted);margin:4px 0 0;font-size:.95rem}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);margin-top:16px;padding:16px}.app-nav{min-height:var(--tap);border-bottom:2px solid var(--brand);align-items:center;gap:12px;padding:8px 0;display:flex}.nav-brand{color:var(--ink);align-items:center;gap:10px;font-size:1.1rem;font-weight:600;text-decoration:none;display:inline-flex}.nav-brand img{width:auto;height:32px}.status{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-tint);margin:12px 0 0;padding:10px 12px}.status-loading{color:var(--muted)}.status-ok{color:var(--good);border-color:var(--good);background:#eaf6ef}.status-error{color:var(--critical);border-color:var(--critical);background:#fbeceb}button,.button{min-height:var(--tap);border-radius:var(--radius);border:1px solid var(--brand);background:var(--brand);color:#fff;font:inherit;cursor:pointer;padding:0 16px;font-weight:600}button:hover,.button:hover{background:var(--hover);border-color:var(--hover)}button:disabled{opacity:.55;cursor:default}button.secondary{background:var(--surface-tint);color:var(--ink);border-color:var(--border)}input,select,textarea{min-height:var(--tap);border:1px solid var(--border);border-radius:var(--radius);font:inherit;color:var(--ink);background:var(--card);width:100%;padding:8px 12px;font-size:16px}:is(input:focus,select:focus,textarea:focus,button:focus-visible){outline:3px solid var(--accent);outline-offset:1px}.auth-shell{justify-content:center;align-items:flex-start;min-height:100vh;padding:24px 16px 48px;display:flex}.auth-stack{flex-direction:column;gap:16px;width:100%;max-width:460px;display:flex}.auth-brand{text-align:center}.auth-logo{width:auto;height:48px}.auth-title{margin:8px 0 0;font-size:28px}.auth-tagline{color:var(--muted);margin:2px 0 0}.auth-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.auth-card-header{background:linear-gradient(135deg, var(--brand), var(--hover));color:#fff;padding:14px 16px}.auth-card-title{margin:0;font-size:1.15rem;font-weight:700}.auth-card-subtitle{opacity:.9;margin:2px 0 0;font-size:.95rem}.auth-card-body{flex-direction:column;gap:14px;padding:16px;display:flex}.auth-alert{border:1px solid var(--critical);border-radius:var(--radius);color:var(--critical);background:#fbeceb;align-items:flex-start;gap:8px;padding:10px 12px;display:flex}.auth-muted{color:var(--muted);margin:0}.auth-note{color:var(--muted);margin:0 0 8px;font-size:.92rem}.auth-divider{border-top:1px solid var(--border);padding-top:12px}.auth-footer{text-align:center;color:var(--muted);font-size:.85rem}.auth-provider-btn{width:100%;color:var(--ink);border:1px solid var(--border);background:#fff;justify-content:center;align-items:center;gap:10px;display:inline-flex}.auth-provider-btn:hover{background:var(--surface-tint);border-color:var(--accent)}.link-btn{color:var(--link);min-height:var(--tap);background:0 0;border:none;padding:0;font-weight:500;text-decoration:underline}.link-btn:hover{color:var(--hover);background:0 0}.pin-prompt{text-align:center;margin:0;font-weight:600}.tech-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;display:grid}.tech-btn{background:var(--surface-tint);color:var(--ink);border-color:var(--border);min-height:56px;font-size:1.05rem}.tech-btn:hover{border-color:var(--accent);background:#dcecf6}.tech-btn-current{background:var(--brand);color:#fff;border-color:var(--brand)}.tech-btn-current:hover{background:var(--hover)}.pin-dots{justify-content:center;gap:14px;padding:6px 0;display:flex}.pin-dot{border:2px solid var(--brand);background:0 0;border-radius:50%;width:16px;height:16px}.pin-dot-on{background:var(--brand)}.pin-pad{grid-template-columns:repeat(3,1fr);gap:10px;max-width:300px;margin:0 auto;display:grid}.pin-key{background:var(--card);min-height:64px;color:var(--ink);border:1px solid var(--border);font-size:1.5rem;font-weight:600}.pin-key:hover{background:var(--surface-tint);border-color:var(--accent)}.pin-key-muted{color:var(--muted);font-size:1.2rem}.pin-key-blank{visibility:hidden}.enroll-form{flex-direction:column;gap:10px;display:flex}.enroll-form input{font-family:var(--mono);letter-spacing:.12em;text-align:center;text-transform:uppercase;font-size:1.3rem}.nav-links{flex-wrap:wrap;flex:1;gap:4px;display:flex}.nav-link{min-height:var(--tap);color:var(--link);border-bottom:3px solid #0000;align-items:center;padding:0 10px;text-decoration:none;display:inline-flex}.nav-link:hover{color:var(--hover)}.nav-link-current{color:var(--ink);border-bottom-color:var(--brand);font-weight:600}.nav-me{align-items:center;gap:10px;margin-left:auto;display:flex}.nav-who{flex-direction:column;align-items:flex-end;font-size:.95rem;line-height:1.2;display:flex}.nav-role{color:var(--muted);font-size:.8rem}.nav-signout{background:var(--surface-tint);color:var(--ink);border-color:var(--border)}.nav-signout:hover{border-color:var(--accent);background:#dcecf6}@media (max-width:600px){.nav-who{display:none}.nav-links{white-space:nowrap;scrollbar-width:none;-webkit-overflow-scrolling:touch;flex-wrap:nowrap;overflow-x:auto}.nav-links::-webkit-scrollbar{display:none}.nav-link{flex-shrink:0;padding:0 8px}.nav-brand span{display:none}}.detail{margin:8px 0 0}.admin-form{flex-direction:column;gap:12px;margin-bottom:16px;display:flex}.admin-row{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;display:grid}.admin-row label,.admin-actions label{color:var(--muted);flex-direction:column;gap:4px;font-size:.9rem;display:flex}.admin-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.admin-item{border:1px solid var(--border);border-radius:var(--radius);background:var(--card)}.admin-item-inactive{opacity:.65}.admin-item-head{width:100%;color:var(--ink);text-align:left;background:0 0;border:none;flex-direction:column;align-items:flex-start;gap:2px;padding:10px 12px;font-weight:500;display:flex}.admin-item-head:hover{background:var(--surface-tint)}.admin-item-static:hover{cursor:default;background:0 0}.admin-item-title{font-weight:600}.admin-item-meta{color:var(--muted);font-size:.88rem;font-weight:400}.admin-item-body{border-top:1px solid var(--border);padding:0 12px 12px}.admin-actions{flex-wrap:wrap;align-items:flex-end;gap:10px;padding:10px 12px 12px;display:flex}.admin-actions input{width:140px;font-family:var(--mono)}.admin-add{width:100%;min-height:52px;margin-top:12px}.admin-form-open{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-tint);margin-top:12px;padding:14px}.admin-actions-plain{padding:0}.enroll-code{border:2px dashed var(--brand);border-radius:var(--radius);background:var(--surface-tint);text-align:center;margin-top:12px;padding:14px}.enroll-code-label{color:var(--muted);margin:0}.enroll-code-value{font-family:var(--mono);letter-spacing:.15em;color:var(--ink);white-space:nowrap;margin:6px 0 0;font-size:2.4rem;overflow-x:auto}.home-launch{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-top:16px;display:grid}.home-launch-btn{border-radius:var(--radius);background:var(--brand);color:#fff;flex-direction:column;gap:4px;min-height:84px;padding:18px 16px;text-decoration:none;display:flex}.home-launch-btn:hover{background:var(--hover)}.home-launch-btn strong{font-size:1.15rem}.home-launch-secondary{background:var(--surface-tint);color:var(--ink);border:1px solid var(--border)}.home-launch-secondary:hover{background:#dcecf6}.plant-chooser{max-width:320px;color:var(--muted);flex-direction:column;gap:4px;margin-top:12px;font-size:.9rem;display:flex}.pick-list{flex-direction:column;gap:8px;margin:12px 0 0;padding:0;list-style:none;display:flex}.pick-btn{text-align:left;background:var(--card);width:100%;color:var(--ink);border:1px solid var(--border);grid-template-columns:1fr auto;grid-template-areas:"title verb""meta verb";align-items:center;gap:2px 12px;min-height:60px;padding:12px 14px;font-weight:500;display:grid}.pick-btn:hover{background:var(--surface-tint);border-color:var(--accent)}.pick-btn-trial{border-color:var(--brand)}.pick-title{grid-area:title;font-weight:600}.pick-meta{color:var(--muted);grid-area:meta;font-size:.88rem;font-weight:400}.pick-verb{color:var(--link);grid-area:verb;font-weight:600}.pick-btn-plain{border-style:dashed}.add-cart{border-top:1px solid var(--border);color:var(--muted);flex-direction:column;gap:6px;margin-top:16px;padding-top:12px;font-size:.9rem;display:flex}.add-cart-row{flex-wrap:wrap;gap:8px;display:flex}.add-cart-row input{flex:220px;min-height:52px;font-size:16px}.add-cart-row button{min-height:52px}.scan-page{flex-direction:column;gap:14px;display:flex}.scan-head{border-radius:var(--radius);background:var(--brand);color:#fff;margin:0;padding:16px 18px 18px}.scan-head-where{opacity:.9;margin:0 0 4px;font-size:.95rem}.scan-head-title{color:#fff;margin:0;font-size:1.5rem;line-height:1.2}.scan-tap{border:3px dashed var(--brand);background:var(--surface-tint);min-height:190px;color:var(--ink);text-align:center;cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:20px;display:flex}.scan-tap:active{background:#dcecf6}.scan-tap-busy{cursor:progress;border-style:solid}.scan-tap-icon{font-size:2.6rem;line-height:1}.scan-tap-text{font-size:1.25rem;font-weight:600}.scan-tap-hint{color:var(--muted);font-size:.9rem}.scan-photos{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px;display:grid}.scan-photo{margin:0}.scan-photo-frame{border-radius:var(--radius);background:#111;position:relative;overflow:hidden}.scan-photo-frame img{width:100%;height:auto;display:block}.scan-box{box-sizing:border-box;pointer-events:none;border:2px solid #ff7a1a;border-radius:4px;position:absolute}.scan-box-label{color:#fff;max-width:calc(100% + 2px);font-family:var(--mono);white-space:nowrap;text-overflow:ellipsis;background:#ff7a1a;border-radius:3px 0 4px;padding:2px 6px;font-size:.75rem;position:absolute;top:-1px;left:-1px;overflow:hidden}.scan-photo-caption{color:var(--muted);justify-content:space-between;align-items:center;margin-top:4px;font-size:.85rem;display:flex}.link-btn.disabled{opacity:.6;pointer-events:none}.scan-list .count-list{margin-top:0}.scan-list .count-row:first-child{border-top:0;padding-top:4px}.count-value{flex-shrink:0;font-size:1.25rem;font-weight:700}.scan-add-link{min-height:var(--tap);margin-top:12px;display:block}.scan-add{margin-top:12px}.scan-status{text-align:center;color:var(--muted);margin:0;font-size:.9rem}.inventory-summary{color:var(--muted);margin:14px 0 10px}.check-row{min-height:var(--tap);color:var(--muted);align-items:center;gap:8px;margin:12px 0 0;font-size:.9rem;display:flex}.check-row input{width:20px;height:20px}.check-row-tight{min-height:36px;margin-top:4px}.role-options{border:0;min-width:0;margin:0;padding:0}.role-options legend{color:var(--muted);margin-bottom:4px;padding:0;font-size:.9rem}.role-option{border:1px solid var(--border);border-radius:var(--radius);background:var(--card);cursor:pointer;align-items:flex-start;gap:10px;margin-bottom:6px;padding:8px 10px;display:flex}.role-option-on{border-color:var(--brand);background:var(--surface-tint)}.role-option input{flex-shrink:0;width:20px;height:20px;margin-top:2px}.role-option>span{flex-direction:column;gap:2px;display:flex}.role-help{color:var(--muted);font-size:.85rem}.place-list{margin:8px 0 0;padding:0;list-style:none}.place-row{border-top:1px solid var(--border);padding:4px 0}.place-row-hidden{opacity:.6}.place-row-flat{justify-content:space-between;align-items:center;gap:12px;padding:8px 0;display:flex}.place-row-head{width:100%;min-height:var(--tap);text-align:left;color:var(--ink);background:0 0;border:0;flex-direction:column;align-items:flex-start;gap:2px;padding:6px 0;display:flex}.place-row-title{font-weight:600}.place-row-meta{color:var(--muted);font-size:.85rem;font-weight:400}.shelf-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;margin:12px 0;display:grid}.shelf-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--card);flex-direction:column;margin:0;display:flex;overflow:hidden}.shelf-head{background:var(--surface-tint);padding:6px 10px;font-weight:600}.shelf-thumb{aspect-ratio:4/3;object-fit:cover;background:#000;width:100%;display:block}.shelf-empty{aspect-ratio:4/3;color:var(--muted);background:var(--page);justify-content:center;align-items:center;display:flex}.shelf-take{text-align:center;justify-content:center;align-items:center;margin:8px;display:flex}.shelf-take.disabled{opacity:.55;pointer-events:none}.button{justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.counts-head{justify-content:space-between;align-items:baseline;display:flex}.counts-head h2{margin:0}.counts-status{color:var(--muted);font-size:.9rem}.count-list{margin:12px 0 0;padding:0;list-style:none}.count-row{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:10px 0;display:flex}.count-name{flex-direction:column;min-width:0;display:flex}.count-desc{font-weight:600}.count-code{color:var(--muted);font-size:.85rem;font-family:var(--mono)}.count-controls{flex-shrink:0;align-items:center;gap:8px;display:flex}.count-btn{width:56px;min-height:56px;padding:0;font-size:1.6rem}.count-input{text-align:center;-moz-appearance:textfield;width:84px;min-height:56px;padding:0 6px;font-size:1.3rem;font-weight:600}.count-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.count-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.count-total{text-align:right;margin:12px 0 0}.count-section{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:20px 0 0;font-size:.85rem}.section-toggle{text-align:left;width:100%;min-height:52px;color:var(--ink);background:var(--surface-tint);border:1px solid var(--border);border-radius:var(--radius);justify-content:space-between;align-items:center;gap:12px;margin:20px 0 0;padding:8px 12px;font-weight:600;display:flex}.section-toggle-note{color:var(--muted);flex-shrink:0;font-size:.85rem;font-weight:400}.product-search{width:100%;min-height:52px;margin-top:8px;font-size:16px}.search-results{margin:8px 0 0;padding:0;list-style:none}.search-row{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:8px 0;display:flex}.search-add{flex-shrink:0;min-width:84px;min-height:48px}.item-new{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;margin-top:8px;padding-top:10px;display:flex}.item-new .auth-muted{margin:0}.item-new-btn{white-space:normal;text-align:center;max-width:100%}.scan-add-help{margin:0 0 4px}.scan-notice{margin:12px 0 0}.submit-btn{width:100%;min-height:60px;font-size:1.15rem}.done-card{border-color:var(--good);background:#eaf6ef}.lookup-table{border-collapse:collapse;width:100%;margin-top:12px}.lookup-table th,.lookup-table td{text-align:left;border-bottom:1px solid var(--border);padding:8px 6px}.lookup-table th.num,.lookup-table td.num{text-align:right;font-variant-numeric:tabular-nums}.lookup-table td.num{font-size:1.1rem;font-weight:600}.lookup-extra td{color:var(--watch)}.lookup-tag{color:var(--watch);margin-left:8px;font-size:.8rem;display:inline-block}@media (max-width:700px){.lookup-table thead{display:none}.lookup-table,.lookup-table tbody,.lookup-table tr,.lookup-table td{width:100%;display:block}.lookup-table tr{border:1px solid var(--border);border-radius:var(--radius);margin-bottom:8px;padding:6px 10px}.lookup-table td{border:none;justify-content:space-between;gap:12px;padding:4px 0;display:flex}.lookup-table td:before{content:attr(data-label);color:var(--muted);font-size:.85rem}.lookup-table td.num{text-align:right}}
