:root{--bg:#f7f5f2;--card:#fff;--ink:#2b2723;--muted:#8a8178;--line:#e7e2db;--accent:#7a5c3e;--accent-ink:#fff;--good:#4e7a4e;--low:#b0842a;--full:#a04545;--closed:#b9b2a9;--amber-bg:#fdf3dd;--amber-ink:#8a6414;--red-bg:#fbe9e9;--red-ink:#8f3232;--green-bg:#e9f2e9;--green-ink:#3d613d;--blue-bg:#e9eef6;--blue-ink:#3b5578;--radius:12px;--nav-h:58px}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:16px}#root{min-height:100dvh}.app{max-width:640px;padding:12px 12px calc(var(--nav-h) + 20px + env(safe-area-inset-bottom));margin:0 auto}h1{margin:8px 0 2px;font-size:22px}h2{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:22px 0 8px;font-size:15px;font-weight:600}.sub{color:var(--muted);margin:0 0 14px;font-size:14px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:10px;padding:12px 14px}.card .name{font-size:17px;font-weight:650}.card .meta{color:var(--muted);margin-top:2px;font-size:14px}.row{align-items:center;gap:10px;display:flex}.row .grow{flex:1;min-width:0}.piece{color:#5c544b;margin-top:6px;font-size:14px;font-style:italic}a.call{background:var(--green-bg);min-width:44px;min-height:44px;color:var(--green-ink);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:19px;text-decoration:none;display:inline-flex}.flags{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.flag{white-space:nowrap;border-radius:999px;padding:3px 8px;font-size:12px;font-weight:600}.flag.first{background:var(--blue-bg);color:var(--blue-ink)}.flag.balance{background:var(--red-bg);color:var(--red-ink)}.flag.legacy,.flag.overcap{background:var(--amber-bg);color:var(--amber-ink)}.flag.prov{color:#5d4a80;background:#efeaf6}.flag.pace{background:var(--red-bg);color:var(--red-ink)}.flag.storage{color:#6d5a3e;background:#f0e9df}.flag.paid{background:var(--green-bg);color:var(--green-ink)}.empty{color:var(--muted);text-align:center;padding:28px 0;font-size:15px}.error{background:var(--red-bg);color:var(--red-ink);border-radius:var(--radius);margin-bottom:10px;padding:10px 14px;font-size:14px}nav.tabs{height:calc(var(--nav-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--card);border-top:1px solid var(--line);z-index:40;display:flex;position:fixed;bottom:0;left:0;right:0}nav.tabs a{color:var(--muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;font-size:11px;font-weight:600;text-decoration:none;display:flex}nav.tabs a .ico{font-size:20px;line-height:1}nav.tabs a.active{color:var(--accent)}label.field{margin-bottom:12px;font-size:14px;font-weight:600;display:block}label.field span{margin-bottom:4px;display:block}input,select,textarea{border:1px solid var(--line);width:100%;color:var(--ink);background:#fff;border-radius:10px;padding:11px 12px;font-family:inherit;font-size:16px}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);border-color:var(--accent)}.field-row{gap:10px;display:flex}.field-row>*{flex:1}button{cursor:pointer;border:1px solid #0000;border-radius:10px;min-height:46px;padding:12px 18px;font-family:inherit;font-size:16px;font-weight:650}button.primary{background:var(--accent);color:var(--accent-ink);width:100%}button.secondary{color:var(--accent);border-color:var(--accent);background:#fff;width:100%}button.ghost{color:var(--muted);background:0 0;border:none;min-height:0;padding:8px}button.danger{background:var(--full);color:#fff}button:disabled{opacity:.5;cursor:default}button.small{width:auto;min-height:38px;padding:8px 12px;font-size:14px}.week-day{margin-bottom:14px}.week-day .day-head{align-items:baseline;gap:8px;margin-bottom:6px;display:flex}.week-day .day-head .d{font-size:16px;font-weight:700}.week-day .day-head .cap{color:var(--muted);font-size:13px}.week-day .day-head .cap.warn{color:var(--amber-ink);font-weight:700}.prep{color:var(--muted);margin-top:4px;font-size:13px}.month-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.month-head button{width:auto}.month-grid{grid-template-columns:repeat(5,1fr);gap:6px;display:grid}.month-grid .dow{text-align:center;color:var(--muted);text-transform:uppercase;font-size:11px;font-weight:700}.mday{border:1px solid var(--line);background:var(--card);cursor:pointer;border-radius:10px;flex-direction:column;align-items:center;gap:2px;min-height:62px;padding:5px 4px;font-size:12px;display:flex;position:relative}.mday .dnum{color:var(--muted);font-size:12px}.mday .ratio{font-size:14px;font-weight:750}.mday.open .ratio{color:var(--good)}.mday.low .ratio{color:var(--low)}.mday.full .ratio{color:var(--full)}.mday.closed{background:#efece7}.mday.closed .ratio{color:var(--closed)}.mday.over{background:var(--amber-bg);border-color:#e5c876}.mday.today{outline:2px solid var(--accent)}.mday.pad{visibility:hidden}.mday .badges{flex-wrap:wrap;justify-content:center;gap:2px;display:flex}.badge{border-radius:4px;padding:1px 4px;font-size:9px;font-weight:700}.badge.int{color:#5d4a80;background:#efeaf6}.badge.blk{color:#6d5a3e;background:#eee9e2}.badge.over{color:var(--amber-ink);background:#f3e2b3}.legend{color:var(--muted);flex-wrap:wrap;gap:12px;margin-top:10px;font-size:12px;display:flex}.legend .sw{vertical-align:-1px;border-radius:3px;width:10px;height:10px;margin-right:4px;display:inline-block}.drawer-veil{z-index:50;background:#2b272373;position:fixed;inset:0}.drawer{background:var(--bg);max-height:88dvh;padding:10px 14px calc(24px + env(safe-area-inset-bottom));z-index:51;border-radius:18px 18px 0 0;max-width:640px;margin:0 auto;position:fixed;bottom:0;left:0;right:0;overflow-y:auto}.drawer .grab{background:var(--line);border-radius:2px;width:40px;height:4px;margin:4px auto 10px}.drawer h3{margin:4px 0 2px;font-size:19px}.warn-box{background:var(--amber-bg);color:var(--amber-ink);border-radius:var(--radius);margin:10px 0;padding:10px 14px;font-size:14px}.warn-box ul{margin:6px 0 0;padding-left:18px}.seg{border:1px solid var(--line);border-radius:10px;margin-bottom:12px;display:flex;overflow:hidden}.seg button{color:var(--muted);background:#fff;border:none;border-radius:0;flex:1;min-height:42px;padding:10px 4px;font-size:14px}.seg button.on{background:var(--accent);color:#fff}.kv{grid-template-columns:auto 1fr;gap:4px 14px;font-size:14px;display:grid}.kv dt{color:var(--muted)}.kv dd{text-align:right;margin:0;font-weight:600}.datelist .date-row{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:9px 0;font-size:15px;display:flex}.datelist .date-row:last-child{border-bottom:none}.datelist .dnum{color:var(--muted);flex-shrink:0;width:44px;font-size:13px}.back{color:var(--accent);font-size:14px;font-weight:650;text-decoration:none}.queue-wait{color:var(--red-ink);font-size:13px;font-weight:700}.login{flex-direction:column;justify-content:center;max-width:380px;min-height:100dvh;margin:0 auto;padding:24px;display:flex}.login h1{text-align:center;margin-bottom:4px}.login .sub{text-align:center}@media print{:root{--bg:#fff}body{font-size:12px}.app{max-width:none;padding:0}nav.tabs,.no-print,button{display:none!important}.card{break-inside:avoid;border:1px solid #ccc;margin-bottom:4px;padding:6px 10px}.week-day{break-inside:avoid;margin-bottom:10px}a.call{display:none}.flags .flag{border:1px solid #bbb;color:#333!important;background:0 0!important}h1{font-size:18px}}
