@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap";:root{--color-primary:#1e3b2f;--color-secondary:#9e5a6b;--color-accent-tint:#e2e9e2;--color-ink:#1b1815;--color-ink-secondary:#6b635a;--color-hairline:#dbd4ca;--color-surface:#fff;--color-surface-raised:#efeae3;--color-canvas:#f7f4f0;--color-track:#e4ddd3;--color-success:#2e7458;--color-warning:#a97a24;--color-error:#b04a38;--priority-critical:#b04a38;--priority-high:#a97a24;--priority-medium:#8f6d26;--priority-low:#6b635a;--chart-1:#1e3b2f;--chart-2:#9e5a6b;--chart-3:#ad8a32;--chart-4:#cdb4bc;--chart-5:#26221d;--fade-forest-floor:linear-gradient(135deg, #12241c 0%, #1e3b2f 100%);--fade-kiln:linear-gradient(135deg, #8a5a44 0%, #b07862 100%);--fade-porcelain:linear-gradient(180deg, #fff 0%, #eae4d9 100%);--fade-glaze:linear-gradient(135deg, #1e3b2f 0%, #35592f 100%);--font-ui:"Source Sans 3", "Segoe UI", "Helvetica Neue", sans-serif;--fs-display:32px;--lh-display:38px;--fs-h1:24px;--lh-h1:30px;--fs-h2:18px;--lh-h2:26px;--fs-h3:15px;--lh-h3:22px;--fs-body:15px;--lh-body:24px;--fs-small:13px;--lh-small:19px;--fs-label:12px;--lh-label:17px;--fs-data:34px;--lh-data:38px;--fw-regular:400;--fw-semibold:600;--radius:2px;--radius-control:4px;--radius-button:6px;--radius-table:8px;--radius-card:12px;--radius-pill:999px;--hairline-width:1px;--icon-inline:16px;--icon-toolbar:20px;--icon-nav:24px}:root[data-theme=dark]{--color-primary:#8db4a0;--color-secondary:#cb8fa0;--color-accent-tint:#1e2e26;--color-ink:#ebe6df;--color-ink-secondary:#c5beb5;--color-hairline:#332f29;--color-surface:#1a1917;--color-surface-raised:#232019;--color-canvas:#121110;--color-track:#2a2723;--priority-critical:#cf8273;--priority-high:#c9a159;--priority-medium:#c9a967;--priority-low:#a29a8f}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-ui,"Inter", -apple-system, sans-serif);background:var(--fade-porcelain);color:var(--color-ink);background-attachment:fixed;flex-direction:column;min-height:100vh;display:flex}#root{flex-direction:column;flex:1;display:flex}.auth-container{background:0 0;flex:1;justify-content:center;align-items:center;padding:2rem;display:flex}.auth-card{background:var(--color-surface);border-radius:var(--radius-card);border:1px solid var(--color-hairline);width:100%;max-width:420px;padding:2.5rem}.auth-card h1{font-size:var(--fs-h1);line-height:var(--lh-h1);font-weight:var(--fw-semibold);color:var(--color-ink);margin-bottom:.5rem}.auth-card p{color:var(--color-ink-secondary);font-size:var(--fs-body);line-height:var(--lh-body);margin-bottom:2rem}.input-group{flex-direction:column;margin-bottom:1.25rem;display:flex}.input-group label{font-size:var(--fs-label);line-height:var(--lh-label);font-weight:var(--fw-semibold);color:var(--color-ink-secondary);margin-bottom:.5rem}.input-group input{background:var(--color-surface);border:1px solid var(--color-hairline);color:var(--color-ink);border-radius:var(--radius-button);font-size:var(--fs-body);outline:none;padding:.75rem 1rem;transition:border-color .15s,box-shadow .15s}.input-group input::placeholder{color:var(--color-ink-secondary)}.input-group input:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-accent-tint)}.btn-primary{border-radius:var(--radius-button);border:1px solid var(--color-primary);background:var(--color-primary);width:100%;color:var(--color-surface);font-weight:var(--fw-semibold);font-size:var(--fs-body);cursor:pointer;margin-top:.5rem;padding:.85rem;transition:opacity .15s,transform .1s}.btn-primary:hover{opacity:.9}.btn-primary:active{transform:scale(.98)}.dashboard-container{flex:1;width:100%;max-width:1400px;margin:0 auto;padding:1.5rem 2rem}.header{border-bottom:1px solid var(--color-hairline);justify-content:space-between;align-items:center;margin-bottom:2rem;padding:1rem 0;display:flex}.header h1{font-size:var(--fs-h1);line-height:var(--lh-h1);font-weight:var(--fw-semibold);color:var(--color-ink);white-space:nowrap}.tabs{background:var(--color-track);border-radius:var(--radius-button);align-items:center;gap:4px;padding:4px;display:flex}.tab{cursor:pointer;border-radius:var(--radius-control);color:var(--color-ink-secondary);font-weight:var(--fw-regular);font-size:var(--fs-body);-webkit-user-select:none;user-select:none;border:1px solid #0000;padding:7px 18px}.tab:hover{color:var(--color-ink)}.active-tab{background:var(--color-surface);font-weight:var(--fw-semibold);border:1px solid var(--color-hairline);color:var(--color-ink)!important}.logout-btn{color:var(--color-ink-secondary);border:1px solid var(--color-hairline);border-radius:var(--radius-button);cursor:pointer;font-weight:var(--fw-regular);font-size:var(--fs-body);white-space:nowrap;background:0 0;padding:.5rem 1rem;transition:all .15s}.logout-btn:hover{color:var(--color-ink);border-color:var(--color-ink-secondary)}.table-container{background:var(--color-surface);border-radius:var(--radius-table);border:1px solid var(--color-hairline);overflow:hidden}table{border-collapse:collapse;width:100%}th{background:var(--color-surface-raised);text-align:left;font-weight:var(--fw-semibold);color:var(--color-ink-secondary);font-size:var(--fs-h3);border-bottom:1px solid var(--color-hairline);padding:.875rem 1.25rem}td{border-bottom:1px solid var(--color-hairline);color:var(--color-ink);font-size:var(--fs-body);vertical-align:middle;font-variant-numeric:tabular-nums;padding:1rem 1.25rem}tr:last-child td{border-bottom:none}tr:hover td{background:var(--color-accent-tint)}.role-select,.assignment-select{background:var(--color-surface);color:var(--color-ink);border:1px solid var(--color-hairline);border-radius:var(--radius-button);font-size:var(--fs-body);cursor:pointer;width:100%;font-family:var(--font-ui);outline:none;padding:.45rem .75rem}.role-select:hover,.assignment-select:hover{background:var(--color-accent-tint)}.role-select{width:auto;min-width:160px}.role-select:focus,.assignment-select:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-accent-tint)}.badge{border-radius:var(--radius-pill);font-size:var(--fs-label);font-weight:var(--fw-semibold);padding:.25rem .65rem;display:inline-block}.badge.pending{color:var(--color-warning);border:1px solid var(--color-warning);background:0 0}.badge.active{color:var(--color-success);border:1px solid var(--color-success);background:0 0}.reset-notice{border:1px solid var(--color-hairline);border-radius:var(--radius-card);color:var(--color-ink);font-size:var(--fs-body);line-height:var(--lh-body);margin-bottom:1.25rem;padding:.875rem 1rem}.link-button{width:100%;color:var(--color-ink-secondary);font-size:var(--fs-label);cursor:pointer;background:0 0;border:none;margin-top:.75rem;padding:0;text-decoration:underline}.error-banner{color:var(--color-error);border-radius:var(--radius-card);border:1px solid var(--color-error);text-align:center;font-size:var(--fs-body);background:0 0;margin-bottom:1.25rem;padding:.875rem 1rem}:root[data-theme=dark] body{background:var(--fade-forest-floor);background-attachment:fixed}svg.lucide{stroke-width:1.5px;stroke-linecap:square;stroke-linejoin:miter;fill:none}.bulk-input{background:var(--color-surface);border:1px solid var(--color-hairline);width:100%;color:var(--color-ink);border-radius:var(--radius-button);font-size:var(--fs-body);outline:none;padding:.5rem .65rem;transition:border-color .15s,box-shadow .15s}.bulk-input::placeholder{color:var(--color-ink-secondary);opacity:.7}.bulk-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-accent-tint)}select.bulk-input{width:100%;min-width:0}.checkbox{appearance:none;border:1px solid var(--color-hairline);border-radius:var(--radius-control);background:var(--color-surface);cursor:pointer;flex:0 0 18px;width:18px;height:18px;margin:0;transition:background-color .15s,border-color .15s,box-shadow .15s;position:relative}.checkbox:hover{border-color:var(--color-primary)}.checkbox:checked{background:var(--color-primary);border-color:var(--color-primary)}.checkbox:checked:after{content:"";border:solid var(--color-surface);border-width:0 2px 2px 0;width:5px;height:9px;position:absolute;top:1px;left:5px;transform:rotate(45deg)}.checkbox:focus-visible{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-accent-tint);outline:none}.modal-overlay{z-index:1000;background:#1b181599;justify-content:center;align-items:center;padding:1.5rem;display:flex;position:fixed;inset:0}.modal-card{background:var(--color-surface);border:1px solid var(--color-hairline);border-radius:var(--radius-card);width:100%;max-width:450px;max-height:calc(100vh - 3rem);padding:2.5rem;overflow-y:auto}.modal-card h2{font-size:var(--fs-h1);line-height:var(--lh-h1);font-weight:var(--fw-semibold);color:var(--color-ink);margin-top:0}.modal-subtitle{color:var(--color-ink-secondary);font-size:var(--fs-body);line-height:var(--lh-body);margin-top:0;margin-bottom:1.5rem}.modal-card-wide{flex-direction:column;max-width:1150px;max-height:88vh;padding:2rem;display:flex}.modal-toolbar{flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.modal-toolbar-count{color:var(--color-ink-secondary);font-size:var(--fs-small);margin-left:auto}.modal-file-input{color:var(--color-ink-secondary);font-size:var(--fs-small)}.success-panel{border-radius:var(--radius-card);border:1px solid var(--color-success);background:var(--color-accent-tint);color:var(--color-ink);font-size:var(--fs-body);line-height:var(--lh-body);padding:1.5rem}.success-panel-title{font-weight:var(--fw-semibold);color:var(--color-success);margin-top:0}.bulk-table-wrap{border:1px solid var(--color-hairline);border-radius:var(--radius-table);flex:1;overflow:auto}.bulk-table-wrap table{table-layout:fixed;width:100%}.bulk-table-wrap thead{background:var(--color-surface-raised);z-index:1;position:sticky;top:0}.bulk-table-wrap td{word-break:break-word}.result-ok{color:var(--color-success)}.result-failed{color:var(--color-error)}.bulk-toolbar{background:var(--color-surface-raised);border:1px solid var(--color-hairline);border-radius:var(--radius-button);flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:.75rem;padding:.75rem 1rem;display:flex}.settings-panel{background:var(--color-surface);border:1px solid var(--color-hairline);border-radius:var(--radius-card);padding:2rem}.settings-panel h2{font-size:var(--fs-h1);line-height:var(--lh-h1);font-weight:var(--fw-semibold);color:var(--color-ink);margin-top:0}
