.lottery-jar{--jar-ink:#173a32;--jar-muted:#587068;--jar-border:#5f8e828c;--jar-glass:#e8f9f37a;--jar-highlight:#ffffffc7;--jar-depth:#114e412e;--jar-ball:#f8fffc;--jar-ball-ink:#143c32;--jar-accent:#1e8069;--jar-accent-strong:#126552;--jar-motion:.18s;width:min(100%,780px);color:var(--jar-ink);margin-inline-start:auto;margin-inline-end:auto}.lottery-jar__heading{min-height:32px;color:var(--jar-muted);justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.65rem;font-size:.82rem;font-weight:700;display:flex}.lottery-jar__count,.lottery-jar__status{border:1px solid var(--jar-border);background:color-mix(in srgb, var(--jar-ball) 82%, transparent);border-radius:999px;padding:.32rem .62rem}.lottery-jar__vessel{transform-origin:50% 72%;width:min(100%,720px);height:clamp(380px,43vw,440px);margin:0 auto;position:relative}.lottery-jar__rim{z-index:4;border:2px solid var(--jar-border);background:color-mix(in srgb, var(--jar-highlight) 62%, transparent);width:48%;height:34px;box-shadow:inset 0 -7px 12px var(--jar-depth), 0 5px 15px #0a3d3214;border-radius:50%;position:absolute;top:0;left:50%;transform:translate(-50%)}.lottery-jar__glass{border:2px solid var(--jar-border);background:linear-gradient(108deg, var(--jar-highlight) 0 8%, var(--jar-glass) 22% 76%, #a1d8c94d 100%);box-shadow:inset 14px 0 22px #ffffff6b, inset -14px -18px 30px var(--jar-depth), 0 12px 30px #0f45391c;border-radius:27% 27% 23% 23%/15% 15% 20% 20%;position:absolute;top:17px;bottom:0;left:3%;right:3%;overflow:hidden}.lottery-jar__glass:after{content:"";pointer-events:none;background:#ffffffa3;border-radius:999px;width:3.5%;position:absolute;top:9%;bottom:18%;left:6%;right:auto}.lottery-jar__pool{position:absolute;top:7%;bottom:4%;left:4%;right:4%}.lottery-ball{z-index:2;left:calc(var(--ball-x) * 1%);top:calc(var(--ball-y) * 1%);aspect-ratio:1;width:clamp(41px,5.4vw,52px);transform:translate(-50%, -50%) rotate(var(--ball-rotate));background:var(--jar-ball);color:var(--jar-ball-ink);text-align:center;overflow-wrap:anywhere;transition:opacity var(--jar-motion) ease, filter var(--jar-motion) ease;will-change:transform;border:1px solid #1e80696b;border-radius:50%;place-items:center;padding:.22rem;font-size:clamp(.68rem,1.45vw,.84rem);font-weight:800;line-height:1.08;display:grid;position:absolute;box-shadow:inset -5px -7px 10px #1866531f,inset 4px 4px 8px #ffffffeb,0 3px 7px #10453924}.lottery-jar--dense .lottery-ball{width:38px;font-size:clamp(.59rem,1vw,.68rem)}.lottery-jar--dense .lottery-ball--aggregate{font-size:.59rem}.lottery-ball--tone-1{color:#533b12;background:#fff9e9;border-color:#8e661d6b}.lottery-ball--tone-2{color:#214c68;background:#edf7ff;border-color:#356b916b}.lottery-ball--tone-3{color:#49366b;background:#f5f0ff;border-color:#674d916b}.lottery-ball--aggregate{border-style:dashed;font-size:.68rem}.lottery-ball--winner-source{opacity:.22;filter:blur(1px)}.lottery-jar--shaking .lottery-jar__vessel{animation:.32s ease-in-out infinite alternate lottery-vessel-shake}.lottery-jar--shaking .lottery-ball{animation:lottery-ball-tumble .43s cubic-bezier(.42, 0, .58, 1) var(--ball-delay) infinite alternate}.lottery-jar__reveal{z-index:7;text-align:center;place-items:center;min-height:118px;margin-top:-18px;display:grid;position:relative}.lottery-jar__standby{gap:.2rem;display:grid}.lottery-jar__standby strong{color:var(--jar-accent-strong);font-size:clamp(1.45rem,4vw,2.35rem)}.lottery-jar__standby span{color:var(--jar-muted);font-size:.86rem}.lottery-jar__winner-ball{z-index:9;aspect-ratio:1;background:var(--jar-accent);color:#fff;border:3px solid #ffffffd1;border-radius:50%;place-items:center;width:clamp(82px,11vw,112px);padding:.5rem;font-size:clamp(1rem,2.4vw,1.35rem);font-weight:900;line-height:1.1;display:grid;position:absolute;top:-90px;left:50%;transform:translate(-50%);box-shadow:inset -12px -14px 20px #05312838,inset 7px 7px 14px #ffffff3b,0 12px 30px #0d524342}.lottery-jar--revealing .lottery-jar__winner-ball{animation:.7s cubic-bezier(.18,.82,.22,1) both lottery-winner-rise}.lottery-jar__winner-text{gap:.12rem;padding-top:1.5rem;display:grid}.lottery-jar__winner-text small{color:var(--jar-muted);font-weight:700}.lottery-jar__winner-text strong{color:var(--jar-accent-strong);overflow-wrap:anywhere;font-size:clamp(2.3rem,7vw,5.6rem);line-height:1.02}.lottery-jar__winner-text span{color:var(--jar-muted);font-size:clamp(.9rem,2vw,1.15rem)}.lottery-jar--revealing .lottery-jar__winner-text{animation:.36s ease-out .36s both lottery-result-in}.lottery-jar__empty{color:var(--jar-muted);place-items:center;margin:0;font-weight:750;display:grid;position:absolute;top:0;bottom:0;left:0;right:0}@keyframes lottery-vessel-shake{0%{transform:rotate(-1.25deg)translate(-3px)}to{transform:rotate(1.25deg)translate(3px)}}@keyframes lottery-ball-tumble{0%{transform:translate(calc(-50% - var(--ball-travel-x)), calc(-50% + var(--ball-travel-y))) rotate(calc(var(--ball-rotate) - 24deg))}to{transform:translate(calc(-50% + var(--ball-travel-x)), calc(-50% - var(--ball-travel-y))) rotate(calc(var(--ball-rotate) + 28deg))}}@keyframes lottery-winner-rise{0%{opacity:.2;transform:translate(-50%,155px)scale(.68)rotate(-12deg)}72%{opacity:1;transform:translate(-50%,-8px)scale(1.06)rotate(4deg)}to{opacity:1;transform:translate(-50%)scale(1)rotate(0)}}@keyframes lottery-result-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (max-width:520px){.lottery-jar__vessel{height:310px}.lottery-jar__glass{left:0;right:0}.lottery-ball{width:34px;font-size:.57rem}.lottery-jar__heading{flex-direction:column;align-items:stretch}.lottery-jar__count,.lottery-jar__status{align-self:flex-start}}@media (prefers-reduced-motion:reduce){.lottery-jar--shaking .lottery-jar__vessel,.lottery-jar--shaking .lottery-ball,.lottery-jar--revealing .lottery-jar__winner-ball,.lottery-jar--revealing .lottery-jar__winner-text{animation-duration:1ms!important;animation-iteration-count:1!important}}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:var(--foreground);background:var(--background);font-synthesis:none;--background:#15191c;--foreground:#edf3f0;--card:#1e2428;--card-foreground:#edf3f0;--primary:#4fc2a1;--primary-foreground:#0c211b;--muted:#293036;--muted-foreground:#a3b1ab;--accent:#263a35;--accent-foreground:#dff8ef;--border:#394349;--border-strong:#4a565d;--ring:#75dfc1;--status-success:#53c99e;--status-success-bg:#17352c;--status-warning:#e5b866;--status-warning-bg:#3b2e18;--status-danger:#ef8e8e;--status-danger-bg:#3d2023;--status-info:#7fc8e8;--status-info-bg:#19313b;--sidebar:#101416;--sidebar-foreground:#dbe7e2;--sidebar-muted:#91a29b;--sidebar-accent:#1d332d;--sidebar-hover:#182d27;--sidebar-active:#205043;--sidebar-active-foreground:#f1fff9;--overlay:#040708b8;--radius-sm:6px;--radius-md:8px;--radius-lg:10px;--shadow-xs:0 1px 2px #00000038;--shadow-sm:0 6px 18px #0000002e;--motion-fast:.16s;--color-page:var(--background);--color-surface:var(--card);--color-surface-muted:var(--muted);--color-surface-accent:var(--accent);--color-text:var(--foreground);--color-text-muted:var(--muted-foreground);--color-border:var(--border);--color-border-strong:var(--border-strong);--color-primary:var(--primary);--color-primary-hover:#72d8ba;--color-primary-soft:var(--accent);--color-primary-soft-foreground:var(--accent-foreground);--color-success:var(--status-success);--color-success-soft:var(--status-success-bg);--color-warning:var(--status-warning);--color-warning-soft:var(--status-warning-bg);--color-danger:var(--status-danger);--color-danger-hover:#ffabab;--color-danger-soft:var(--status-danger-bg);--color-focus:var(--ring);--color-sidebar:var(--sidebar);--color-sidebar-text:var(--sidebar-foreground);--color-sidebar-muted:var(--sidebar-muted);--color-overlay:var(--overlay);--color-attendance-alert:#f1a078;--color-attendance-alert-soft:#3b251d;--color-attendance-leave:#b9a9ef;--color-attendance-leave-soft:#29243d;--color-chart-primary:var(--primary);--color-chart-secondary:#a99de2;--color-chart-alert:#e3a56f;font-family:Microsoft YaHei,PingFang SC,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--background:#edf1ef;--foreground:#202a27;--card:#fff;--card-foreground:#202a27;--primary:#19745f;--primary-foreground:#fff;--muted:#f2f5f3;--muted-foreground:#61706a;--accent:#e1eee9;--accent-foreground:#184f42;--border:#d2ddd8;--border-strong:#b8c8c1;--ring:#126d59;--status-success:#1f7459;--status-success-bg:#dcefe7;--status-warning:#8a5713;--status-warning-bg:#fff1d7;--status-danger:#a23f44;--status-danger-bg:#fbe9ea;--status-info:#226a88;--status-info-bg:#e2f1f7;--sidebar:#f8fbf9;--sidebar-foreground:#1b3129;--sidebar-muted:#526961;--sidebar-accent:#e2f0ea;--sidebar-hover:#edf5f2;--sidebar-active:#d6ebe2;--sidebar-active-foreground:#124f3f;--overlay:#0b121070;--color-primary-hover:#105d4b;--color-attendance-alert:#934328;--color-attendance-alert-soft:#fff0e8;--color-attendance-leave:#625286;--color-attendance-leave-soft:#f4f0ff}*{box-sizing:border-box}html{background:var(--color-page)}body{background:var(--color-page);min-width:320px;min-height:100vh;color:var(--color-text);margin:0;overflow-x:hidden}button,input,select,textarea{font:inherit}button,.file-button{border:1px solid var(--color-border);background:var(--color-surface);min-height:42px;color:var(--color-text);border-radius:var(--radius-md);cursor:pointer;transition:border-color var(--motion-fast) ease, background-color var(--motion-fast) ease, color var(--motion-fast) ease, box-shadow var(--motion-fast) ease;padding:.62rem .9rem}button:hover,.file-button:hover{border-color:var(--color-primary);background:var(--color-surface-muted);color:var(--color-primary-hover)}.file-button:focus-within{outline:3px solid color-mix(in srgb, var(--color-focus) 38%, transparent);outline-offset:2px}button:focus-visible{outline:3px solid color-mix(in srgb, var(--color-focus) 38%, transparent);outline-offset:2px}button:disabled{background:var(--muted);color:var(--muted-foreground);border-color:var(--border-strong);opacity:1;cursor:not-allowed;pointer-events:none}.file-button:has(input:disabled){background:var(--muted);color:var(--muted-foreground);border-color:var(--border-strong);opacity:1;cursor:not-allowed;pointer-events:none}button.primary{background:var(--primary);color:var(--primary-foreground);border-color:var(--primary);font-weight:750}button.primary:hover{background:var(--color-primary-hover);color:var(--primary-foreground);border-color:var(--color-primary-hover)}button.primary:disabled{background:var(--muted);color:var(--muted-foreground);border-color:var(--border-strong)}button.danger{background:var(--color-danger);color:#17191b;border-color:var(--color-danger)}button.danger:hover{background:var(--color-danger-hover);color:#17191b;border-color:var(--color-danger-hover)}button.danger-text{color:var(--color-danger);background:0 0;border-color:#0000}button.danger-text:hover{color:var(--color-danger-hover);background:var(--color-danger-soft)}button.wide{width:100%}input,select,textarea{border:1px solid var(--color-border-strong);background:var(--color-surface);width:100%;color:var(--color-text);border-radius:var(--radius-md);outline:none;padding:.7rem .75rem}input:focus-visible{border-color:var(--color-focus);box-shadow:0 0 0 3px color-mix(in srgb, var(--color-focus) 16%, transparent)}select:focus-visible{border-color:var(--color-focus);box-shadow:0 0 0 3px color-mix(in srgb, var(--color-focus) 16%, transparent)}textarea:focus-visible{border-color:var(--color-focus);box-shadow:0 0 0 3px color-mix(in srgb, var(--color-focus) 16%, transparent)}textarea{resize:vertical;line-height:1.55}label{color:var(--color-text);gap:.4rem;font-size:.9rem;font-weight:650;display:grid}h1,h2,h3,p{margin-top:0}h1{letter-spacing:-.02em;margin-bottom:0;font-size:clamp(1.35rem,2vw,1.85rem);line-height:1.25}h2{margin-bottom:.55rem;font-size:clamp(1.08rem,1.6vw,1.38rem);line-height:1.35}h3{margin-bottom:.5rem;font-size:1rem;line-height:1.4}p{line-height:1.65}strong,td,th,.mini-card span,.workspace-warnings li{overflow-wrap:anywhere}.eyebrow{color:var(--color-primary);letter-spacing:.11em;margin:0 0 .35rem;font-size:.73rem;font-weight:800}.muted{color:var(--color-text-muted)}.shell{grid-template-columns:232px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{background:var(--color-sidebar);height:100vh;color:var(--sidebar-foreground);z-index:20;flex-direction:column;padding:1.25rem 1rem;display:flex;position:sticky;top:0}.brand{border-bottom:1px solid color-mix(in srgb, var(--sidebar-foreground) 18%, transparent);align-items:center;gap:.75rem;padding:.2rem .4rem 1.15rem;display:flex}.brand>span:last-child{display:grid}.brand small{color:var(--color-sidebar-muted);margin-top:.12rem;font-size:.72rem}.brand-mark{border-radius:var(--radius-lg);background:var(--primary);width:54px;height:54px;color:var(--primary-foreground);box-shadow:var(--shadow-xs);place-items:center;font-size:1.5rem;font-weight:900;display:grid}.brand-mark.small{border-radius:var(--radius-md);flex:none;width:40px;height:40px;font-size:1.08rem}.sidebar nav{gap:.3rem;margin-top:1rem;display:grid}.sidebar nav button{width:100%;color:var(--color-sidebar-text);text-align:left;background:0 0;border:0;align-items:center;gap:.8rem;display:flex}.sidebar nav button span{text-align:center;width:22px;font-size:1.05rem}.sidebar nav button:hover{color:var(--sidebar-active-foreground);background:var(--sidebar-hover)}.sidebar nav button.active{color:var(--sidebar-active-foreground);background:var(--sidebar-active);box-shadow:inset 3px 0 var(--primary)}.sidebar nav button:focus-visible{outline-color:var(--ring);outline-width:3px;outline-style:solid}.local-note{border:1px solid color-mix(in srgb, var(--sidebar-foreground) 16%, transparent);border-radius:var(--radius-md);background:var(--sidebar-hover);color:var(--sidebar-foreground);gap:.25rem;margin-top:auto;padding:.8rem;font-size:.78rem;display:grid}.local-note span{color:var(--color-sidebar-muted)}.workspace,.page,.panel,.toolbar-panel,.hero-panel,.report-sheet{min-width:0}.topbar{border-bottom:1px solid var(--border);background:color-mix(in srgb, var(--card) 94%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:15;justify-content:space-between;align-items:center;gap:.8rem;min-height:68px;padding:.7rem clamp(1rem,2.2vw,1.6rem);display:flex;position:sticky;top:0}.update-banner{border:1px solid var(--color-warning);border-radius:var(--radius-md);background:var(--color-warning-soft);color:var(--color-text);align-items:flex-start;gap:.75rem;margin:1rem clamp(1rem,3vw,2.2rem) 0;padding:.8rem 1rem;display:flex}.update-banner strong{color:var(--color-warning);flex:none}.top-actions,.button-row{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.privacy-pill,.tag{background:var(--color-primary-soft);color:var(--color-primary-soft-foreground);border-radius:999px;align-items:center;gap:.35rem;padding:.4rem .68rem;font-size:.78rem;font-weight:750;display:inline-flex}.privacy-badge{border:1px solid color-mix(in srgb, var(--color-warning) 28%, var(--color-border));border-radius:var(--radius-sm);background:var(--color-warning-soft);width:-moz-fit-content;width:fit-content;color:var(--color-warning);align-items:center;gap:.35rem;padding:.4rem .65rem;font-size:.78rem;font-weight:750;display:inline-flex}.privacy-badge:before{content:"!";background:var(--color-warning);width:1.2rem;height:1.2rem;color:var(--color-surface);border-radius:50%;flex:none;place-items:center;font-size:.72rem;display:inline-grid}.tag.gray{background:var(--color-surface-muted);color:var(--color-text-muted);border:1px solid var(--color-border)}.page{max-width:1600px;margin:0 auto;padding:clamp(.85rem,2vw,1.5rem)}.panel,.toolbar-panel,.hero-panel,.report-sheet{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs)}.panel,.report-sheet{margin-bottom:.8rem;padding:clamp(.85rem,1.8vw,1.1rem)}.toolbar-panel{justify-content:space-between;align-items:center;gap:.8rem;margin-bottom:.8rem;padding:.75rem 1rem;display:flex}.toolbar-panel h2{margin:0}.hero-panel{min-height:140px;color:var(--color-text);background:var(--color-surface-accent);justify-content:space-between;align-items:center;gap:1.4rem;margin-bottom:.8rem;padding:clamp(1.1rem,2.6vw,1.65rem);display:flex}.hero-panel h2{margin-bottom:.45rem;font-size:clamp(1.65rem,4vw,2.4rem)}.hero-panel p:last-child{max-width:680px;color:var(--color-text-muted);margin:0}.metric-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;margin-bottom:.8rem;display:grid}.metric-grid article{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);min-height:104px;box-shadow:var(--shadow-xs);align-content:center;gap:.22rem;padding:.9rem 1rem;display:grid}.metric-grid span,.metric-grid small{color:var(--color-text-muted)}.metric-grid strong{color:var(--color-primary);font-variant-numeric:tabular-nums;font-size:1.85rem;line-height:1.1}.metric-grid .warning-card{border-color:color-mix(in srgb, var(--color-warning) 35%, var(--color-border));background:var(--color-warning-soft)}.metric-grid .warning-card strong{color:var(--color-warning)}.two-column{grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem;display:grid}.section-heading{justify-content:space-between;align-items:flex-start;gap:1rem;min-height:40px;margin-bottom:.9rem;display:flex}.section-heading h2,.section-heading h3{margin:0}.form-grid{gap:.8rem;margin-bottom:1rem;display:grid}.entity-create-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem;display:grid}.entity-create-item{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-muted);grid-template-rows:1fr auto;gap:.55rem;min-width:0;padding:.8rem;display:grid}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid.three,.score-ceilings{grid-template-columns:repeat(3,minmax(0,1fr))}.score-ceilings{gap:.8rem;margin-top:1rem;display:grid}.score-config-heading{margin-top:1.2rem}.score-config-heading p{color:var(--color-text-muted);margin:.3rem 0 0}.score-rules{grid-template-columns:repeat(7,minmax(90px,1fr));gap:.65rem;display:grid}.score-table th small,.score-table td small{color:var(--color-text-muted);white-space:nowrap;margin-top:.25rem;display:block}.score-table input{width:86px;min-width:86px}.card-list{gap:.65rem;display:grid}.mini-card{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-muted);justify-content:space-between;align-items:center;gap:1rem;min-height:66px;padding:.72rem .85rem;display:flex}.mini-card>div:first-child{gap:.25rem;display:grid}.mini-card span:not(.tag){color:var(--color-text-muted);font-size:.85rem}.chip-list{flex-wrap:wrap;gap:.45rem;margin-top:1rem;display:flex}.chip-list span{background:var(--color-primary-soft);border-radius:var(--radius-sm);padding:.42rem .65rem;font-size:.78rem}.file-button{align-items:center;font-size:.9rem;font-weight:400;display:inline-flex}.file-button input{display:none}.import-help{border-radius:var(--radius-md);background:var(--color-surface-muted);border:1px solid var(--color-border);align-self:stretch;padding:1rem}.import-help p{color:var(--color-text-muted)}.preview-box,.success-box{border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-success-soft);margin:1rem 0;padding:1rem}.error,.error-list,.negative{color:var(--color-danger)}.positive{color:var(--color-success)}.error-list{padding-left:1.3rem}.empty{min-height:105px;color:var(--color-text-muted);border:1px dashed var(--color-border-strong);border-radius:var(--radius-md);place-items:center;display:grid}.table-scroll{border:1px solid var(--color-border);border-radius:var(--radius-md);width:100%;max-width:100%;overflow:auto}table{border-collapse:collapse;width:100%;font-size:.88rem}th,td{border-bottom:1px solid var(--color-border);text-align:left;white-space:nowrap;padding:.62rem}tbody tr:last-child td{border-bottom:0}tbody tr:hover td{background:var(--color-surface-muted)}th{background:var(--color-surface-accent);color:var(--color-text);z-index:1;font-size:.78rem;font-weight:750;position:sticky;top:0}td small{color:var(--color-text-muted);margin-top:.18rem;display:block}td button{min-height:34px;margin-right:.25rem;padding:.35rem .55rem}td select{min-width:100px;padding:.45rem}.attendance-editor table th:first-child,.attendance-editor table td:first-child{z-index:2;background:var(--color-surface);position:sticky;left:0}.attendance-editor table th:first-child{z-index:3;background:var(--color-surface-accent)}.note-input{min-width:130px;margin-top:.35rem;padding:.45rem}.status-缺勤,.status-迟到,.status-早退{color:var(--color-attendance-alert);background:var(--color-attendance-alert-soft)}.status-病假,.status-事假,.status-其他{color:var(--color-attendance-leave);background:var(--color-attendance-leave-soft)}.active-filter{border-color:var(--color-primary);background:var(--color-primary-soft);color:var(--color-primary-hover)}.student-total{background:var(--color-surface-accent);border-radius:var(--radius-md);margin-top:1rem;padding:.9rem 1rem}.student-total strong{color:var(--color-primary);font-variant-numeric:tabular-nums;margin-left:.4rem;font-size:1.7rem}.revoked{opacity:.55;text-decoration:line-through}.quick-draw-panel{overflow:clip}.quick-draw-layout{grid-template-columns:minmax(0,1fr) minmax(220px,280px);align-items:stretch;gap:1rem;display:grid}.quick-draw-stage{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface-accent);align-content:center;place-items:center;min-width:0;min-height:560px;padding:clamp(.75rem,2vw,1.3rem);display:grid}.quick-draw-stage .lottery-jar{--jar-ink:var(--color-text);--jar-muted:var(--color-text-muted);--jar-border:color-mix(in srgb, var(--color-primary) 40%, var(--color-border));--jar-glass:color-mix(in srgb, var(--color-primary-soft) 64%, transparent);--jar-highlight:color-mix(in srgb, var(--color-surface) 80%, transparent);--jar-depth:color-mix(in srgb, var(--color-primary) 20%, transparent);--jar-accent:var(--color-primary);--jar-accent-strong:var(--color-text)}.quick-draw-context{color:var(--color-text-muted);text-align:center;margin:0 0 .4rem;font-size:.84rem;font-weight:750}.lottery-draw-button{min-width:220px;min-height:56px;margin-top:.5rem;font-size:1.05rem}.quick-draw-history{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface-muted);min-width:0;padding:1rem}.quick-draw-history ol{gap:.35rem;margin:0;padding:0;list-style:inside decimal;display:grid}.quick-draw-history li{border-bottom:1px solid var(--color-border);grid-template-columns:minmax(0,1fr) auto;gap:.5rem;padding:.55rem .15rem;display:grid}.quick-draw-history li:last-child{border-bottom:0}.quick-draw-history time{color:var(--color-text-muted);font-size:.75rem}.quick-draw-page.is-projecting{z-index:80;background:var(--color-page);padding:clamp(.75rem,2vw,1.5rem);position:fixed;top:0;bottom:0;left:0;right:0;overflow:auto}.quick-draw-page.is-projecting .toolbar-panel{z-index:3;position:sticky;top:0}.quick-draw-page.is-projecting .quick-draw-settings,.quick-draw-page.is-projecting .quick-draw-history,.quick-draw-page.is-projecting .quick-score,.quick-draw-page.is-projecting .quick-draw-exclusions{display:none}.quick-draw-page.is-projecting .quick-draw-layout{grid-template-columns:1fr}.quick-draw-page.is-projecting .quick-draw-stage{min-height:calc(100vh - 160px)}.quick-draw-page.is-projecting .lottery-jar{width:min(92vw,1050px)}.quick-draw-page.is-projecting .lottery-jar__vessel{width:min(85vw,920px);height:min(48vh,520px)}.quick-draw-page.is-projecting .lottery-jar__winner-text strong{font-size:clamp(4.8rem,13vw,11rem)}button.jumbo{min-width:210px;min-height:58px;font-size:1.12rem}.quick-score{justify-content:center;align-items:center;gap:.5rem;padding:1rem;display:flex}details{margin-top:1rem}summary{cursor:pointer;color:var(--color-primary);font-weight:700}.student-checks{grid-template-columns:repeat(4,minmax(0,1fr));gap:.45rem;margin-top:1rem;display:grid}.student-checks label{background:var(--color-surface-muted);border-radius:var(--radius-sm);align-items:center;gap:.4rem;padding:.5rem;display:flex}.student-checks input{width:auto}.privacy-warning{border-left:4px solid var(--color-warning);background:var(--color-warning-soft);color:var(--color-warning);margin:1rem 0 0;padding:.8rem}.capacity-warning{border:1px solid color-mix(in srgb, var(--color-warning) 42%, var(--color-border));border-radius:var(--radius-lg);background:var(--color-warning-soft);color:var(--color-text);flex-wrap:wrap;align-items:center;gap:.35rem .75rem;margin-bottom:.8rem;padding:.7rem .8rem;display:flex}.capacity-warning strong{color:var(--color-warning)}.capacity-warning span:last-child{white-space:nowrap;font-variant-numeric:tabular-nums;margin-left:auto}.report-sheet{background:var(--color-surface)}.report-heading{border-bottom:2px solid var(--color-text);margin-bottom:1rem;padding-bottom:1rem}.report-heading span,.report-heading p{color:var(--color-text-muted);font-size:.8rem}.report-heading h2{margin:.25rem 0;font-size:1.5rem}.backup-hero{background:var(--color-surface-accent)}.test-fixture{border-style:dashed;justify-content:space-between;align-items:center;gap:1rem;display:flex}.test-fixture p{color:var(--color-text-muted);margin-bottom:0}.toast{z-index:50;border-radius:var(--radius-md);background:var(--color-sidebar);max-width:min(440px,100vw - 2.4rem);color:var(--color-surface);box-shadow:var(--shadow-sm);animation:toast-in var(--motion-fast) ease-out;padding:.85rem 1rem;position:fixed;bottom:1.2rem;right:1.2rem}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.access-screen,.decision-screen{background:var(--color-page);place-items:center;min-height:100vh;padding:1rem;display:grid}.access-card,.decision-panel{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);width:min(100%,520px);box-shadow:var(--shadow-sm);padding:clamp(1.35rem,4vw,2.1rem)}.decision-panel{width:min(100%,920px)}.access-card .brand-mark{margin-bottom:1.2rem}.access-form{gap:1rem;margin:1.25rem 0;display:grid}.access-footnote{color:var(--color-text-muted);margin:1.2rem 0 0;font-size:.8rem}.version-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin:1.2rem 0;display:grid}.version-card{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-muted);padding:1rem}.version-card dl{gap:.55rem;margin:1rem 0 0;display:grid}.version-card dl div{border-bottom:1px solid var(--color-border);justify-content:space-between;gap:1rem;padding-bottom:.4rem;display:flex}.version-card dt{color:var(--color-text-muted)}.version-card dd{text-align:right;font-variant-numeric:tabular-nums;margin:0;font-weight:700}.decision-exports{margin-bottom:1rem}.decision-actions{border-top:1px solid var(--color-border);padding-top:1rem}.sync-ok{background:var(--color-success-soft);color:var(--color-success)}.sync-notice{background:var(--color-warning-soft);color:var(--color-warning)}.status-compact,.nav-overlay,.menu-button{display:none}.workspace-context{grid-template-columns:minmax(0,1fr) minmax(280px,420px);align-items:end;gap:1.5rem;display:grid}.workspace-context p:last-child{color:var(--color-text-muted);margin-bottom:0}.workspace-status{border:1px solid var(--color-border);border-left:4px solid var(--color-primary);border-radius:var(--radius-md);background:var(--color-surface);justify-content:space-between;align-items:center;gap:1rem;padding:.8rem 1rem;display:flex}.workspace-status span{color:var(--color-text-muted);font-size:.85rem}.workspace-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem;display:grid}.workspace-action,.workspace-warnings{flex-direction:column;align-items:stretch;min-height:210px;display:flex}.workspace-action>button,.workspace-warnings>button{margin-top:auto}.workspace-action>p:not(.eyebrow),.workspace-warnings>p:not(.eyebrow){color:var(--color-text-muted)}.workspace-action h2{font-size:clamp(1.4rem,3vw,2.1rem)}.preset-actions{grid-template-columns:repeat(3,minmax(0,1fr));gap:.4rem;margin-top:.65rem;display:grid}.preset-actions button{padding-inline-start:.45rem;padding-inline-end:.45rem}.workspace-warnings ul{gap:.4rem;margin:.2rem 0 1rem;padding:0;list-style:none;display:grid}.workspace-warnings li{border-bottom:1px solid var(--color-border);justify-content:space-between;gap:.75rem;padding-bottom:.38rem;display:flex}.workspace-warnings li span{color:var(--color-warning)}.workspace-attendance{border-top:4px solid var(--color-primary)}.archived-workspace{border-left:4px solid var(--color-warning)}.profiles-page{min-width:0}.profile-privacy{margin:0 0 1rem}.profiles-page>.profile-privacy{border:1px solid color-mix(in srgb, var(--status-warning) 45%, var(--border));border-left:4px solid var(--status-warning);background:var(--status-warning-bg)}.profiles-layout{grid-template-columns:minmax(230px,270px) minmax(520px,1fr) minmax(200px,240px);align-items:start;gap:.8rem;display:grid}.profile-directory{grid-template-rows:auto auto auto auto minmax(120px,1fr);gap:.8rem;max-height:calc(100vh - 112px);display:grid;position:sticky;top:94px;overflow:hidden}.profile-filters{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-muted);margin:0;padding:.65rem;overflow-y:auto}.profile-filters summary{margin-bottom:.55rem}.profile-filters label{margin-top:.55rem}.profile-filters button{width:100%;margin-top:.65rem}.profile-directory-list{overscroll-behavior:contain;align-content:start;gap:.35rem;min-height:0;display:grid;overflow-y:auto}.profile-directory-list button{text-align:left;gap:.18rem;min-height:54px;display:grid}.profile-directory-list button span{color:var(--color-text-muted);font-size:.78rem}.profile-directory-list button.active{border-color:var(--color-primary);background:var(--color-primary-soft);color:var(--color-primary-soft-foreground)}.profile-directory-list button.active span{color:var(--color-primary-soft-foreground)}.profile-content{min-width:0}.profile-context-rail{position:sticky;top:86px}.profile-context-rail dl{gap:0;margin:.8rem 0;display:grid}.profile-context-rail dl div{border-bottom:1px solid var(--border);gap:.2rem;padding:.55rem 0;display:grid}.profile-context-rail dt{color:var(--muted-foreground);font-size:.72rem}.profile-context-rail dd{overflow-wrap:anywhere;margin:0;font-size:.84rem;font-weight:650}.profile-header{justify-content:space-between;align-items:center;gap:1rem;display:flex}.profile-header p:last-child{color:var(--color-text-muted);margin-bottom:0}.profile-tabs{scrollbar-width:thin;gap:.35rem;margin-bottom:1rem;padding-bottom:.25rem;display:flex;overflow-x:auto}.profile-tabs button{flex:none}.profile-tabs button.active{color:var(--color-primary-soft-foreground);border-color:var(--color-primary);background:var(--color-primary-soft);font-weight:750}.profile-summary-grid{grid-template-columns:minmax(0,1.25fr) repeat(2,minmax(150px,.75fr));gap:.8rem;display:grid}.profile-summary-grid>.panel{min-height:190px}.profile-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:.35rem;margin:0;display:grid}.profile-stats div{background:var(--color-surface-muted);border-radius:var(--radius-sm);justify-content:space-between;gap:.25rem;padding:.38rem .42rem;font-size:.88rem;display:flex}.profile-stats dt{color:var(--color-text-muted);white-space:nowrap}.profile-stats dd{font-variant-numeric:tabular-nums;white-space:nowrap;margin:0;font-weight:750}.profile-score{color:var(--color-primary);font-variant-numeric:tabular-nums;margin:1rem 0 .45rem;font-size:clamp(2.3rem,5vw,4rem);display:block}.profile-form{border-top:4px solid var(--color-primary)}.profile-form .privacy-warning{margin:0 0 1rem}.check-line{align-items:center;gap:.55rem;min-height:48px;display:flex}.check-line input{width:auto}.profile-records{gap:.7rem;display:grid}.profile-records>article{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-muted);padding:.85rem 1rem}.profile-records>article.archived{opacity:.82;border-style:dashed}.profile-records article header{justify-content:space-between;gap:1rem;display:flex}.profile-records article header>div:first-child{gap:.25rem;display:grid}.profile-records article header span{color:var(--color-text-muted);font-size:.8rem}.profile-records article p:last-child{margin-bottom:0}.timeline-list{border-left:2px solid var(--color-border-strong);margin:1rem 0 0;padding:0 0 0 1.2rem;list-style:none;position:relative}.timeline-list li{padding:0 0 1.2rem 1rem;position:relative}.timeline-list li:before{content:"";border:2px solid var(--color-surface);background:var(--color-primary);width:.55rem;height:.55rem;box-shadow:0 0 0 1px var(--color-primary);border-radius:50%;position:absolute;top:.28rem;left:-1.48rem}.timeline-list time{color:var(--color-text-muted);font-size:.78rem;display:block}.timeline-list p{margin:.25rem 0 0}.tag.warning{background:var(--color-warning-soft);color:var(--color-warning)}.upgrade-summary{grid-template-columns:repeat(5,minmax(0,1fr));margin:1.25rem 0}.upgrade-summary article{min-height:100px}.onboarding-panel{max-width:900px}.onboarding-steps{gap:.7rem;margin:1.2rem 0;display:grid}.onboarding-steps article{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-muted);grid-template-columns:42px minmax(0,1fr);gap:.85rem;padding:.9rem;display:grid}.onboarding-steps article>strong{background:var(--color-primary);color:#fff;border-radius:50%;place-items:center;width:38px;height:38px;display:grid}.onboarding-steps h2{margin:0 0 .25rem;font-size:1rem}.onboarding-steps p{color:var(--color-text-muted);margin:0}.onboarding-summary{grid-template-columns:repeat(4,minmax(0,1fr))}.health-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;display:grid}.health-card{flex-direction:column;min-height:140px;display:flex}.health-card>span,.health-card>small{color:var(--color-text-muted)}.health-card>strong{font-variant-numeric:tabular-nums;margin:.4rem 0;font-size:clamp(1.3rem,3vw,2rem)}.health-card>small{margin-top:auto}.search-overlay{z-index:80;background:var(--color-overlay);place-items:center;padding:1rem;display:grid;position:fixed;top:0;bottom:0;left:0;right:0}.search-dialog{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);width:min(1040px,100%);max-height:calc(100vh - 2rem);box-shadow:var(--shadow-sm);flex-direction:column;padding:clamp(1rem,2.5vw,1.4rem);display:flex;overflow:hidden}.search-dialog>header{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:flex-start;gap:1rem;padding-bottom:.85rem;display:flex}.semester-search-choice{max-width:460px;margin-top:1rem}.search-guidance{border-left:4px solid var(--color-warning);background:var(--color-warning-soft);color:var(--color-warning);margin:.8rem 0 0;padding:.75rem .85rem}.search-field{margin-top:1rem}.search-field input{min-height:50px;font-size:1.05rem}.search-dialog #search-help{margin:.5rem 0 .25rem;font-size:.82rem}.search-dialog #search-status{min-height:1.5rem;color:var(--color-text-muted);margin:0 0 .55rem}.search-results{overscroll-behavior:contain;align-content:start;gap:.55rem;min-height:120px;padding:.15rem .2rem .25rem 0;display:grid;overflow-y:auto}.search-result{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-muted);grid-template-columns:minmax(180px,.75fr) minmax(0,1.6fr);gap:1rem;padding:.8rem;scroll-margin:.5rem;display:grid}.search-result.active{border-color:var(--color-primary);box-shadow:inset 4px 0 var(--color-primary);background:var(--color-surface-accent)}.search-result>div:first-child{align-content:start;gap:.25rem;display:grid}.search-result>div:first-child>span{color:var(--color-text-muted);font-size:.84rem}.search-courses{gap:.45rem;display:grid}.search-courses>div{grid-template-columns:minmax(120px,1fr) auto auto;align-items:center;gap:.45rem;display:grid}.search-courses button{min-height:42px;padding:.48rem .65rem}.course-choice,.student-detail{padding-top:1rem;overflow-y:auto}.course-choice>article{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-muted);justify-content:space-between;align-items:center;gap:1rem;margin-top:.65rem;padding:.8rem;display:flex}.student-detail>section{border:1px solid var(--color-border);border-radius:var(--radius-md);margin-top:1rem;padding:1rem}.student-detail .detail-focus{border-color:var(--color-primary);box-shadow:inset 4px 0 var(--color-primary)}.detail-metrics{grid-template-columns:repeat(7,minmax(0,1fr));gap:.45rem}.detail-metrics article{min-height:86px;padding:.65rem}.detail-metrics strong{font-size:1.5rem}@media (max-width:1280px){.profiles-layout{grid-template-columns:minmax(230px,270px) minmax(0,1fr)}.profile-context-rail{grid-column:2;grid-template-columns:minmax(180px,.6fr) minmax(0,1fr);gap:.8rem;display:grid;position:static}.profile-context-rail dl{grid-area:1/2/span 3;margin:0}}@media (max-width:980px){.quick-draw-layout{grid-template-columns:1fr}.quick-draw-history ol{grid-template-columns:repeat(2,minmax(0,1fr))}.shell{grid-template-columns:1fr}.sidebar{width:232px;box-shadow:var(--shadow-sm);transition:left .2s;position:fixed;left:-260px}.sidebar.open{left:0}.nav-overlay{z-index:19;background:var(--color-overlay);border:0;border-radius:0;width:100%;height:100%;min-height:0;padding:0;display:block;position:fixed;top:0;bottom:0;left:0;right:0}.menu-button{place-items:center;display:inline-grid}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.student-checks{grid-template-columns:repeat(3,minmax(0,1fr))}.workspace-grid,.profile-summary-grid{grid-template-columns:1fr 1fr}.profile-summary-grid>.panel:first-child{grid-column:1/-1}.workspace-warnings{grid-column:1/-1;min-height:auto}.upgrade-summary{grid-template-columns:repeat(3,minmax(0,1fr))}.health-grid,.onboarding-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:760px){.form-grid.three,.score-ceilings,.score-rules,.upgrade-summary,.entity-create-grid{grid-template-columns:1fr}.toolbar-panel .privacy-badge{align-self:flex-start}button,.file-button,td button{min-height:48px}}@media (max-width:800px){button,.file-button,td button{min-height:48px}.profiles-layout{grid-template-columns:1fr}.profile-context-rail{grid-column:auto;display:block}.profile-directory{grid-template-rows:auto;max-height:none;position:static}.profile-directory-list{max-height:240px}}@media (max-width:680px){.topbar{min-height:72px;padding:.75rem}.topbar .eyebrow,.privacy-pill{display:none}.top-actions button{min-height:48px;padding:.5rem}.top-actions{flex-wrap:nowrap}.top-actions .status-full{display:none}.top-actions .status-compact{display:inline}.top-actions .privacy-pill{white-space:nowrap;padding:.38rem .55rem;display:inline-flex}.page{padding:.75rem}.hero-panel,.toolbar-panel,.mini-card,.test-fixture{flex-direction:column;align-items:stretch}.hero-panel{justify-content:center;min-height:220px}.metric-grid,.two-column,.form-grid.two,.form-grid.three,.score-ceilings,.score-rules{grid-template-columns:1fr}.metric-grid article{min-height:108px}.section-heading{flex-direction:column}.section-heading .button-row,.toolbar-panel .button-row{width:100%}.section-heading .button-row button,.toolbar-panel .button-row button{flex:1}button,.file-button{min-height:48px}input,select,textarea{min-height:48px;font-size:16px}.student-checks{grid-template-columns:repeat(2,minmax(0,1fr))}.workspace-context,.workspace-grid,.upgrade-summary,.profiles-layout,.profile-summary-grid{grid-template-columns:1fr}.profile-directory{grid-template-rows:auto;max-height:none;position:static}.profile-directory-list{max-height:240px}.profile-summary-grid>.panel:first-child{grid-column:auto}.profile-header,.profile-records article header{flex-direction:column;align-items:stretch}.profile-header .button-row button,.profile-tabs button{min-height:48px}.health-grid,.onboarding-summary{grid-template-columns:1fr}.workspace-status{flex-direction:column;align-items:flex-start}.workspace-action,.workspace-warnings{min-height:auto}.workspace-warnings{grid-column:auto}.preset-actions,.version-grid{grid-template-columns:1fr}.decision-actions button,.decision-exports button{width:100%}.quick-draw-stage{min-height:500px;padding-inline-start:.5rem;padding-inline-end:.5rem}.quick-draw-history ol{grid-template-columns:1fr}.quick-draw-page.is-projecting{padding:.5rem}.quick-draw-page.is-projecting .toolbar-panel{align-items:stretch}.toast{max-width:calc(100vw - 1.5rem);bottom:.75rem;right:.75rem}.search-launch kbd{display:none}.search-launch{width:48px;font-size:0}.search-launch:before{content:"⌕";font-size:1.1rem}.theme-toggle{min-width:48px;padding-inline-start:.35rem!important;padding-inline-end:.35rem!important}.search-overlay{align-items:stretch;padding:0}.search-dialog{border:0;border-radius:0;width:100%;min-height:100dvh;max-height:100dvh;padding:.85rem}.search-dialog>header button,.search-result button,.course-choice button{min-height:48px}.search-result{grid-template-columns:1fr;gap:.65rem}.search-courses>div{grid-template-columns:1fr 1fr}.search-courses>div>span{grid-column:1/-1;font-weight:700}.course-choice>article{flex-direction:column;align-items:stretch}.course-choice .button-row button{flex:1}.detail-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}@media print{body{background:var(--color-surface)}.sidebar,.topbar,.update-banner,.no-print,.toolbar-panel,.toast,.privacy-badge,.privacy-warning{display:none!important}.shell{display:block}.page{max-width:none;padding:0}.report-sheet,.table-scroll{box-shadow:none;border:0;padding:0}th{position:static}table{font-size:8pt}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
