:root{--ink:#183832;--muted:#71817b;--green:#1c5349;--accent:#c6e5cc;--line:#dfe6e1;--bg:#f5f7f4}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--bg);font:14px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button,input,select,textarea{font:inherit}button,a,input,select,textarea{ -webkit-tap-highlight-color:transparent}button{cursor:pointer;min-height:42px;border:0;border-radius:8px;padding:10px 17px;font-weight:600}button:disabled{cursor:default;opacity:.55}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid #75b596;outline-offset:3px}.sidebar{width:262px;background:#153d39;color:#eef5ee;position:fixed;inset:0 auto 0 0;padding:30px 20px;display:flex;flex-direction:column}.brand{display:flex;gap:12px;align-items:center;font-size:11px;letter-spacing:1px;font-weight:700}.brand small{display:block;font-size:10px;color:#b0c7bd;font-weight:400;letter-spacing:0;margin-top:4px}.mark{font-size:24px;letter-spacing:-2px;color:white}.mark span{color:#e5b56a}.workspace{font-size:9px;color:#95b2a7;letter-spacing:1.4px;margin:38px 10px 23px}.workspace strong{display:block;color:#e6efe8;font-size:12px;letter-spacing:0;margin-top:6px;font-weight:500}nav a{display:flex;align-items:center;gap:12px;border-radius:8px;padding:13px 14px;color:#c5d6ce;margin:4px 0;font-size:13px}nav a.active{background:#2e5750;color:#fff}nav a .nav-icon{font-size:17px;width:22px;text-align:center}nav a.active:after{content:'';width:6px;height:6px;border-radius:50%;background:#d3e9b8;margin-left:auto}.side-bottom{margin-top:auto;padding:20px 10px 0;border-top:1px solid #416058;color:#b4cbbf;font-size:11px}.version{font-size:11px;color:#d3e9b8}.text-btn{padding:0;background:transparent;color:inherit;text-align:left;font-size:12px}.app{margin-left:262px}.topbar{height:72px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;padding:0 40px;background:#fcfdfa;font-size:12px;color:var(--muted)}.slash{padding:0 12px;color:#b8c6be}.user{display:flex;align-items:center;gap:10px;color:#476158}.user i{font-style:normal;background:#e6ece4;border-radius:50%;width:30px;height:30px;display:grid;place-items:center;font-size:10px}main{max-width:1430px;padding:35px 40px 70px;margin:auto}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:24px}.eyebrow{font-size:10px;letter-spacing:2px;color:#7a897e;font-weight:700}h1{font-size:30px;letter-spacing:-.9px;margin:5px 0;color:#183c34}h2{font-size:18px;letter-spacing:-.3px;margin:0}h3{font-size:14px;margin:0}p{margin:4px 0 0}.page-heading p{color:var(--muted);font-size:13px}.primary{background:var(--green);color:white}.secondary{background:#fff;border:1px solid #cedbd2;color:var(--green)}.soft{background:#e9f1e9;color:var(--green)}.danger{background:#fff3ef;color:#a23f2d;border:1px solid #edcfc5}.notice{display:flex;gap:13px;background:#edf2e9;border:1px solid #dfe8d8;border-radius:9px;padding:13px 17px;margin-bottom:25px;color:#52644d;font-size:12px}.notice>span{border:1px solid #8eaa7a;border-radius:50%;width:19px;height:19px;display:grid;place-items:center;flex-shrink:0;font-family:serif}.notice strong{font-size:12px}.notice p{margin-top:1px}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:17px;margin-bottom:24px}.card,.panel{background:white;border:1px solid var(--line);border-radius:12px}.card{padding:21px 23px}.card .label{font-size:12px;color:var(--muted)}.card .value{font-size:28px;font-weight:600;letter-spacing:-1px;line-height:1.3;margin:9px 0}.card small{font-size:11px;color:var(--muted)}.badge{display:inline-flex;padding:4px 10px;background:#f2eeda;color:#82703e;border-radius:5px;font-size:10px;letter-spacing:.4px;font-weight:700}.badge.green{color:#396447;background:#e9f1e8}.panel{margin-bottom:22px;overflow:hidden}.panel-head{padding:20px 24px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:15px;align-items:center}.panel-head p{font-size:12px;color:var(--muted)}.panel-body{padding:24px}.two-col{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(260px,1fr);gap:22px}.detail{display:grid;grid-template-columns:130px 1fr;gap:14px;font-size:13px;margin-bottom:14px}.detail span{color:var(--muted)}.detail strong{font-weight:500}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}.steps{list-style:none;margin:0;padding:0}.steps li{display:flex;gap:14px;align-items:center;padding:15px 0;border-bottom:1px solid #edf0eb}.steps li:last-child{border:0}.step-num{background:#edf3eb;color:#466e50;border-radius:50%;width:30px;height:30px;display:grid;place-items:center;flex-shrink:0;font-size:11px}.steps strong{display:block;font-size:13px}.steps small{color:var(--muted);font-size:11px}.steps a{margin-left:auto;color:#567756;font-size:18px}.bar{height:5px;background:#edf0ea;border-radius:5px;margin-top:18px}.bar div{background:#7c9b69;height:100%;border-radius:5px}.muted{color:var(--muted);font-size:12px}.section-label{color:#9aa79e;font-size:10px;letter-spacing:1.6px;font-weight:600;margin-bottom:12px}.fields{display:grid;grid-template-columns:1fr 1fr;gap:19px 24px}.field{display:block;font-weight:500;font-size:12px}.field.full{grid-column:1/-1}input,select,textarea{border:1px solid #d6dfd6;background:#fff;border-radius:7px;padding:10px 12px;color:#243e35;width:100%;margin-top:7px;min-height:44px}input:focus,textarea:focus,select:focus{outline:2px solid #9bbca1;outline-offset:1px}textarea{min-height:80px;resize:vertical}.help{font-size:11px;color:var(--muted);font-weight:400;display:block;margin-top:5px}.month-chips{display:flex;gap:12px;flex-wrap:wrap;margin-top:20px}.month-chip{padding:18px 25px;border:1px solid #d8e4d8;border-radius:9px;background:#f5f8f1;min-width:150px}.month-chip strong{display:block}.month-chip span{font-size:11px;color:var(--muted)}.table-wrap{overflow:auto;max-width:100%}table{border-collapse:collapse;width:100%;font-size:12px;text-align:left}th{background:#f3f6ef;color:#627467;font-size:10px;font-weight:600;padding:12px 16px;border-bottom:1px solid var(--line);white-space:nowrap}td{padding:15px 16px;border-bottom:1px solid #edf0eb}tr:last-child td{border:0}td strong{font-weight:600}.number{text-align:right;font-variant-numeric:tabular-nums}.attendance{table-layout:fixed;min-width:1250px}.attendance th,.attendance td{text-align:center;padding:8px 2px}.attendance th:first-child,.attendance td:first-child{width:170px;text-align:left;padding:12px;background:#fff;position:sticky;left:0;z-index:1;box-shadow:1px 0 #e0e8df}.attendance th{width:34px}.attendance button{min-height:35px;width:29px;padding:2px;border-radius:5px;background:#f4f6f1;color:#5d7964;font-size:11px}.attendance button.filled{background:#e3efdf;font-weight:700}.attendance .sun{background:#f3efea}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:17px 24px;border-bottom:1px solid var(--line)}.toolbar select{width:auto;min-width:140px;margin:0}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:11px;color:var(--muted);margin:18px 0}.legend b{color:var(--green)}.checklist{display:grid;gap:12px}.checkitem{display:flex;gap:12px;padding:16px;border:1px solid var(--line);border-radius:8px;align-items:flex-start}.checkitem input{width:18px;min-height:18px;margin:3px 0;accent-color:var(--green)}.checkitem strong{display:block;font-size:13px}.checkitem small{font-size:11px;color:var(--muted)}.document{display:flex;align-items:center;gap:15px;padding:19px 0;border-bottom:1px solid var(--line)}.document:last-child{border:0}.doc-icon{background:#f1f5ed;color:#58794f;font:17px Georgia,serif;width:43px;height:48px;display:grid;place-items:center;border:1px solid #d8e1d0;border-radius:5px;flex-shrink:0}.document strong{display:block;font-size:13px}.document small{color:var(--muted);font-size:11px}.document .badge{margin-left:auto}.paper{background:white;border:1px solid var(--line);padding:45px;max-width:800px;margin:20px auto;font:15px/1.6 'Times New Roman',serif}.paper h2,.paper h3{text-align:center;font-family:inherit}.paper .center{text-align:center}.paper hr{width:130px;border:0;border-top:1px solid #444;margin:7px auto 28px}.paper p{margin:15px 0}.paper .sign{text-align:right;margin-top:45px;min-height:100px}.empty{text-align:center;padding:40px;color:var(--muted)}footer{padding:20px 40px;color:#8b998d;font-size:10px;border-top:1px solid var(--line);display:flex;justify-content:space-between}.codes{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:20px 0}.codes button{background:#eaf2e6;color:#315840;min-height:55px}.close{width:100%}dialog{border:1px solid var(--line);border-radius:14px;width:360px;max-width:90vw;padding:24px;color:var(--ink)}dialog::backdrop{background:#102f2970}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);padding:13px 22px;border-radius:8px;background:#183e34;color:white;box-shadow:0 6px 20px #0002;z-index:10;display:none;max-width:90vw;font-size:13px}
@media(max-width:1050px){.sidebar{width:220px;padding:25px 14px}.app{margin-left:220px}main{padding:28px 25px}.topbar{padding:0 25px}.two-col{grid-template-columns:1fr}.cards{gap:12px}.card{padding:18px}.card .value{font-size:24px}}
@media(max-width:700px){.sidebar{position:relative;width:100%;padding:17px 18px 0}.brand{font-size:10px}.workspace,.side-bottom{display:none}nav{display:flex;overflow-x:auto;margin-top:15px;gap:5px;scrollbar-width:none}nav a{white-space:nowrap;padding:10px 12px;margin:0 0 10px;font-size:12px}nav a .nav-icon{display:none}nav a.active:after{display:none}.app{margin:0}.topbar{height:48px;padding:0 19px;font-size:10px}.user{font-size:10px}.user i{width:25px;height:25px}main{padding:24px 17px 45px}h1{font-size:26px}.page-heading{align-items:flex-start;gap:12px}.page-heading .primary{padding:10px 12px;font-size:11px;white-space:nowrap;margin-top:10px}.page-heading p{font-size:12px}.notice{font-size:11px;padding:12px}.cards{grid-template-columns:1fr 1fr;gap:10px}.cards .card:last-child{grid-column:1/-1}.card{padding:16px}.card .value{font-size:25px}.panel-head{padding:17px}.panel-body{padding:18px}.fields{grid-template-columns:1fr;gap:16px}.field.full{grid-column:auto}.detail{grid-template-columns:100px 1fr;font-size:12px}.toolbar{padding:15px 17px}.toolbar .actions{margin:0}.toolbar button{font-size:11px;padding:9px}.document .badge{font-size:8px;max-width:90px;text-align:center}.paper{padding:22px;font-size:13px}.month-chip{min-width:0;padding:12px 16px}footer{padding:18px;font-size:9px}footer span{display:none}input,select,textarea{font-size:16px}.legend{gap:10px}}
@media print{.sidebar,.topbar,.page-heading,.notice,footer,.no-print,#toast{display:none!important}.app{margin:0}main{padding:0}.paper{border:0;padding:15mm;max-width:none;margin:0}.print-only-note{display:block}}
/* Draft V2: extend the approved V1 layout. */
.quick-links{display:flex;gap:12px;flex-wrap:wrap}.quick-links a{padding:12px 16px;background:#f0f5ed;border:1px solid #dbe7d6;border-radius:8px;font-size:12px;color:#315e43}.link-button{padding:10px 17px;border-radius:8px;display:inline-block;font-weight:600}.reconcile{min-width:1080px}.reconcile td:first-child{min-width:200px}.reconcile input{min-width:150px}.source-actions{display:block;white-space:nowrap;margin-top:5px;color:#587a5c}.source-actions button{min-height:30px;font-size:11px}.diff{color:#a54b30;font-size:11px}.holiday-fixed{display:grid;grid-template-columns:1fr 1fr;gap:12px}.holiday-fixed>div{border:1px solid #dce5d9;background:#f8faf5;border-radius:9px;padding:14px;display:grid;grid-template-columns:1fr auto;gap:5px}.holiday-fixed span{font-size:11px;color:#70836f;grid-row:2}.holiday-fixed b{grid-row:1/3;grid-column:2;align-self:center;background:#e5efe0;border-radius:5px;padding:3px 8px;font-size:11px}.calc-lines>div{display:flex;justify-content:space-between;gap:20px;border-bottom:1px solid #e7ede2;padding:12px 0;font-size:13px}.calc-lines>div:last-child{font-size:17px;background:#eef4e9;padding:16px;border:0;border-radius:9px;margin-top:12px}.calc-lines strong{white-space:nowrap;font-variant-numeric:tabular-nums}.words{border-left:3px solid #92ad7b;padding:12px 17px;background:#f7f9f2;margin-top:20px}.words small{font-size:9px;letter-spacing:1.2px;color:#819176}.words p{font-family:'Times New Roman',serif;font-size:18px}.sidebar{overflow-y:auto}.sidebar .workspace{margin-top:25px;margin-bottom:15px}.sidebar nav a{padding-top:10px;padding-bottom:10px}.sidebar .side-bottom{margin-top:22px}.attendance{min-width:1340px}.attendance td:first-child{line-height:1.5}.attendance td:first-child small{font-size:10px}.notice strong{font-weight:600}
@media(max-width:700px){.sidebar{overflow:visible}.sidebar nav a{padding-top:9px;padding-bottom:9px}.holiday-fixed{grid-template-columns:1fr}.calc-lines>div{font-size:12px}.calc-lines>div:last-child{font-size:14px;flex-wrap:wrap}.quick-links a{width:100%}.words p{font-size:17px}}
/* V3 preserves the V2 visual system and adds dossier and source tables. */
.dossier-table{min-width:760px}.template-table{min-width:820px;margin-top:14px}.template-table th{white-space:normal}.template-table td{overflow-wrap:anywhere;max-width:290px}.row-actions{display:flex;gap:8px}.row-actions button{white-space:nowrap;font-size:11px;padding:8px 12px}.import-suggestion{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 0;border-bottom:1px solid var(--line)}.import-suggestion small{display:block;color:var(--muted);margin-top:4px}.import-suggestion button{flex-shrink:0}.sidebar nav{flex-shrink:0}.sidebar .side-bottom{margin-top:auto}.template-table+.help{margin-top:16px}.panel .month-chips{max-height:340px;overflow:auto}.template-table td:first-child{min-width:120px}.template-table td .help{max-width:250px}.dossier-table td:first-child{min-width:240px}
@media(max-width:700px){.import-suggestion{align-items:flex-start;flex-direction:column;gap:10px}.import-suggestion button{width:100%}.template-table{font-size:11px}.sidebar .side-bottom{display:none}}
.roster-person{padding:24px;border-bottom:1px solid var(--line)}.roster-person:last-child{border-bottom:0}.roster-person-top{display:flex;gap:18px;align-items:flex-start}.roster-person-top>.fields{flex:1}.person-number{width:28px;height:28px;display:grid;place-items:center;background:#edf3e9;border-radius:50%;flex-shrink:0;margin-top:25px}.mobilization-content{margin:20px 0 0 46px;padding:18px;background:#f7f9f5;border:1px solid var(--line);border-radius:9px}.mobilization-periods{display:grid;gap:12px;margin:17px 0}.mobilization-period{display:grid;grid-template-columns:60px 1fr 1fr 1.4fr auto;gap:12px;align-items:end;padding:15px;background:white;border:1px solid var(--line);border-radius:8px}.mobilization-period>strong{align-self:center;font-size:12px}.mobilization-overview{min-width:760px}.mobilization-overview td{min-width:100px}.mobilization-overview td:first-child{min-width:180px}.schedule-error{display:block;color:#a43d2a;font-size:12px;margin:12px 0 0}.reference-document{display:flex;justify-content:space-between;gap:18px;align-items:center;border-top:1px solid var(--line);padding:17px 0;margin-top:12px}.reference-document strong{overflow-wrap:anywhere}.attendance .text-btn{display:block}
@media(max-width:1050px){.mobilization-period{grid-template-columns:1fr 1fr}.mobilization-period>strong{grid-column:1/-1}.mobilization-period>.field:nth-last-child(2){grid-column:1/-1}.roster-person-top{flex-wrap:wrap}.roster-person-top>.fields{min-width:250px}.reference-document{flex-wrap:wrap}}
@media(max-width:700px){.roster-person{padding:17px}.person-number{display:none}.mobilization-content{margin-left:0;padding:14px}.mobilization-period{padding:12px;grid-template-columns:1fr}.mobilization-period>.field:nth-last-child(2){grid-column:auto}.roster-person-top>.fields{min-width:0;width:100%;flex-basis:100%}.roster-person-top>button{font-size:12px}.mobilization-period button{width:100%}.reference-document>.row-actions{flex-wrap:wrap}.reference-document strong{font-size:12px}}
.scan-preview{position:relative;max-width:100%;margin:16px 0;overflow:hidden;background:#eee;border:1px solid #ccd8d1}.scan-preview canvas{display:block;width:100%;height:auto}.scan-preview #scanSelection{position:absolute;pointer-events:none;border:2px solid #dd601f;background:#f5aa3422;z-index:2;display:none}.scan-result-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;max-height:480px;overflow:auto;margin:16px 0}.scan-result{padding:14px;border:1px solid #d6e2d9;border-radius:10px;background:#f8fbf8}.scan-result p{font-size:13px;overflow-wrap:anywhere}.scan-entry{border-top:1px solid #d6e2d9;padding-top:20px;margin-top:20px}#scanStatus{font-weight:600;color:#175443;min-height:24px}

.scan-raw{white-space:pre-wrap;overflow-wrap:anywhere;max-height:300px;overflow:auto;font:13px/1.5 sans-serif;background:#f4f7f4;padding:12px}
/* Printing fallback when Times New Roman is unavailable on the exporting device. */
@font-face{font-family:'TVF Serif';src:url('assets/fonts/TVFSerif.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'TVF Serif';src:url('assets/fonts/TVFSerif-Bold.ttf') format('truetype');font-weight:700;font-style:normal;font-display:swap}
@media(min-width:1051px){.mobilization-period{grid-template-columns:48px minmax(130px,1fr) minmax(130px,1fr) minmax(115px,.7fr) minmax(170px,1.2fr)}.mobilization-period>.row-actions{grid-column:2/-1;justify-content:flex-start;flex-wrap:wrap}}

/* V3.10.0 - Supabase authentication gate */
.auth-gate{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:24px;background:linear-gradient(145deg,#eef5f2,#f8faf9)}
.auth-card{width:min(420px,100%);background:#fff;border:1px solid #d9e5e1;border-radius:18px;padding:30px;box-shadow:0 18px 60px rgba(20,61,57,.14)}
.auth-brand{font-size:28px;font-weight:800;color:#153d39;letter-spacing:.04em}.auth-brand span{color:#e7a329}.auth-card h1{margin:12px 0 4px;color:#173f3b}.auth-sub{margin:0 0 22px;color:#637773}
.auth-card label{display:block;font-weight:700;color:#2d4541;margin:14px 0}.auth-card input{box-sizing:border-box;width:100%;margin-top:7px;padding:12px 13px;border:1px solid #bdcfca;border-radius:10px;font:inherit;outline:none}.auth-card input:focus{border-color:#2d756d;box-shadow:0 0 0 3px rgba(45,117,109,.12)}
.auth-submit{width:100%;margin-top:6px}.auth-error{min-height:22px;margin:12px 0 0;color:#a33;font-size:13px}.auth-pending>.sidebar,.auth-pending>.app,.auth-pending>#toast,.auth-pending>dialog{visibility:hidden}.auth-ok>.auth-gate{display:none}.logout-btn{margin-left:10px}.topbar .user{margin-left:auto}
