:root{--navy:#20364d;--navy2:#304c68;--ink:#17283a;--muted:#718196;--line:#dfe6ec;--paper:#fff;--bg:#edf2f6;--accent:#486783;--good:#e5f2ea;--goodink:#2b7350;--warn:#fff2dd;--warnink:#936628;--bad:#fbe8e7;--badink:#a44242;--radius:12px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.5 Inter,system-ui,-apple-system,"Segoe UI",sans-serif}.shell{min-height:100vh;display:flex}.sidebar{width:248px;flex-shrink:0;background:var(--navy);color:#fff;padding:22px 15px;display:flex;flex-direction:column;min-height:100vh}.brand{display:flex;align-items:center;gap:11px;color:#fff;text-decoration:none;font-weight:800;letter-spacing:.06em;font-size:13px;padding:0 9px 26px}.brand small{display:block;font-size:10px;font-weight:400;letter-spacing:0;color:#b9c8d5;margin-top:3px}.brand-icon{width:37px;height:37px;border-radius:10px;background:#dce7f0;color:var(--navy);display:grid;place-items:center;font-size:19px}.nav-caption{font-size:9px;letter-spacing:.15em;color:#9db0c1;padding:15px 12px 6px}.nav-link{display:flex;align-items:center;gap:12px;padding:10px 12px;margin:2px 0;border-radius:8px;color:#d9e3eb;text-decoration:none;font-size:12px}.nav-link:hover{background:#3b5772;color:#fff}.sidebar-foot{border-top:1px solid #4a6075;margin-top:auto;padding:15px 9px 0;color:#aab9c7;font-size:10px;line-height:1.7}.main{min-width:0;flex:1;display:flex;flex-direction:column}.topbar{height:66px;background:var(--paper);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 28px;gap:15px}.breadcrumbs{font-size:11px;color:var(--muted)}.breadcrumbs span{padding:0 8px;color:#bdc7cf}.userbox{display:flex;align-items:center;gap:15px}.user-meta{text-align:right}.user-meta b{display:block;font-size:12px}.user-meta small{display:block;color:var(--muted);font-size:10px}.content{width:100%;max-width:1550px;margin:0 auto;padding:27px 30px 42px;flex:1}.footer{padding:13px 30px;color:#8996a4;font-size:10px;border-top:1px solid #dce4ea;background:#f4f7f9}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:22px}.page-head h1{font-size:27px;letter-spacing:-.035em;margin:5px 0}.page-head p{font-size:12px;color:var(--muted);margin:4px 0 0}.eyebrow{font-size:10px;text-transform:uppercase;letter-spacing:.14em;color:#7a8b9c;font-weight:750}.muted{color:var(--muted);font-size:11px}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:16px}.stat,.panel{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:17px}.stat>span{display:block;color:var(--muted);font-size:11px}.stat strong{display:block;font-size:28px;letter-spacing:-.04em;line-height:1.2;margin:9px 0 4px}.stat small{color:#8795a3;font-size:10px}.two-col{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:15px}.top-gap{margin-top:16px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.panel h2{font-size:14px;margin:0;font-weight:750}.panel-head a{font-size:11px;color:var(--accent);text-decoration:none}.bar-row{display:grid;grid-template-columns:90px 1fr 28px;gap:10px;align-items:center;margin:12px 0;font-size:11px}.bar{height:7px;border-radius:20px;background:#edf1f4;overflow:hidden}.bar i{display:block;height:100%;background:#65839d;border-radius:20px}.bar-row b{text-align:right;font-size:11px}.list-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-top:1px solid #edf1f4;font-size:12px}.list-row:first-of-type{border-top:0}.event-row{padding:9px 0;border-top:1px solid #edf1f4}.event-row:first-of-type{border-top:0}.event-row b{font-size:11px;display:block}.event-row small{font-size:10px;color:var(--muted);display:block}.event-row span{font-size:10px;color:#536477;display:block;margin-top:3px}.btn{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:8px;padding:10px 14px;font:inherit;font-size:11px;font-weight:700;text-decoration:none;cursor:pointer;white-space:nowrap}.btn-primary{background:var(--navy);color:#fff}.btn-primary:hover{background:var(--navy2)}.btn-light{background:#e9eff4;color:#23384b}.btn-ghost{background:transparent;border:1px solid #d2dce4;color:var(--ink)}.btn-danger{background:var(--bad);color:var(--badink)}.btn-sm{padding:6px 9px;font-size:10px}.btn-block{width:100%;margin-top:14px}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:14px}.toolbar input.grow{flex:1;min-width:200px}.inline-form{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.inline-form label{min-width:150px}.inline-form label input,.inline-form label select{margin-top:5px}.form-panel summary{cursor:pointer;font-weight:700;font-size:13px;margin-bottom:2px}.form-panel[open] summary{margin-bottom:15px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.form-grid .span-2{grid-column:1/-1}label{display:grid;gap:5px;font-size:10px;color:#687b8d;font-weight:650}input,select,textarea{width:100%;border:1px solid #d7e0e7;border-radius:8px;background:#fff;color:var(--ink);padding:9px 10px;font:inherit;font-size:12px;outline:none}input:focus,select:focus,textarea:focus{border-color:#718da6;box-shadow:0 0 0 3px #718da620}textarea{resize:vertical}.form-actions{display:flex;justify-content:flex-end;margin-top:4px}.table-wrap{overflow:auto;border:1px solid #e3e9ee;border-radius:9px}table{border-collapse:collapse;width:100%;font-size:11px;min-width:650px}th{text-align:left;text-transform:uppercase;letter-spacing:.07em;color:#78899a;background:#f7f9fb;font-size:9px;padding:11px 12px;white-space:nowrap}td{padding:10px 12px;border-top:1px solid #edf1f4;vertical-align:middle}tbody tr:hover{background:#fafcfd}.cell-sub{display:block;color:#8391a0;font-size:9px;margin-top:3px}.table-foot{padding-top:10px;color:#81909e;font-size:10px}.status,.tag{display:inline-flex;border-radius:30px;padding:4px 8px;font-size:9px;font-weight:750;background:#edf1f4;color:#637384}.status-good{background:var(--good);color:var(--goodink)}.status-warn{background:var(--warn);color:var(--warnink)}.status-off{background:#edf1f4;color:#758494}.notice{border:1px solid #eadbbd;background:#fbf7ed;color:#786033;border-radius:9px;padding:11px 13px;font-size:11px;line-height:1.55;margin:10px 0 15px}.flash-stack{display:grid;gap:7px;margin-bottom:14px}.flash{border-radius:8px;padding:10px 12px;font-size:11px;white-space:pre-line}.flash.success{background:var(--good);color:var(--goodink)}.flash.warning{background:var(--warn);color:var(--warnink)}.flash.danger{background:var(--bad);color:var(--badink)}.empty{text-align:center;padding:28px;color:#8492a0;font-size:11px}.flush{padding:14px}.secret{font-family:monospace;letter-spacing:.1em;background:#f1f5f8;padding:13px;border-radius:8px;font-weight:800;margin:6px 0 12px;overflow-wrap:anywhere}.auth-body{min-height:100vh;display:grid;place-items:center;padding:20px;background:linear-gradient(135deg,#eaf0f5,#dfe8ef)}.auth-card{width:min(430px,100%);background:#fff;border:1px solid var(--line);border-radius:16px;padding:28px;box-shadow:0 18px 55px #24384c17}.auth-wide{width:min(560px,100%)}.auth-brand{color:var(--navy);padding:0;margin-bottom:24px}.auth-card h1{font-size:23px;margin:0 0 6px}.auth-card .muted{line-height:1.6;margin:0 0 17px}.auth-card form{display:grid;gap:13px}.auth-note{font-size:10px;color:#82909d;margin-top:18px}.auth-note a{color:var(--accent)}@media(max-width:1050px){.sidebar{width:215px}.content{padding:22px}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.two-col{grid-template-columns:1fr}}@media(max-width:680px){.sidebar{width:58px;padding:14px 7px}.brand{padding:0 4px 24px}.brand>span:last-child,.nav-caption,.nav-link span,.sidebar-foot{display:none}.nav-link{justify-content:center;padding:12px 3px}.topbar{padding:0 14px}.content{padding:17px 12px 30px}.page-head{flex-direction:column}.stats{gap:8px}.stat{padding:12px}.stat strong{font-size:22px}.form-grid{grid-template-columns:1fr}.form-grid .span-2{grid-column:auto}.inline-form{align-items:stretch}.inline-form label{flex:1}.user-meta{display:none}}
.bottom-gap{margin-bottom:14px}

.admin-actions{display:flex;gap:5px;flex-wrap:wrap}

/* Structured, print-friendly daily duty roster */
.roster-day{border-top:1px solid var(--line,#d9e1e8);padding-top:16px;margin-top:16px}
.roster-day>h2{font-size:18px;margin:0 0 14px}
.roster-day>h3{font-size:15px;margin:14px 0 10px}
.roster-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.roster-grid>.roster-group:only-child{grid-column:1/-1}.roster-pair{margin-top:12px}.roster-wide{margin-top:12px}
.roster-group{border:1px solid var(--line,#d9e1e8);border-radius:10px;padding:14px;min-width:0;break-inside:avoid}
.roster-group .panel-head{margin-bottom:8px}
.roster-group .panel-head h3{margin:0;font-size:13px}
.roster-group ol{margin:0;padding-left:22px;line-height:1.8}
.roster-group li{padding-left:3px}
.roster-group strong{font-weight:750}
.roster-wide{margin-top:12px}
@media(max-width:760px){.roster-grid{grid-template-columns:1fr}}
@media print{
  body{background:#fff!important;color:#111!important}
  .sidebar,.topbar,.page-head>.btn,.toolbar,.flash-stack,.footer{display:none!important}
  .shell,.main,.content{display:block!important;width:100%!important;max-width:none!important;margin:0!important;padding:0!important}
  .panel,.roster-group{box-shadow:none!important;border:1px solid #bbb!important;break-inside:avoid}
  .roster-sheet{border:0!important;padding:0!important}
  .roster-day{break-inside:avoid}
  .muted,.cell-sub{color:#444!important}
  a{color:#111!important;text-decoration:none!important}
}

/* Schedule type picker */
.schedule-form{gap:14px}
.duty-selection{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.selection-title{grid-column:1/-1;display:flex;align-items:baseline;gap:10px;margin:3px 0 1px}
.selection-title b{font-size:13px;color:var(--ink)}
.selection-title span{font-size:11px;color:var(--muted);font-weight:400}
.duty-card{display:flex;align-items:center;gap:12px;min-height:68px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:#fbfcfd;color:var(--ink);cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s}
.duty-card:hover{border-color:#9eb1c1;background:#f7fafc}
.duty-card:has(input:checked){border-color:#7691a8;background:#f1f6fa;box-shadow:0 0 0 2px #48678318}
.duty-card input{appearance:none;flex:0 0 19px;width:19px;height:19px;margin:0;border:1px solid #aebdca;border-radius:5px;background:#fff;padding:0;position:relative}
.duty-card input:checked{border-color:var(--accent);background:var(--accent)}
.duty-card input:checked:after{content:"✓";position:absolute;inset:-1px 0 0;text-align:center;color:#fff;font-size:14px;font-weight:800;line-height:19px}
.duty-card-text{display:flex;flex-direction:column;gap:2px;min-width:0}
.duty-card-text strong{font-size:12px;color:var(--ink)}
.duty-card-text small{font-size:10px;color:var(--muted);font-weight:400}
.duty-card select{width:auto;min-width:175px;margin-left:auto;padding:7px 9px}
.duty-card-canteen{grid-column:span 2}
.duty-card-reserve{grid-column:1/-1;background:#fffaf1;border-color:#eadbbd}
.duty-card-reserve:has(input:checked){border-color:#cfae70;background:#fff8e9}
.course-duty-choice{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:#fbfcfd;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 18px}.course-duty-choice .selection-title,.course-duty-choice p{grid-column:1/-1}.course-duty-choice label{display:flex;align-items:center;gap:8px;color:var(--ink);font-size:11px;font-weight:500}.course-duty-choice input{width:16px;height:16px;margin:0}.course-duty-choice p{margin:0;font-size:10px}
.canteen-mode-choice{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:#fbfcfd;display:flex;align-items:center;gap:14px;flex-wrap:wrap}.canteen-mode-choice .selection-title{flex-basis:100%}.canteen-mode-choice label{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:500}.canteen-mode-choice input{width:16px;height:16px;margin:0}
.schedule-submit{padding-top:2px}
.stat-weekend{background:#fff8e9;border-color:#eadbbd}
.stat small{display:block;color:var(--muted);font-size:10px;margin-top:2px}
.weekend-badge{font-size:10px;color:#936628;background:#fff2dd;border:1px solid #eadbbd;border-radius:20px;padding:4px 9px}
.summary-sheet{overflow:hidden}
.summary-table{width:max-content;min-width:0;table-layout:fixed;--summary-number-width:42px;--summary-name-width:320px;--summary-target-width:210px;--summary-day-width:68px;--summary-total-width:100px;--summary-action-width:112px;--summary-font-size:11px;--summary-small-font-size:10px;--summary-cell-y-padding:4px;--summary-cell-x-padding:6px;--summary-small-gap:8px;--summary-marker-padding-x:4px;--summary-marker-padding-y:1px;--summary-marker-margin:2px;--summary-sat-right:200px;--summary-sun-right:100px;--summary-picker-all-right:112px;--summary-picker-sun-right:212px;--summary-picker-sat-right:312px;--summary-button-padding-x:8px;--summary-button-padding-y:5px}
.summary-table th,.summary-table td{vertical-align:middle;width:112px;min-width:112px;max-width:112px;padding:var(--summary-cell-y-padding) var(--summary-cell-x-padding);line-height:1.15;font-size:var(--summary-font-size)}
.summary-table .summary-day-cell{width:var(--summary-day-width);min-width:var(--summary-day-width);max-width:var(--summary-day-width);padding:var(--summary-cell-y-padding) var(--summary-cell-x-padding);text-align:center;overflow-wrap:anywhere;font-size:var(--summary-small-font-size)}
.summary-duty-codes{font-weight:750;white-space:normal;overflow-wrap:anywhere;font-size:var(--summary-small-font-size)}
.summary-illness-marker{display:inline-block;margin:var(--summary-marker-margin) var(--summary-marker-margin) 0;padding:var(--summary-marker-padding-y) var(--summary-marker-padding-x);border-radius:4px;background:#f7d5d2;color:#7e211b;font-size:var(--summary-small-font-size);font-weight:800;line-height:1.25}
.summary-table th:first-child,.summary-table td:first-child{min-width:var(--summary-number-width);width:var(--summary-number-width);max-width:var(--summary-number-width);position:sticky;left:0;background:#fff!important;border-right:2px solid #fff;box-shadow:inset -1px 0 #dfe6ec;z-index:7}
.summary-table th.summary-sticky-name,.summary-table td.summary-sticky-name{min-width:var(--summary-name-width);width:var(--summary-name-width);max-width:var(--summary-name-width);position:sticky;left:var(--summary-number-width);background:#fff!important;border-right:2px solid #fff;box-shadow:inset -1px 0 #dfe6ec;isolation:isolate;z-index:6}
.summary-table .reserve-target-column{width:var(--summary-target-width);min-width:var(--summary-target-width);max-width:var(--summary-target-width);white-space:normal;overflow-wrap:anywhere}
.summary-table thead th:first-child,.summary-table thead th.summary-sticky-name{z-index:9}
.summary-name-line{display:flex;align-items:center;justify-content:space-between;gap:var(--summary-small-gap);white-space:nowrap}.summary-name-line b{min-width:0;overflow:hidden;text-overflow:ellipsis;font-size:var(--summary-font-size)}.summary-platoon-label{flex:0 0 auto;color:var(--muted);font-size:var(--summary-small-font-size);font-weight:650}
.summary-table th small{display:block;color:#936628;font-size:var(--summary-small-font-size);font-weight:600;margin-top:2px}
 .summary-table .weekend-column{background:#fff8e9;color:#765a2b}
 .summary-table td.weekend-column{background:#f7f7f2;color:#666552}
 .summary-table td.duty-cell-dp,.summary-total.duty-key-dp{background:#e8f0f7!important;color:#31516d;border-color:#c2d2df}
 .summary-table td.duty-cell-pr,.summary-total.duty-key-pr{background:#f5e9e8!important;color:#754b49;border-color:#dfc5c2}
 .summary-table td.duty-cell-dn,.summary-total.duty-key-dn{background:#e8f1eb!important;color:#41634d;border-color:#c5d8c9}
 .summary-table td.duty-cell-rz,.summary-total.duty-key-rz{background:#f0eaf3!important;color:#624d6d;border-color:#d4c6db}
 .summary-table td.duty-cell-s1,.summary-total.duty-key-s1{background:#f5f0df!important;color:#75623b;border-color:#ddd2ae}
 .summary-table td.duty-cell-s2,.summary-total.duty-key-s2{background:#e5f0f0!important;color:#3d6466;border-color:#bfd5d5}
 .picker-table td.status-cell-bol{background:#f3e7e6!important;color:#754e4b}.picker-table td.status-cell-training{background:#eeeaf4!important;color:#66577a}.picker-table td.status-cell-trip{background:#e8f0f7!important;color:#31516d}.picker-table td.status-cell-leave{background:#f5f0df!important;color:#75623b}.picker-table td.status-cell-dismissed{background:#eceeef!important;color:#596168}
.summary-table td{font-size:var(--summary-font-size);line-height:1.2}
.sortable-header{cursor:pointer;user-select:none;white-space:nowrap}
.sortable-header:after{content:" ↕";color:#a5b2bd;font-size:10px}
.sortable-header[data-order="asc"]:after{content:" ↑";color:var(--accent)}
.sortable-header[data-order="desc"]:after{content:" ↓";color:var(--accent)}
.sortable-header:focus{outline:2px solid #718da6;outline-offset:-2px}
.stat-link{display:block;color:inherit;text-decoration:none;cursor:pointer;transition:transform .15s,box-shadow .15s}
.stat-link:hover{transform:translateY(-2px);box-shadow:0 5px 16px #20364d18}
.actions-cell{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.status-history-actions{display:flex;align-items:center;gap:5px;flex:0 0 auto}.status-history-actions form{margin:0}.status-history-actions .btn{white-space:nowrap}
.summary-select{min-width:360px;flex:1}
.period-panel{padding:12px 17px}
.summary-period-form{display:flex;align-items:end;gap:12px;flex-wrap:wrap}
.summary-period-form label{min-width:175px}
.summary-fixed{position:sticky;z-index:2;background:#f3f7fa!important;box-shadow:-3px 0 7px #20364d12}
.summary-fixed.duty-total-column:not(.duty-grand-total){position:static;box-shadow:none}
.summary-table .duty-total-column{width:var(--summary-total-width);min-width:var(--summary-total-width);max-width:var(--summary-total-width);text-align:center;overflow-wrap:anywhere}
.duty-total-column small{display:block;font-size:var(--summary-small-font-size);color:var(--muted);font-weight:500;margin-top:2px}
.weekend-total-column{background:#fff8e9!important;color:#765a2b}
.manual-reserve-day{border:1px solid var(--line);border-radius:10px;padding:12px;margin:12px 0}.manual-reserve-day legend{font-size:12px;font-weight:750;padding:0 6px}.reserve-candidate-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.reserve-candidate-grid label{display:flex;align-items:center;gap:7px;padding:7px 8px;border:1px solid transparent;border-radius:7px;background:#f8fafb;color:var(--ink);font-size:11px;font-weight:500;cursor:pointer}.reserve-candidate-grid label:has(input:checked){border-color:#8ba2b4;background:#edf5f9}.reserve-candidate-grid input{width:16px;height:16px;margin:0}.reserve-candidate-grid small{display:block;color:var(--muted);font-size:9px;font-weight:400}@media(max-width:900px){.reserve-candidate-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.reserve-candidate-grid{grid-template-columns:1fr}}
.duty-total-column:first-letter{text-transform:uppercase}
.duty-grand-total{right:0!important;background:#e9f1f6!important}
.summary-table thead .summary-fixed{z-index:4}
 .summary-current-day{box-shadow:inset 0 0 0 2px #9bb0bd;background:#f0f4f6!important}
.summary-total-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:9px}
.summary-total{border:1px solid var(--line);border-radius:9px;padding:10px 12px;background:#fbfcfd}
.summary-total span{display:block;font-size:11px;color:var(--muted);overflow-wrap:anywhere}
.summary-total b{display:block;font-size:22px;margin-top:2px}
.summary-total small{display:block;font-size:10px;color:#936628;margin-top:1px}
.summary-results-table{width:100%;min-width:0}.summary-results-table th:first-child{text-align:left}.summary-results-table td{text-align:center;font-variant-numeric:tabular-nums}.summary-results-table .summary-results-total{font-weight:800;background:#eaf1f6}.summary-results-table .summary-results-total th,.summary-results-table .summary-results-total td{border-top:2px solid #b8c8d5}.summary-overall-table{max-width:460px}.summary-gender-table{max-width:100%}.summary-gender-table td{font-weight:700}
.summary-overview-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start}.summary-overview-grid>.panel{min-width:0;margin-top:12px}.summary-overview-grid .table-wrap{overflow-x:auto}
.summary-header-tools{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.summary-zoom-controls{display:inline-flex;align-items:center;gap:5px;flex:0 0 auto}.summary-zoom-controls .btn{min-width:34px;padding:5px 8px}.summary-zoom-controls .summary-zoom-value{min-width:56px;font-variant-numeric:tabular-nums}
.summary-duty-legend{display:flex;gap:8px 14px;flex-wrap:wrap;padding:10px 2px 0}.summary-duty-legend>span{display:inline-flex;align-items:center;gap:6px;font-size:10px;color:var(--ink)}.duty-legend-swatch{display:inline-block;width:12px;height:12px;border:1px solid #778899;border-radius:3px}.duty-legend-swatch.duty-key-dp{background:#dceafa}.duty-legend-swatch.duty-key-pr{background:#ffe1df}.duty-legend-swatch.duty-key-dn{background:#def2e5}.duty-legend-swatch.duty-key-rz{background:#efdef8}.duty-legend-swatch.duty-key-s1{background:#fff0c2}.duty-legend-swatch.duty-key-s2{background:#d9f0f1}
.summary-weekend-total,.summary-all-total{position:sticky!important;z-index:4!important;background:#eef3f7!important}.summary-sun-mon{right:var(--summary-sun-right)!important}.summary-sat-sun{right:var(--summary-sat-right)!important}.summary-all-total{right:0!important;background:#e4edf4!important;z-index:5!important}
.picker-total-sat,.picker-total-sun,.picker-total-all{position:sticky!important;z-index:4!important;background:#eef3f7!important}.picker-total-all{right:var(--summary-picker-all-right)!important}.picker-total-sun{right:var(--summary-picker-sun-right)!important}.picker-total-sat{right:var(--summary-picker-sat-right)!important}
@media(max-width:760px){.summary-select{min-width:0;width:100%}}
@media(max-width:1050px){.summary-overview-grid{grid-template-columns:1fr}}

/* Application-wide UX polish */
:root{--shadow:0 8px 24px rgba(32,54,77,.07);--focus:#6d8ba5}
html{scroll-behavior:smooth}
.skip-link{position:fixed;left:12px;top:-60px;z-index:100;color:#fff;background:var(--navy);padding:9px 13px;border-radius:8px;text-decoration:none;font-weight:700;transition:top .15s}.skip-link:focus{top:12px}
.sidebar{box-shadow:4px 0 18px rgba(22,42,61,.12);position:relative;z-index:3}
.nav-link{position:relative;transition:background .15s,color .15s,transform .15s}.nav-link.active{background:#486783;color:#fff;box-shadow:inset 3px 0 #dce7f0}.nav-link.active:after{content:"";position:absolute;right:9px;width:5px;height:5px;border-radius:50%;background:#dce7f0}.nav-link:hover{transform:translateX(2px)}
.content{animation:content-in .22s ease-out}@keyframes content-in{from{opacity:.65;transform:translateY(3px)}to{opacity:1;transform:none}}
.page-head h1{line-height:1.15}.page-head .toolbar{align-items:center}
.panel,.stat{box-shadow:var(--shadow)}.panel.flush{overflow:hidden}
.panel-head h2{letter-spacing:-.01em}.eyebrow{font-weight:800}
button,.btn{transition:transform .12s,box-shadow .12s,background .12s,border-color .12s}button:hover,.btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(32,54,77,.12)}button:active,.btn:active{transform:translateY(0);box-shadow:none}
.btn-danger{background:#a44242!important;color:#fff!important;border-color:#a44242!important}.btn-danger:hover{background:#8e3636!important}
.flash{box-shadow:0 4px 12px rgba(32,54,77,.06);border-left-width:4px}
table tbody tr{transition:background .12s}table tbody tr:hover{background:#f5f8fa}th{white-space:nowrap}
.table-wrap{scrollbar-color:#aebdca #edf2f6;scrollbar-width:thin}.table-wrap::-webkit-scrollbar{height:9px}.table-wrap::-webkit-scrollbar-track{background:#edf2f6;border-radius:10px}.table-wrap::-webkit-scrollbar-thumb{background:#aebdca;border-radius:10px}
label input[type=file]{padding:7px;background:#f8fafb}
input::placeholder,textarea::placeholder{color:#a0adb8}
.notice{box-shadow:0 3px 10px rgba(147,102,40,.06)}
.empty{padding:25px!important;color:var(--muted)}
.actions-cell form{margin:0}
.assignment-counters{display:flex;gap:6px;flex-wrap:wrap;margin-top:7px}.assignment-counters span{font-size:10px;color:var(--muted);background:#f3f7fa;border:1px solid var(--line);border-radius:6px;padding:3px 6px}.assignment-counters b{color:var(--ink)}
.roster-slot-form{display:inline-flex;align-items:center;gap:10px;width:calc(100% - 96px);vertical-align:middle;margin:4px 0}.roster-slot-form select{flex:1;min-width:0}.roster-edit-form{display:inline-flex;align-items:center;margin:4px 0 4px 10px;vertical-align:middle}.roster-edit-form .btn{font-size:11px;padding:4px 8px}
.roster-slot-control{display:flex;align-items:center;gap:8px;width:100%;margin:5px 0}.roster-slot-readonly{flex:1;min-width:0;background:#f4f7f9!important;color:var(--ink);cursor:default}.roster-slot-control .btn{flex:0 0 auto;white-space:nowrap}
.form-grid label.journalist-checkbox{display:grid!important;grid-template-columns:minmax(0,1fr) 20px;grid-template-rows:1fr;align-items:center;justify-content:stretch;gap:8px;width:100%;min-width:0;min-height:54px;padding-top:14px;text-align:left;align-self:end}.form-grid .journalist-checkbox span{grid-column:1;grid-row:1;justify-self:start;font-size:11px;line-height:1.2}.form-grid .journalist-checkbox input{grid-column:2;grid-row:1;justify-self:end;flex:none;width:16px;height:16px;margin:0}
.roster-cadet-stats{flex:0 0 auto;white-space:nowrap;color:var(--muted);font-size:9px;font-weight:650}.roster-cadet-stats{font-variant-numeric:tabular-nums}@media(max-width:760px){.roster-slot-control{flex-wrap:wrap}.roster-slot-readonly{flex-basis:100%}}
.picker-course-setting{padding:10px 14px}.picker-course-setting label{display:flex;align-items:center;gap:8px}.picker-table{min-width:0}.picker-name-form{margin:0}.picker-name-submit{display:block;width:100%;padding:0;border:0;background:transparent;color:inherit;text-align:left;cursor:pointer;font:inherit}.picker-name-submit:hover b,.picker-name-submit:focus-visible b{text-decoration:underline;color:var(--accent)}.picker-name{display:flex;align-items:center;justify-content:space-between;gap:var(--summary-small-gap);white-space:nowrap}.picker-name b{overflow:hidden;text-overflow:ellipsis}.picker-name span{flex:0 0 auto;color:var(--muted);font-size:var(--summary-small-font-size);font-weight:700}.picker-table .picker-assign-column{position:sticky;right:0;z-index:5;width:var(--summary-action-width);min-width:var(--summary-action-width);max-width:var(--summary-action-width);background:#fff!important;box-shadow:-3px 0 7px #20364d18;text-align:center}.picker-table thead .picker-assign-column{z-index:10;background:#edf2f6!important}.picker-assign-column form{margin:0}.picker-assign-column .btn{font-size:var(--summary-small-font-size);padding:var(--summary-button-padding-y) var(--summary-button-padding-x);white-space:nowrap}.picker-status-marker{display:inline-block;padding:var(--summary-marker-padding-y) var(--summary-marker-padding-x);border-radius:3px;background:#fff0d6;color:#794e08;font-size:var(--summary-small-font-size);font-weight:750}
.reserve-candidate-summary{display:flex;align-items:center;gap:10px 20px;flex-wrap:wrap}.reserve-candidate-summary span{color:var(--muted);font-size:11px}.reserve-target-table{min-width:0}
.reserve-target-table .reserve-cadet-content{width:max-content;min-width:max-content;max-width:none;white-space:nowrap;text-align:left}
.reserve-replace-form{display:flex;align-items:center;gap:10px;flex-wrap:nowrap}.reserve-replace-form select{flex:1;min-width:220px}.reserve-replace-form button{flex:0 0 auto}
.manual-date-toolbar{display:flex;align-items:end;gap:12px;padding:12px;background:#f6f9fb;border:1px solid var(--line);border-radius:9px;margin-bottom:14px}.manual-date-toolbar label{min-width:190px}.manual-duty-block{border-top:1px solid var(--line);padding-top:14px;margin-top:16px}.manual-duty-block h3{font-size:14px;margin:0 0 10px}.manual-post-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.manual-post{border:1px solid var(--line);border-radius:10px;padding:11px;background:#fbfcfd}.manual-post h4{margin:0 0 9px;font-size:12px}.manual-slot-form{display:flex;align-items:center;gap:7px;margin:6px 0}.manual-slot-form select{flex:1;min-width:0}.manual-slot-form button{flex:0 0 auto}.course-duty-tools{display:none!important;white-space:nowrap;color:var(--ink);font-size:10px!important}.course-duty-tools.visible{display:flex!important;align-items:center;gap:4px}.course-duty-tools input{width:15px;height:15px;margin:0}.manual-slots-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 10px}.manual-slots-list .manual-slot-form{margin:0}.manual-duty-editor .manual-duty-block:first-of-type{margin-top:0}@media(max-width:760px){.manual-post-grid,.manual-slots-list{grid-template-columns:1fr}.manual-date-toolbar{align-items:stretch;flex-direction:column}.manual-date-toolbar label{min-width:0}.manual-slot-form{align-items:stretch;flex-wrap:wrap}.manual-slot-form select{flex-basis:100%}}
.platoon-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}
.platoon-card{display:block;color:var(--ink);text-decoration:none;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);transition:transform .15s,box-shadow .15s,border-color .15s}.platoon-card:hover{transform:translateY(-3px);border-color:#9eb1c1;box-shadow:0 12px 25px rgba(32,54,77,.12)}
.platoon-card-head{display:flex;justify-content:space-between;align-items:center}.platoon-index{font-size:10px;font-weight:800;letter-spacing:.12em;color:var(--muted)}.platoon-open{font-size:10px;color:var(--accent);font-weight:700}.platoon-card h2{font-size:20px;margin:12px 0 15px}.platoon-total{display:flex;align-items:baseline;gap:7px}.platoon-total b{font-size:29px;line-height:1}.platoon-total span{font-size:11px;color:var(--muted)}.platoon-breakdown{border-top:1px solid var(--line);margin-top:15px;padding-top:10px;display:flex;justify-content:space-between;gap:5px;flex-wrap:wrap;font-size:10px;color:var(--muted)}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:4px}.dot-good{background:var(--goodink)}.dot-warn{background:#c28a32}
@media(max-width:900px){.platoon-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.platoon-cards{grid-template-columns:1fr}}
@media(max-width:900px){.sidebar{width:205px}.content{padding:22px 20px 35px}.topbar{padding:0 20px}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.two-col{grid-template-columns:1fr}}
@media(max-width:640px){.shell{display:block}.sidebar{width:100%;min-height:auto;padding:12px 10px;position:relative}.brand{padding:0 7px 10px}.brand small{display:none}.sidebar-foot,.nav-caption{display:none}.sidebar .nav-link{display:inline-flex;width:auto;padding:8px 9px;margin:2px 0;font-size:11px}.sidebar .nav-link span{display:none}.sidebar .nav-link.active:after{display:none}.main{display:block}.topbar{height:auto;min-height:56px;padding:10px 15px}.breadcrumbs{font-size:10px}.userbox{gap:8px}.user-meta{display:none}.content{padding:18px 13px 28px}.page-head{gap:12px;margin-bottom:16px}.page-head h1{font-size:23px}.page-head>.toolbar,.page-head>.btn{width:100%}.page-head .toolbar{display:flex;flex-wrap:wrap}.page-head .toolbar .btn{flex:1}.form-grid{grid-template-columns:1fr}.form-grid .span-2{grid-column:auto}.stats{grid-template-columns:1fr}.panel{padding:13px}.panel-head{align-items:flex-start}.toolbar{flex-wrap:wrap}.toolbar .btn{white-space:normal}.summary-period-form label{width:100%}.summary-period-form .btn{width:100%}.duty-card{min-height:62px}.duty-card select{max-width:42%}.actions-cell{min-width:130px}}
@media(max-width:760px){.duty-selection{grid-template-columns:1fr}.duty-card-canteen{grid-column:auto}.duty-card select{min-width:0;max-width:45%}.selection-title{align-items:flex-start;flex-direction:column;gap:1px}}

.cadet-duty-flags{grid-column:span 2;display:flex;align-items:stretch;gap:18px;min-width:0}.cadet-duty-flags .journalist-checkbox{flex:1 1 0!important;min-width:0}.cadet-duty-flags .journalist-checkbox span{align-self:center}.cadet-duty-flags .journalist-checkbox input{align-self:center}@media(max-width:640px){.cadet-duty-flags{grid-column:auto;gap:10px}}

.cadet-duty-flags{grid-column:span 2;display:flex;align-items:stretch;gap:18px;min-width:0}.cadet-duty-flags .journalist-checkbox{flex:1 1 0!important;min-width:0}.cadet-duty-flags .journalist-checkbox span{align-self:center}.cadet-duty-flags .journalist-checkbox input{align-self:center}@media(max-width:640px){.cadet-duty-flags{grid-column:auto;gap:10px}}
