:root{--bg:#f8fafc;--surface:#fff;--surface-strong:#f1f5f9;--border:#d7dee8;--text:#111827;--muted:#64748b;--muted-strong:#334155;--accent:#0f766e;--accent-strong:#0b5f59;--danger:#b42318;--warning:#a16207;--good:#047857;--info:#1d4ed8;--shadow:0 10px 30px #0f172a14}*{box-sizing:border-box}html,body{background:var(--bg);min-height:100%;color:var(--text);-moz-text-size-adjust:100%;text-size-adjust:100%;margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,input,select{font:inherit}a{color:inherit}.app-shell{flex-direction:column;min-height:100vh;display:flex}.topbar{z-index:20;border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#f8fafcf0;justify-content:space-between;align-items:center;gap:12px;min-height:58px;padding:8px 14px;display:flex;position:sticky;top:0}.brand{flex-direction:column;gap:1px;min-width:0;display:flex}.brand-title{letter-spacing:0;font-weight:800;line-height:1.05}.brand-subtitle{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:.78rem;overflow:hidden}.user-chip{align-items:center;gap:8px;min-width:0;display:flex}.user-chip img{border:1px solid var(--border);border-radius:50%;width:34px;height:34px}.user-chip>span{text-overflow:ellipsis;white-space:nowrap;max-width:92px;color:var(--muted-strong);font-size:.83rem;overflow:hidden}.avatar-menu-wrap{flex:none;position:relative}.avatar-button{border:1px solid var(--border);background:var(--surface);width:36px;height:36px;color:var(--muted-strong);cursor:pointer;border-radius:999px;place-items:center;padding:0;display:grid;overflow:hidden}.avatar-button img{border:0;width:34px;height:34px}.avatar-menu{z-index:40;border:1px solid var(--border);background:var(--surface);min-width:220px;box-shadow:var(--shadow);border-radius:8px;padding:6px;position:absolute;top:calc(100% + 8px);right:0}.avatar-menu a{min-height:38px;color:var(--text);border-radius:7px;align-items:center;gap:8px;padding:0 10px;font-size:.82rem;font-weight:800;text-decoration:none;display:flex}.avatar-menu span{text-overflow:clip;white-space:nowrap;max-width:none;color:var(--text);display:inline;overflow:visible}.avatar-menu a:hover{background:var(--surface-strong)}main{width:min(760px,100%);margin:0 auto;padding:12px 12px 64px}.app-footer{width:min(760px,100%);padding:0 12px max(18px, env(safe-area-inset-bottom));color:var(--muted);font-variant-numeric:tabular-nums;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;margin:auto auto 0;font-size:.68rem;display:grid}.app-footer span,.app-footer a{min-width:0;box-shadow:none;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;border-radius:0;padding:0;overflow:hidden}.app-footer span:last-child{justify-self:end}.app-footer a{color:inherit;text-decoration:none}.app-footer a:hover{color:var(--muted-strong);text-underline-offset:2px;text-decoration:underline}.footer-location{justify-self:center}.controls{gap:10px;margin-bottom:12px;display:grid}.control-row{align-items:center;gap:8px;display:flex}.control-row.compact{min-width:0}.segmented{border:1px solid var(--border);background:var(--surface-strong);border-radius:8px;grid-template-columns:repeat(4,1fr);gap:4px;padding:4px;display:grid}.segmented button,.icon-button,.text-button,.link-button,.select-field{cursor:pointer;border:1px solid #0000;border-radius:7px;min-height:40px}.segmented button{color:var(--muted-strong);background:0 0;padding:8px 6px;font-size:.78rem;font-weight:700}.segmented button.active{background:var(--surface);color:var(--text);border-color:var(--border);box-shadow:0 1px 5px #0f172a14}.icon-button,.text-button,.link-button{background:var(--surface);border-color:var(--border);color:var(--text);justify-content:center;align-items:center;gap:7px;padding:0 10px;text-decoration:none;display:inline-flex}.icon-button{flex:0 0 42px;width:42px;padding:0}.text-button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.text-button.primary:hover{background:var(--accent-strong)}.text-button.danger{color:var(--danger)}.select-field{background:var(--surface);border-color:var(--border);color:var(--text);flex:1;padding:0 10px}.status-strip{color:var(--muted);white-space:nowrap;flex-wrap:nowrap;align-items:center;gap:10px;font-size:.78rem;display:flex;overflow:hidden}.status-strip span{min-width:0}.notice,.error-box,.empty-box,.login-card{border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow);border-radius:8px;padding:14px}.notice{color:#713f12;background:#fffbeb;border-color:#fde68a;margin-bottom:12px}.better-store-notice{text-align:left;width:100%;font:inherit;cursor:pointer;display:block}.better-store-notice:hover{border-color:#f59e0b}.error-box{color:#7f1d1d;background:#fef2f2;border-color:#fecaca;margin-bottom:12px}.empty-box{color:var(--muted-strong);text-align:center;padding:28px 18px}.route-panel{border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow);border-radius:8px;gap:10px;margin-bottom:12px;padding:12px;display:grid}.route-panel-head,.route-card-head{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.route-panel h2,.route-card h3{letter-spacing:0;margin:0}.route-panel h2{font-size:1rem}.admin-main{gap:12px;display:grid}.admin-page-head{justify-content:space-between;align-items:end;gap:12px;display:flex}.admin-page-head h1{letter-spacing:0;margin:0;font-size:1.28rem}.admin-page-head p{color:var(--muted);margin:3px 0 0;font-size:.84rem}.admin-summary{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.admin-panel{border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow);border-radius:8px;gap:10px;padding:12px;display:grid}.admin-panel h2{letter-spacing:0;margin:0;font-size:1rem}.admin-month-select{flex:0 160px;width:160px}.usage-table-wrap{border:1px solid var(--border);border-radius:8px;overflow-x:auto}.usage-table{border-collapse:collapse;width:100%;min-width:560px;font-size:.82rem}.usage-table th,.usage-table td{border-bottom:1px solid var(--border);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;padding:9px 10px}.usage-table th:first-child,.usage-table td:first-child{text-align:left}.usage-table th{color:var(--muted);background:var(--surface-strong);text-transform:uppercase;letter-spacing:0;font-size:.72rem}.usage-table tbody tr{cursor:pointer}.usage-table tbody tr.selected{background:#f0fdfa}@media (hover:hover) and (pointer:fine){.usage-table tbody tr:hover{background:#f0fdfa}}.usage-table tbody tr:last-child td{border-bottom:0}.usage-table tbody tr.usage-total-row td{border-top:2px solid var(--border);background:#f8fafc;font-weight:900}.usage-table tbody tr.usage-total-row.selected td{background:#f0fdfa}.usage-table td strong{font-size:.86rem;display:block}.usage-table td span{color:var(--muted);margin-top:2px;font-size:.72rem;display:block}.usage-empty{color:var(--muted);text-align:center;padding:18px}.usage-chart-wrap{border:1px solid var(--border);background:var(--surface-strong);border-radius:8px;min-height:260px;overflow-x:auto}.usage-chart-svg{width:max(100%,720px);height:260px;display:block}.usage-axis{stroke:var(--muted);stroke-width:1px}.usage-grid-line{stroke:#d7dee8;stroke-width:1px}.usage-chart-bar{fill:var(--accent)}.usage-axis-label{fill:var(--muted);font-variant-numeric:tabular-nums;font-size:11px}.usage-axis-title{fill:var(--muted-strong);letter-spacing:0;font-size:12px;font-weight:800}.planner-main{gap:12px;width:min(1180px,100%);display:grid}.planner-toolbar{z-index:15;border:1px solid var(--border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#f8fafcf2;border-radius:8px;align-items:end;gap:8px;padding:10px 14px;display:flex;position:sticky;top:58px}.planner-control{flex:auto;gap:4px;min-width:0;display:grid}.planner-control.compact{flex:0 0 112px}.planner-control span,.panel-head span,.planner-admin span{color:var(--muted);text-transform:uppercase;font-size:.72rem;font-weight:800}.planner-layout{grid-template-columns:minmax(260px,340px) minmax(0,1fr);align-items:start;gap:12px;display:grid}.priority-panel{gap:8px;min-width:0;display:grid;position:sticky;top:124px}.panel-head,.planner-admin>div{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.panel-head h2,.planner-admin h2{margin:0;font-size:.95rem}.priority-list,.planner-store-list{gap:8px;min-width:0;display:grid}.priority-item{border:1px solid var(--border);background:#fff;border-radius:8px;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:8px;min-height:58px;padding:7px;display:grid}.priority-item.excluded{opacity:.48}.priority-rank{background:var(--surface-strong);border-radius:999px;place-items:center;width:28px;height:28px;font-size:.78rem;font-weight:900;display:grid}.priority-copy{min-width:0}.priority-copy strong{text-overflow:ellipsis;white-space:nowrap;font-size:.82rem;display:block;overflow:hidden}.priority-copy span{text-overflow:ellipsis;white-space:nowrap;color:var(--muted);margin-top:2px;font-size:.72rem;display:block;overflow:hidden}.priority-actions{grid-template-columns:repeat(5,30px);gap:4px;display:grid}.priority-actions .icon-button{width:30px;height:30px;min-height:30px;padding:0}.planner-store-card,.planner-admin{border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow);border-radius:8px;gap:10px;padding:10px;display:grid}.planner-store-card.what-if{background:#fffbeb;border-color:#f59e0b}.planner-store-head{grid-template-columns:minmax(0,1fr) auto;gap:10px;display:grid}.planner-store-head h2{overflow-wrap:anywhere;margin:0;font-size:1rem}.planner-store-head span{color:var(--muted);margin-top:2px;font-size:.76rem;display:block}.planner-score{align-content:start;justify-items:end;min-width:76px;display:grid}.planner-score span{color:var(--muted);text-transform:uppercase;white-space:nowrap;font-size:.7rem;font-weight:800}.planner-score strong{font-size:1.45rem;line-height:1}.planner-metrics{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;display:grid}.planner-metrics div{background:var(--surface-strong);border-radius:7px;min-width:0;padding:7px}.planner-metrics span{color:var(--muted);text-transform:uppercase;font-size:.68rem;font-weight:800;display:block}.planner-metrics strong{overflow-wrap:anywhere;margin-top:2px;font-size:.84rem;display:block}.line-report-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;display:grid}.line-status{min-width:0}.line-status strong,.line-status span{overflow-wrap:anywhere;display:block}.line-status strong{font-size:.84rem}.line-status span{color:var(--muted);font-size:.75rem}.line-status .what-if-label{color:#b45309;font-weight:900}.line-inputs{grid-template-columns:78px 68px 78px 34px;gap:5px;display:grid}.line-inputs .apply-button{min-height:34px;padding:0 8px;font-size:.72rem;font-weight:900}.number-field{border:1px solid var(--border);width:100%;min-width:0;height:34px;color:var(--text);font:inherit;background:#fff;border-radius:7px;padding:0 8px;font-size:.82rem}.score-breakdown{flex-wrap:wrap;gap:6px;display:flex}.score-breakdown span{background:var(--surface-strong);color:var(--muted-strong);border-radius:999px;padding:4px 7px;font-size:.72rem;font-weight:800}.planner-bottles{gap:6px;display:grid}.planner-bottle{border:1px solid var(--border);background:#fff;border-radius:7px;grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:7px;display:grid}.planner-bottle strong{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:.82rem;overflow:hidden}.planner-bottle span{color:var(--muted);white-space:nowrap;font-size:.74rem}.allowed-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;display:grid}.allowed-list{flex-direction:column;gap:6px;max-height:min(420px,58vh);padding:2px;display:flex;overflow:auto}.allowed-item{border:1px solid var(--border);background:#fff;border-radius:7px;grid-template-columns:22px minmax(0,1fr);align-items:start;gap:8px;padding:8px;display:grid}.allowed-item input{width:18px;height:18px;accent-color:var(--accent);margin:1px 0 0}.allowed-item span{gap:2px;min-width:0;display:grid}.allowed-item strong{text-overflow:ellipsis;white-space:nowrap;font-size:.82rem;overflow:hidden}.allowed-item em{overflow-wrap:anywhere;color:var(--muted);font-size:.72rem;font-style:normal}.route-panel-head span,.route-card-head span,.route-stop-meta{color:var(--muted);font-size:.75rem}.route-loading{color:var(--muted);grid-template-columns:1fr auto;align-items:center;gap:8px 10px;font-size:.76rem;display:grid}.route-loading span{grid-column:1/-1}.route-loading img{object-fit:contain;width:42px;height:42px}.route-error{color:#7f1d1d;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;padding:10px;font-size:.78rem}.route-list{gap:8px;display:grid}.route-card{border:1px solid var(--border);background:var(--surface-strong);border-radius:8px;gap:10px;padding:10px;display:grid}.route-card h3{font-size:.94rem}.route-card .link-button{min-height:34px;padding:0 9px;font-size:.74rem;font-weight:800}.route-stops{gap:8px;margin:0;padding:0;list-style:none;display:grid}.route-stops li{grid-template-columns:24px minmax(0,1fr);align-items:start;gap:8px;min-width:0;display:grid}.route-stop-index{background:var(--accent);color:#fff;border-radius:999px;place-items:center;width:24px;height:24px;font-size:.72rem;font-weight:900;display:grid}.route-stop-title{font-size:.84rem;font-weight:800}.route-stop-meta{overflow-wrap:anywhere;word-break:break-word;max-width:100%;margin-top:2px;font-size:.75rem;line-height:1.25;display:block}.login-page{place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{gap:14px;width:min(420px,100%);display:grid}.login-card h1{margin:0;font-size:1.55rem}.login-card p{color:var(--muted-strong);margin:0;line-height:1.45}.store-list{overflow-anchor:none;gap:10px;display:grid}.store-card{border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow);border-radius:8px;overflow:hidden}.store-card.pinned{border-color:#f59e0b}.store-main{gap:10px;padding:12px;display:grid}.store-head{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.store-title{gap:8px;min-width:0;display:grid}.store-title h2{letter-spacing:0;margin:0;font-size:1.08rem}.store-title p{color:var(--muted);margin:3px 0 0;font-size:.86rem}.badge-row{flex-wrap:wrap;gap:6px;display:flex}.badge-row.compact{gap:5px}.badge{border:1px solid #0000;border-radius:999px;align-items:center;gap:4px;min-height:24px;padding:3px 7px;font-size:.75rem;font-weight:800;display:inline-flex}.badge.good{color:#064e3b;background:#d1fae5;border-color:#a7f3d0}.badge.warn{color:#713f12;background:#fef3c7;border-color:#fde68a}.badge.info{color:#1e3a8a;background:#dbeafe;border-color:#bfdbfe}.badge.muted{color:var(--muted-strong);background:var(--surface-strong);border-color:var(--border)}.badge.danger{color:#7f1d1d;background:#fee2e2;border-color:#fecaca}.metrics{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.metric{border:1px solid var(--border);background:var(--surface-strong);border-radius:8px;min-width:0;padding:8px}.metric span{color:var(--muted);text-transform:uppercase;font-size:.7rem;font-weight:800;display:block}.metric strong{white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:.96rem;display:block;overflow:hidden}.bottle-list{gap:6px;display:grid}.bottle{border:1px solid var(--border);background:#fff;border-radius:8px;grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:8px;display:grid}.bottle.fresh{background:rgba(245, 158, 11, var(--freshness-alpha));border-color:#f59e0b}.bottle-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:.86rem;font-weight:700;overflow:hidden}.bottle-meta{color:var(--muted);margin-top:2px;font-size:.76rem}.bottle-side{align-content:start;justify-items:end;gap:2px;display:grid}.bottle-qty{font-size:1rem;font-weight:900}.bottle-timestamp{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.76rem}.card-actions{border-top:1px solid var(--border);background:#f8fafc;grid-template-columns:repeat(2,1fr);gap:6px;padding:10px 12px 12px;display:grid}.card-actions a,.card-actions button{min-width:0;font-size:.76rem;font-weight:800}.loading-line{background:var(--surface-strong);border-radius:999px;height:4px;overflow:hidden}.loading-line:before{content:"";background:var(--accent);width:38%;height:100%;animation:1s ease-in-out infinite loading;display:block}@keyframes loading{0%{transform:translate(-110%)}to{transform:translate(280%)}}.brand-row{align-items:center;gap:10px;min-width:0;display:flex}.brand-potato{object-fit:contain;flex:none;width:40px;height:40px}.login-potato-frame{justify-self:center;width:72px;height:72px;position:relative}.login-potato{object-fit:contain;opacity:1;width:72px;height:72px;position:absolute;inset:0}.login-potato.hidden{opacity:0;pointer-events:none}.login-potato.mirrored{transform:scaleX(-1)}.media-card{text-align:center}.state-gif{object-fit:contain;border-radius:8px;justify-self:center;width:min(260px,100%);max-height:300px}.loading-cluster{grid-template-columns:1fr auto;align-items:center;gap:10px;display:grid}.loading-cluster img{object-fit:contain;width:42px;height:42px}.empty-box{justify-items:center;gap:10px;display:grid}.empty-box img{object-fit:contain;width:min(180px,70vw);max-height:180px}@media (max-width:390px){main{padding-left:8px;padding-right:8px}.metrics{grid-template-columns:1fr 1fr}.user-chip>span{display:none}.segmented button{font-size:.72rem}}@media (max-width:760px){.planner-toolbar{flex-wrap:wrap}.planner-layout{grid-template-columns:1fr}.priority-panel{position:static}.priority-item{grid-template-columns:28px minmax(0,1fr)}.priority-actions{grid-column:1/-1;grid-template-columns:repeat(5,minmax(0,1fr))}.priority-actions .icon-button{width:100%}.planner-store-head,.line-report-row{grid-template-columns:1fr}.planner-score{justify-items:start}.planner-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.line-inputs{grid-template-columns:minmax(0,1fr) 68px minmax(0,1fr) 38px}.planner-bottle{grid-template-columns:1fr}.planner-bottle span{white-space:normal}}@media (max-width:520px){.admin-page-head{display:grid}.admin-summary{grid-template-columns:1fr 1fr}.admin-month-select{width:132px}}@media (max-width:390px){.app-footer{gap:8px;padding-left:8px;padding-right:8px;font-size:.64rem}.brand-row{gap:8px}.brand-potato,.loading-cluster img{width:36px;height:36px}}
