:root{--bg:#f4f7fb;--card:#fff;--card2:#eef3fa;--border:#dfe6f0;--ink:#12213f;--muted:#5d6c86;--accent:#2b6fe8;--accent-ink:#1d4ed8;--accent-soft:#e6efff;--radius:16px;--radius-s:12px;--font-display:"Inter Tight", "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-body:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", monospace;--st-deficit:#c8321f;--st-deficit-bg:#fde8e4;--st-risk:#a35a00;--st-risk-bg:#fff1d6;--st-neutral:#4a5872;--st-neutral-bg:#e9eef6;--st-ok:#0b7a4b;--st-ok-bg:#dcf5e7;--cat-travel:#2b7fff;--cat-travel-bg:#e3efff;--cat-family:#e0457b;--cat-family-bg:#ffe4ec;--cat-home:#ef8a24;--cat-home-bg:#fff1e0;--cat-work:#6b5cf0;--cat-work-bg:#efe9ff;--cat-kids:#0e8fa8;--cat-kids-bg:#dcf3f7;--cat-health:#b45cc9;--cat-health-bg:#f6e6fb;--cat-other:#6b7a93;--cat-other-bg:#eaeef4}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.45}#root{max-width:560px;padding:calc(12px + env(safe-area-inset-top)) 16px 96px;margin:0 auto}@media (min-width:900px){#root{max-width:1160px;padding:20px 28px 40px}}:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:6px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.02em;margin:0;font-weight:700}h1{font-size:30px;line-height:1.1}h2{font-size:18px}h3{font-size:15px}p{margin:0}a{color:var(--accent-ink)}.label{font-family:var(--font-body);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:12px;font-weight:600}.muted{color:var(--muted)}.small{font-size:13px}.tiny{font-size:12px}.num{font-family:var(--font-display);letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-weight:700}.row{align-items:center;gap:10px;display:flex}.spread{justify-content:space-between;align-items:center;gap:10px;display:flex}.stack{flex-direction:column;gap:10px;display:flex}.wrap{flex-wrap:wrap;gap:8px;display:flex}.grid2{grid-template-columns:1fr 1fr;gap:10px;display:grid}.sr{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:12px;padding:16px}.card.soft{background:var(--card2);border-color:#0000}.hr{border:0;border-top:1px solid var(--border);margin:10px 0}.btn{font-family:var(--font-body);color:var(--ink);background:var(--card);border:1px solid var(--border);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:0 18px;font-size:15px;font-weight:600;transition:border-color .15s,background .15s;display:inline-flex}.btn:hover{border-color:var(--accent)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:var(--accent-ink);border-color:var(--accent-ink)}.btn.quiet{color:var(--accent-ink);background:0 0;border-color:#0000}.btn.danger{color:var(--st-deficit)}.btn.block{width:100%}.btn:disabled{opacity:.45;cursor:default}.iconbtn{border:1px solid var(--border);background:var(--card);width:44px;height:44px;color:var(--ink);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.iconbtn:hover{border-color:var(--accent)}.link{color:var(--accent-ink);font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;min-height:44px;padding:10px 0;font-weight:600;display:inline-flex}input,select,textarea{font-family:var(--font-body);color:var(--ink);background:var(--card);border:1px solid var(--border);border-radius:var(--radius-s);outline:none;width:100%;min-height:44px;padding:10px 12px;font-size:15px}input:focus,select:focus,textarea:focus{border-color:var(--accent)}.field{flex-direction:column;gap:6px;display:flex}.field>span{color:var(--muted);font-size:13px;font-weight:600}.field .err{color:var(--st-deficit);font-size:13px}.chip{border:1px solid var(--border);background:var(--card);color:var(--ink);cursor:pointer;border-radius:999px;align-items:center;gap:6px;min-height:40px;padding:0 14px;font-size:14px;font-weight:500;display:inline-flex}.chip.on{border-color:var(--accent);color:var(--accent-ink);background:var(--accent-soft)}.tag{background:var(--card2);color:var(--muted);white-space:nowrap;border-radius:999px;align-items:center;gap:5px;padding:3px 10px;font-size:12px;font-weight:600;display:inline-flex}.tag.cat{color:var(--c);background:var(--cbg)}.tag.st-deficit,.tag.st-conflict{color:var(--st-deficit);background:var(--st-deficit-bg)}.tag.st-risk{color:var(--st-risk);background:var(--st-risk-bg)}.tag.st-insufficient,.tag.st-unverified,.tag.st-gap{color:var(--st-neutral);background:var(--st-neutral-bg)}.tag.st-ok{color:var(--st-ok);background:var(--st-ok-bg)}.status{border-radius:var(--radius-s);background:var(--st-neutral-bg);color:var(--ink);align-items:flex-start;gap:12px;padding:12px 14px;display:flex}.status .ic{color:var(--st-neutral);flex:none;margin-top:2px}.status b{font-weight:700;display:block}.status.st-deficit,.status.st-conflict{background:var(--st-deficit-bg)}.status.st-deficit .ic,.status.st-conflict .ic{color:var(--st-deficit)}.status.st-risk{background:var(--st-risk-bg)}.status.st-risk .ic{color:var(--st-risk)}.status.st-ok{background:var(--st-ok-bg)}.status.st-ok .ic{color:var(--st-ok)}.disc{width:44px;height:44px;color:var(--c);background:var(--cbg);border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}.disc.sm{width:36px;height:36px}.cat-travel{--c:var(--cat-travel);--cbg:var(--cat-travel-bg)}.cat-family{--c:var(--cat-family);--cbg:var(--cat-family-bg)}.cat-home{--c:var(--cat-home);--cbg:var(--cat-home-bg)}.cat-work{--c:var(--cat-work);--cbg:var(--cat-work-bg)}.cat-kids{--c:var(--cat-kids);--cbg:var(--cat-kids-bg)}.cat-health{--c:var(--cat-health);--cbg:var(--cat-health-bg)}.cat-other{--c:var(--cat-other);--cbg:var(--cat-other-bg)}.cover{border-radius:var(--radius-s);background:linear-gradient(135deg, var(--cbg), #fff 140%);color:var(--c);justify-content:center;align-items:center;display:flex}.panorama{grid-template-columns:repeat(6,1fr);gap:6px 4px;display:grid}@media (min-width:900px){.panorama{grid-template-columns:repeat(12,1fr);gap:8px}}.pmonth{flex-direction:column;align-items:center;gap:6px;padding-top:4px;display:flex;position:relative}.pmonth .mname{color:var(--muted);font-size:13px;font-weight:600}.pmonth .mname.now{color:var(--accent-ink)}.pmonth .dot{width:100%;height:14px;position:relative}.pmonth .dot:before{content:"";border-top:1px solid var(--border);position:absolute;top:6px;left:0;right:0}.pmonth .dot:after{content:"";background:var(--accent);border:2px solid var(--card);width:10px;height:10px;box-shadow:0 0 0 1px var(--border);border-radius:50%;margin-left:-5px;position:absolute;top:2px;left:50%}.pmonth .stackv{flex-direction:column;align-items:center;gap:6px;min-height:52px;display:flex}.pmonth .stackv:before{content:"";border-left:1px dashed var(--border);z-index:0;position:absolute;top:34px;bottom:8px}.pev{z-index:1;cursor:pointer;background:0 0;border:0;padding:0;position:relative}.pev .disc{width:42px;height:42px}.pev.more .disc{color:var(--muted);background:var(--card2);font-size:13px;font-weight:700}.pmonth .empty{border:1px dashed var(--border);opacity:.6;border-radius:50%;width:42px;height:42px}.prow{border-bottom:1px solid var(--border);text-align:left;width:100%;font:inherit;color:var(--ink);cursor:pointer;background:0 0;border-top:0;border-left:0;border-right:0;align-items:center;gap:12px;min-height:56px;padding:10px 0;display:flex}.prow:last-child{border-bottom:0}.prow .mid{flex:1;min-width:0}.prow .name{white-space:nowrap;text-overflow:ellipsis;font-weight:600;display:block;overflow:hidden}.prow .sub{color:var(--muted);font-size:13px;display:block}.prow .amt{text-align:right;flex:none}.prow .amt .num{font-size:15px}.mgroup{margin-top:14px}.mgroup h3{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:2px;font-size:13px}.kv{grid-template-columns:1fr auto;align-items:baseline;gap:8px 12px;display:grid}.kv .k{color:var(--muted)}.kv .v{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}.big{font-family:var(--font-display);letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:26px;font-weight:800}.nextup{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;text-align:left;width:100%;font:inherit;color:var(--ink);align-items:center;gap:14px;padding:12px;display:flex}.nextup .cover{flex:none;width:104px;height:78px}.nextup .mid{flex:1;min-width:0}.overview{grid-template-columns:150px 1fr;align-items:center;gap:14px;display:grid}.legend{color:var(--muted);flex-wrap:wrap;gap:6px 14px;margin-top:10px;font-size:13px;display:flex}.legend i{background:var(--c);border-radius:50%;width:9px;height:9px;margin-right:6px;display:inline-block}.backdrop{z-index:40;background:#12213f59;position:fixed;inset:0}.drawer{z-index:41;background:var(--bg);padding:calc(12px + env(safe-area-inset-top)) 16px calc(24px + env(safe-area-inset-bottom));position:fixed;inset:0;overflow-y:auto}@media (min-width:900px){.drawer{width:min(520px,100%);padding:20px 24px 32px;animation:.18s ease-out slidein;left:auto;box-shadow:-12px 0 40px #12213f2e}}@keyframes slidein{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:none}}.drawer .head{background:var(--bg);z-index:1;align-items:center;gap:10px;margin-bottom:14px;padding:4px 0 8px;display:flex;position:sticky;top:0}.drawer .head h2{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:20px;overflow:hidden}.actions{background:linear-gradient(to top, var(--bg) 70%, transparent);flex-direction:column;gap:8px;padding:12px 0 0;display:flex;position:sticky;bottom:0}details.sec{border-top:1px solid var(--border)}details.sec summary{cursor:pointer;justify-content:space-between;align-items:center;min-height:48px;font-weight:600;list-style:none;display:flex}details.sec summary::-webkit-details-marker{display:none}details.sec .body{padding-bottom:12px}.toast{left:50%;bottom:calc(92px + env(safe-area-inset-bottom));z-index:60;background:var(--ink);color:#fff;border-radius:14px;align-items:center;gap:12px;max-width:min(92vw,520px);padding:12px 14px;font-size:14px;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 10px 30px #12213f40}.toast button{color:#9cc0ff;font:inherit;cursor:pointer;background:0 0;border:0;min-height:44px;padding:0 6px;font-weight:700}@media (min-width:900px){.toast{bottom:28px}}nav.tabbar{z-index:30;background:var(--card);border-top:1px solid var(--border);padding:6px 8px calc(8px + env(safe-area-inset-bottom));justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}nav.tabbar button{cursor:pointer;color:var(--muted);min-width:64px;min-height:48px;font-family:var(--font-body);background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:3px;font-size:12px;font-weight:600;display:flex}nav.tabbar button.on{color:var(--accent-ink)}@media (min-width:900px){nav.tabbar{background:0 0;border:0;justify-content:flex-start;gap:4px;margin-bottom:18px;padding:0;position:static}nav.tabbar button{border-radius:999px;flex-direction:row;gap:8px;padding:0 16px;font-size:14px}nav.tabbar button.on{background:var(--accent-soft)}}.topbar{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:14px;display:flex}.demo-note{color:var(--muted);font-size:12px}table.tbl{border-collapse:collapse;width:100%;font-size:14px}table.tbl th,table.tbl td{text-align:left;border-bottom:1px solid var(--border);vertical-align:top;padding:10px 8px}table.tbl th{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:12px;font-weight:600}table.tbl td.num,table.tbl th.num{text-align:right;font-variant-numeric:tabular-nums}.scrollx{overflow-x:auto}.optcard{text-align:left;width:100%;font:inherit;color:var(--ink);background:var(--card);border:2px solid var(--border);border-radius:var(--radius);cursor:pointer;padding:14px;display:block}.optcard.on{border-color:var(--accent)}.empty{text-align:center;color:var(--muted);padding:28px 16px}.empty b{color:var(--ink);margin-bottom:6px;display:block}.banner{border-radius:var(--radius-s);background:var(--accent-soft);color:var(--accent-ink);align-items:center;gap:10px;padding:10px 14px;font-size:14px;display:flex}
