:root{color:#172026;font-synthesis:none;text-rendering:optimizelegibility;background:#eef3f4;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}.app-shell{min-height:100vh;padding:28px}.topbar{justify-content:space-between;align-items:center;gap:20px;max-width:1440px;margin:0 auto 24px;display:flex}.eyebrow{color:#47656b;text-transform:uppercase;margin:0 0 6px;font-size:13px;font-weight:700}h1,h2{letter-spacing:0;margin:0}h1{font-size:28px;line-height:1.2}h2{font-size:18px}.topbar-actions,.session,.language-field{align-items:center;gap:10px;display:flex}.topbar-actions{flex-wrap:wrap;justify-content:flex-end}.language-field{color:#41565b;gap:8px;font-size:13px;font-weight:700;display:flex}select{color:#172026;background:#fff;border:1px solid #ccdadd;border-radius:6px;min-height:36px;padding:0 10px}.muted{color:#5e6c70}.workspace{grid-template-columns:minmax(280px,340px) minmax(0,1fr);gap:18px;max-width:1440px;margin:0 auto;display:grid}.login-only,.console-stack{max-width:1440px;margin:0 auto}.login-only{place-items:start center;min-height:calc(100vh - 150px);display:grid}.console-stack,.main-column{gap:18px;display:grid}.panel{background:#fff;border:1px solid #dce5e6;border-radius:8px;padding:22px;box-shadow:0 10px 30px #25383e14}.side-panel{align-self:start}.login-panel{width:100%;max-width:420px}.panel-heading{color:#172026;align-items:center;gap:10px;margin-bottom:18px;display:flex}.split-heading{flex-wrap:wrap;justify-content:space-between}.heading-title{align-items:center;gap:10px;display:flex}.heading-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:flex}.form,.upload-grid{gap:14px;display:grid}.upload-grid{grid-template-columns:repeat(4,minmax(0,1fr)) auto}.upload-grid.compact{grid-template-columns:minmax(180px,240px) minmax(300px,1fr) auto}.upload-grid.upload-only{grid-template-columns:minmax(320px,1fr) auto;align-items:stretch}label{color:#41565b;gap:7px;font-size:13px;font-weight:700;display:grid}input{color:#172026;background:#f8fbfb;border:1px solid #ccdadd;border-radius:6px;min-width:0;min-height:42px;padding:0 12px}input:focus{border-color:#177e89;outline:2px solid #177e892e}.duty-dashboard{border-top:5px solid #177e89}.admin-status-panel{border-top:5px solid #455a64}.upload-panel{border-top:5px solid #2daf75}.compact-button{white-space:nowrap;min-height:38px}.duty-control-row{grid-template-columns:minmax(180px,240px) minmax(0,1fr);align-items:end;gap:14px;margin-bottom:16px;display:grid}.duty-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.duty-kpis-wide{max-width:520px;margin-bottom:16px}.duty-type-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;display:grid}.duty-type-card{background:#f8fbfb;border:1px solid #dce5e6;border-left:6px solid #9db2b7;border-radius:8px;gap:10px;min-width:0;padding:14px;display:grid}.duty-type-card-top{justify-content:space-between;align-items:center;gap:8px;display:flex}.duty-type-card-top strong{color:#172026;font-size:20px}.time-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;min-width:0;display:grid}.duty-detail-body{border-top:1px solid #dce5e6;gap:10px;padding-top:8px;display:grid}.checkbox-field{flex-direction:row;align-items:center;gap:8px;display:flex}.checkbox-field input{width:16px;min-height:auto}.compact-notice{margin-top:14px}.file-field input{display:none}.file-field span{text-overflow:ellipsis;white-space:nowrap;background:#f8fbfb;border:1px dashed #9db2b7;border-radius:6px;align-items:center;gap:8px;min-height:42px;padding:0 12px;display:flex;overflow:hidden}.dropzone{color:#173f46;cursor:pointer;text-align:center;background:#f8fbfb;border:2px dashed #9db2b7;border-radius:8px;place-items:center;gap:6px;min-height:112px;padding:18px;display:grid}.dropzone input{display:none}.dropzone strong{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.dropzone small{color:#5e6c70;font-weight:700}.dropzone-icon{color:#123a40;background:#dcebec;border-radius:999px;justify-content:center;align-items:center;width:44px;height:44px;display:inline-flex}.dropzone.is-dragging{background:#e6f5ef;border-color:#177e89;outline:3px solid #177e8929}.primary-button,.secondary-button,.text-button,.icon-button{border-radius:6px;justify-content:center;align-items:center;gap:8px;display:inline-flex}.primary-button{color:#fff;background:#177e89;border:0;min-height:42px;padding:0 16px;font-weight:800}.secondary-button{color:#172026;background:#f8fbfb;border:1px solid #ccdadd;width:100%;min-height:42px;padding:0 14px;font-weight:800}.text-button{color:#173f46;background:#fff;border:1px solid #dce5e6;min-height:34px;padding:0 10px;font-size:13px;font-weight:800}.icon-button{color:#123a40;background:#dcebec;border:0;width:36px;height:36px}.upload-button{white-space:nowrap;align-self:end}.publish-button{background:#2daf75;min-width:128px}.social-login-list{gap:10px;display:grid}.notice{border-radius:6px;align-items:flex-start;gap:10px;margin-top:16px;padding:12px;display:flex}.notice p{margin:0}.warning{color:#705300;background:#fff7dd}.error{color:#8a1f1f;background:#ffe8e8}.success{color:#155f43;background:#e6f5ef}.empty-state{color:#5e6c70;margin:0}.summary-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:14px;display:grid}.sheet-selector{grid-template-columns:auto minmax(260px,1fr);align-items:center;gap:8px;margin-bottom:14px;display:grid}.sheet-selector span{color:#41565b;font-size:13px;font-weight:800}.sheet-selector select{width:100%}.summary-item{background:#f4f8f8;border:1px solid #dce5e6;border-radius:6px;gap:5px;padding:12px;display:grid}.summary-item span{color:#5e6c70;font-size:12px;font-weight:700}.summary-item strong{overflow-wrap:anywhere;font-size:18px}.table-wrap{border:1px solid #dce5e6;border-radius:8px;max-height:560px;margin-top:16px;overflow:auto}.history-list{gap:10px;display:grid}.history-item{border:1px solid #dce5e6;border-radius:6px;justify-content:space-between;align-items:center;gap:14px;padding:12px;display:flex}.history-item strong,.history-item span{display:block}.history-item span{color:#5e6c70;margin-top:4px;font-size:13px}.history-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}table{border-collapse:collapse;width:100%;min-width:960px}th,td{text-align:center;white-space:nowrap;border-bottom:1px solid #e8eeee;border-right:1px solid #e8eeee;min-width:54px;padding:10px}thead th{color:#fff;z-index:2;background:#173f46;font-size:12px;position:sticky;top:0}tbody th{text-align:left;z-index:1;background:#f8fbfb;position:sticky;left:0}tbody th span{color:#6d7d81;margin-top:3px;font-size:12px;display:block}.review-table{width:max-content;min-width:100%}.review-name-header,.review-table tbody th{width:132px;min-width:132px}.review-name-header{text-align:left;z-index:4;position:sticky;left:0}.review-month-header{height:28px;padding:6px 8px}.review-date-header{width:42px;min-width:42px;padding:5px 4px 6px;top:41px}.review-date-header span,.review-date-header small{line-height:1.1;display:block}.review-date-header span{font-size:13px;font-weight:900}.review-date-header small{color:#c6dde1;margin-top:4px;font-size:10px;font-weight:700}.review-table td{width:42px;min-width:42px;padding:9px 6px}.needs-review{color:#6b4a00;background:#fff0d0;font-weight:800}.duty-day{border-left-color:#57bec6}.duty-eve{border-left-color:#f7af00}.duty-nt{border-left-color:#364287}.duty-md{border-left-color:#2daf75}.duty-s{border-left-color:#6cca79}.duty-24h{border-left-color:#f7616b}.duty-c1{border-left-color:#9e69e2}.duty-c2{border-left-color:#6b4b4b}.duty-c3{border-left-color:#222}.duty-off,.duty-r,.duty-hf{border-left-color:#a7a7ab}td.duty-day{background:#57bec624}td.duty-eve{background:#f7af0029}td.duty-nt{background:#36428721}@media (width<=1100px){.workspace,.upload-grid,.upload-grid.compact,.upload-grid.upload-only,.duty-control-row{grid-template-columns:1fr}.duty-type-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.upload-button{justify-self:start}.history-item{flex-direction:column;align-items:flex-start}}@media (width<=720px){.app-shell{padding:18px}.topbar{flex-direction:column;align-items:flex-start}.panel{padding:18px}.summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.split-heading{flex-direction:column;align-items:flex-start}.duty-kpis,.duty-type-grid,.time-grid{grid-template-columns:1fr}}
