:root{--header:#0759ac;--header2:#087dcc;--bg:#f1f6ff;--card:#fff;--ink:#203c58;--muted:#526174;--line:#e3ebf6;--accent:#075ca8;--tint:#e7f2ff;--shadow:rgba(25,67,112,.09)}
body[data-theme="ocean"]{--header:#035ba9;--header2:#068ed2;--bg:#f1f6ff;--card:#fff;--ink:#203c58;--muted:#71859b;--line:#e3ebf6;--accent:#075ca8;--tint:#e7f2ff;--shadow:rgba(25,67,112,.09)}
body[data-theme="rose"]{--header:#9b2468;--header2:#db78ac;--bg:#fff3f9;--card:#fff;--ink:#58334b;--muted:#95758a;--line:#f0dfe8;--accent:#a12568;--tint:#fbe4f0;--shadow:rgba(110,32,76,.08)}
body[data-theme="midnight"]{--header:#0b1424;--header2:#243951;--bg:#101826;--card:#1d293b;--ink:#f5f8ff;--muted:#acbbce;--line:#34445a;--accent:#86c6ff;--tint:#304662;--shadow:rgba(0,0,0,.24)}
body[data-theme="emerald"]{--header:#087058;--header2:#20a182;--bg:#f0f9f5;--card:#fff;--ink:#254c3c;--muted:#729281;--line:#d9eae0;--accent:#087058;--tint:#dcf6e9;--shadow:rgba(6,104,77,.09)}
body[data-theme="violet"]{--header:#583ba2;--header2:#8c70e2;--bg:#f7f4ff;--card:#fff;--ink:#42365f;--muted:#8c7aa6;--line:#e8e0f6;--accent:#6841a9;--tint:#eee7ff;--shadow:rgba(64,35,108,.08)}
body[data-theme="sunset"]{--header:#a7502d;--header2:#ed9f65;--bg:#fff7f0;--card:#fff;--ink:#614536;--muted:#9b8173;--line:#f0e3d8;--accent:#9f4e1f;--tint:#ffe8d5;--shadow:rgba(101,49,11,.08)}
body[data-theme="aqua"]{--header:#087c8a;--header2:#37b4c0;--bg:#f0fbfd;--card:#fff;--ink:#254d5a;--muted:#72939e;--line:#d7eaef;--accent:#076977;--tint:#dff6f9;--shadow:rgba(5,91,107,.08)}
body[data-theme="ruby"]{--header:#a52f4b;--header2:#dc6c79;--bg:#fff4f5;--card:#fff;--ink:#623544;--muted:#927782;--line:#f3e1e6;--accent:#982942;--tint:#fde7ec;--shadow:rgba(101,30,51,.08)}
body[data-theme="lavender"]{--header:#7e64bb;--header2:#b39deb;--bg:#fbf9ff;--card:#fff;--ink:#50436a;--muted:#9684a8;--line:#eae4f5;--accent:#6a4c9c;--tint:#eee9fa;--shadow:rgba(78,55,115,.07)}
body[data-theme="gold"]{--header:#8c671e;--header2:#c3a052;--bg:#fcf9f0;--card:#fff;--ink:#57492e;--muted:#96876f;--line:#eee5d4;--accent:#755413;--tint:#f5edd6;--shadow:rgba(97,71,25,.09)}

:root{font-family:ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;color-scheme:light}
*{box-sizing:border-box}body{margin:0;background:var(--bg,#f1f6ff);color:var(--ink,#203c58);font-size:15px;line-height:1.5}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.55;cursor:not-allowed}button{touch-action:manipulation}button,input,select,textarea{max-width:100%}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #c47b00;outline-offset:3px}h1,h2,h3,p{overflow-wrap:anywhere}h2,h3{margin:0 0 12px}a{color:var(--accent)}[hidden]{display:none!important}.svg-icon{display:block;width:24px;height:24px;flex:none}body:not([data-theme=midnight]){--muted:#526174}body[data-theme=midnight]{color-scheme:dark;--muted:#becadb}#app{min-height:100dvh}.shell{display:flex;max-width:1680px;min-height:100dvh;margin:auto}.sidebar{width:240px;flex:none;background:var(--card);border-right:1px solid var(--line);padding:25px 15px;display:flex;flex-direction:column;gap:8px}.brand{display:flex;gap:12px;align-items:center;margin:0 5px 25px}.brand img{width:54px;height:54px;border-radius:16px;object-fit:cover}.brand-text strong{font-size:21px;display:block;letter-spacing:-.5px}.brand-text small{display:block;font-size:10px;color:var(--muted)}.nav{display:flex;align-items:center;gap:12px;width:100%;padding:12px;background:transparent;border:0;border-radius:13px;color:var(--muted);text-align:left;font-weight:650;min-height:48px}.nav.active{background:var(--tint);color:var(--accent)}.sidebar-foot{margin-top:auto;padding:16px 5px;font-size:12px;color:var(--muted)}.main{flex:1;min-width:0}.hero{position:relative;background:linear-gradient(115deg,#00000024,#00000066),linear-gradient(115deg,var(--header),var(--header2));color:#fff;padding:25px clamp(16px,3vw,36px) 68px;overflow:hidden}.hero:after{content:'';position:absolute;width:400px;height:400px;border:40px solid #ffffff0c;border-radius:50%;right:-70px;top:-190px;pointer-events:none}.hero-upper,.hero-meta{position:relative;z-index:1}.hero-upper{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.hero-heading{font-size:11px;letter-spacing:1px;font-weight:750}.hero-title{font-size:clamp(25px,3vw,34px);line-height:1.15;margin:8px 0;letter-spacing:-.7px}.hero-sub{font-size:12px}.top-actions{display:flex;gap:8px;align-items:center;flex:none}.icon-btn{position:relative;display:grid;place-items:center;width:44px;height:44px;border:1px solid #ffffff50;border-radius:14px;background:#ffffff16;color:#fff;padding:9px}.notification-bell{color:#ffcf55}.unread-dot{position:absolute;top:-5px;right:-4px;background:#b81e34;color:white;border:2px solid var(--header);border-radius:99px;padding:1px 5px;font-size:10px;font-weight:850;min-width:20px}.hero-meta{display:flex;align-items:center;gap:12px;margin-top:23px}.avatar{width:50px;height:50px;object-fit:cover;border-radius:15px;border:1px solid #ffffff60}.hero-meta strong{font-size:17px}.hero-meta small{font-size:12px;display:block;line-height:1.5}.mobile-menu{display:none}.content{position:relative;margin:-40px clamp(12px,3vw,36px) 35px;display:flex;flex-direction:column;gap:16px;min-width:0}.card{border:1px solid var(--line);border-radius:21px;padding:20px;background:var(--card);box-shadow:0 5px 18px var(--shadow);min-width:0}.section-title{margin:0;font-size:18px;line-height:1.35;font-weight:800;letter-spacing:-.3px}.section-top{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:14px}.muted,.mini,.foot-note{color:var(--muted)}.mini{font-size:13px}.foot-note{font-size:12px;line-height:1.6;margin-bottom:0}.badge{display:inline-flex;padding:5px 10px;border-radius:99px;background:var(--tint);color:var(--accent);font-size:12px;font-weight:750;max-width:100%;overflow-wrap:anywhere}.summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}.summary-card{display:flex;gap:12px;align-items:center;text-align:left;color:#fff;border:0;min-height:122px;padding:18px;position:relative;overflow:hidden}.summary-card:after{content:'';position:absolute;width:100px;height:100px;border:18px solid #ffffff0e;border-radius:50%;right:-30px;top:-30px;pointer-events:none}.summary-duty{background:linear-gradient(120deg,#00000016,#00000066),linear-gradient(120deg,var(--header),var(--header2))}.summary-on{background:linear-gradient(120deg,#076759,#168475)}.summary-request{background:linear-gradient(120deg,#55318c,#7650aa)}.summary-card small{font-size:12px;display:block;line-height:1.45;position:relative;z-index:1}.summary-card strong{display:block;font-size:34px;line-height:1.15;font-weight:850;margin:4px 0}.summary-symbol{display:grid;place-items:center;width:48px;height:48px;flex:none;border-radius:16px;background:#ffffff26}.summary-symbol .svg-icon{width:29px;height:29px}.actions-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.action-tile{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:12px;color:var(--ink);min-height:70px;text-align:left}.action-tile small{font-size:13px;font-weight:750;flex:1}.action-tile>.svg-icon{width:17px;height:17px;color:var(--accent)}.tile-icon{width:43px;height:43px;flex:none;display:grid;place-items:center;border-radius:13px;background:var(--tint);color:var(--accent)}.action-tile[data-page=requests] .tile-icon{color:#096246;background:#d9f5e8}.action-tile[data-page=swap] .tile-icon{color:#5932a1;background:#eee5fc}.dashboard-panels{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(0,1fr);gap:16px;align-items:start}.dashboard-side{display:flex;flex-direction:column;gap:16px;min-width:0}.calendar-card{padding:20px}.day-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.weekday{font-size:12px;text-align:center;color:var(--muted);padding:6px 0;font-weight:700}.date-cell{min-height:68px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:5px 2px;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:11px}.date-cell.empty{background:transparent;border:0}.date-cell .date{font-size:15px;font-weight:750}.date-cell.active{border:2px solid var(--accent);background:var(--tint)}.duty{display:inline-block;font-size:12px;font-weight:850;line-height:1.3;padding:4px 7px;min-width:30px;text-align:center;border-radius:7px;background:var(--tint);color:var(--accent)}.duty[data-code=A],.cell-select[data-code=A]{background:#e3efff;color:#174c8e}.duty[data-code=P],.cell-select[data-code=P]{background:#daf3e4;color:#16613c}.duty[data-code=N],.cell-select[data-code=N]{background:#ffe2e7;color:#9b293d}.duty[data-code=DO]{background:#fff0cc;color:#80500d}.duty[data-code=SD]{background:#ebe1fb;color:#5a398d}.duty[data-code=AL],.duty[data-code=MC],.duty[data-code=UL]{background:#e0f4e8;color:#176344}.duty-details{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:9px;margin-top:16px;padding:13px;border-radius:13px;background:var(--tint)}.duty-details strong{font-size:14px}.duty-details span{font-size:13px}.leave-row{display:flex;gap:10px;align-items:flex-start;padding:15px 0;border-bottom:1px solid var(--line)}.leave-core{flex:1;min-width:0}.leave-core strong{display:block;font-size:14px;overflow-wrap:anywhere}.leave-core small{font-size:12px;color:var(--muted)}.leave-right{text-align:right;max-width:47%;min-width:0}.leave-right .badge{font-size:11px;white-space:normal;display:inline-flex}.leave-right small{display:block;font-size:12px;margin-top:6px}.value-row{display:flex;justify-content:space-between;gap:15px;align-items:center;flex-wrap:wrap;border-bottom:1px solid var(--line);padding:12px 0}.value-row strong{font-size:14px;overflow-wrap:anywhere}.value-row span{color:var(--muted);font-size:13px;overflow-wrap:anywhere}.filter-row{display:flex;align-items:end;gap:10px;flex-wrap:wrap;margin:15px 0}.filter-row .form-field{flex:1;min-width:130px;max-width:330px}.form-field{display:block;min-width:0}.field-label{display:block;font-size:12px;color:var(--muted);font-weight:700;margin-bottom:6px}.input,.select{width:100%;min-height:44px;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--ink);padding:10px;font-size:15px}.formgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:18px 0}.toolbar{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;border:0;border-radius:12px;padding:10px 15px;background:var(--accent);color:#fff;font-size:13px;font-weight:750}.btn.ghost{color:var(--accent);background:var(--tint)}.btn.danger{background:#a6293b}.switch-row,.confirm-access{display:flex;align-items:center;gap:12px;min-height:48px;padding:9px;border-radius:12px;background:var(--tint);font-size:14px}.switch-row input,.confirm-access input{width:21px;height:21px;flex:none;accent-color:var(--accent)}.theme-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.theme-swatch{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:13px;padding:12px;background:var(--card);color:var(--ink);font-size:13px;font-weight:700;min-height:52px;text-align:left}.theme-swatch.active{outline:2px solid var(--accent);outline-offset:1px}.swatch{width:25px;height:25px;border-radius:8px;flex:none}.theme-dialog,.nav-dialog{width:min(520px,calc(100% - 24px));max-height:85dvh;overflow:auto;background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:23px;padding:20px;box-shadow:0 18px 65px #0005}dialog::backdrop{background:#0a1e3e77}.nav-dialog .nav{margin-bottom:5px}.notice{background:var(--tint);padding:14px;border-left:3px solid var(--accent);border-radius:10px;font-size:13px;overflow-wrap:anywhere}.staff-list{margin-top:20px}.staff-detail{border-bottom:1px solid var(--line);padding:15px 0}.staff-detail summary{display:flex;flex-wrap:wrap;align-items:center;gap:12px;cursor:pointer}.staff-detail summary strong{flex:1;font-size:14px;overflow-wrap:anywhere}.profile-thumb{width:40px;height:40px;object-fit:cover;border-radius:12px}.profile-box{background:var(--tint);padding:16px;border-radius:15px;margin-top:15px}.request-row{padding:18px 0;border-bottom:1px solid var(--line)}.request-row p{font-size:14px;margin:8px 0}.request-cells{line-height:2}.unread{border-left:3px solid var(--accent);padding-left:12px}.table-scroll{overflow:auto;max-width:100%;max-height:70dvh;overscroll-behavior-inline:contain}.roster-table{width:100%;border-collapse:collapse;font-size:12px}.roster-table th,.roster-table td{border:1px solid var(--line);padding:6px;text-align:center}.roster-table th:first-child{text-align:left;min-width:200px;position:sticky;left:0;z-index:2;background:var(--card)}.roster-table thead th{position:sticky;top:0;z-index:3;background:var(--tint)}.cell-select{font-size:12px;min-width:46px;min-height:40px;border:0;background:var(--card);color:var(--ink)}.cell-select.changed{outline:2px solid #ba760c}.balance-table{border-collapse:collapse;min-width:650px;width:100%;font-size:13px}.balance-table th,.balance-table td{padding:12px;border-bottom:1px solid var(--line);text-align:right}.balance-table th:first-child{text-align:left;min-width:170px}.balance-table thead{background:var(--tint)}.balance-negative{color:#b3261e;font-weight:800}.auth{max-width:450px;margin:5vh auto;padding:18px}.auth-brand{text-align:center;margin-bottom:23px}.auth-brand img{width:95px;height:95px;object-fit:cover;border-radius:25px}.auth-brand h1{margin:8px}.auth-brand p{margin:4px}.auth-brand small{color:var(--muted)}.auth .card form{display:flex;flex-direction:column;gap:15px}.auth details{margin-top:20px}.secret{word-break:break-all;background:var(--tint);padding:15px;font-family:monospace}pre{white-space:pre-wrap;overflow:auto;max-height:400px;font-size:12px}details summary{cursor:pointer}#toast{position:fixed;bottom:100px;left:50%;transform:translateX(-50%);z-index:200;display:none;max-width:92%;border-radius:13px;padding:14px 18px;background:#183349;color:#fff;font-size:14px;overflow-wrap:anywhere}#toast.visible{display:block}.bottom-nav{display:none}.page-enter{animation:page-in 180ms ease-out both}button{transition:transform 120ms ease,background-color 120ms ease}button:active:not(:disabled){transform:scale(.98)}@keyframes page-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:1200px){.dashboard-panels{grid-template-columns:1fr}.dashboard-side{display:grid;grid-template-columns:1fr 1fr;align-items:start}.summary-card{gap:9px;padding:15px}.summary-symbol{width:42px;height:42px}}
@media(max-width:1023px){.sidebar{display:none}.mobile-menu{display:grid}.content{margin-bottom:105px}.bottom-nav{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));position:fixed;bottom:0;left:0;right:0;z-index:20;background:var(--card);border-top:1px solid var(--line);box-shadow:0 -3px 18px var(--shadow);padding:9px 10px max(9px,env(safe-area-inset-bottom))}.bottom-nav button{border:0;background:transparent;color:var(--muted);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:48px;font-size:12px;font-weight:750}.bottom-nav button.active{color:var(--accent)}.main{width:100%}.hero{padding-top:max(20px,env(safe-area-inset-top))}.theme-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.hero-upper{flex-wrap:wrap;gap:15px}.hero-upper>div:first-child{flex:1;min-width:130px}.hero-title{font-size:27px}.hero-heading{font-size:10px;letter-spacing:.4px}.hero-sub{font-size:11px}.top-actions{gap:6px;align-self:flex-start}.icon-btn{width:39px;height:39px;border-radius:12px;padding:8px}.icon-btn .svg-icon{width:22px;height:22px}.hero-meta{margin-top:18px}.hero-meta small{font-size:12px}.hero-meta strong{font-size:16px}.content{gap:13px;margin-inline:12px}.card{border-radius:18px;padding:16px}.summary-grid{gap:10px;grid-template-columns:repeat(2,minmax(0,1fr))}.summary-request{grid-column:span 2;min-height:88px}.summary-request>span:last-of-type{display:grid;grid-template-columns:auto auto;gap:0 14px;align-items:center}.summary-request strong{grid-column:2;grid-row:1/3;margin:0}.summary-card{min-height:117px;padding:14px;gap:10px}.summary-card strong{font-size:29px}.summary-symbol{width:38px;height:38px;border-radius:12px}.summary-symbol .svg-icon{width:25px;height:25px}.summary-card small{font-size:11px}.actions-grid{gap:8px;grid-template-columns:repeat(2,minmax(0,1fr))}.action-tile{padding:10px 5px;gap:6px;flex-direction:column;text-align:center;min-height:92px}.action-tile>.svg-icon{display:none}.action-tile small{font-size:12px}.tile-icon{width:35px;height:35px;border-radius:11px}.tile-icon .svg-icon{width:22px;height:22px}.dashboard-side{display:flex}.dashboard-panels{gap:13px}.calendar-card{padding:15px 11px}.calendar-card .day-grid{gap:4px}.date-cell{min-height:62px;border-radius:9px}.date-cell .date{font-size:15px}.duty{font-size:12px;padding:4px;min-width:27px}.formgrid{grid-template-columns:1fr}.filter-row .form-field{max-width:none}.leave-right{max-width:45%}.leave-core small{font-size:12px}.section-title{font-size:18px}.hero{padding-inline:16px}.theme-dialog,.nav-dialog{padding:17px}}
@media(max-width:400px){.hero-upper>div:first-child{flex-basis:100%;order:2}.top-actions{margin-left:auto;order:1}.hero-meta{margin-top:15px}.hero{padding-top:15px}.summary-card{padding:12px;gap:8px}.summary-symbol{width:31px;height:31px}.summary-symbol .svg-icon{width:23px;height:23px}.summary-card strong{font-size:27px}.date-cell{min-height:57px}.theme-swatch{font-size:12px;padding:9px}.weekday{font-size:11px}.filter-row .form-field{min-width:115px}.leave-row{flex-wrap:wrap}.leave-right{max-width:100%}.value-row{align-items:flex-start}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@page{size:A4 landscape;margin:8mm}@media print{body{background:white!important;color:black!important}.sidebar,.hero,.bottom-nav,.toolbar,.filter-row,#toast,.no-print,dialog,.roster-sheet>.foot-note{display:none!important}.shell,.main,.content{display:block!important;padding:0!important;margin:0!important}.card{border:0;box-shadow:none;padding:0;margin:0}.table-scroll{overflow:visible;max-height:none}.roster-table{font-size:6pt}.roster-table th,.roster-table td{padding:2px;min-width:0!important;position:static!important}.roster-table th:first-child{min-width:25mm!important;max-width:35mm}.cell-select{appearance:none;background:none!important;font-size:6pt;min-width:5mm;min-height:0}.roster-table thead{display:table-header-group}.roster-table tr{break-inside:avoid}.section-title{font-size:12pt}.page-enter{animation:none}body{-webkit-print-color-adjust:exact;print-color-adjust:exact}}

body[data-theme=midnight] .btn:not(.ghost):not(.danger){color:#101826}

.photo-blank{display:block;min-width:30px;min-height:30px;padding:4px;background:#fff0cc;color:#80500d;border:1px dashed #b98c27;border-radius:6px;font-weight:800}

.scan-preview{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:12px}.scan-image{max-height:50vh;overflow:auto;margin-top:12px}.scan-panel{margin-bottom:16px}.scan-panel [data-scan-status]{font-weight:700;overflow-wrap:anywhere}.scan-confirm{display:block;margin:18px 0}.scan-blank{background:#fff4d2;color:#835900}.scan-panel th small{display:block;font-size:11px;color:var(--muted)}

/* Chosen login model 3: white and teal, with scalable SVG controls. */
.auth-teal{--accent:#007f80;--tint:#e5f7f6;--ink:#093d48;--muted:#576b78;--line:#d3e0e4;--card:#fff;max-width:none;margin:0;padding:0;min-height:100dvh;background:#fff;color:var(--ink);position:relative;isolation:isolate;display:grid;place-items:start center;font-family:Arial,Helvetica,sans-serif}.auth-wave{position:absolute;inset:0 0 auto;height:clamp(110px,18vh,180px);background:linear-gradient(110deg,#009494,#34b5b7);border-radius:0 0 54% 16%;z-index:-1}.auth-wave:after{content:'';position:absolute;inset:auto 0 -12px;height:50px;background:#a4e4df;border-radius:0 0 65% 35%;z-index:-1}.auth-surface{width:min(100%,520px);padding:clamp(80px,13vh,128px) 24px 30px}.auth-teal .auth-brand{margin-bottom:34px}.auth-teal .auth-brand img{width:72px;height:72px;border-radius:20px;background:white;box-shadow:0 5px 18px #083c4814}.auth-teal .auth-brand h1{font-size:32px;line-height:1.2;letter-spacing:-1px;margin:14px 0 5px}.auth-teal .auth-brand p{font-size:11px;letter-spacing:1.5px;font-weight:700;color:var(--muted)}.auth-teal .auth-card{border:0;border-radius:0;box-shadow:none;padding:0;background:transparent}.auth-welcome{text-align:center;margin:0 0 30px}.auth-welcome h2{font-size:34px;line-height:1.15;letter-spacing:-1px;margin:0 0 10px}.auth-welcome p{font-size:15px;color:var(--muted);margin:0}.auth-teal .field-label{font-size:14px;font-weight:700;color:#203d48}.auth-teal .auth-input{display:flex;align-items:center;background:#f5f8f9;border:1px solid #cfdce0;border-radius:14px;min-height:56px;padding:0 13px;gap:12px}.auth-input>.svg-icon{width:22px;height:22px;color:#72858e}.auth-teal .auth-input .input{background:transparent;border:0;border-radius:0;min-width:0;min-height:54px;padding:10px 0;color:#193e49;font-size:17px}.auth-input:focus-within{border-color:#007f80;box-shadow:0 0 0 3px #00949416}.password-eye{display:grid;place-items:center;background:transparent;border:0;min-width:44px;min-height:44px;color:#647c87;padding:10px}.auth-teal details.auth-otp{margin:2px 0 0;border-bottom:1px solid #d6e4e5;padding:8px 0 14px}.auth-otp summary{display:flex;align-items:center;gap:11px;font-size:14px;font-weight:650;list-style:none;color:#294954}.auth-otp summary .svg-icon{color:#008788}.auth-otp summary span{margin-left:auto;color:#617986}.auth-otp .form-field{display:block;margin-top:10px}.auth-teal .auth-primary{width:100%;min-height:56px;background:linear-gradient(105deg,#009c9a,#007f80);border:0;color:white;border-radius:14px;font-size:16px;font-weight:750;display:flex;align-items:center;justify-content:center;gap:12px;margin-top:4px}.auth-teal .auth-biometric{width:100%;min-height:54px;display:flex;justify-content:center;align-items:center;gap:12px;border:1px solid #c2eeec;background:#e5f8f6;color:#007777;border-radius:14px;font-size:15px;font-weight:750;margin-top:14px}.auth-biometric .svg-icon{width:27px;height:27px}.auth-teal .auth-forgot{text-align:center;margin-top:22px;color:#007c7d;font-size:14px;font-weight:700}.auth-forgot summary{list-style:none}.auth-forgot form{text-align:left;margin-top:18px;font-weight:normal;color:#203d48}.auth-account-note{text-align:center;font-size:11px;margin-top:18px}.auth-motto{display:flex;align-items:center;gap:12px;font-size:11px;color:#78919a;text-align:center;margin:30px 0 0;white-space:nowrap}.auth-motto:before,.auth-motto:after{content:'';height:1px;background:#d0e0e4;flex:1}.auth-teal summary::-webkit-details-marker{display:none}@media(min-width:900px){.auth-surface{padding:105px 32px 30px}.auth-teal .auth-brand{margin-bottom:28px}.auth-teal .auth-card{padding:26px 28px;background:#fff;border:1px solid #e0eeee;border-radius:24px;box-shadow:0 12px 35px #073c480a}.auth-wave{height:180px}}@media(max-width:380px){.auth-surface{padding-inline:18px}.auth-welcome h2{font-size:30px}.auth-motto{font-size:10px}.bottom-nav button{font-size:10px}.auth-teal .auth-brand{margin-bottom:26px}}

/* Real Singapore date stays distinct from a manually selected date. */
.date-cell.today{box-shadow:inset 0 0 0 2px var(--accent)}.today-label{display:block;font-size:10px;font-weight:800;line-height:1.2;color:var(--accent)}.roster-table thead th.roster-today{background:var(--accent);color:var(--card)}.roster-table th.roster-today .today-label{color:inherit}.roster-table td.roster-today{background:var(--tint);box-shadow:inset 2px 0 var(--accent),inset -2px 0 var(--accent)}.roster-today .cell-select{outline:1px solid var(--accent)}.today-button{align-self:end;white-space:nowrap}.roster-sheet .roster-table th:first-child{width:200px;min-width:200px;max-width:200px;overflow-wrap:anywhere}@media(max-width:600px){.roster-sheet .roster-table th:first-child{width:130px;min-width:130px;max-width:150px}.date-cell.today{gap:3px}}@media print{.roster-table td.roster-today{box-shadow:none}.roster-table .today-label{display:none}.roster-today .cell-select{outline:none}}

.roster-tabs{display:flex;gap:10px;flex-wrap:wrap}.on-duty-groups{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:18px}.shift-group{padding:16px;border:1px solid var(--line);background:var(--bg);border-radius:16px;min-width:0}.shift-group h3{margin:0}.on-duty-person{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 0;border-bottom:1px solid var(--line)}.on-duty-person:last-child{border-bottom:0}.on-duty-person div{min-width:0}.on-duty-person strong,.on-duty-person small{display:block;overflow-wrap:anywhere}.on-duty-person small{color:var(--muted);font-size:12px;margin-top:4px}.roster-person-name{display:flex;gap:6px;align-items:flex-start;justify-content:space-between}.roster-person-name strong{min-width:0;overflow-wrap:anywhere}.roster-remove{flex-shrink:0;border:1px solid #efbac3;background:#fff0f2;color:#a32644;border-radius:8px;padding:5px;min-width:32px;min-height:32px;cursor:pointer}.roster-remove .svg-icon{width:18px;height:18px}.roster-remove:disabled{opacity:.35;cursor:default}.roster-row-note{display:block;color:var(--muted);font-size:10px;font-weight:500;margin-top:5px}.roster-remove-dialog{width:min(94vw,500px);max-height:85dvh;overflow:auto;border:1px solid var(--line);border-radius:20px;padding:24px;background:var(--card);color:var(--ink)}.roster-remove-dialog::backdrop{background:#10273888}.roster-remove-dialog p{line-height:1.6}.remove-confirm{display:block;line-height:1.6;margin:20px 0}.roster-remove-dialog .toolbar{margin-top:14px}@media(max-width:850px){.on-duty-groups{grid-template-columns:1fr}}@media print{.roster-tabs,.roster-remove,.roster-row-note,.roster-remove-dialog{display:none!important}}

.incharges-section{margin-top:24px;border-top:1px solid var(--line);padding-top:22px}.incharges-section .shift-group{background:var(--tint)}

/* Larger identity photos and names, with compact designation text. */
.hero-meta .avatar{width:80px;height:80px;flex-shrink:0;border-radius:21px;object-fit:cover;box-shadow:0 4px 14px #00243d22}.hero-meta>div{min-width:0}.hero-meta strong{font-size:clamp(22px,2vw,27px);font-weight:800;line-height:1.3;overflow-wrap:anywhere}.hero-meta small{font-size:13px;line-height:1.5}.staff-detail>summary{display:grid;grid-template-columns:64px minmax(0,1fr);gap:5px 14px;align-items:center}.staff-detail .profile-thumb,.profile-placeholder{grid-column:1;grid-row:1/3;width:64px;height:64px;flex-shrink:0;border-radius:17px;object-fit:cover}.profile-placeholder{display:grid;place-items:center;color:var(--accent);background:var(--tint);border:1px solid var(--line)}.profile-placeholder .svg-icon{width:34px;height:34px}.staff-detail>summary>strong{grid-column:2;font-size:21px;line-height:1.35;overflow-wrap:anywhere}.staff-detail>summary>.badge{grid-column:2;justify-self:start;white-space:normal;max-width:100%;font-size:12px;line-height:1.4}.on-duty-person strong{font-size:20px;line-height:1.35}.on-duty-person small{font-size:12px}.roster-person-name strong{font-size:15px;line-height:1.4}@media(max-width:600px){.hero-meta .avatar{width:72px;height:72px;border-radius:19px}.hero-meta strong{font-size:23px}.hero-meta small{font-size:12px}.staff-detail>summary{grid-template-columns:60px minmax(0,1fr);gap:5px 10px}.staff-detail .profile-thumb,.profile-placeholder{width:60px;height:60px;border-radius:15px}.staff-detail>summary>strong{font-size:20px}.on-duty-person strong{font-size:19px}.roster-person-name strong{font-size:14px}}@media(max-width:380px){.hero-meta .avatar{width:64px;height:64px}.hero-meta strong{font-size:21px}}@media print{.roster-person-name strong{font-size:6pt}}

.nric-controls{display:flex;gap:12px;align-items:center;justify-content:flex-end;flex-wrap:wrap}.nric-controls .btn{padding:8px 12px;font-size:13px}.nric-approved-value{display:block;font-size:26px;letter-spacing:1px;overflow-wrap:anywhere}.visibility-request{padding:18px 0;border-bottom:1px solid var(--line)}.visibility-request p{margin:8px 0;overflow-wrap:anywhere}.visibility-request .toolbar{margin-top:12px}

.ph-closing-total{font-size:26px;line-height:1.4;color:var(--accent)}

.inactive-profile-tools{grid-column:2;grid-row:3;display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:5px}.inactive-badge{background:#fff1db;color:#80520b}.delete-inactive{display:inline-flex;align-items:center;gap:6px;background:#fff0f2;color:#a32644;border:1px solid #edb8c2;padding:7px 12px;font-size:13px;min-height:36px}.delete-inactive .svg-icon{width:17px;height:17px}.staff-detail>summary>.inactive-profile-tools{font-weight:500}

/* Four equal dashboard cards, Assignment model 2. */
.summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:1fr}.summary-grid .summary-card{min-height:150px;height:100%;min-width:0;gap:12px}.summary-grid .summary-request{grid-column:auto}.summary-grid .summary-request>span:last-of-type{display:block}.summary-grid .summary-request strong{grid-column:auto;grid-row:auto;margin:4px 0}.summary-assignment{background:linear-gradient(135deg,#008c75,#006879);color:#fff}.summary-assignment .summary-symbol{color:#ffdb69;background:#ffffff20}.summary-assignment strong{font-size:22px!important;overflow-wrap:anywhere}.summary-grid small{overflow-wrap:anywhere}.assignment-section h2{font-size:19px}.assignment-table{border-collapse:collapse;width:100%;min-width:650px}.assignment-table th,.assignment-table td{padding:10px;border:1px solid var(--line);text-align:left;vertical-align:top;overflow-wrap:anywhere}.assignment-table th{background:var(--tint)}.assignment-table input{min-width:130px}.assignment-table .select{min-width:80px}.assignment-import{margin-top:18px;display:grid;gap:8px}.assignment-save label{display:block;margin-top:16px;line-height:1.6}.assignment-section .table-scroll{max-width:100%;overflow:auto}.assignment-section .section-top{flex-wrap:wrap;gap:12px}
@media(max-width:1100px){.summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.summary-grid .summary-card{min-height:142px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding:15px;gap:8px}.summary-grid .summary-card strong{font-size:27px}.summary-assignment strong{font-size:18px!important}.summary-grid .summary-card small{font-size:12px}.summary-symbol{width:36px;height:36px}.assignment-table input{min-width:120px}}@media print{.assignment-import,.assignment-save{display:none}.assignment-table{min-width:0;font-size:8pt}.assignment-table th,.assignment-table td{padding:4px}.assignment-section{break-inside:avoid}}

.assignment-import label,.assignment-import input{min-width:0;max-width:100%}

/* 2.7.1: compact summary tiles, monthly calendar first, exact-file viewer. */
.summary-grid .summary-card{min-height:100px;height:100%;padding:12px;gap:10px;flex-direction:row;align-items:center;justify-content:flex-start}
.summary-grid .summary-symbol{width:34px;height:34px;border-radius:11px}
.summary-grid .summary-symbol .svg-icon{width:23px;height:23px}
.summary-grid .summary-card strong{font-size:26px}
.summary-grid .summary-on strong{font-size:36px;line-height:1.05}
.summary-grid .summary-assignment strong{font-size:17px!important}
.dashboard-panels{grid-template-columns:minmax(0,1fr)}
.dashboard-side{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
.dashboard-shortcuts .action-tile{min-height:58px;padding:9px;flex-direction:row;text-align:left}
.duty[data-code=NL],.cell-select[data-code=NL]{background:#f1e5ff;color:#6a2890}
.assignment-original{padding:14px;overflow:hidden}
.assignment-original h2{margin-bottom:12px}
.assignment-view-controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.assignment-view-controls span{font-size:13px;font-weight:700;color:var(--muted)}
.assignment-paper-scroll{width:100%;max-height:75dvh;overflow:auto;overscroll-behavior:contain;background:#e6e9ed;border-radius:10px;padding:8px}
.assignment-paper{width:max-content;min-width:100%;line-height:0}
.assignment-paper canvas,.assignment-original-image{display:block;background:white;box-shadow:0 2px 12px #00000015;image-orientation:from-image}
.assignment-archive summary{font-size:17px;font-weight:750}
.assignment-archive-list{display:flex;flex-direction:column;gap:8px;margin:14px 0}
.assignment-archive-list .btn{justify-content:flex-start;text-align:left;white-space:normal}
@media(max-width:600px){
 .summary-grid{gap:8px}.summary-grid .summary-card{min-height:94px;padding:10px;gap:8px;border-radius:15px}
 .summary-grid .summary-card small{font-size:11px}.summary-grid .summary-card strong{font-size:25px;margin:3px 0}
 .summary-grid .summary-on strong{font-size:34px}.summary-grid .summary-assignment strong{font-size:15px!important}
 .summary-grid .summary-symbol{width:30px;height:30px}.summary-grid .summary-symbol .svg-icon{width:21px;height:21px}
 .summary-grid .summary-card>span:last-child{min-width:0}.dashboard-side{display:flex}
 .dashboard-shortcuts .action-tile{min-height:56px;gap:8px}.dashboard-shortcuts .tile-icon{width:30px;height:30px}
 .dashboard-shortcuts .action-tile small{font-size:11px}.assignment-original{padding:10px}
}
@media(max-width:360px){.summary-grid .summary-card{gap:6px;padding:9px}.summary-grid .summary-symbol{width:27px;height:27px}.summary-grid .summary-assignment strong{font-size:14px!important}}
@media print{.assignment-view-controls,.assignment-archive{display:none}.assignment-paper-scroll{overflow:visible;max-height:none;background:white}.assignment-paper{width:100%}.assignment-paper canvas,.assignment-original-image{max-width:100%;height:auto!important}}

/* Keep dashboard calendar controls and cells readable, with less empty space. */
.dashboard-panels>.calendar-card .filter-row{margin:10px 0;gap:8px}
.dashboard-panels>.calendar-card .section-top{margin-bottom:8px}
.dashboard-panels>.calendar-card .mini{margin:8px 0}
@media(max-width:600px){.dashboard-panels>.calendar-card .date-cell{min-height:54px;gap:3px}.dashboard-panels>.calendar-card .duty-details{margin-top:10px;padding:10px}.dashboard-panels>.calendar-card .today-label{font-size:9px}}
