:root{--bg: #0b120e;--bg-soft: #0f1712;--surface: #141d17;--surface-2: #1b2620;--border: #263229;--text: #f1f6f2;--text-dim: #90a698;--lime: #a3e635;--emerald: #34d399;--accent-grad: linear-gradient(135deg, #a3e635, #22c55e);--accent-dark: #16351f;--danger: #fb7185;--warn: #fbbf24;--radius: 18px;--radius-sm: 12px}*{box-sizing:border-box;margin:0;padding:0}html,body{background:radial-gradient(1200px 500px at 50% -200px,#14251a 0%,var(--bg) 60%);background-color:var(--bg);color:var(--text);font-family:Segoe UI Variable,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-tap-highlight-color:transparent;overflow-x:hidden}#root{min-height:100dvh}.app{max-width:520px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column;padding-bottom:calc(86px + env(safe-area-inset-bottom))}.topbar{display:flex;align-items:center;gap:12px;padding:18px 20px 12px;position:sticky;top:0;background:linear-gradient(color-mix(in srgb,var(--bg) 92%,transparent) 75%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:5}.brand-btn{display:flex;align-items:center;gap:12px;background:none;padding:4px 6px 4px 4px;border-radius:14px}.brand-btn:active{background:var(--surface-2)}.logo-mark{position:relative;width:38px;height:38px;border-radius:12px;background:var(--accent-grad);display:flex;align-items:center;justify-content:center;color:#0b120e;box-shadow:0 4px 14px #a3e63540;flex-shrink:0}.topbar .wordmark{line-height:1.1;display:flex;flex-direction:column;align-items:flex-start}.topbar .brand-title{font-size:1.06rem;font-weight:800;letter-spacing:-.02em;color:var(--text)}.topbar .wordmark .sub{font-size:.7rem;color:var(--text-dim);letter-spacing:.08em;text-transform:uppercase}.topbar .spacer{flex:1}.status-dot{position:absolute;right:-3px;bottom:-3px;width:12px;height:12px;border-radius:50%;background:var(--emerald);border:2.5px solid var(--bg)}.status-dot.off{background:var(--text-dim)}.status-dot.pending{background:var(--warn)}.badge{display:inline-flex;align-items:center;gap:5px;font-size:.72rem;font-weight:600;padding:5px 11px;border-radius:99px;background:var(--surface-2);color:var(--text-dim);border:1px solid var(--border)}.badge .dot{width:7px;height:7px;border-radius:50%;background:var(--emerald)}.badge.off .dot{background:var(--text-dim)}.badge.warn{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 40%,transparent)}main{flex:1;padding:6px 18px 24px}.card{background:linear-gradient(180deg,var(--surface) 0%,var(--bg-soft) 100%);border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-bottom:12px}.card h3{font-size:.98rem;font-weight:700;letter-spacing:-.01em;margin-bottom:2px}.card .sub{color:var(--text-dim);font-size:.82rem;line-height:1.45}.card.tappable{transition:transform .08s ease,border-color .15s;cursor:pointer}.card.tappable:active{transform:scale(.985);border-color:#3a4d3f}.row{display:flex;align-items:center;gap:12px}.row .grow{flex:1;min-width:0}.icon-chip{width:42px;height:42px;border-radius:13px;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--surface-2);color:var(--lime);border:1px solid var(--border)}.icon-chip.amber{color:var(--warn)}.icon-chip.red{color:var(--danger)}.icon-chip.blue{color:#7dd3fc}.hero{padding:6px 2px 14px}.hero .greet{font-size:1.45rem;font-weight:800;letter-spacing:-.03em}.hero .date{color:var(--text-dim);font-size:.85rem;margin-top:2px}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}.stat{background:linear-gradient(180deg,var(--surface) 0%,var(--bg-soft) 100%);border:1px solid var(--border);border-radius:var(--radius);padding:14px;display:flex;flex-direction:column;gap:8px}.stat .num{font-size:1.4rem;font-weight:800;letter-spacing:-.02em}.stat .lbl{font-size:.76rem;color:var(--text-dim);font-weight:500}.section-head{display:flex;align-items:center;justify-content:space-between;margin:18px 2px 10px}.section-head h2{display:flex;align-items:center;gap:8px;font-size:.82rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--text-dim)}.section-head h2 svg{color:var(--lime)}button{font:inherit;border:none;border-radius:var(--radius-sm);padding:11px 16px;background:var(--surface-2);color:var(--text);font-weight:600;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:7px}button.primary{background:var(--accent-grad);color:#0b120e;font-weight:700;box-shadow:0 4px 14px #a3e63533}button.primary:active{filter:brightness(.92)}button.primary:disabled{filter:saturate(.3) brightness(.7);box-shadow:none}button.ghost{background:transparent;color:var(--text-dim)}button.danger{background:transparent;color:var(--danger);border:1px solid color-mix(in srgb,var(--danger) 45%,transparent)}button.small{padding:7px 13px;font-size:.84rem;border-radius:10px}.empty{text-align:center;color:var(--text-dim);padding:40px 16px;font-size:.92rem}.tabbar{position:fixed;bottom:calc(10px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);width:min(96%,500px);display:flex;background:color-mix(in srgb,var(--surface) 88%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--border);border-radius:22px;padding:8px;z-index:10;box-shadow:0 10px 30px #00000073}.tabbar button{flex:1;min-width:0;background:none;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:.58rem;font-weight:600;color:var(--text-dim);padding:7px 1px;border-radius:12px}.tabbar button span,.tabbar button{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.tabbar button.active{color:#0b120e;background:var(--accent-grad);box-shadow:0 4px 12px #a3e63540}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#040806a8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:20;display:flex;align-items:flex-end;justify-content:center}.sheet{background:var(--surface);border-radius:26px 26px 0 0;border:1px solid var(--border);border-bottom:none;width:100%;max-width:520px;max-height:88dvh;overflow-y:auto;padding:12px 18px calc(20px + env(safe-area-inset-bottom))}.sheet:before{content:"";display:block;width:44px;height:4px;border-radius:4px;background:var(--border);margin:0 auto 14px}.sheet h2{font-size:1.08rem;font-weight:800;letter-spacing:-.02em;margin-bottom:16px}label.field{display:block;margin-bottom:13px}label.field span{display:block;font-size:.74rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-dim);margin-bottom:6px}input,select,textarea{font:inherit;width:100%;background:var(--bg-soft);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 13px}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--lime);box-shadow:0 0 0 3px #a3e6351f}.form-actions{display:flex;gap:10px;margin-top:18px}.form-actions button{flex:1;padding:13px}.pill{display:inline-flex;align-items:center;gap:4px;font-size:.7rem;font-weight:600;padding:3px 10px;border-radius:99px;border:1px solid var(--border);color:var(--text-dim)}.pill.green{color:var(--lime);border-color:color-mix(in srgb,var(--lime) 40%,transparent);background:#a3e63512}.pill.amber{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 40%,transparent)}.pill.red{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 45%,transparent)}.amount-pos{color:var(--lime);font-weight:700}.amount-neg{color:var(--danger);font-weight:700}.result-box{border-radius:var(--radius);padding:14px;margin-top:14px;border:1px solid var(--border);background:var(--surface-2)}.result-box.SURPLUS{border-color:color-mix(in srgb,var(--lime) 45%,transparent)}.result-box.ADEQUATE{border-color:color-mix(in srgb,var(--warn) 50%,transparent)}.result-box.DEFICIT{border-color:color-mix(in srgb,var(--danger) 55%,transparent)}.result-box .headline{font-weight:800;margin-bottom:8px;display:flex;align-items:center;flex-wrap:wrap;gap:6px}.result-box dl{display:grid;grid-template-columns:auto auto;gap:5px 12px;font-size:.86rem}.result-box dt{color:var(--text-dim)}.result-box dd{text-align:right;font-weight:600}.back-btn{background:none;color:var(--lime);padding:6px 10px 6px 0;font-size:.92rem;font-weight:700}.alert-banner{border-radius:var(--radius);padding:13px 15px;margin-bottom:12px;font-size:.9rem}.alert-banner.fire{background:linear-gradient(180deg,#2a1707,#1d1005);border:1px solid color-mix(in srgb,#f97316 55%,transparent);color:#fed7aa}.alert-banner.theft{background:linear-gradient(180deg,#2a0d12,#1c080b);border:1px solid color-mix(in srgb,var(--danger) 60%,transparent);color:#fecdd3}.forecast-strip{display:flex;gap:7px;overflow-x:auto;padding-bottom:4px}.forecast-day{flex:1;min-width:60px;text-align:center;background:var(--surface-2);border:1px solid var(--border);border-radius:14px;padding:10px 4px}.forecast-day .temp{font-weight:800;font-size:1.05rem}.forecast-day .sub{font-size:.72rem}.weather-row{display:flex;align-items:center;gap:10px;padding:10px 2px;border-bottom:1px solid var(--border);font-size:.92rem}.weather-row:last-of-type{border-bottom:none}.wr-day{width:64px;flex-shrink:0}.wr-temps{width:76px;flex-shrink:0}.wr-rain{width:62px;flex-shrink:0}.wr-wind{flex:1}.scanner-cta{background:linear-gradient(135deg,#1c2f1f,#12271c 55%,#0f2418);border-color:color-mix(in srgb,var(--lime) 35%,transparent)}.photo-drop{display:flex;align-items:center;justify-content:center;gap:8px;min-height:116px;border:1.5px dashed var(--border);border-radius:var(--radius);color:var(--text-dim);cursor:pointer;overflow:hidden;background:var(--bg-soft)}.photo-drop img{width:100%;max-height:220px;object-fit:cover}.chip-wrap{display:flex;flex-wrap:wrap;gap:8px}.chip{font-size:.82rem;font-weight:500;padding:9px 13px;border-radius:99px;background:var(--bg-soft);border:1px solid var(--border);color:var(--text-dim)}.chip.on{background:var(--accent-grad);color:#0b120e;font-weight:700;border-color:transparent}.voice-fab{position:fixed;right:18px;bottom:calc(96px + env(safe-area-inset-bottom));width:58px;height:58px;border-radius:50%;background:var(--accent-grad);color:#0b120e;box-shadow:0 8px 24px #a3e63559;z-index:15}.voice-fab:active{transform:scale(.93)}.mic-btn{width:100%;padding:16px;font-size:1.02rem}.mic-btn.listening{animation:pulse 1.2s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.market-row{display:flex;align-items:center;gap:12px}.star-btn{background:none;padding:6px;color:var(--text-dim);flex-shrink:0}.star-btn.on{color:var(--warn)}.star-btn.on svg{fill:var(--warn)}.fav-grid{display:grid;gap:8px}.fav-tile{background:var(--surface-2);border:1px solid var(--border);border-radius:14px;padding:10px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:3px}.fav-tile .sub{font-size:.72rem}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.cal-head{margin-bottom:4px}.cal-wd{text-align:center;font-size:.68rem;font-weight:700;color:var(--text-dim);padding:2px 0}.cal-cell{aspect-ratio:1 / 1.15;background:var(--bg-soft);border:1px solid var(--border);border-radius:10px;padding:4px 3px;display:flex;flex-direction:column;align-items:center;gap:1px;position:relative}.cal-cell.empty{background:none;border:none}.cal-cell.today{border-color:var(--lime);box-shadow:0 0 0 1px var(--lime) inset}.cal-num{font-size:.82rem;font-weight:700}.cal-temp{font-size:.64rem;font-weight:700}.cal-dots{display:flex;gap:2px;flex-wrap:wrap;justify-content:center;margin-top:auto}.cal-dot{width:5px;height:5px;border-radius:50%}.plan-item{display:flex;align-items:center;gap:10px;padding:10px 2px;border-bottom:1px solid var(--border)}.plan-check{width:26px;height:26px;border-radius:8px;background:var(--bg-soft);border:1.5px solid var(--border);color:#0b120e;font-weight:800;flex-shrink:0;padding:0}.plan-check.on{background:var(--accent-grad);border-color:transparent}.plan-cat{width:4px;align-self:stretch;border-radius:3px;flex-shrink:0}.stat-btn{width:100%;text-align:left;align-items:flex-start;cursor:pointer}.stat-btn.open{border-color:var(--lime)}.chev{display:inline-block;transition:transform .15s;font-size:.8rem}.chev.up{transform:rotate(180deg)}.dropdown-menu{background:linear-gradient(180deg,var(--surface) 0%,var(--bg-soft) 100%);border:1px solid color-mix(in srgb,var(--lime) 35%,transparent);border-radius:var(--radius);padding:6px;margin-bottom:12px;display:grid;grid-template-columns:1fr 1fr;gap:6px;animation:dropIn .14s ease-out}@keyframes dropIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.menu-item{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 10px;font-size:.86rem;font-weight:600;color:var(--text);justify-content:flex-start;text-align:left}.menu-item:active{background:var(--accent-dark);border-color:var(--lime)}.icon-btn{padding:8px;border-radius:12px;color:var(--text-dim)}.icon-btn:active{color:var(--lime)}.settings-group{margin-bottom:20px}.settings-label{display:flex;align-items:center;gap:7px;font-size:.74rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);margin-bottom:9px}.settings-label svg{color:var(--lime)}.seg-row{display:flex;gap:7px;flex-wrap:wrap}.seg{flex:1;min-width:72px;background:var(--bg-soft);border:1px solid var(--border);color:var(--text-dim);font-weight:600;padding:10px 8px}.seg.on{background:var(--accent-grad);color:#0b120e;font-weight:700;border-color:transparent}.toggle-row{display:flex;align-items:center;justify-content:space-between;padding:12px 2px;border-bottom:1px solid var(--border);cursor:pointer;font-size:.94rem}.toggle-row:last-child{border-bottom:none}.toggle-row input{display:none}.toggle-row .switch{width:44px;height:26px;border-radius:99px;background:var(--surface-2);border:1px solid var(--border);position:relative;transition:background .15s;flex-shrink:0}.toggle-row .switch:after{content:"";position:absolute;top:2px;left:3px;width:20px;height:20px;border-radius:50%;background:var(--text-dim);transition:transform .15s,background .15s}.toggle-row input:checked+.switch{background:var(--accent-grad);border-color:transparent}.toggle-row input:checked+.switch:after{transform:translate(17px);background:#0b120e}.back-top{width:40px;height:40px;border-radius:50%;background:var(--surface-2);color:var(--lime);border:1.5px solid var(--border);box-shadow:0 2px 8px #00000059;flex-shrink:0;margin-right:2px}.back-top:active{transform:scale(.92);background:var(--accent-dark)}.sos-btn{width:40px;height:40px;border-radius:50%;background:#dc2626;color:#fff;font-size:.66rem;font-weight:800;letter-spacing:.04em;padding:0;flex-shrink:0;border:2px solid #7f1d1d;box-shadow:0 3px 12px #dc262666;-webkit-user-select:none;user-select:none;touch-action:none}.sos-btn:active{transform:scale(.94)}.sos-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:flex-end;justify-content:center;animation:sosFlash .9s infinite}@keyframes sosFlash{0%,to{background-color:#450a0ad1}50%{background-color:#7f1d1de6}}.sos-sheet{width:100%;max-width:520px;background:linear-gradient(180deg,#5b0d0d,#1c0505);border:1px solid rgba(255,255,255,.18);border-bottom:none;border-radius:26px 26px 0 0;padding:16px 18px calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;gap:10px;box-shadow:0 -8px 30px #00000080;animation:sosSlideUp .28s cubic-bezier(.2,.8,.2,1)}.sos-sheet:before{content:"";width:44px;height:4px;border-radius:4px;background:#fff6;margin-bottom:6px}@keyframes sosSlideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.sos-title{display:flex;align-items:center;gap:10px;color:#fff;font-size:1.5rem;font-weight:900;letter-spacing:.06em;margin-bottom:2px}.sos-loc{color:#fecaca;font-size:.88rem;display:flex;align-items:center;gap:5px;text-align:center}.sos-action{display:flex;align-items:center;justify-content:center;width:100%;max-width:340px;background:#ffffff1f;border:1px solid rgba(255,255,255,.35);color:#fff;font-weight:700;font-size:1rem;border-radius:14px;padding:14px;text-decoration:none}.sos-action:active{background:#ffffff40}.sos-stop{margin-top:10px;width:100%;max-width:340px;background:#fff;color:#7f1d1d;font-weight:900;font-size:1.05rem;padding:15px;border-radius:14px}.exit-toast{position:fixed;bottom:calc(104px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);background:var(--surface-2);border:1px solid var(--border);color:var(--text);padding:10px 18px;border-radius:99px;font-size:.85rem;z-index:30;box-shadow:0 4px 16px #00000073}
