:root{font-family:Inter,Microsoft YaHei,ui-sans-serif,system-ui,sans-serif;color:#17211f;background:#f4f7f6;font-synthesis:none;--ink: #17211f;--muted: #65736f;--canvas: #f4f7f6;--surface: #fff;--brand: #126b5d;--brand-dark: #0d4c43;--danger: #b94441;--warning: #915408;--shadow: 0 12px 28px rgba(20, 58, 48, .07)}*{box-sizing:border-box}body{margin:0;min-width:320px;background:var(--canvas)}button,input,select,textarea{font:inherit}button{min-height:40px;border:0;border-radius:9px;padding:.62rem .9rem;background:var(--brand);color:#fff;cursor:pointer;font-weight:700;transition:background .16s ease,transform .16s ease,box-shadow .16s ease}button:hover:not(:disabled){background:var(--brand-dark);transform:translateY(-1px);box-shadow:0 5px 12px #0d4c4329}button:disabled{opacity:.55;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--brand);outline-offset:2px}a{color:inherit;text-decoration:none}label{display:grid;gap:.42rem;font-weight:700;color:#35433f;font-size:.88rem}input,select,textarea{width:100%;min-height:42px;border:1px solid #c8d7d1;border-radius:9px;padding:.64rem .72rem;background:#fff;color:var(--ink)}textarea{min-height:92px;resize:vertical}input:focus,select:focus,textarea:focus{outline:0;border-color:var(--brand);box-shadow:0 0 0 3px #d6eee6}select{-moz-appearance:none;appearance:none;-webkit-appearance:none;padding-right:2.7rem;color:#29493f;background-color:#fdfefd;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23176b59' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .85rem center;background-size:16px;cursor:pointer;transition:background-color .16s ease,border-color .16s ease,box-shadow .16s ease}select:hover:not(:disabled){background-color:#f3faf7;border-color:#91c7b5}select:disabled{cursor:not-allowed;color:#8b9a95;background-color:#f0f4f2;background-image:none}select option{color:#17211f;background-color:#fff}input[type=checkbox]{width:18px;min-width:18px;height:18px;min-height:18px;margin:0;padding:0;border-radius:4px;accent-color:var(--brand);vertical-align:middle}.login-page{min-height:100vh;display:grid;place-items:center;padding:1.5rem;background:radial-gradient(circle at 12% 12%,#d2eee4,transparent 34%),radial-gradient(circle at 88% 85%,#e7f1ed,transparent 37%),#f6f8f7}.login-card{width:min(100%,440px);background:var(--surface);padding:2.4rem;border:1px solid #e2ebe8;border-radius:18px;box-shadow:0 24px 65px #113e3121;display:grid;gap:1rem}.login-card h1{margin:0;font-size:1.72rem;letter-spacing:-.03em}.brand-mark{color:var(--brand);font-size:.8rem;letter-spacing:.16em;font-weight:800}.muted{color:var(--muted);margin:0}.notice{background:#fff2dd;border-left:3px solid #d28a25;padding:.72rem .82rem;color:#76460d;border-radius:5px;margin:.8rem 0}.shell{min-height:100vh;display:grid;grid-template-columns:236px minmax(0,1fr)}.shell aside{color:#e8f2ef;background:linear-gradient(180deg,#123d36,#0e302a);padding:1.25rem .85rem;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.logo{font-size:1rem;font-weight:800;padding:.55rem .75rem 1.8rem}.logo span{display:block;font-size:.74rem;color:#a8c7bd;font-weight:500;margin-top:.28rem}.shell nav{display:grid;gap:.18rem}.shell nav a{position:relative;padding:.68rem .74rem;border-radius:8px;color:#c9ded7;font-size:.92rem}.shell nav a:hover{color:#fff;background:#1a564b}.shell nav a.active{color:#fff;background:#1e5f53;font-weight:700}.shell nav a.active:before{content:"";position:absolute;left:-.85rem;top:.62rem;bottom:.62rem;width:3px;border-radius:3px;background:#74d4b8}.side-footer{margin-top:auto;padding:1rem .75rem .2rem;display:grid;gap:.25rem;border-top:1px solid #2a574e}.side-footer small{color:#a8c7bd}.link-button{min-height:auto;padding:.55rem 0 0;background:none;color:#c9ded7;font-weight:500;text-align:left;box-shadow:none}.link-button:hover{background:none;color:#fff;box-shadow:none;transform:none}.link-button.dark{color:var(--brand);padding:.2rem 0}.content{padding:clamp(1.25rem,3vw,2.5rem);max-width:1320px;width:100%;margin:0 auto}.page-title{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin:.15rem 0 1.4rem}.page-title h1{margin:0 0 .36rem;letter-spacing:-.035em;font-size:clamp(1.58rem,2.6vw,2.2rem)}.page-title p{margin:0;color:var(--muted);max-width:720px;line-height:1.55}.button-link{display:inline-flex;align-items:center;justify-content:center;min-height:40px;background:var(--brand);padding:.62rem .9rem;border-radius:9px;color:#fff;font-weight:700;white-space:nowrap}.card{background:var(--surface);border:1px solid #e1e9e6;border-radius:13px;padding:1.25rem;margin-bottom:1rem;box-shadow:var(--shadow)}.card h2{font-size:1.02rem;margin:0 0 1rem}.grid{display:grid;gap:1rem}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.eyebrow{display:block;color:var(--muted);font-size:.78rem;font-weight:750;letter-spacing:.03em}.metric{font-size:2.1rem;font-weight:800;margin-top:.4rem;letter-spacing:-.05em}.metric.success{color:#13705f}.metric.warning{color:#a76412}.metric.danger{color:var(--danger)}.chips{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:.75rem}.chip{font-size:.82rem;padding:.32rem .56rem;border-radius:99px;background:#f0f3f2;color:#57635f}.chip.done{background:#d9f0e7;color:#176651}.status{display:inline-flex;border-radius:99px;padding:.27rem .56rem;font-size:.78rem;font-weight:750;white-space:nowrap}.status.complete{background:#d9f0e7;color:#176651}.status.partial{background:#fff2dd;color:var(--warning)}.status.missing{background:#fbe8e6;color:#a23d37}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:end;gap:1rem}.form-grid .full{grid-column:1 / -1}.actions{display:flex;align-items:center;flex-wrap:wrap;gap:.65rem}.secondary-button{background:#fff;color:#38534b;border:1px solid #c8d7d1;box-shadow:none}.secondary-button:hover:not(:disabled){background:#edf5f2;color:#294c42;box-shadow:none;transform:none}.icon-button{min-height:40px;min-width:40px;padding:0;background:transparent;color:#50635d;font-size:1.5rem;line-height:1;box-shadow:none}.icon-button:hover:not(:disabled){background:#edf3f0;color:#294c42;box-shadow:none;transform:none}.upload-zone{border:1px dashed #8bbdac;border-radius:10px;padding:1rem;background:#f7fbf9}.upload-zone input{margin-top:.1rem}.upload-zone span{color:var(--muted);font-weight:500;font-size:.82rem}.file-preview{display:grid;gap:.38rem;padding:.82rem 1rem;border-radius:9px;background:#edf6f2;color:#315d50}.file-preview span{display:flex;justify-content:space-between;gap:1rem;font-size:.88rem}.file-preview small{color:var(--muted)}.upload-form{max-width:1040px}.upload-submit{position:sticky;bottom:1rem;z-index:3;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem .85rem;color:#526b62;background:#fffffff0;border:1px solid #dbe7e2;border-radius:11px;box-shadow:0 10px 24px #143a301a;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.period-actions{flex:0 0 auto;align-items:stretch}.period-actions>button{min-height:42px;white-space:nowrap}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.upload-meta-grid{align-items:start}.upload-meta-grid>label{align-content:start}.period-summary,.field-help{min-height:52px;display:flex;align-items:center;gap:.65rem;padding:.72rem .84rem;margin-top:.55rem;color:#315d50;background:#edf6f2;border-radius:9px;font-size:.88rem}.period-summary strong{color:#176651}.field-help{color:#527066;background:#f5f8f7;font-weight:600}.upload-dropzone-wrap{grid-column:1 / -1}.upload-dropzone{min-height:172px;display:grid;place-content:center;justify-items:center;gap:.45rem;padding:1.5rem;text-align:center;color:#507066;background:#f8fcfa;border:1.5px dashed #8cbfad;border-radius:12px;cursor:pointer;transition:background .16s ease,border-color .16s ease,transform .16s ease}.upload-dropzone:hover,.upload-dropzone:focus-visible,.upload-dropzone.dragging{color:#155f50;background:#eaf7f1;border-color:#1b8a72;outline:none}.upload-dropzone.dragging{transform:scale(1.005)}.upload-dropzone-icon{display:grid;place-items:center;width:34px;height:34px;color:#176b59;background:#d9f0e7;border-radius:50%;font-size:1.25rem;font-weight:800}.upload-dropzone strong{color:#234b40;font-size:.98rem}.upload-dropzone>span:last-child{color:var(--muted);font-size:.82rem}.upload-error{margin:.55rem 0 0;color:#a23d37;font-size:.86rem}.selected-files{display:grid;gap:.45rem;margin-top:.75rem;padding:.75rem;background:#f4f8f6;border:1px solid #dce8e3;border-radius:10px}.selected-files-title{color:#486159;font-size:.82rem;font-weight:750}.selected-file{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.6rem .72rem;background:#fff;border:1px solid #e1ebe6;border-radius:8px}.selected-file>div{min-width:0}.selected-file strong{display:block;max-width:min(620px,60vw);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#29493f;font-size:.88rem}.selected-file small{color:var(--muted);font-size:.78rem}.role-filter{display:flex;align-items:center;flex-wrap:wrap;gap:.45rem;margin-top:1rem}.role-filter>span{margin-right:.15rem;color:var(--muted);font-size:.84rem;font-weight:750}.role-filter-button{min-height:36px;padding:.35rem .68rem;color:#476157;background:#f4f8f6;border:1px solid #d8e4df;border-radius:99px;box-shadow:none;font-size:.84rem}.role-filter-button:hover:not(:disabled){background:#e7f4ee;color:#145f50;box-shadow:none;transform:none}.role-filter-button.active{color:#fff;background:var(--brand);border-color:var(--brand)}.select-menu{position:relative;display:grid;gap:.42rem}.select-menu-label{color:#35433f;font-size:.88rem;font-weight:700}.select-menu-trigger{width:100%;min-height:42px;display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.64rem .72rem;color:#29493f;text-align:left;background:#fdfefd;border:1px solid #c8d7d1;box-shadow:none}.select-menu-trigger:hover:not(:disabled),.select-menu-trigger[aria-expanded=true]{color:#145e4f;background:#f3faf7;border-color:#91c7b5;box-shadow:none;transform:none}.select-menu-trigger>span:last-child{color:#176b59;font-size:1.2rem;line-height:1}.select-menu-options{position:absolute;top:calc(100% + .4rem);z-index:15;width:100%;max-height:260px;overflow:auto;padding:.35rem;background:#fff;border:1px solid #bcd4ca;border-radius:10px;box-shadow:0 14px 32px #133d332e;overscroll-behavior:contain}.select-menu-options button{width:100%;min-height:36px;display:flex;align-items:center;justify-content:space-between;padding:.48rem .6rem;color:#29493f;text-align:left;background:transparent;border-radius:7px;box-shadow:none;font-weight:600}.select-menu-options button:hover:not(:disabled),.select-menu-options button.selected{color:#145e4f;background:#e8f5ef;box-shadow:none;transform:none}.date-picker-field{display:grid;gap:.42rem}.date-picker-label{color:#35433f;font-size:.88rem;font-weight:700}.date-picker-button{width:100%;min-height:54px;display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:.7rem;padding:.55rem .7rem;color:#29493f;text-align:left;background:#f8fcfa;border:1px solid #c8d7d1;box-shadow:none}.date-picker-button:hover:not(:disabled){color:#174f43;background:#edf7f2;border-color:#89bfad;box-shadow:none;transform:none}.date-picker-button>span{display:grid;place-items:center;width:30px;height:30px;color:#176b59;background:#d9f0e7;border-radius:7px;font-size:.75rem}.date-picker-button strong{min-width:0;font-weight:750}.date-picker-button small{color:#62766e;font-weight:600}.category-selector{display:grid;gap:.65rem;margin:0;padding:1rem;border:1px solid #d7e4df;border-radius:10px;background:#f8fbfa}.category-selector legend{padding:0 .3rem;color:#354b43;font-weight:750}.category-selector p{margin:0;color:var(--muted);font-size:.84rem}.category-selector>div{display:flex;flex-wrap:wrap;gap:.6rem}.category-option{display:inline-flex;align-items:center;gap:.45rem;padding:.48rem .62rem;color:#38534b;background:#fff;border:1px solid #dbe6e2;border-radius:8px;cursor:pointer;font-size:.88rem}.category-option:has(input:checked){color:#145e4f;background:#e7f5ee;border-color:#83c5ae}.inline-check{display:flex;align-items:center;gap:.55rem;padding:.2rem 0;cursor:pointer}.table-wrap{overflow:auto;border:1px solid #e4ece9;border-radius:10px}.table-wrap table{width:100%;min-width:720px;border-collapse:collapse;font-size:.88rem}.table-wrap th{color:#5f706a;background:#f6f9f8;font-size:.75rem;text-align:left;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}.table-wrap th,.table-wrap td{padding:.78rem .72rem;border-bottom:1px solid #edf1ef;vertical-align:middle}.table-wrap tbody tr:hover{background:#f9fcfb}.table-wrap tbody tr:last-child td{border-bottom:0}.table-wrap td small{display:block;color:var(--muted);font-size:.8125rem;line-height:1.55;margin-top:.2rem}.text-button{min-height:36px;min-width:44px;white-space:nowrap;padding:.24rem .42rem;background:transparent;color:var(--brand);border-radius:6px;box-shadow:none}.text-button:hover:not(:disabled){background:#e4f3ed;color:#0b4d42;text-decoration:none;box-shadow:none;transform:none}.pagination{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1rem .2rem .1rem;color:var(--muted);font-size:.86rem}.pagination>div{display:flex;align-items:center;gap:.5rem}.page-indicator{min-width:4rem;text-align:center;color:#435851}.empty-state{padding:3rem 1.5rem;text-align:center;color:var(--muted)}.empty-state strong{color:#35433f;display:block;font-size:1rem}.empty-state p{margin:.5rem 0 1rem}html{scrollbar-gutter:stable}.side-footer .logout-button{width:100%;min-height:42px;display:flex;align-items:center;justify-content:flex-start;gap:.55rem;margin-top:.5rem;padding:.62rem .75rem;background:transparent;color:#c9ded7;border:1px solid #315b50;border-radius:8px;font-size:.88rem;line-height:1.3;font-weight:500;text-align:left;text-decoration:none;box-shadow:none}.side-footer .logout-button svg{flex-shrink:0}.side-footer .logout-button:hover:not(:disabled),.side-footer .logout-button:focus-visible{color:#fff;background:#1e564a;border-color:#527d70;transform:none;box-shadow:none}.portal-dashboard .page-title p{overflow-wrap:anywhere}.submission-overview{margin-bottom:1.25rem;padding:1.5rem;background:#fff;border:1px solid #dce8e3;border-radius:15px;box-shadow:var(--shadow)}.submission-period{display:flex;justify-content:space-between;align-items:center;gap:1rem}.submission-period h2{margin:.3rem 0 0;color:#22483e;font-size:1.4rem;font-weight:750;letter-spacing:-.02em}.submission-summary{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:center;gap:2.5rem;margin-top:1.8rem}.submission-progress-value{display:flex;align-items:baseline;gap:.55rem;margin:.2rem 0 .85rem}.submission-progress-value strong{color:var(--brand);font-size:2.75rem;line-height:1.2;font-weight:750;font-variant-numeric:tabular-nums}.submission-progress-value>span{color:var(--muted);font-size:.94rem}.submission-progress-track{height:8px;overflow:hidden;background:#eaf0ed;border-radius:99px}.submission-progress-track>span{display:block;height:100%;border-radius:inherit;background:#268573}.submission-progress p{margin:.7rem 0 0;color:var(--muted);font-size:.85rem}.submission-progress p strong{color:#315c4e}.submission-progress h3{margin:.65rem 0;font-size:1.15rem;color:#22483e}.submission-deadline{display:flex;align-items:flex-start;gap:.85rem;padding:1.25rem;background:#f5f9f7;border:1px solid #e5eee9;border-radius:12px}.submission-calendar{display:grid;place-items:center;width:40px;height:40px;flex-shrink:0;color:#2c715e;background:#e1eee7;border-radius:10px}.submission-deadline time{display:block;margin-top:.4rem;color:#284d41;font-size:1.06rem;font-weight:700;line-height:1.55}.submission-deadline p{margin:.5rem 0 0;color:var(--muted);font-size:.79rem;line-height:1.6}.submission-requirements{margin-top:1.5rem;padding-top:1.25rem;border-top:1px solid #eaf0ed}.submission-requirements h3{margin:0 0 .85rem;color:#435b50;font-size:.85rem;font-weight:700}.submission-category-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem;padding:0;margin:0;list-style:none}.submission-category{display:flex;align-items:center;gap:.7rem;min-width:0;padding:.8rem;border:1px solid #e4eae6;border-radius:10px;background:#fcfdfc}.submission-category-icon{display:grid;place-items:center;flex-shrink:0;width:30px;height:30px;color:#92713d;background:#f5efe3;border-radius:50%}.submission-category>div{display:grid;gap:.3rem;min-width:0}.submission-category strong{color:#334e42;font-size:.85rem;font-weight:650;overflow-wrap:anywhere}.submission-category>div>span{color:#8b7146;font-size:.75rem}.submission-category.submitted{background:#f1f8f4;border-color:#d4e9dc}.submission-category.submitted .submission-category-icon{color:#277558;background:#dcefe3}.submission-category.submitted>div>span{color:#46785f}.submission-footer{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;margin:1.5rem -1.5rem -1.5rem;padding:1.1rem 1.5rem;background:#f8fbfa;border-top:1px solid #e5eee9;border-radius:0 0 15px 15px}.submission-confirmation-note{display:flex;align-items:flex-start;gap:.65rem;min-width:0}.submission-confirmation-note>svg{flex-shrink:0;margin-top:.12rem;color:#64877a}.submission-confirmation-note strong{display:block;color:#435e53;font-size:.82rem;font-weight:600;line-height:1.5}.submission-confirmation-note p{margin:.25rem 0 0;color:var(--muted);font-size:.78rem;line-height:1.6}.submission-confirm-link{flex-shrink:0;gap:.75rem;min-height:44px;padding:.65rem 1.1rem;border:1px solid transparent;font-size:.875rem;font-weight:600;transition:background-color .16s ease,box-shadow .16s ease}.submission-confirm-link>svg{flex-shrink:0}.submission-confirm-link:hover{background:var(--brand-dark);box-shadow:0 3px 8px #0d4c4324}.submission-section-title{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}.submission-section-title h2{margin:0}.submission-section-title>a{color:var(--brand);font-size:.82rem;font-weight:600}.submission-section-title>a:hover{text-decoration:underline}@media (max-width: 760px){.submission-summary{grid-template-columns:minmax(0,1fr);gap:1.3rem;margin-top:1.3rem}.submission-category-list{grid-template-columns:minmax(0,1fr)}.submission-overview{padding:1.15rem}.submission-deadline{padding:1rem}}@media (max-width: 760px){.submission-footer{flex-direction:column;align-items:stretch;gap:1rem;margin:1.25rem -1.15rem -1.15rem;padding:1rem 1.15rem}}.content{min-width:0}.audit-log-table{table-layout:fixed}.audit-log-table .audit-time{width:22%}.grid.five{grid-template-columns:repeat(5,minmax(0,1fr))}.status.pending{color:#8a5b13;background:#fff3d8}.status.replaced{color:#64716c;background:#edf0ee}.confirmation-files{display:grid;gap:1rem;margin-block:1rem}.confirmation-files label,.confirmation-preview{overflow-wrap:anywhere}.confirmation-preview{background:#f0f7f3;padding:1rem;border-radius:8px;margin-block:1rem}.confirmation-preview ul{margin:.5rem 0 0;padding-left:1.2rem;line-height:1.8}@media (max-width: 1200px){.grid.five{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width: 640px){.grid.five{grid-template-columns:1fr}}.audit-log-table .audit-user{width:18%}.audit-log-table .audit-action,.audit-log-table .audit-target{width:30%}.audit-log-table td{overflow-wrap:anywhere}.audit-log-table td strong{font-weight:650}.audit-log-table td small{color:#61736b;line-height:1.55}.company-name{display:block;max-width:18rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:650}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;grid-template-columns:minmax(0,1fr);place-items:center;padding:1rem;background:#0d2a2373;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.dialog{min-width:0;width:min(100%,560px);max-height:min(720px,calc(100vh - 2rem));display:flex;flex-direction:column;overflow:hidden;background:#fff;border-radius:15px;padding:1.2rem;box-shadow:0 24px 70px #07231b47}.dialog-header{flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}.dialog-header h2{margin:0;font-size:1.15rem}.dialog-body{min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding-right:.35rem;scrollbar-width:thin;scrollbar-color:#9cafaa transparent}.dialog-body::-webkit-scrollbar{width:6px}.dialog-body::-webkit-scrollbar-track{background:transparent}.dialog-body::-webkit-scrollbar-thumb{background:#9cafaa;border-radius:999px}.dialog-body::-webkit-scrollbar-thumb:hover{background:#6e8d81}.dialog-error{flex-shrink:0;max-height:25vh;overflow-y:auto;margin-top:0}.dialog-description{margin:0 0 1.2rem;color:var(--muted);line-height:1.6}.dialog-success{margin:0 0 1rem;padding:.72rem .82rem;color:#176651;background:#e7f5ee;border-radius:8px}.dialog .actions{justify-content:flex-end;margin-top:1rem}.toast{position:fixed;right:1.4rem;bottom:1.4rem;z-index:30;max-width:min(420px,calc(100vw - 2.8rem));padding:.82rem 1rem;color:#fff;border-radius:10px;box-shadow:0 12px 30px #0a282038}.toast.success{background:#176b59}.toast.error{background:#a63e3a}.toast.info{background:#385e54}.center{min-height:60vh;display:grid;place-content:center;gap:1rem;color:#52635d;text-align:center}.spinner{width:30px;height:30px;border:3px solid #d4e2dc;border-top-color:var(--brand);border-radius:50%;animation:spin .8s linear infinite;margin:auto}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 960px){.shell{grid-template-columns:1fr}.shell aside{position:sticky;top:0;z-index:10;height:auto;padding:.75rem;flex-direction:row;align-items:center;gap:.5rem;overflow:auto}.logo{padding:0 .4rem;white-space:nowrap}.logo span,.side-footer{display:none}.shell nav{display:flex;gap:.22rem}.shell nav a{padding:.52rem .62rem;white-space:nowrap}.shell nav a.active:before{display:none}.grid.four{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 640px){.content{padding:1rem}.page-title{flex-direction:column;margin-bottom:1rem}.page-title .actions,.page-title>button,.page-title .button-link{width:100%}.page-title .actions>button{flex:1}.grid.three,.grid.four,.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.card{padding:1rem}.table-wrap{margin-inline:-.1rem}.table-wrap table{min-width:620px}.pagination{align-items:flex-start;flex-direction:column}.dialog{padding:1rem;border-radius:12px}.login-card{padding:1.5rem}}.company-source-stage{min-width:9rem}.company-row-actions{display:flex;align-items:center;gap:.25rem}.password-settings{width:100%;max-width:600px}.password-settings .card{padding:1.75rem}.password-form{display:grid;grid-template-columns:minmax(0,1fr);gap:1.25rem}.password-form label{gap:.6rem}.password-form input{min-height:46px}.password-form input::placeholder{color:#7a8882;font-weight:400}.password-field-hint{margin:.5rem 0 0;color:var(--muted);font-size:.8125rem;line-height:1.6}.password-form .notice,.password-form .dialog-success{margin:0}.password-form-actions{display:flex;justify-content:flex-end;padding-top:1.25rem;border-top:1px solid #e5eee9}.password-form-actions button{min-width:140px;min-height:44px;font-size:.875rem;font-weight:600}@media (max-width: 640px){.password-settings .card{padding:1.25rem}.password-form-actions button{width:100%}}.form-hint{color:var(--muted);font-size:.875rem;font-weight:400;line-height:1.6;margin:0 0 1rem}.login-card .form-hint{margin:0}.form-fields{margin:0;padding:0;border:0;min-width:0}.status.neutral{color:#435b50;background:#eef3f0}.upload-error ul{padding-left:1.3rem;margin:.4rem 0;overflow-wrap:anywhere}.upload-dropzone[aria-disabled=true]{cursor:not-allowed}.upload-dropzone:focus-visible{outline:3px solid var(--brand);outline-offset:3px}.table-wrap td input[type=checkbox]{width:24px;height:24px;min-width:24px;min-height:24px;cursor:pointer}button,a,input,select,textarea{touch-action:manipulation}.skip-link{position:fixed;top:.5rem;left:.5rem;z-index:40;padding:.75rem 1rem;color:#fff;background:var(--brand-dark);border-radius:8px;transform:translateY(-160%)}.skip-link:focus{transform:none}@media (max-width: 960px){.shell aside{display:grid;grid-template-columns:minmax(0,1fr) auto;overflow:visible}.shell .logo{grid-column:1;grid-row:1;min-width:0}.shell nav{grid-row:2;grid-column:1 / -1;min-width:0;overflow-x:auto}.shell nav a{display:flex;align-items:center;min-height:44px}.shell .side-footer{display:grid;grid-column:2;grid-row:1;grid-template-columns:minmax(0,1fr) auto;gap:.1rem .5rem;align-items:center;max-width:62vw;margin:0;padding:0;border:0}.side-footer strong,.side-footer small{grid-column:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side-footer strong{font-size:.8125rem;align-self:end}.side-footer small{font-size:.75rem;align-self:start}.side-footer .logout-button{grid-column:2;grid-row:1 / 3;width:auto;min-height:44px;margin:0;padding:.5rem;white-space:nowrap}.side-footer .logout-button svg{display:none}.dialog{max-height:calc(100dvh - 2rem)}}@media (max-width: 960px),(pointer: coarse){button,.button-link,.text-button,.icon-button,.role-filter-button,.select-menu-options button{min-height:44px;min-width:44px}}@media (prefers-reduced-motion: reduce){button,select,.upload-dropzone{transition:none}.spinner{animation:none}}:root{--ink: #17243d;--muted: #718096;--canvas: #f6f8fa;--surface: #fff;--brand: #2563eb;--brand-dark: #1d4ed8;--danger: #ef4444;--warning: #d97706;--shadow: 0 1px 2px rgba(15, 35, 65, .04);color:var(--ink)}body{background:var(--canvas)}button{border-radius:8px;background:var(--brand)}button:hover:not(:disabled){background:var(--brand-dark);box-shadow:0 4px 10px #2563eb29}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline-color:#2563eb}input,select,textarea{border-color:#d5dde8;border-radius:8px}input:focus,select:focus,textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px #dbeafe}.shell{background:var(--canvas)}.admin-shell{grid-template-columns:220px minmax(0,1fr)}.admin-shell aside{color:#506078;background:#fff;border-right:1px solid #e7ebf1;padding:0 .65rem;box-shadow:1px 0 4px #18315606}.admin-shell .logo{color:#1d4ed8;padding:1.05rem .8rem 1.15rem;border-bottom:1px solid #eef1f5;letter-spacing:-.02em}.admin-shell .logo span{display:none}.admin-shell nav{gap:.15rem;padding-top:.7rem}.admin-shell nav a{color:#53647b;border-radius:7px;padding:.66rem .8rem}.admin-shell nav a:hover{color:#1d4ed8;background:#f3f7ff}.admin-shell nav a.active{color:#1d4ed8;background:#eaf2ff;font-weight:700}.admin-shell nav a.active:before{left:-.65rem;top:.45rem;bottom:.45rem;width:3px;background:#2563eb}.admin-shell .side-footer{border-top-color:#e8edf4}.admin-shell .side-footer small{color:#8491a4}.admin-shell .side-footer .logout-button{color:#64748b;border-color:#d9e0ea;background:#fff}.admin-shell .side-footer .logout-button:hover:not(:disabled),.admin-shell .side-footer .logout-button:focus-visible{color:#1d4ed8;background:#f3f7ff;border-color:#a9c5f8}.admin-shell .content{max-width:none;padding:1.2rem 1.25rem 2.5rem}.portal-shell{grid-template-columns:minmax(0,1fr)}.portal-shell aside{position:sticky;top:0;z-index:10;height:64px;flex-direction:row;align-items:stretch;gap:0;padding:0 clamp(1rem,3.3vw,2.65rem);color:#4c5c73;background:#fff;border-bottom:1px solid #e6ebf2;box-shadow:none}.portal-shell .logo{display:flex;align-items:center;padding:0;color:#1d4ed8;font-size:.98rem;white-space:nowrap;letter-spacing:-.02em}.portal-shell .logo span{display:none}.portal-shell nav{display:flex;align-items:stretch;gap:clamp(1.1rem,2.5vw,2rem);margin-left:clamp(1.3rem,3vw,2.4rem)}.portal-shell nav a{display:flex;align-items:center;position:relative;padding:0;border-radius:0;color:#4f6076;font-size:.92rem;white-space:nowrap}.portal-shell nav a:hover{color:#1d4ed8;background:transparent}.portal-shell nav a.active{color:#1d4ed8;background:transparent;font-weight:700}.portal-shell nav a.active:before{left:0;right:0;top:auto;bottom:0;width:auto;height:2px;background:#2563eb}.portal-shell .side-footer{display:flex;align-items:center;gap:.75rem;margin:0 0 0 auto;padding:0;border:0}.portal-shell .side-footer strong{color:#506078;font-size:.86rem;font-weight:500}.portal-shell .side-footer small{color:#8a96a8;font-size:.82rem}.portal-shell .side-footer .logout-button{width:auto;min-height:40px;margin:0;padding:0;color:#8a96a8;border:0;background:transparent;font-size:.82rem;font-weight:500}.portal-shell .side-footer .logout-button:hover:not(:disabled),.portal-shell .side-footer .logout-button:focus-visible{color:#1d4ed8;background:transparent;border:0;box-shadow:none}.portal-shell .side-footer .logout-button svg{display:none}.portal-shell .content{max-width:1280px;padding:2rem clamp(1rem,3.3vw,2.65rem) 3rem}.page-title h1{color:#13213b;font-size:clamp(1.45rem,2.2vw,1.9rem);letter-spacing:-.035em}.page-title p,.muted{color:#718096}.card,.submission-overview{border-color:#e0e6ee;border-radius:12px;box-shadow:var(--shadow)}.card{padding:1.2rem}.metric{font-size:1.9rem;color:#17243d}.metric.success{color:#16a05d}.metric.warning{color:#d97706}.metric.danger{color:#ef4444}.eyebrow{color:#8491a4}.status.complete{color:#079455;background:#ecfdf3}.status.partial,.status.pending{color:#c77705;background:#fff8e7}.status.missing{color:#e5484d;background:#fff1f1}.status.neutral{color:#5c6f89;background:#f1f5f9}.table-wrap{border-color:#e4e9f0;border-radius:9px}.table-wrap th{color:#8b98aa;background:#fff;letter-spacing:.02em}.table-wrap th,.table-wrap td{border-bottom-color:#edf0f4}.table-wrap tbody tr:hover{background:#f8fbff}.text-button{color:var(--brand)}.text-button:hover:not(:disabled){color:#1d4ed8;background:#eff6ff}.secondary-button{color:#52647d;border-color:#d5dde8}.secondary-button:hover:not(:disabled){color:#1d4ed8;background:#f3f7ff}.upload-submit{border-color:#dce4ee;box-shadow:0 6px 18px #233e6414}.upload-dropzone{color:#718096;background:#fbfdff;border-color:#b7c8e3}.upload-dropzone:hover,.upload-dropzone:focus-visible,.upload-dropzone.dragging{color:#1d4ed8;background:#eff6ff;border-color:#2563eb}.upload-dropzone-icon{color:#2563eb;background:#dbeafe}.upload-dropzone strong{color:#344866}.selected-files{background:#f7faff;border-color:#dce6f3}.selected-file{border-color:#e2e8f0}.dialog-backdrop{background:#0f203e6b}.dialog{border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 24px 70px #142a4e33}.toast.success{background:#157f50}.spinner{border-color:#dbe4ef;border-top-color:var(--brand)}@media (max-width: 960px){.admin-shell{grid-template-columns:1fr}.admin-shell aside{height:auto;padding:.65rem .75rem}.admin-shell .logo{padding:0 .4rem;border:0}.admin-shell nav{padding-top:0}.admin-shell nav a.active:before{display:none}.admin-shell .content,.portal-shell .content{padding:1.25rem 1rem 2.5rem}}@media (max-width: 640px){.portal-shell aside{height:auto;min-height:64px;display:grid;grid-template-columns:minmax(0,1fr) auto;padding:.75rem 1rem 0}.portal-shell .logo{grid-column:1;grid-row:1;min-width:0}.portal-shell nav{grid-column:1 / -1;grid-row:2;margin-left:0;overflow-x:auto;gap:1.25rem}.portal-shell nav a{min-height:42px}.portal-shell .side-footer{grid-column:2;grid-row:1;max-width:55vw}.portal-shell .side-footer small{display:none}.portal-shell .side-footer strong{max-width:20vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.admin-dashboard .page-title{align-items:flex-end}.dashboard-period-select{display:grid;grid-template-columns:auto minmax(150px,190px);align-items:center;gap:.7rem;color:#718096;font-size:.82rem;font-weight:650;white-space:nowrap}.dashboard-period-select select{min-height:38px;padding-block:.45rem;color:#344866}.dashboard-metrics .card{min-height:92px}.dashboard-section-heading{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}.dashboard-section-heading h2{margin:0}.dashboard-section-heading>span{color:#8b98aa;font-size:.8rem}.dashboard-section-heading .text-button{min-height:auto;padding:.2rem 0;font-size:.82rem;font-weight:600}.dashboard-progress{height:8px;overflow:hidden;background:#edf1f5;border-radius:999px}.dashboard-progress>span{display:block;height:100%;border-radius:inherit;background:#22c55e;transition:width .2s ease}.dashboard-progress-meta{display:flex;justify-content:space-between;gap:1rem;margin-top:.7rem;color:#8a97a9;font-size:.78rem}.dashboard-progress-meta span:first-child{color:#16a05d;font-weight:700}.manager-stats-table{min-width:760px!important}.manager-stats-table td:first-child{color:#253858}.value-success{color:#16a05d}.value-warning{color:#d97706}.value-danger{color:#ef4444}.inline-progress{display:flex;align-items:center;gap:.55rem;min-width:100px}.inline-progress>span{display:block;width:58px;height:4px;overflow:hidden;background:#edf1f5;border-radius:999px}.inline-progress i{display:block;height:100%;background:#22c55e;border-radius:inherit}.inline-progress small{color:#8b98aa;font-size:.75rem}.activity-list{display:grid;gap:0;padding:0;margin:0;list-style:none}.activity-list li{display:grid;grid-template-columns:10px minmax(0,1fr) auto;align-items:center;gap:.75rem;min-height:46px;border-bottom:1px solid #edf0f4}.activity-list li:last-child{border-bottom:0}.activity-dot{width:5px;height:5px;border-radius:50%;background:#2563eb}.activity-list li>div{min-width:0}.activity-list strong,.activity-list li>div>span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activity-list strong{color:#344866;font-size:.84rem;font-weight:650}.activity-list li>div>span{margin-top:.2rem;color:#8a97a9;font-size:.77rem}.activity-list time{color:#9aa5b4;font-size:.75rem;white-space:nowrap}.pagination-controls{display:flex;align-items:center;gap:.3rem}.pagination-controls .pagination-arrow{min-height:34px;padding:.35rem .65rem;font-size:.78rem}.page-number{min-width:32px;min-height:32px;padding:.25rem .45rem;color:#61718a;background:#fff;border:1px solid transparent;border-radius:6px;font-size:.8rem;font-weight:600;box-shadow:none}.page-number:hover:not(:disabled){color:#1d4ed8;background:#eff6ff;box-shadow:none;transform:none}.page-number.active{color:#1d4ed8;background:#eff6ff;border-color:#9fc0fb}.pagination-ellipsis{width:20px;color:#9aa5b4;text-align:center}@media (max-width: 640px){.admin-dashboard .page-title{align-items:stretch}.dashboard-period-select{grid-template-columns:1fr;gap:.4rem}.dashboard-progress-meta{align-items:flex-start;flex-direction:column;gap:.25rem}.activity-list li{grid-template-columns:10px minmax(0,1fr);padding:.5rem 0}.activity-list time{grid-column:2}.pagination{gap:.7rem}.pagination-controls{flex-wrap:wrap}}
