:root{--navy-900:#0b1b3a;--navy-800:#0f234b;--navy-700:#17336b;--navy-100:#e6ecf7;--navy-50:#f3f6fb;--bg:#f6f7fa;--surface:#fff;--line:#e2e6ee;--text:#142036;--muted:#5d6a82;--ok:#1f7a4d;--ok-bg:#e6f4ec;--warn:#9a5b00;--warn-bg:#fff4e0;--bad:#b42318;--bad-bg:#fdecea;--radius:12px;--shadow:0 1px 2px #0b1b3a0f, 0 2px 8px #0b1b3a0a;color:var(--text);background:var(--bg);-webkit-text-size-adjust:100%;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.45}*{box-sizing:border-box}body{background:var(--bg);margin:0}a{color:var(--navy-700)}h1{margin:0 0 12px;font-size:1.35rem}h2{margin:20px 0 10px;font-size:1.1rem}h3{margin:0 0 6px;font-size:1rem}.muted{color:var(--muted)}.small{font-size:.85rem}.right{text-align:right}.nowrap{white-space:nowrap}.sr-only{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}:focus-visible{outline-offset:2px;outline:3px solid #6b8fd6}.app{flex-direction:column;min-height:100dvh;display:flex}.topbar{z-index:20;background:var(--navy-900);color:#fff;padding:8px 16px;padding-top:max(8px, env(safe-area-inset-top));position:sticky;top:0}.topbar-row{align-items:center;gap:8px;max-width:1100px;margin:0 auto;display:flex}.brand{letter-spacing:.02em;white-space:nowrap;font-size:.95rem;font-weight:700}.brand span{color:#9fb6e6;font-weight:500}.ctx{align-items:center;gap:6px;min-width:0;margin-left:auto;display:flex}.ctx select,.ctx button{background:var(--navy-800);color:#fff;height:36px;font:inherit;border:1px solid #2c4680;border-radius:8px;padding:0 8px;font-size:.85rem}.ctx select{text-overflow:ellipsis;max-width:46vw}.month{align-items:center;gap:2px;display:flex}.month button{width:34px;padding:0}.month .label{text-align:center;min-width:72px;font-size:.85rem;font-weight:600}.status-dot{background:#3ccf85;border-radius:50%;flex:none;width:10px;height:10px}.status-dot.off{background:#f04438}.status-dot.busy{background:#fdb022}main{flex:1;width:100%;max-width:1100px;margin:0 auto;padding:16px 16px 96px}.bottomnav{z-index:20;background:var(--surface);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);grid-template-columns:repeat(5,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.bottomnav a{color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:2px;min-height:56px;padding:8px 2px;font-size:.72rem;text-decoration:none;display:flex;position:relative}.bottomnav a.active{color:var(--navy-800);font-weight:600}.bottomnav svg{width:22px;height:22px}.badge{background:var(--bad);color:#fff;text-align:center;border-radius:9px;min-width:16px;padding:0 5px;font-size:.65rem;line-height:16px;position:absolute;top:4px;left:52%}@media (width>=900px){.bottomnav{border:1px solid var(--line);border-bottom:0;border-radius:14px 14px 0 0;max-width:640px;left:50%;transform:translate(-50%)}}.offline-bar{background:var(--bad);color:#fff;text-align:center;padding:6px;font-size:.85rem}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:12px;padding:16px}.grid{gap:12px;display:grid}.grid.k{grid-template-columns:repeat(2,1fr)}@media (width>=720px){.grid.k{grid-template-columns:repeat(4,1fr)}.grid.two{grid-template-columns:1fr 1fr}}.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px}.kpi .v{margin-top:2px;font-size:1.25rem;font-weight:700}.kpi .l{color:var(--muted);font-size:.8rem}.kpi.bad .v{color:var(--bad)}.kpi.warn .v{color:var(--warn)}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.row.between{justify-content:space-between}.list{margin:0;padding:0;list-style:none}.item{border:1px solid var(--line);background:var(--surface);color:inherit;border-radius:10px;align-items:center;gap:12px;margin-bottom:8px;padding:12px;text-decoration:none;display:flex}.item .main{flex:1;min-width:0}.item .title{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.item .amount{white-space:nowrap;font-weight:700}.pill{background:var(--navy-100);color:var(--navy-800);white-space:nowrap;border-radius:999px;padding:2px 9px;font-size:.74rem;font-weight:600;display:inline-block}.pill.ok{background:var(--ok-bg);color:var(--ok)}.pill.warn{background:var(--warn-bg);color:var(--warn)}.pill.bad{background:var(--bad-bg);color:var(--bad)}.pill.gray{color:#57617a;background:#eef0f4}.btn{appearance:none;border:1px solid var(--navy-800);background:var(--navy-800);color:#fff;min-height:46px;font:inherit;cursor:pointer;border-radius:10px;justify-content:center;align-items:center;gap:6px;padding:0 18px;font-weight:600;text-decoration:none;display:inline-flex}.btn.secondary{background:var(--surface);color:var(--navy-800)}.btn.danger{background:var(--bad);border-color:var(--bad)}.btn.ghost{color:var(--navy-700);background:0 0;border-color:#0000}.btn.small{min-height:36px;padding:0 12px;font-size:.85rem}.btn.block{width:100%}.btn:disabled{opacity:.55;cursor:not-allowed}.fab{right:16px;bottom:calc(78px + env(safe-area-inset-bottom));z-index:15;border-radius:28px;position:fixed;box-shadow:0 6px 18px #0b1b3a40}form .field,.field{flex-direction:column;gap:4px;margin-bottom:12px;display:flex}label{color:#2a3854;font-size:.85rem;font-weight:600}input,select,textarea{font:inherit;min-height:46px;color:var(--text);background:#fff;border:1px solid #c8cfdc;border-radius:10px;width:100%;padding:10px 12px;font-size:16px}textarea{min-height:80px}input[type=checkbox]{width:20px;height:20px;min-height:0}.check{align-items:center;gap:8px;font-weight:500;display:flex}.err{color:var(--bad);font-size:.82rem}.hint{color:var(--muted);font-size:.8rem}.alert{border-radius:10px;margin-bottom:12px;padding:10px 12px;font-size:.9rem}.alert.bad{background:var(--bad-bg);color:var(--bad)}.alert.ok{background:var(--ok-bg);color:var(--ok)}.alert.warn{background:var(--warn-bg);color:var(--warn)}.alert.info{background:var(--navy-50);color:var(--navy-800)}.pw{position:relative}.pw input{padding-right:84px}.pw button{background:var(--navy-50);height:34px;font:inherit;color:var(--navy-800);cursor:pointer;border:0;border-radius:8px;padding:0 10px;font-size:.8rem;position:absolute;top:6px;right:6px}.empty{text-align:center;color:var(--muted);border-radius:var(--radius);background:#fbfcfe;border:1px dashed #cdd4e1;padding:36px 16px}.empty b{color:var(--text);margin-bottom:4px;display:block}.tabs{gap:6px;margin-bottom:12px;padding-bottom:2px;display:flex;overflow-x:auto}.tabs button{border:1px solid var(--line);background:var(--surface);font:inherit;cursor:pointer;color:var(--muted);border-radius:999px;flex:none;padding:8px 14px;font-size:.85rem}.tabs button[aria-pressed=true]{background:var(--navy-800);border-color:var(--navy-800);color:#fff}.modal-bg{z-index:50;background:#0b1b3a73;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.modal{background:var(--surface);width:100%;max-width:560px;max-height:92dvh;padding:18px 16px calc(18px + env(safe-area-inset-bottom));border-radius:16px 16px 0 0;overflow:auto}.modal.wide{flex-direction:column;max-width:980px;height:92dvh;display:flex}@media (width>=720px){.modal-bg{align-items:center}.modal{border-radius:16px}}.viewer{border:1px solid var(--line);background:#f2f4f8;border-radius:8px;flex:1;width:100%;min-height:60dvh}.viewer img{max-width:100%;margin:0 auto;display:block}.toast{left:50%;bottom:calc(86px + env(safe-area-inset-bottom));background:var(--navy-900);color:#fff;z-index:60;border-radius:10px;max-width:92vw;padding:10px 16px;font-size:.9rem;position:fixed;transform:translate(-50%);box-shadow:0 6px 18px #0003}.toast.bad{background:var(--bad)}table.t{border-collapse:collapse;background:var(--surface);width:100%;font-size:.85rem}table.t th,table.t td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:8px}table.t th{background:var(--navy-50);font-weight:600;position:sticky;top:0}.scroll-x{border:1px solid var(--line);border-radius:10px;overflow-x:auto}.kv{grid-template-columns:130px 1fr;gap:6px 10px;font-size:.9rem;display:grid}.kv dt{color:var(--muted)}.kv dd{word-break:break-word;margin:0}.copy{align-items:center;gap:6px;display:flex}.copy code{background:var(--navy-50);word-break:break-all;border-radius:8px;flex:1;padding:8px;font-size:.8rem}.auth{background:linear-gradient(180deg, var(--navy-900) 0 38%, var(--bg) 38%);place-items:center;min-height:100dvh;padding:16px;display:grid}.auth .card{width:100%;max-width:400px;padding:24px}.auth .logo{color:#fff;text-align:center;letter-spacing:.03em;margin-bottom:16px;font-size:1.3rem;font-weight:700}.auth .logo span{color:#b8c7e8;letter-spacing:0;font-size:.85rem;font-weight:400;display:block}.menu a{border-bottom:1px solid var(--line);color:var(--text);justify-content:space-between;padding:14px 12px;font-weight:500;text-decoration:none;display:flex}.menu a:last-child{border-bottom:0}.group-title{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:16px 0 8px;font-size:.8rem}
