.app{max-width:1100px;margin:0 auto;padding:20px 16px 60px}.header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px}.header h1{font-size:22px;margin:0}.header .sub{color:var(--muted);font-size:13px;margin-top:4px}.status-pill{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border-radius:999px;font-weight:600;font-size:14px}.status-pill.UP{background:#22c55e26;color:var(--ok)}.status-pill.DOWN{background:#ef444426;color:var(--bad)}.status-pill.LOADING{background:#6366f126;color:var(--accent)}.status-pill .dot{width:8px;height:8px;border-radius:50%;background:currentColor;box-shadow:0 0 0 4px #ffffff0f}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:18px}.toolbar label{font-size:13px;color:var(--muted);display:inline-flex;align-items:center;gap:6px}.toolbar input[type=checkbox]{accent-color:var(--accent)}.toolbar .timestamp{margin-left:auto;font-size:12px;color:var(--muted)}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}.card{background:var(--card);border:1px solid var(--card-border);border-radius:14px;padding:16px}.card h2{margin:0 0 4px;font-size:15px;letter-spacing:.02em;text-transform:uppercase;color:#c5cbe0}.card .hint{margin:0 0 12px;color:var(--muted);font-size:12.5px;line-height:1.45}.kv{display:grid;grid-template-columns:1fr auto;gap:6px 10px;font-size:14px}.kv .k{color:var(--muted)}.kv .v{font-variant-numeric:tabular-nums;word-break:break-all;text-align:right}.bar{height:8px;background:#232a48;border-radius:999px;overflow:hidden;margin:6px 0 2px}.bar>span{display:block;height:100%;background:var(--ok);transition:width .3s}.bar.warn>span{background:var(--warn)}.bar.bad>span{background:var(--bad)}.check-row{display:flex;justify-content:space-between;gap:8px;padding:8px 0;border-bottom:1px solid var(--card-border);font-size:14px}.check-row:last-child{border-bottom:0}.badge{padding:2px 10px;border-radius:999px;font-size:12px;font-weight:600}.badge.ok{background:#22c55e26;color:var(--ok)}.badge.bad{background:#ef444426;color:var(--bad)}.error-box{background:#ef444414;border:1px solid rgba(239,68,68,.35);border-radius:12px;padding:14px 16px;color:#fda4a4;font-size:14px;line-height:1.5}.footer{margin-top:28px;color:var(--muted);font-size:12px;text-align:center}@media (max-width: 500px){.header h1{font-size:18px}.card{padding:14px}.toolbar .timestamp{margin-left:0;width:100%}}.topbar{position:sticky;top:0;z-index:10;background:#0b1020eb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--card-border)}.topbar-inner{max-width:1100px;margin:0 auto;padding:10px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.topbar .brand{font-weight:700;letter-spacing:.04em}.view-toggle{display:inline-flex;background:var(--card);border:1px solid var(--card-border);border-radius:999px;padding:3px}.view-toggle .seg{background:transparent;color:var(--muted);padding:7px 16px;border-radius:999px;font-size:13px}.view-toggle .seg.active{background:var(--accent);color:#fff}.tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}.tab,.subtab{background:var(--card);border:1px solid var(--card-border);color:var(--muted);padding:8px 16px;border-radius:10px;font-size:13px}.tab.active,.subtab.active{background:var(--accent);color:#fff;border-color:var(--accent)}.subtabs{display:flex;gap:8px;margin-bottom:14px}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.stat{background:var(--card);border:1px solid var(--card-border);border-radius:14px;padding:16px}.stat-value{font-size:22px;font-weight:700;font-variant-numeric:tabular-nums}.stat-label{color:var(--muted);font-size:12.5px;margin-top:4px}.table-wrap{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;font-size:13.5px}.data-table th,.data-table td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--card-border);vertical-align:top}.data-table th{color:var(--muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.03em}.data-table tr:last-child td{border-bottom:0}.data-table .muted,.muted{color:var(--muted)}.tag{padding:2px 9px;border-radius:999px;font-size:11.5px;font-weight:600;white-space:nowrap}.tag.ok{background:#22c55e26;color:var(--ok)}.tag.bad{background:#ef444426;color:var(--bad)}button.sm{padding:5px 12px;font-size:12.5px;border-radius:8px}button.ghost{background:transparent;border:1px solid var(--card-border);color:var(--text)}.login-wrap{max-width:460px;margin:10px auto}.form{display:flex;flex-direction:column;gap:12px}.field{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted)}.field input,.field select,.field textarea{font:inherit;background:var(--bg);border:1px solid var(--card-border);color:var(--text);border-radius:10px;padding:10px 12px}.field textarea{resize:vertical}.row-gap{display:flex;gap:10px;align-items:center}.result-box{margin-top:12px;background:var(--bg);border:1px solid var(--card-border);border-radius:10px;padding:12px;font-size:12.5px;color:var(--ok);white-space:pre-wrap}.tag.warn{background:#f59e0b26;color:var(--warn)}.pool-bar{display:flex;height:12px;background:#232a48;border-radius:999px;overflow:hidden;margin:8px 0 6px}.pool-bar>.paid{background:var(--ok)}.pool-bar>.pending{background:var(--warn)}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12.5px;color:var(--muted)}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}.payee{font-variant-numeric:tabular-nums;line-height:1.5}.payee b{color:var(--text)}.review{margin-top:14px}.review-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}.inline-input{font:inherit;background:var(--bg);border:1px solid var(--card-border);color:var(--text);border-radius:8px;padding:6px 8px;width:90px}.check{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text)}.check input{accent-color:var(--accent)}:root{--st-requested: #a78bfa;--st-approved: #f59e0b;--st-confirmed: #22c55e;--st-arrived: #3b82f6;--st-noshow: #ef4444;--st-unconfirmed: #94a3b8;--st-cancelled: #8b97ad}.st-requested{--c: var(--st-requested)}.st-approved{--c: var(--st-approved)}.st-confirmed{--c: var(--st-confirmed)}.st-arrived{--c: var(--st-arrived)}.st-noshow{--c: var(--st-noshow)}.st-unconfirmed{--c: var(--st-unconfirmed)}.st-cancelled{--c: var(--st-cancelled)}.appt-card{margin-top:16px}.appt-title{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:12px}.appt-title h2{margin-bottom:2px}.appt-date-long{font-size:18px;font-weight:600}.rel-day{margin-left:10px;font-size:12px;font-weight:600;color:var(--accent);background:#6366f126;padding:2px 9px;border-radius:999px;vertical-align:2px}.appt-hours{font-size:12.5px;text-align:right;line-height:1.5}.status-tag{display:inline-block;padding:2px 9px;border-radius:999px;font-size:11.5px;font-weight:600;white-space:nowrap;color:var(--c);background:#ffffff0f;background:color-mix(in srgb,var(--c) 16%,transparent)}.appt-datebar{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}.appt-nav{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.appt-nav input[type=date]{font:inherit;background:var(--bg);border:1px solid var(--card-border);color:var(--text);border-radius:8px;padding:6px 10px;color-scheme:dark}.appt-nav button.sm{min-width:36px}.appt-refresh{margin-left:auto}.appt-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}button.strip-day{display:flex;flex-direction:column;align-items:center;gap:1px;padding:7px 4px;background:var(--bg);border:1px solid var(--card-border);color:var(--muted);border-radius:10px}button.strip-day .strip-dow{font-size:11px;text-transform:uppercase;letter-spacing:.04em}button.strip-day .strip-num{font-size:17px;font-weight:700;color:var(--text)}button.strip-day .strip-pending{min-width:18px;height:16px;line-height:16px;font-size:10.5px;font-weight:700;border-radius:999px;color:#1a1306;background:var(--warn)}button.strip-day .strip-pending:empty{background:transparent}button.strip-day.today{border-color:var(--accent)}button.strip-day.active{background:var(--accent);border-color:var(--accent)}button.strip-day.active .strip-dow,button.strip-day.active .strip-num{color:#fff}.appt-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px;align-items:start}.appt-main{min-width:0;transition:opacity .15s}.appt-main.is-loading{opacity:.55}.appt-summary{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.empty-day{margin:4px 0 10px}.day-requests{margin-bottom:12px;padding:10px 12px;border-radius:10px;font-size:13px;line-height:1.5;border:1px solid rgba(167,139,250,.4);background:#a78bfa14}.day-requests ul{margin:6px 0 0;padding-left:18px}button.link{background:none;padding:0;color:var(--accent);text-decoration:underline;border-radius:0;font-size:inherit}.tl-wrap{border:1px solid var(--card-border);border-radius:12px;background:var(--bg);overflow:hidden}.tl{position:relative}.tl-closed{position:absolute;left:var(--lbl);right:0;background:repeating-linear-gradient(135deg,rgba(255,255,255,.025) 0 6px,transparent 6px 12px);pointer-events:none}.tl-hour,.tl-mark,.tl-now{position:absolute;left:0;right:0;display:flex;align-items:center;height:0;pointer-events:none}.tl-hour-label{width:var(--lbl);padding-right:10px;text-align:right;font-size:11.5px;color:var(--muted);transform:translateY(-1px);font-variant-numeric:tabular-nums}.tl-hour-line{flex:1;border-top:1px solid var(--card-border)}.tl-mark-label{width:var(--lbl);padding-right:10px;text-align:right;font-size:10px;color:var(--muted);opacity:.85;font-variant-numeric:tabular-nums}.tl-mark-line{flex:1;border-top:1px dotted #3a4370}.tl-now{z-index:3}.tl-now-label{width:calc(var(--lbl) - 6px);text-align:right;font-size:11px;font-weight:700;color:var(--bad);font-variant-numeric:tabular-nums}.tl-now-dot{width:8px;height:8px;margin:0 0 0 -1px;border-radius:50%;background:var(--bad);flex:none;transform:translate(3px)}.tl-now-line{flex:1;border-top:2px solid var(--bad)}.tl-event{position:absolute;z-index:2;overflow:hidden;cursor:pointer;padding:4px 8px;border-radius:7px;border-left:3px solid var(--c);font-size:12.5px;line-height:1.3;background:#ffffff12;background:color-mix(in srgb,var(--c) 20%,var(--card));transition:filter .12s}.tl-event:hover{filter:brightness(1.15)}.tl-event:focus-visible,.pending-item:focus-visible,.cancelled-item:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.tl-event-head{display:flex;justify-content:space-between;gap:8px;align-items:baseline}.tl-event-head b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tl-event-time{font-size:11px;color:var(--muted);white-space:nowrap;flex:none}.tl-event-sub{margin-top:2px;font-size:11.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tl-event-flag{position:absolute;right:6px;bottom:3px;font-size:9.5px;font-weight:700;color:var(--c);background:#00000040;padding:1px 6px;border-radius:4px}.tl-event.has-flag .tl-event-sub{max-width:calc(100% - 128px)}.tl-event.st-noshow,.tl-event.st-unconfirmed{border-left-style:dashed;opacity:.85}.appt-aside{border:1px solid var(--card-border);border-radius:12px;padding:12px;background:var(--bg)}.aside-head{display:flex;justify-content:space-between;align-items:center}.aside-head h3{margin:0;font-size:14px}.aside-sub{font-size:12px;margin:4px 0 10px;line-height:1.4}.aside-list{max-height:640px;overflow-y:auto}.pending-date{position:sticky;top:0;z-index:1;background:var(--bg);padding:6px 0 4px;font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.pending-date.on-day{color:var(--accent)}.pending-item{cursor:pointer;margin-bottom:6px;padding:8px 10px;border-radius:9px;font-size:13px;background:var(--card);border:1px solid var(--card-border);border-left:3px solid var(--st-requested)}.pending-item:hover{border-color:var(--st-requested)}.pending-item.on-day{background:#a78bfa1f}.pending-top{display:flex;justify-content:space-between;gap:8px}.pending-top .muted{font-size:11.5px;white-space:nowrap}.pending-sub{margin-top:2px;font-size:12px;color:var(--muted)}.pending-note{margin-top:4px;font-size:12px;font-style:italic;color:#c5cbe0;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.cancelled-list{margin-top:12px;font-size:13px}.cancelled-list summary{cursor:pointer;color:var(--muted);padding:4px 0}.cancelled-item{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center;cursor:pointer;padding:7px 10px;margin-top:4px;border-radius:8px;border:1px solid var(--card-border)}.cancelled-item:hover{background:var(--card)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#050812b3;display:flex;align-items:center;justify-content:center;padding:16px}.modal{width:100%;max-width:520px;max-height:90vh;overflow-y:auto;background:var(--card);border:1px solid var(--card-border);border-radius:14px}.modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:16px 16px 8px}.modal-head h3{margin:0 0 2px;font-size:18px}.modal-body{padding:4px 16px 16px}.modal-body h4{margin:16px 0 6px;font-size:12.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.modal-body .kv .v{word-break:normal}.modal-body tfoot td{border-top:1px solid var(--card-border);border-bottom:0}.modal-note{margin:0;padding:10px 12px;border-radius:10px;background:var(--bg);border:1px solid var(--card-border);font-size:13.5px;line-height:1.5;white-space:pre-wrap}@media (max-width: 900px){.appt-layout{grid-template-columns:minmax(0,1fr)}.appt-aside{order:-1}.aside-list{max-height:260px}}@media (max-width: 500px){.appt-hours{text-align:left}.appt-refresh{margin-left:0}.tl-event-time{display:none}}@media (prefers-reduced-motion: reduce){.appt-main,.tl-event{transition:none}}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;padding:0;min-height:100%;background:#0b1020;color:#e6e9f2;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased}:root{--bg: #0b1020;--card: #151a2e;--card-border: #232a48;--text: #e6e9f2;--muted: #8891ad;--ok: #22c55e;--warn: #f59e0b;--bad: #ef4444;--accent: #6366f1}a{color:var(--accent)}button{font:inherit;border:0;background:var(--accent);color:#fff;padding:10px 18px;border-radius:10px;cursor:pointer;transition:opacity .15s}button:disabled{opacity:.5;cursor:not-allowed}button:hover:not(:disabled){opacity:.9}
