:root{color-scheme:light;--red:#b01e2d;--red-deep:#7a1420;--red-soft:#fff0f1;--ink:#272427;--muted:#777174;--line:#e9e3e1;--paper:#fff;--canvas:#f8f6f5;--green:#20734e;--green-soft:#e9f7ef;--yellow:#936300;--yellow-soft:#fff5d7;--gray:#716e72;--gray-soft:#f0efee;--shadow:0 12px 30px #44221a0b;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:var(--canvas)}
*{box-sizing:border-box}html{min-width:320px;min-height:100%;scroll-behavior:smooth}body{margin:0;min-height:100vh;min-height:100dvh;padding:calc(8px + var(--safe-top)) 16px calc(24px + var(--safe-bottom));background:radial-gradient(ellipse at 90% 0%,#fae9e9 0,transparent 28%),var(--canvas)}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.48}a{color:inherit}.app-shell{width:min(100%,1120px);margin:0 auto}.page-footer{width:min(100%,1120px);margin:18px auto 0;color:#9b9493;font-size:10px;text-align:center}.topbar{position:sticky;z-index:20;top:0;display:flex;align-items:center;justify-content:space-between;gap:12px;width:min(100%,1120px);min-height:52px;margin:0 auto 10px;padding:6px 0;background:#f8f6f5ed;backdrop-filter:blur(14px)}.brand{display:flex;align-items:center;gap:8px;text-decoration:none}.brand-icon{display:grid;place-items:center;width:34px;height:34px;border-radius:11px;background:linear-gradient(145deg,#c9303e,#861420);box-shadow:0 7px 14px #a8182527;color:#fff;font-size:18px;font-weight:900}.brand strong{display:block;color:var(--red-deep);font-size:13px;font-weight:900;letter-spacing:.13em}.brand small{display:block;margin-top:1px;color:#8b8382;font-size:9px;font-weight:650}.top-actions{display:flex;align-items:center;gap:7px}.network{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:10px;font-weight:750}.network i{width:7px;height:7px;border-radius:50%;background:#32a86e;box-shadow:0 0 0 3px #32a86e1c}.network.offline i{background:var(--red);box-shadow:0 0 0 3px #b01e2d1c}.global-notice{position:fixed;z-index:50;left:50%;bottom:calc(18px + var(--safe-bottom));max-width:min(92vw,480px);padding:11px 15px;border:1px solid #ebd2d2;border-radius:12px;background:#fff;box-shadow:0 12px 30px #4319141d;color:var(--red-deep);font-size:12px;font-weight:750;transform:translateX(-50%)}.global-notice[hidden]{display:none}.loading-card{display:grid;place-items:center;gap:10px;min-height:42vh;color:var(--muted);font-size:12px}.spinner{display:inline-block;width:24px;height:24px;border:3px solid #eadeda;border-top-color:var(--red);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.button{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:0 14px;border:1px solid transparent;border-radius:11px;background:var(--red);color:#fff;font-size:11px;font-weight:850;text-decoration:none;transition:transform .15s,box-shadow .15s}.button:hover:not(:disabled){box-shadow:0 7px 16px #a8182525;transform:translateY(-1px)}.button-secondary{border-color:#eed4d3;background:#fff;color:var(--red)}.button-quiet{min-height:32px;padding:0 10px;border-color:#ead7d5;background:#fff;color:var(--red);font-size:10px}.button-danger{border-color:#f0c9c7;background:#fff;color:#a9222b}.button-success{background:#237c55}.button-small{min-height:31px;padding:0 10px;border-radius:9px;font-size:10px}.icon-button{display:grid;place-items:center;width:34px;height:34px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--red-deep);font-size:17px;line-height:1}.eyebrow{margin:0 0 5px;color:var(--red);font-size:9px;font-weight:900;letter-spacing:.14em;text-transform:uppercase}.field{display:grid;gap:6px}.field label{color:#655e62;font-size:10px;font-weight:800}.field input,.field select,.field textarea,.search-input,.date-input{width:100%;min-height:40px;padding:9px 11px;border:1px solid #e6dfdc;border-radius:10px;background:#fff;color:var(--ink);font-size:12px;outline:none}.field textarea{min-height:92px;resize:vertical;line-height:1.5}.field input:focus,.field select:focus,.field textarea:focus,.search-input:focus{border-color:#cc777e;box-shadow:0 0 0 3px #b01e2d12}.help{margin:8px 0 0;color:#938b8b;font-size:10px;line-height:1.5}.error-text{min-height:14px;margin:0;color:#ae2933;font-size:11px;font-weight:700}.entry-actions,.card-actions{display:flex;flex-wrap:wrap;gap:8px}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:12px;margin:18px 0 10px}.section-heading h2{margin:0;font-size:16px;letter-spacing:-.02em}.section-heading p{margin:4px 0 0;color:var(--muted);font-size:10px}.panel,.metric-card,.source-card,.admin-card,.calendar-card{border:1px solid var(--line);border-radius:16px;background:var(--paper);box-shadow:var(--shadow)}.panel{padding:15px}.panel h2{margin:0 0 10px;font-size:15px;letter-spacing:-.02em}

/* Resolver */
.resolver-screen{display:grid;justify-items:center;gap:13px;max-width:560px;margin:min(15vh,110px) auto 0}.resolver-brand{display:flex;align-items:center;gap:10px;color:var(--red-deep)}.resolver-brand img{width:38px;height:38px}.resolver-brand strong{display:block;font-size:14px;letter-spacing:.12em}.resolver-brand span{display:block;margin-top:2px;color:var(--muted);font-size:10px}.resolver-card{display:flex;align-items:center;gap:13px;width:100%;padding:17px;border:1px solid #eadfdd;border-radius:17px;background:#fff;box-shadow:var(--shadow)}.resolver-card strong{font-size:13px}.resolver-card p{margin:4px 0 0;color:var(--muted);font-size:11px;line-height:1.45}.location-panel{width:100%;margin-top:2px;padding:15px;border:1px solid #eadfdd;border-radius:16px;background:#fff;box-shadow:var(--shadow)}.station-search-row{display:flex;gap:8px}.station-search-row .search-input:first-child{flex:1 1 0;min-width:0}.station-search-row select.search-input{flex:0 0 145px}.station-list{display:grid;gap:7px;max-height:45vh;margin:12px 0;overflow:auto}.station-option{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding:11px;border:1px solid var(--line);border-radius:10px;background:#fff;text-align:left}.station-option:hover{border-color:#d47a81;background:#fff8f8}.station-option strong{display:block;font-size:11px}.station-option small{display:block;margin-top:3px;color:var(--muted);font-size:9px}.tag{padding:5px 8px;border-radius:99px;background:#f5f1f0;color:#746c6b;font-size:9px;font-weight:850}.empty-state{padding:20px 12px;border:1px dashed #ddd4d1;border-radius:12px;color:#847c7d;font-size:11px;line-height:1.55;text-align:center}

/* Station */
.station-screen,.calendar-screen{min-height:calc(100dvh - 116px);padding:4px 0 82px}.station-screen.clear-mode{display:grid;align-content:center;gap:14px;min-height:calc(100dvh - 116px);padding-top:0}.compact-station-header{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:42px;margin-bottom:12px}.compact-station-header strong{display:block;max-width:58vw;overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.compact-station-header small{display:block;margin-top:3px;color:var(--muted);font-size:9px}.station-head-actions{display:flex;align-items:center;gap:7px}.status-focus{display:flex;align-items:center;justify-content:center;gap:15px;min-height:150px;padding:20px;border:1px solid;border-radius:20px;text-align:left}.status-orb{display:grid;place-items:center;flex:none;width:66px;height:66px;border-radius:50%;font-size:34px;font-weight:900}.status-focus h1{margin:0;font-size:clamp(22px,6vw,31px);letter-spacing:-.045em;line-height:1.05}.status-focus p{margin:7px 0 0;font-size:11px;font-weight:650}.tone-red{border-color:#f0cdcb;background:#fff6f5;color:#a01d28}.tone-red .status-orb{background:#ffe3e1}.tone-yellow{border-color:#f0ddaa;background:#fffaf0;color:#896007}.tone-yellow .status-orb{background:#fff0c6}.tone-green{border-color:#d0e8db;background:#f4fbf7;color:#277352}.tone-green .status-orb{background:#dff3e8}.tone-gray{border-color:#e3e0de;background:#faf9f8;color:#68656a}.tone-gray .status-orb{background:#efedeb}.source-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.source-summary-item{padding:10px 11px;border:1px solid var(--line);border-radius:13px;background:#fff}.source-summary-item span,.source-summary-item small{display:block;color:var(--muted);font-size:9px}.source-summary-item strong{display:block;margin:3px 0;font-size:11px}.source-summary-item.green{border-color:#d1e9dc}.source-summary-item.red{border-color:#f0cdcb}.source-summary-item.yellow{border-color:#f0dfad}.source-summary-item.gray{border-color:#e7e4e2}.source-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:14px}.source-card{padding:15px}.source-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.source-card h3{margin:0 0 3px;font-size:14px}.monitor-date{color:var(--muted);font-size:9px}.source-status{display:inline-flex;align-items:center;padding:5px 7px;border-radius:99px;font-size:9px;font-weight:850;white-space:nowrap}.source-status.red{background:#ffedeb;color:#a32029}.source-status.yellow{background:#fff4d5;color:#8a6205}.source-status.green{background:#e9f7ef;color:#22714e}.source-status.gray{background:#efeeed;color:#69666b}.detail-list{display:grid;gap:6px;margin:13px 0;color:#615c60;font-size:10px}.detail-row{display:flex;justify-content:space-between;gap:8px;padding:8px;border-radius:8px;background:#faf8f7}.detail-row strong{font-weight:850;text-align:right}.response-note{margin-top:10px;padding:9px;border-left:3px solid #dfbd66;border-radius:3px 8px 8px 3px;background:#fffbef;color:#6b5d3b;font-size:10px;line-height:1.5}.response-note.done{border-color:#61af87;background:#f2faf5;color:#2c6348}.offline-note{margin-bottom:10px;padding:8px 10px;border-radius:10px;background:#f0efee;color:#6d686b;font-size:10px}.station-tabbar{position:fixed;z-index:30;left:50%;bottom:calc(10px + var(--safe-bottom));display:grid;grid-template-columns:repeat(2,1fr);width:min(360px,calc(100vw - 24px));padding:5px;transform:translateX(-50%);border:1px solid #eadfdd;border-radius:15px;background:#fffffff0;box-shadow:0 10px 28px #3f201b22;backdrop-filter:blur(14px)}.tab-button{min-height:34px;padding:0 11px;border:0;border-radius:10px;background:transparent;color:#736d70;font-size:10px;font-weight:850;white-space:nowrap}.tab-button.active{background:var(--red);color:#fff}

/* Calendar */
.calendar-card{padding:15px}.calendar-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.calendar-top strong{font-size:14px}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.calendar-weekday{text-align:center;color:#8b8382;font-size:9px;font-weight:850}.calendar-day{display:grid;align-content:start;justify-items:center;gap:4px;min-height:50px;padding:6px 1px;border:1px solid transparent;border-radius:9px;background:#f5f3f1;color:#777;font-size:9px}.calendar-day.empty{background:transparent}.calendar-day .day-dot{width:6px;height:6px;border-radius:50%;background:#b9b6b5}.calendar-day.red{background:#fff0ee;color:#a11c27}.calendar-day.red .day-dot{background:#ce3d45}.calendar-day.yellow{background:#fff8df;color:#86600b}.calendar-day.yellow .day-dot{background:#e0a51d}.calendar-day.green{background:#eff9f3;color:#26734e}.calendar-day.green .day-dot{background:#39a773}.calendar-day.selected{border-color:var(--red);box-shadow:0 0 0 2px #b01e2d13}.legend{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0}.pill{display:inline-flex;align-items:center;padding:6px 8px;border:1px solid var(--line);border-radius:99px;background:#fff;color:#6d686b;font-size:9px;font-weight:800}.pill-red{border-color:#efd5d2;background:#fff4f2;color:var(--red)}

/* Dashboard and admin */
.dashboard-tabbar{position:sticky;z-index:15;top:52px;display:flex;gap:4px;width:max-content;max-width:100%;margin:10px auto;padding:4px;border:1px solid #e7dfdc;border-radius:13px;background:#ffffffed;box-shadow:0 4px 16px #3520190b;backdrop-filter:blur(12px)}.station-head{display:flex;align-items:flex-start;justify-content:space-between;gap:13px;padding:15px;border:1px solid #eadfdc;border-radius:16px;background:#fff;box-shadow:var(--shadow)}.station-head h1{margin:3px 0;font-size:20px;letter-spacing:-.03em}.station-head p{margin:0;color:var(--muted);font-size:10px}.summary-cards{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px;margin:12px 0}.metric-card{padding:12px}.metric-card span{display:block;color:#777174;font-size:9px;font-weight:800}.metric-card strong{display:block;margin-top:5px;font-size:23px;letter-spacing:-.04em}.metric-card small{display:block;margin-top:3px;color:#948c8c;font-size:8px}.admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.breakdown{display:grid;gap:6px}.break-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px;border-radius:9px;background:#faf8f7;font-size:10px}.break-row strong{font-size:10px;text-align:right}.dashboard-layout{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:12px;align-items:start}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:11px}.toolbar .search-input{flex:1;min-width:180px}.table-wrap{width:100%;overflow:auto}.station-table{width:100%;border-collapse:collapse;font-size:10px}.station-table th{padding:8px;border-bottom:1px solid var(--line);color:#8a8282;font-size:9px;text-align:left}.station-table td{padding:9px 8px;border-bottom:1px solid #f0edeb;vertical-align:middle}.station-table tr:last-child td{border-bottom:0}.station-name-button{padding:0;border:0;background:none;color:#343033;font-size:10px;font-weight:850;text-align:left}.station-name-button:hover{color:var(--red);text-decoration:underline}.status-chip{display:inline-flex;padding:5px 7px;border-radius:99px;font-size:8px;font-weight:850;white-space:nowrap}.status-chip.red{background:#ffedeb;color:#a31e28}.status-chip.yellow{background:#fff5d9;color:#805b08}.status-chip.green{background:#eaf7ef;color:#26734e}.status-chip.gray{background:#efeeed;color:#716d70}.small-muted{color:var(--muted);font-size:9px}.pagination{display:flex;align-items:center;justify-content:space-between;gap:9px;margin-top:11px;color:var(--muted);font-size:10px}.pagination>div{display:flex;align-items:center;gap:8px}.pagination strong{color:#5c5557;font-size:10px}.region-copy-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 0;border-top:1px solid #f0edeb}.region-copy-item span{font-size:10px;font-weight:800}.admin-tabs{display:flex;gap:5px;margin:12px 0;padding-bottom:2px;overflow:auto}.admin-tabs .tab-button{border:1px solid var(--line);background:#fff}.admin-tabs .tab-button.active{border-color:var(--red);background:var(--red);color:#fff}.admin-card{padding:16px}.admin-card h3{margin:0 0 6px;font-size:14px}.admin-card p{color:var(--muted);font-size:10px;line-height:1.5}.preview-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.preview-kpi{padding:9px;border-radius:9px;background:#f8f5f3}.preview-kpi span{display:block;color:#867d7b;font-size:8px}.preview-kpi strong{display:block;margin-top:3px;font-size:15px}.preview-warning{padding:10px;border:1px solid #f0d9aa;border-radius:10px;background:#fff9e9;color:#785708;font-size:10px;line-height:1.5}.preview-ok{padding:10px;border:1px solid #d3e9dc;border-radius:10px;background:#f4fbf6;color:#256e4c;font-size:10px}.alias-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;gap:8px;align-items:center;margin:7px 0}.alias-row span{overflow-wrap:anywhere;font-size:10px;font-weight:700}.master-list{display:grid;gap:8px}.master-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px;border:1px solid #efebe8;border-radius:10px}.master-row strong{display:block;font-size:10px}.master-row small{display:block;margin-top:3px;color:var(--muted);font-size:8px}.master-add{display:flex;gap:8px;margin:10px 0}.master-add input{flex:1;min-width:0}.coordinates-list{display:grid;gap:8px}.coordinate-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;padding:10px;border:1px solid #efebe8;border-radius:10px}.coordinate-row strong{display:block;font-size:10px}.coordinate-row small{display:block;margin-top:3px;color:#7d7777;font-size:9px}.form-inline{display:flex;flex-wrap:wrap;align-items:end;gap:9px}.form-inline .field{flex:1;min-width:170px}.install-hint{padding:10px;border:1px solid #efdfb9;border-radius:10px;background:#fff9e9;color:#73550c;font-size:10px;line-height:1.5}

/* Detail dialog uses the same concise status treatment. */
.status-banner{display:flex;align-items:center;gap:10px;margin-bottom:12px;padding:12px;border:1px solid;border-radius:13px}.status-banner .status-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:#fff;font-size:17px;font-weight:900}.status-banner strong{display:block;font-size:12px}.status-banner small{display:block;margin-top:3px;font-size:10px}
/* Dialog */
.detail-dialog{width:min(94vw,720px);max-width:720px;max-height:86vh;padding:0;border:0;border-radius:18px;background:#fff;box-shadow:0 25px 80px #1c14145c}.detail-dialog::backdrop{background:#17101678;backdrop-filter:blur(3px)}.dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:16px;border-bottom:1px solid var(--line)}.dialog-head h2{margin:0;font-size:16px}.dialog-body{display:grid;gap:12px;max-height:calc(86vh - 70px);padding:16px;overflow:auto}

@media(max-width:900px){.dashboard-layout{grid-template-columns:1fr}.summary-cards{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:650px){body{padding-inline:11px}.topbar{min-height:48px}.brand-icon{width:31px;height:31px;border-radius:10px;font-size:16px}.brand small{display:none}.network{font-size:0}.network i{width:8px;height:8px}.top-actions{gap:5px}.page-footer{display:none}.station-screen,.calendar-screen{min-height:calc(100dvh - 96px)}.station-screen.clear-mode{min-height:calc(100dvh - 96px)}.compact-station-header{margin-bottom:9px}.compact-station-header strong{max-width:52vw}.status-focus{min-height:142px;padding:18px 15px;gap:12px}.status-orb{width:58px;height:58px;font-size:29px}.status-focus h1{font-size:25px}.source-grid,.admin-grid{grid-template-columns:1fr}.source-card{padding:14px}.summary-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.metric-card{padding:11px}.dashboard-head{padding:13px}.station-head{padding:13px;flex-wrap:wrap}.station-head-actions{margin-left:auto}.dashboard-tabbar{top:48px;width:100%;justify-content:space-between;overflow:auto}.dashboard-tabbar .tab-button{padding:0 9px}.panel{padding:13px}.toolbar{align-items:stretch}.toolbar .search-input{min-width:100%;flex-basis:100%}.station-table,.station-table tbody,.station-table tr,.station-table td{display:block;width:100%}.station-table thead{display:none}.station-table tr{margin-bottom:8px;padding:8px;border:1px solid #eee7e4;border-radius:10px;background:#fff}.station-table td{display:grid;grid-template-columns:42% 1fr;gap:8px;padding:5px 2px;border:0;font-size:10px}.station-table td::before{content:attr(data-label);color:#8a8282;font-size:9px;font-weight:800}.station-table td:first-child{display:block;padding-bottom:7px;border-bottom:1px solid #f1ecea}.station-table td:first-child::before{display:none}.station-table td[colspan]{display:block;text-align:center}.station-table td[colspan]::before{display:none}.pagination{align-items:flex-start;flex-direction:column}.pagination>div{width:100%;justify-content:space-between}.preview-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.alias-row{grid-template-columns:1fr}.coordinate-row{grid-template-columns:1fr}.coordinate-row .button{justify-self:start}.calendar-grid{gap:3px}.calendar-day{min-height:43px}.detail-dialog{width:calc(100vw - 18px);max-height:90vh}.dialog-body{max-height:calc(90vh - 68px)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}

/* CIAMIS station mode deliberately owns one mobile viewport. Long content is
   moved to bounded lists or dialogs instead of extending the document. */
body.ciamis-fixed-view{display:grid;grid-template-rows:auto minmax(0,1fr);height:100dvh;min-height:100dvh;overflow:hidden;overscroll-behavior:none}
body.ciamis-fixed-view .topbar{margin-bottom:8px}body.ciamis-fixed-view .app-shell{height:100%;min-height:0;overflow:hidden}body.ciamis-fixed-view .page-footer{display:none}
.resolver-screen,.permission-screen{height:100%;min-height:0;margin:0 auto;overflow:hidden}.resolver-screen{grid-template-rows:auto auto auto minmax(0,1fr);align-content:center;max-width:520px}.resolver-screen:has(.location-panel){align-content:start}.resolver-screen .location-panel{min-height:0;overflow:hidden}.resolver-screen .station-list{max-height:none;min-height:0;height:100%;margin-bottom:0}.permission-screen{display:grid;align-content:center;justify-items:center;gap:13px;max-width:400px;text-align:center}.permission-screen>div:nth-child(2)>strong{display:block;font-size:19px;letter-spacing:-.03em}.permission-screen>div:nth-child(2)>p{margin:5px 0 0;color:var(--muted);font-size:11px;line-height:1.5}.permission-symbol{display:grid;place-items:center;width:58px;height:58px;border-radius:20px;background:#fff0f1;color:var(--red)}.permission-symbol svg{width:30px;height:30px}.permission-check{display:flex;align-items:center;gap:10px;width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:13px;background:#fff;text-align:left}.permission-check>span{display:grid;place-items:center;width:25px;height:25px;border-radius:9px;background:#f1eeee;color:#726d70;font-size:16px}.permission-check.ready{border-color:#cae6d7}.permission-check.ready>span{background:#e9f7ef;color:var(--green)}.permission-check strong,.permission-check small{display:block}.permission-check strong{font-size:11px}.permission-check small{margin-top:2px;color:var(--muted);font-size:9px}.bell-small svg{width:15px;height:15px}
.station-screen{display:grid;grid-template-rows:auto auto auto minmax(0,auto);align-content:center;gap:16px;height:100%;min-height:0;max-height:100%;padding:0 0 calc(60px + var(--safe-bottom));overflow:hidden}.station-screen.clear-mode{display:grid;align-content:center;gap:16px;height:100%;min-height:0;padding:0 0 calc(60px + var(--safe-bottom))}.compact-station-header{margin:0;min-height:35px}.status-focus{min-height:112px;padding:16px;border-radius:18px}.status-orb{width:51px;height:51px;font-size:27px}.status-focus h1{font-size:clamp(21px,6vw,28px)}.status-focus p{font-size:10px}.source-summary{gap:10px}.source-summary-item{min-height:56px;padding:9px 10px}.source-grid-compact{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:0}.source-card-button{display:flex;flex-direction:column;justify-content:space-between;min-height:86px;padding:12px;border:1px solid var(--line);color:var(--ink);text-align:left}.source-card-button:hover{border-color:#db9da2;background:#fffafa}.source-card-button .source-card-head{width:100%}.source-card-button .source-card-head strong{display:block;font-size:11px}.source-card-button .source-card-head small{display:block;margin-top:4px;color:var(--muted);font-size:9px;line-height:1.3}.source-card-open{margin-top:10px;color:var(--red);font-size:9px;font-weight:850}.response-note.done{border-color:#dfbd66;background:#fffbef;color:#6b5d3b}
.calendar-screen{display:grid;grid-template-rows:auto minmax(0,1fr);gap:8px;height:100%;min-height:0;max-height:100%;padding:0 0 calc(60px + var(--safe-bottom));overflow:hidden}.calendar-screen .compact-station-header{margin:0}.calendar-screen #calendarContent{display:grid;min-height:0;overflow:hidden}.calendar-card-full{display:grid;grid-template-rows:auto minmax(0,1fr);min-height:0;height:100%;padding:14px}.calendar-card-full .calendar-grid{grid-auto-rows:minmax(38px,1fr);min-height:0;height:100%;align-content:stretch}.calendar-card-full .calendar-day{min-height:0;padding:7px 1px;font-size:10px}.calendar-card-full .calendar-day .day-dot{width:7px;height:7px}
.trend-panel{margin:14px 0}.trend-toggle{display:flex;gap:6px}.trend-chart{display:block;width:100%;height:auto;overflow:visible}.trend-grid{stroke:#eee8e6;stroke-width:1}.trend-line{fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.trend-label{fill:#8d8585;font-size:10px}.trend-date{text-anchor:middle}.trend-legend{display:flex;flex-wrap:wrap;gap:12px;margin:0 0 7px;color:#686165;font-size:10px;font-weight:750}.trend-legend span{display:flex;align-items:center;gap:5px}.trend-legend i{width:9px;height:9px;border-radius:50%}.source-health{margin-bottom:14px}
@media(max-width:650px){body.ciamis-fixed-view{padding-top:calc(6px + var(--safe-top));padding-bottom:calc(8px + var(--safe-bottom))}body.ciamis-fixed-view .topbar{min-height:43px;margin-bottom:5px}.permission-screen{gap:11px}.station-screen,.station-screen.clear-mode{gap:13px;padding-bottom:calc(55px + var(--safe-bottom))}.status-focus{min-height:104px;padding:14px}.status-orb{width:47px;height:47px;font-size:25px}.status-focus h1{font-size:23px}.source-grid-compact{grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.source-card-button{min-height:78px;padding:10px}.source-card-button .source-status{padding:4px 5px;font-size:8px}.calendar-screen{padding-bottom:calc(55px + var(--safe-bottom))}.calendar-card-full{padding:11px}.calendar-card-full .calendar-grid{grid-auto-rows:minmax(42px,1fr)}.calendar-card-full .calendar-day{font-size:10px}.trend-toggle .button{padding-inline:8px}.trend-chart{min-width:0}.trend-panel{overflow:hidden}.trend-panel .section-heading{min-width:0}}

/* Three compact SPBU destinations; all long lists live inside their own pane. */
.station-tabbar{grid-template-columns:repeat(3,minmax(0,1fr));width:min(456px,calc(100vw - 24px))}
.resolver-screen:has(.location-panel){grid-template-rows:auto auto minmax(0,1fr)}
.resolver-screen:has(.location-panel) #stationPicker{display:grid;width:100%;min-height:0}
.resolver-screen:has(.location-panel) .location-panel{display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;height:100%;padding:12px}
.resolver-screen:has(.location-panel) .station-list{overscroll-behavior:contain}

/* My SPBU has a fixed two-pane layout: calendar above, selected-day detail below. */
.calendar-screen #calendarContent{position:relative;grid-template-rows:minmax(0,1fr) minmax(0,1fr);gap:10px}
.calendar-screen #calendarContent>.offline-note{position:absolute;z-index:2;top:0;left:0;right:0;margin:0;pointer-events:none}
.calendar-card-half,.calendar-detail-card{min-height:0;border:1px solid var(--line);border-radius:16px;background:var(--paper);box-shadow:var(--shadow)}
.calendar-card-half{display:grid;grid-template-rows:auto minmax(0,1fr);padding:12px}
.calendar-card-half .calendar-top{margin-bottom:7px}.calendar-card-half .calendar-grid{grid-auto-rows:minmax(0,1fr);min-height:0;height:100%;align-content:stretch}
.calendar-card-half .calendar-day{min-height:0;padding:4px 1px;font-size:10px}.calendar-card-half .calendar-day .day-dot{width:6px;height:6px}
.calendar-detail-card{display:grid;grid-template-rows:auto minmax(0,1fr);gap:8px;padding:12px;overflow:hidden}
.calendar-detail-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.calendar-detail-head strong,.calendar-detail-head small{display:block}.calendar-detail-head strong{font-size:13px}.calendar-detail-head small{margin-top:2px;color:var(--muted);font-size:9px}
.calendar-source-details{display:grid;align-content:start;gap:7px;min-height:0;overflow:auto}.calendar-source-detail{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 10px;padding:9px;border:1px solid var(--line);border-radius:10px;background:#faf8f7}.calendar-source-detail>div strong,.calendar-source-detail>div small{display:block}.calendar-source-detail>div strong{font-size:10px}.calendar-source-detail>div small,.calendar-source-detail>span{color:var(--muted);font-size:9px}.calendar-source-detail>p{grid-column:1/-1;margin:2px 0 0;color:#665f61;font-size:9px;line-height:1.35}.calendar-source-detail.red{border-color:#f0cdcb}.calendar-source-detail.yellow{border-color:#f0dfad}.calendar-source-detail.green{border-color:#d1e9dc}
.calendar-event-list{display:grid;gap:6px;max-height:92px;overflow:auto}.calendar-event-list article{padding:8px;border-radius:9px;background:#fff8eb}.calendar-event-list strong,.calendar-event-list small{display:block;font-size:9px}.calendar-event-list small{margin-top:2px;color:var(--muted)}.calendar-event-list p{margin:4px 0 0;color:#665f61;font-size:9px;line-height:1.35}

/* Riwayat remains scrollable without ever extending the SPBU page. */
.history-screen{display:grid;grid-template-rows:auto minmax(0,1fr);gap:8px;height:100%;min-height:0;max-height:100%;padding:0 0 calc(60px + var(--safe-bottom));overflow:hidden}.history-screen .compact-station-header{margin:0}
.justification-history-list{display:grid;align-content:start;gap:8px;min-height:0;overflow:auto;overscroll-behavior:contain}.history-event{padding:11px;border:1px solid var(--line);border-radius:12px;background:#fff}.history-event strong,.history-event small{display:block}.history-event strong{font-size:11px}.history-event small{margin-top:3px;color:var(--muted);font-size:9px}.history-event>span{display:block;margin-top:7px;color:var(--red);font-size:9px;font-weight:800}.history-event p{margin:4px 0 0;color:#625b5e;font-size:10px;line-height:1.45}

/* Dashboard summaries sit before the monitoring table and remain compact. */
.dashboard-top-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:14px 0}.dashboard-top-grid .panel{min-width:0}.dashboard-stations{margin-top:14px}.source-submission strong,.source-submission small{display:block}.source-submission strong{font-size:10px;line-height:1.35}.source-submission small{margin-top:3px;color:var(--muted);font-size:8px}.justification-kpis{grid-template-columns:repeat(2,minmax(0,1fr));max-width:430px}.justification-breakdowns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.justification-breakdowns h2{margin:0 0 8px;font-size:12px}
@media(max-width:760px){.dashboard-top-grid,.justification-breakdowns{grid-template-columns:1fr}.history-screen{padding-bottom:calc(55px + var(--safe-bottom))}.calendar-card-half{padding:10px}.calendar-detail-card{padding:10px}.calendar-card-half .calendar-day{font-size:9px}.justification-kpis{max-width:none}}
.master-add-category{display:grid;grid-template-columns:minmax(130px,1.2fr) minmax(130px,1fr) minmax(170px,1.2fr) auto}.master-category{display:grid;gap:8px;padding:8px;border:1px solid #efebe8;border-radius:12px;background:#fff}.subcategory-list{display:grid;gap:5px;padding-left:10px}.subcategory-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 8px;border-radius:8px;background:#faf8f7}.subcategory-row span{font-size:10px}.subcategory-row .button{min-height:25px;padding:0 8px;font-size:9px}
@media(max-width:760px){.master-add-category{grid-template-columns:1fr 1fr}.master-add-category input,.master-add-category button{grid-column:1/-1}}

/* Monitoring detail: keep all requested source dates readable in both table and mobile cards. */
.region-status-panel{grid-column:span 2}.region-status-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:10px}.region-status-heading h2{margin:0}.region-status-heading p{margin:3px 0 0;color:var(--muted);font-size:9px}.region-status-total{display:inline-flex;align-items:center;min-height:28px;padding:0 9px;border-radius:999px;background:#f8f3f1;color:#6d5754;font-size:10px;font-weight:850;white-space:nowrap}.region-status-overview{display:grid;grid-template-columns:1.25fr repeat(3,minmax(0,1fr));gap:6px;margin-bottom:12px}.region-status-overview-item{min-width:0;padding:8px;border-radius:9px;background:#f7f5f4}.region-status-overview-item span,.region-status-overview-item strong{display:block}.region-status-overview-item span{font-size:8px;font-weight:800}.region-status-overview-item strong{margin-top:3px;font-size:10px;line-height:1.25}.region-status-overview-item.total{background:#f0eeed;color:#514b4d}.region-status-overview-item.open{background:#fff0ee;color:#a4222b}.region-status-overview-item.justified{background:#edf7ff;color:#1874b1}.region-status-overview-item.done{background:#eff8e9;color:#4d852b}.region-response-bars{display:grid;gap:10px}.region-response-row{padding-top:10px;border-top:1px solid #efeae8}.region-response-row:first-child{padding-top:0;border-top:0}.region-response-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.region-response-head strong{font-size:10px}.region-response-head span{color:var(--muted);font-size:9px}.region-response-bar{display:flex;height:30px;overflow:hidden;border-radius:8px;background:#efedec;box-shadow:inset 0 0 0 1px #e7e2df}.region-response-segment{display:grid;place-items:center;min-width:0;color:#fff;text-align:center;overflow:hidden}.region-response-segment.open{background:#c73532}.region-response-segment.justified{background:#2498d3}.region-response-segment.done{background:#78b93d}.region-response-segment b,.region-response-segment small{display:block;line-height:1.05;white-space:nowrap}.region-response-segment b{font-size:9px}.region-response-segment small{margin-top:1px;font-size:7px;font-weight:800}.region-response-breakdown{display:flex;flex-wrap:wrap;gap:7px 10px;margin-top:6px}.region-response-breakdown span{display:flex;align-items:center;gap:4px;color:#6f6768;font-size:8px}.region-response-breakdown i{width:7px;height:7px;border-radius:50%;background:currentColor}.region-response-breakdown strong{font-size:8px}.region-response-breakdown .open{color:#b5282d}.region-response-breakdown .justified{color:#1b88c5}.region-response-breakdown .done{color:#5e982e}.region-response-empty{display:grid;place-items:center;min-height:30px;border:1px dashed #ddd7d5;border-radius:8px;color:#918a89;font-size:9px}.station-date-list{display:flex;flex-wrap:wrap;gap:4px}.station-date-list span{padding:3px 5px;border-radius:6px;background:#f7f4f3;color:#5c5557;font-size:9px;line-height:1.2;white-space:nowrap}
@media(max-width:760px){.region-status-panel{grid-column:auto}.region-status-heading{align-items:flex-start}.region-status-overview{grid-template-columns:repeat(2,minmax(0,1fr))}.station-date-list{justify-content:flex-start}}

/* My SPBU uses the whole desktop workspace: calendar above, source-specific
   status cards below. On mobile the cards remain inside one bounded pane. */
.calendar-screen,.calendar-screen #calendarContent,.calendar-card-half,.calendar-detail-card{width:100%}
.calendar-source-details{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
.calendar-source-detail{align-content:start;min-width:0}
.calendar-source-history{grid-column:1/-1;margin-top:3px;max-height:112px}
.calendar-source-history article{border:1px solid #f0e7d8}
.region-response-breakdown b{font-size:8px;font-weight:850;white-space:nowrap}
.region-response-breakdown strong{white-space:nowrap}
@media(max-width:760px){.calendar-source-details{grid-template-columns:1fr}.calendar-source-history{max-height:86px}}

/* Source-sheet progress stays visible without making the modal itself
   unwieldy: users can scroll Update 1, Update 2, and later entries here. */
.source-progress-history{display:grid;gap:8px;margin-top:12px;padding-top:11px;border-top:1px solid var(--line)}
.source-progress-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.source-progress-head strong{font-size:11px}.source-progress-head span{padding:4px 7px;border-radius:99px;background:#f5f1f0;color:#746b6a;font-size:8px;font-weight:850}
.source-progress-note{margin:0;color:var(--muted);font-size:9px;line-height:1.4}.source-progress-list{display:grid;gap:7px;max-height:190px;padding-right:3px;overflow:auto;overscroll-behavior:contain}.source-progress-item{padding:9px;border:1px solid #eee6e3;border-radius:10px;background:#faf8f7}.source-progress-item>div{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.source-progress-item strong,.source-progress-item small{display:block}.source-progress-item strong{color:var(--red-deep);font-size:10px}.source-progress-item small{color:var(--muted);font-size:8px;text-align:right}.source-progress-item p{margin:5px 0 0;color:#625b5e;font-size:9px;line-height:1.45}
