:root{--bg: #f6f5f1;--surface: #ffffff;--ink: #0f1a14;--ink-2: #4a5550;--ink-3: #8a948f;--line: #e3e1d8;--line-2: #cfccc1;--moss: #3b6d11;--moss-2: #97c459;--moss-soft: #eaf3de;--warn: #ba7517;--warn-soft: #faeeda;--danger: #a32d2d;--danger-soft: #fcebeb;--success: #0f6e56;--success-soft: #e1f5ee;--radius: 12px;--radius-sm: 8px;--shadow: 0 1px 0 rgba(15,26,20,.04);--font: -apple-system, BlinkMacSystemFont, "Inter", "Segoe UI", system-ui, sans-serif;--mono: "JetBrains Mono", "SF Mono", Menlo, monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);background:var(--bg);color:var(--ink);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}button{font-family:inherit}input,select,textarea{font-family:inherit;font-size:16px}.app{max-width:520px;margin:0 auto;min-height:100vh;background:var(--bg);padding-bottom:env(safe-area-inset-bottom)}.topbar{position:sticky;top:0;z-index:10;background:var(--bg);padding:14px 16px 10px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.topbar h1{font-size:18px;font-weight:600;margin:0;letter-spacing:-.01em}.topbar .who{font-size:12px;color:var(--ink-3)}.tabs{display:flex;gap:6px;padding:10px 16px;background:var(--bg);border-bottom:1px solid var(--line);position:sticky;top:53px;z-index:9}.tab{flex:1;padding:8px 12px;border:1px solid var(--line);background:var(--surface);border-radius:var(--radius-sm);font-size:13px;color:var(--ink-2);cursor:pointer;font-weight:500}.tab.active{background:var(--ink);color:var(--surface);border-color:var(--ink)}.content{padding:14px 16px 100px}.summary{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:16px}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:12px}.stat .lbl{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--ink-3);margin-bottom:4px}.stat .val{font-size:22px;font-weight:600;letter-spacing:-.02em}.stat.warn .val{color:var(--warn)}.list{display:flex;flex-direction:column;gap:8px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px;display:flex;align-items:center;gap:12px;cursor:pointer;transition:border-color .15s ease}.card:active{border-color:var(--line-2);transform:scale(.998)}.card .swatch{width:6px;height:44px;border-radius:3px;background:var(--moss);flex-shrink:0}.card.low .swatch{background:var(--warn)}.card.empty .swatch{background:var(--danger)}.card .info{flex:1;min-width:0}.card .name{font-size:15px;font-weight:600;letter-spacing:-.01em}.card .meta{font-size:12px;color:var(--ink-3);margin-top:2px}.card .qty{text-align:right}.card .qty .boxes{font-size:17px;font-weight:600;letter-spacing:-.02em}.card .qty .sqm{font-size:12px;color:var(--ink-2);margin-top:2px}.card.low .qty .boxes{color:var(--warn)}.card.empty .qty .boxes{color:var(--danger)}.fab-row{position:fixed;bottom:0;left:0;right:0;display:flex;gap:8px;padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:linear-gradient(to bottom,transparent,var(--bg) 30%);max-width:520px;margin:0 auto}.fab{flex:1;padding:14px;border:none;border-radius:var(--radius);font-size:15px;font-weight:600;cursor:pointer;letter-spacing:-.01em}.fab.in{background:var(--success-soft);color:var(--success)}.fab.out{background:var(--danger-soft);color:var(--danger)}.fab.convert{background:var(--warn-soft);color:var(--warn)}.fab:active{transform:scale(.98)}.group-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.group-card.low{border-color:var(--warn)}.group-head{display:flex;align-items:center;gap:12px;padding:12px 14px;cursor:pointer;-webkit-user-select:none;user-select:none}.group-head:active{background:var(--bg)}.group-head .swatch{width:4px;height:36px;border-radius:2px;background:var(--moss);flex-shrink:0}.group-card.low .group-head .swatch{background:var(--warn)}.group-head .info{flex:1;min-width:0}.group-head .info .name{font-size:14px;font-weight:600;letter-spacing:-.01em}.group-head .info .meta{font-size:11px;color:var(--ink-3);margin-top:2px}.group-head .info .name .low-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--warn);margin-left:6px;vertical-align:middle}.group-head .qty{text-align:right;font-variant-numeric:tabular-nums}.group-head .qty .boxes{font-size:14px;font-weight:600}.group-head .qty .sqm{font-size:11px;color:var(--ink-2);margin-top:2px}.group-head .chev{color:var(--ink-3);font-size:12px;transition:transform .15s ease}.group-head .chev.open{transform:rotate(90deg)}.group-lines{background:var(--bg);border-top:1px solid var(--line)}.group-line{display:flex;align-items:center;gap:10px;padding:10px 14px 10px 22px;border-bottom:1px solid var(--line);cursor:pointer;font-variant-numeric:tabular-nums}.group-line:last-child{border-bottom:none}.group-line:active{background:var(--surface)}.group-line .dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.group-line .info{flex:1;min-width:0}.group-line .info .name{font-size:13px;font-weight:500}.group-line .info .meta{font-size:11px;color:var(--ink-3);margin-top:1px}.group-line .qty{text-align:right}.group-line .qty .boxes{font-size:13px;font-weight:500}.group-line .qty .boxes .unit{font-size:10px;color:var(--ink-3);font-weight:400}.group-line .qty .sqm{font-size:11px;color:var(--ink-2);margin-top:1px}.group-line.low .qty .boxes{color:var(--warn)}.group-line.empty .qty .boxes{color:var(--danger)}.move .pill.convert{background:var(--warn-soft);color:var(--warn)}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f1a1473;z-index:100;display:flex;align-items:flex-end;justify-content:center}.modal{background:var(--surface);width:100%;max-width:520px;border-radius:var(--radius) var(--radius) 0 0;padding:20px 16px calc(20px + env(safe-area-inset-bottom));animation:slideUp .18s ease-out}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal h2{font-size:17px;font-weight:600;margin:0 0 14px;letter-spacing:-.01em}.modal .row{margin-bottom:12px}.modal label{display:block;font-size:12px;color:var(--ink-3);margin-bottom:4px;text-transform:uppercase;letter-spacing:.5px}.modal input,.modal select,.modal textarea{width:100%;padding:12px;border:1px solid var(--line-2);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);outline:none}.modal input:focus,.modal select:focus,.modal textarea:focus{border-color:var(--moss)}.modal .actions{display:flex;gap:8px;margin-top:8px}.modal .actions button{flex:1;padding:12px;border-radius:var(--radius-sm);border:1px solid var(--line-2);background:var(--surface);font-weight:600;font-size:14px;cursor:pointer}.modal .actions .primary{background:var(--ink);color:var(--surface);border-color:var(--ink)}.bar-row{margin-bottom:12px}.bar-row .head{display:flex;justify-content:space-between;font-size:13px;margin-bottom:4px}.bar-row .head .right{color:var(--ink-3);font-variant-numeric:tabular-nums}.bar-track{height:8px;background:var(--line);border-radius:4px;overflow:hidden}.bar-fill{height:100%;background:var(--moss);border-radius:4px;transition:width .25s ease}.move{display:grid;grid-template-columns:auto 1fr auto;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);align-items:center}.move:last-child{border-bottom:none}.move .pill{font-size:11px;font-weight:600;padding:3px 8px;border-radius:999px;text-transform:uppercase;letter-spacing:.4px}.move .pill.in{background:var(--success-soft);color:var(--success)}.move .pill.out{background:var(--danger-soft);color:var(--danger)}.move .pill.adjust{background:var(--warn-soft);color:var(--warn)}.move .body .name{font-size:14px;font-weight:500}.move .body .meta{font-size:12px;color:var(--ink-3);margin-top:2px}.move .qty{font-weight:600;font-variant-numeric:tabular-nums}.empty-state{text-align:center;padding:40px 20px;color:var(--ink-3);font-size:14px}.error-banner{background:var(--danger-soft);color:var(--danger);padding:10px 12px;border-radius:var(--radius-sm);font-size:13px;margin-bottom:12px}.login-screen{padding:40px 20px;max-width:420px;margin:0 auto}.login-screen h1{font-size:28px;margin:0 0 8px;letter-spacing:-.02em}.login-screen .sub{color:var(--ink-3);font-size:14px;margin-bottom:28px}.login-screen .field{margin-bottom:14px}.login-screen .field label{display:block;font-size:12px;color:var(--ink-3);margin-bottom:4px;text-transform:uppercase;letter-spacing:.5px}.login-screen .field input{width:100%;padding:12px;border:1px solid var(--line-2);border-radius:var(--radius-sm);outline:none}.login-screen .field input:focus{border-color:var(--moss)}.login-screen .submit{width:100%;padding:14px;background:var(--ink);color:var(--surface);border:none;border-radius:var(--radius-sm);font-size:15px;font-weight:600;cursor:pointer;margin-top:8px}.login-screen .toggle{text-align:center;margin-top:14px;font-size:13px;color:var(--ink-2)}.login-screen .toggle button{background:none;border:none;color:var(--moss);font-weight:600;cursor:pointer;padding:0;font-size:13px}.brand-mark{display:inline-block;width:28px;height:28px;background:var(--moss);border-radius:8px;margin-right:10px;vertical-align:middle;position:relative}.brand-mark:after{content:"";position:absolute;top:6px;right:6px;bottom:6px;left:6px;background:var(--moss-2);border-radius:4px}.skeleton{background:linear-gradient(90deg,var(--line) 25%,var(--bg) 50%,var(--line) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite;border-radius:var(--radius);height:70px;margin-bottom:8px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}
