@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#f6f6f7;--surface:#fff;--surface-2:#f2f2f4;--surface-3:#e9e9ec;--text:#17171a;--muted:#6b6b76;--faint:#a0a0aa;--border:#e6e6ea;--border-strong:#d4d4da;--accent:#4361ee;--accent-hover:#3550d8;--accent-soft:#eef1fe;--accent-text:#2f47c4;--accent-contrast:#fff;--danger:#e0294d;--danger-soft:#fdecef;--success:#0f9d6b;--success-soft:#e7f7f0;--warning:#b86e00;--warning-soft:#fff5e3;--radius-lg:16px;--radius:12px;--radius-sm:9px;--shadow-sm:0 1px 2px #1010180a;--shadow:0 1px 2px #1010180a, 0 4px 16px #1010180d;--shadow-lg:0 24px 64px #1010182e;--ring:0 0 0 3px #4361ee38;--seat-min:112px;--seat-h:84px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-feature-settings:"cv11", "ss01";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent;font-family:Inter Variable,Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.45}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0d0d10;--surface:#16161a;--surface-2:#1d1d22;--surface-3:#27272d;--text:#f3f3f5;--muted:#a3a3ad;--faint:#6e6e78;--border:#26262c;--border-strong:#34343c;--accent:#7c93ff;--accent-hover:#93a6ff;--accent-soft:#7c93ff24;--accent-text:#a8b8ff;--accent-contrast:#0d0d10;--danger:#ff5c7a;--danger-soft:#ff5c7a1f;--success:#34d399;--success-soft:#34d3991f;--warning:#fbbf24;--warning-soft:#fbbf241f;--shadow:0 1px 2px #0000004d;--shadow-lg:0 24px 64px #00000080;--ring:0 0 0 3px #7c93ff4d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#0d0d10;--surface:#16161a;--surface-2:#1d1d22;--surface-3:#27272d;--text:#f3f3f5;--muted:#a3a3ad;--faint:#6e6e78;--border:#26262c;--border-strong:#34343c;--accent:#7c93ff;--accent-hover:#93a6ff;--accent-soft:#7c93ff24;--accent-text:#a8b8ff;--accent-contrast:#0d0d10;--danger:#ff5c7a;--danger-soft:#ff5c7a1f;--success:#34d399;--success-soft:#34d3991f;--warning:#fbbf24;--warning-soft:#fbbf241f;--shadow:0 1px 2px #0000004d;--shadow-lg:0 24px 64px #00000080;--ring:0 0 0 3px #7c93ff4d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}body{background:var(--bg);color:var(--text);min-width:320px;margin:0}h1,h2,h3{color:var(--text);letter-spacing:-.01em;margin:0}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}input,textarea,select{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);outline:none;width:100%;min-height:40px;padding:9px 12px;transition:border-color .15s,box-shadow .15s}input:focus,textarea:focus,select:focus{border-color:var(--accent);box-shadow:var(--ring)}input::placeholder,textarea::placeholder{color:var(--faint)}input[type=checkbox],input[type=radio]{width:18px;height:18px;min-height:0;accent-color:var(--accent);flex:none;margin:0;padding:0}select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;padding-right:32px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.hint{color:var(--muted);margin:8px 0 0;font-size:13px}.hint.warn{color:var(--warning)}.error-text{color:var(--danger);font-size:14px}.error-text ul{margin:4px 0 0;padding-left:18px}.inline-icon{vertical-align:-2px}.btn-primary,.btn-secondary,.btn-ghost{border-radius:var(--radius-sm);white-space:nowrap;justify-content:center;align-items:center;gap:7px;min-height:42px;padding:0 16px;font-size:14px;font-weight:600;transition:background .15s,border-color .15s,color .15s,transform 60ms;display:inline-flex}.btn-primary:active:not(:disabled),.btn-secondary:active:not(:disabled),.btn-ghost:active:not(:disabled){transform:scale(.98)}.btn-primary{border:1px solid var(--accent);background:var(--accent);color:var(--accent-contrast);box-shadow:0 1px 2px #4361ee40}.btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn-secondary{border:1px solid var(--border-strong);background:var(--surface);color:var(--text)}.btn-secondary:hover:not(:disabled){background:var(--surface-2)}.btn-ghost{color:var(--muted);background:0 0;border:1px solid #0000}.btn-ghost:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.btn-small{min-height:36px;padding:0 12px;font-size:13.5px}.icon-btn{width:34px;height:34px;color:var(--faint);background:0 0;border:0;border-radius:8px;flex:none;place-items:center;transition:background .15s,color .15s;display:inline-grid}.icon-btn:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.icon-btn.is-on{color:var(--accent)}.icon-btn.danger:hover:not(:disabled){background:var(--danger-soft);color:var(--danger)}.link-btn{color:var(--accent-text);text-align:left;background:0 0;border:0;align-items:center;gap:5px;padding:4px 0;font-size:13.5px;font-weight:500;display:inline-flex}.link-btn:hover{text-underline-offset:3px;text-decoration:underline}.link-btn.danger{color:var(--danger);margin-top:10px}.segmented{background:var(--surface-2);border:1px solid var(--border);border-radius:11px;gap:2px;padding:3px;display:inline-flex}.segmented button{color:var(--muted);white-space:nowrap;background:0 0;border:0;border-radius:8px;align-items:center;gap:6px;min-height:34px;padding:0 14px;font-size:14px;font-weight:600;transition:background .15s,color .15s,box-shadow .15s;display:inline-flex}.segmented button:hover{color:var(--text)}.segmented button.active{background:var(--surface);color:var(--text);box-shadow:0 1px 3px #1010181a, 0 0 0 1px var(--border)}.segmented-sm button{min-height:30px;padding:0 11px;font-size:13px}.switch{color:var(--muted);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;font-size:14px;font-weight:500;display:inline-flex}.switch input{opacity:0;pointer-events:none;position:absolute}.switch-track{background:var(--surface-3);border-radius:999px;width:36px;height:22px;transition:background .2s;position:relative}.switch-track:after{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 2px #00000040}.switch input:checked+.switch-track{background:var(--accent)}.switch input:checked+.switch-track:after{transform:translate(14px)}.switch input:focus-visible+.switch-track{box-shadow:var(--ring)}.app{flex-direction:column;min-height:100svh;display:flex}.app-header{z-index:20;-webkit-backdrop-filter:saturate(1.6)blur(14px);border-bottom:1px solid var(--border);padding-top:env(safe-area-inset-top);background:#f6f6f7d1;position:sticky;top:0}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .app-header{background:#0d0d10cc}}:root[data-theme=dark] .app-header{background:#0d0d10cc}.app-bar{align-items:center;gap:16px;max-width:1440px;margin:0 auto;padding:10px 20px;display:flex}.brand{align-items:center;gap:10px;margin-right:auto;display:flex}.brand-name{letter-spacing:-.02em;white-space:nowrap;font-size:17px;font-weight:700}.classroom-tabs{scrollbar-width:none;gap:6px;max-width:1440px;margin:0 auto;padding:2px 20px 10px;display:flex;overflow-x:auto}.classroom-tabs::-webkit-scrollbar{display:none}.classroom-tab{flex:none}.classroom-tab-btn,.classroom-tab-add{border:1px solid var(--border);background:var(--surface);min-height:36px;color:var(--muted);white-space:nowrap;border-radius:999px;align-items:center;gap:7px;padding:0 14px;font-size:14px;font-weight:600;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.classroom-tab-btn:hover{color:var(--text);border-color:var(--border-strong)}.classroom-tab.active .classroom-tab-btn{background:var(--text);border-color:var(--text);color:var(--bg)}.tab-count{opacity:.6;font-variant-numeric:tabular-nums;font-size:12px;font-weight:600}.tab-edit-icon{opacity:.55}.classroom-tab-add{background:0 0;border-style:dashed;flex:none}.classroom-tab-add:hover{color:var(--accent-text);border-color:var(--accent)}.classroom-tab-input{border-radius:999px;flex:none;width:140px;min-height:36px;padding:0 14px}.app-main{width:100%;max-width:1440px;padding:20px 20px calc(32px + env(safe-area-inset-bottom));flex:1;align-items:start;gap:20px;margin:0 auto;display:grid}.classroom-layout{grid-template-columns:minmax(0,1fr) 340px}.exam-layout{grid-template-columns:360px minmax(0,1fr)}.app-sidebar,.app-content{flex-direction:column;gap:16px;min-width:0;display:flex}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:18px}.panel-head{justify-content:space-between;align-items:center;gap:10px;min-height:32px;margin-bottom:14px;display:flex}.panel h2,.student-bank h2{align-items:center;gap:8px;font-size:15px;font-weight:650;display:flex}.panel-count{background:var(--surface-2);min-width:22px;height:22px;color:var(--muted);font-variant-numeric:tabular-nums;border-radius:999px;place-items:center;padding:0 7px;font-size:12px;font-weight:600;display:inline-grid}.field{flex-direction:column;gap:6px;margin-top:14px;display:flex}.panel-head+.field,.panel-head+.field-row{margin-top:0}.field>span:first-child{color:var(--muted);font-size:13px;font-weight:550}.field .segmented{align-self:flex-start}.field-row{align-items:flex-end;gap:8px;display:flex}.field-row .field{flex:1;margin-top:0}.field-x{color:var(--faint);padding-bottom:10px}.inline-form{gap:8px;display:flex}.inline-form input{flex:1;min-width:0}.list{flex-direction:column;margin:12px 0 0;padding:0;list-style:none;display:flex}.list-item+.list-item{border-top:1px solid var(--border)}.list-row{align-items:center;gap:2px;min-height:44px;display:flex}.inline-input{background:0 0;border-color:#0000;flex:1;min-width:0;min-height:36px;margin-left:-8px;padding:6px 8px;font-weight:500}.inline-input:hover{background:var(--surface-2)}.inline-input:focus{background:var(--surface)}.note-input{resize:vertical;margin:2px 0 10px;font-size:14px}.empty-state{color:var(--muted);text-align:center;padding:18px 4px 6px;font-size:14px}.student-roster .list{max-height:460px;margin-right:-6px;padding-right:6px;overflow-y:auto}.rule-form{gap:8px;display:grid}.rule-list{flex-direction:column;gap:6px;margin:12px 0 0;padding:0;list-style:none;display:flex}.rule-list li{background:var(--surface-2);border-radius:var(--radius-sm);justify-content:space-between;align-items:center;gap:8px;padding:6px 6px 6px 12px;font-size:14px;font-weight:500;display:flex}.map-toolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.toolbar-spacer{flex:1}.board{flex-direction:column;gap:16px;display:flex}.seat-grid-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:18px}.board-label{background:var(--surface-2);border:1px solid var(--border);max-width:60%;height:30px;color:var(--muted);letter-spacing:.12em;text-transform:uppercase;border-radius:8px;justify-content:center;align-items:center;margin:0 auto 14px;font-size:11.5px;font-weight:650;display:flex}.board-label-bottom{margin:14px auto 0}.seat-grid-scroll{margin:0 -4px;padding:4px;overflow-x:auto}.seat-grid{gap:10px;display:grid}.seat-cell{min-height:var(--seat-h);border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);flex-direction:column;justify-content:center;align-items:center;padding:18px 8px 10px;transition:border-color .12s,box-shadow .12s,background .12s;display:flex;position:relative}.seat-cell.empty{border-style:dashed;border-color:var(--border-strong);background:0 0}.seat-cell.seat-over{border-color:var(--accent);box-shadow:var(--ring);border-style:solid}.seat-cell.seat-disabled{border:1px dashed var(--border);box-shadow:none;background:repeating-linear-gradient(-45deg, transparent 0 7px, var(--surface-2) 7px 9px)}.seat-disabled-label{color:var(--faint);font-size:11px;font-weight:500}.seat-index{color:var(--faint);font-variant-numeric:tabular-nums;letter-spacing:.02em;font-size:10.5px;font-weight:600;position:absolute;top:6px;left:9px}.seat-action{width:24px;height:24px;color:var(--faint);opacity:.75;background:0 0;border:0;border-radius:7px;place-items:center;padding:0;transition:opacity .15s,background .15s,color .15s;display:grid;position:absolute}.seat-action:hover{opacity:1;background:var(--surface-2);color:var(--text)}.seat-action-top{top:4px;right:4px}.seat-action-bottom{bottom:4px;right:4px}.seat-color-dot{width:12px;height:12px;box-shadow:0 0 0 2px var(--surface);border-radius:50%}.seat-placeholder{color:var(--faint);font-size:12px;font-weight:500}.seat-occupant{touch-action:none;cursor:grab;justify-content:center;width:100%;display:flex}.seat-occupant:active{cursor:grabbing}.person-name{text-align:center;flex-direction:column;align-items:center;min-width:0;max-width:100%;line-height:1.2;display:flex}.person-first{letter-spacing:-.01em;color:var(--text);text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:15.5px;font-weight:650;overflow:hidden}.person-rest{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;max-width:100%;margin-top:2px;font-size:12.5px;font-weight:500;display:-webkit-box;overflow:hidden}.person-name.compact{flex-direction:row;align-items:baseline;gap:4px}.person-name.compact .person-first{font-size:14px}.person-name.compact .person-rest{-webkit-line-clamp:1;margin:0;font-size:13px}.student-chip{align-items:center;gap:4px;min-width:0;max-width:100%;display:flex}.student-chip-seat{flex-direction:column}.student-chip-pill{background:var(--surface);border:1px solid var(--border-strong);box-shadow:var(--shadow-sm);cursor:grab;touch-action:none;border-radius:999px;padding:7px 12px}.student-chip.dragging{box-shadow:var(--shadow-lg);border-color:var(--accent);cursor:grabbing}.note-indicator-wrap{display:inline-flex;position:relative}.note-icon{background:var(--warning-soft);width:22px;height:22px;color:var(--warning);border:0;border-radius:6px;place-items:center;padding:0;display:grid}.student-chip-seat .note-indicator-wrap{position:absolute;bottom:5px;left:6px}.student-chip-seat .note-tooltip{left:0;transform:none}.note-tooltip{z-index:30;background:var(--text);width:max-content;max-width:220px;color:var(--bg);box-shadow:var(--shadow-lg);white-space:normal;border-radius:8px;padding:8px 10px;font-size:13px;line-height:1.35;display:none;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%)}.note-indicator-wrap:hover .note-tooltip,.note-tooltip.open{display:block}.student-bank{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:18px;transition:border-color .15s,box-shadow .15s}.student-bank.seat-over{border-color:var(--accent);box-shadow:var(--ring)}.student-bank-list{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.student-bank-list .hint{margin:0}.modal-backdrop{z-index:50;-webkit-backdrop-filter:blur(4px);background:#0a0a0e6b;justify-content:center;align-items:center;padding:16px;animation:.15s ease-out fade-in;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--border);width:100%;max-width:480px;max-height:calc(100svh - 32px);box-shadow:var(--shadow-lg);border-radius:20px;padding:22px;animation:.18s cubic-bezier(.2,.9,.3,1.2) pop-in;overflow-y:auto}.modal-title{margin-bottom:6px;font-size:18px;font-weight:700}.modal .hint:first-of-type{margin-top:0}.modal-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:20px;display:flex}@keyframes fade-in{0%{opacity:0}}@keyframes pop-in{0%{opacity:0;transform:translateY(8px)scale(.98)}}.map-draft-modal .seat-grid-scroll{margin-top:4px}.color-picker-modal .react-colorful{width:100%;height:200px;margin-top:12px}.color-picker-hex{color:var(--muted);align-items:center;gap:6px;margin-top:12px;display:flex}.color-presets{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.color-preset-swatch{border:2px solid var(--surface);width:30px;height:30px;box-shadow:0 0 0 1px var(--border-strong);border-radius:50%}.import-modal textarea{resize:vertical;margin-top:12px}.file-input{align-items:center;gap:10px;margin-top:10px;display:flex}.file-input input{display:none}.file-input .btn-secondary{cursor:pointer}.import-summary{border-radius:var(--radius);background:var(--surface-2);margin-top:14px;padding:12px 14px}.import-summary p{margin:2px 0}.import-preview{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.check-row{cursor:pointer;align-items:center;gap:10px;margin-top:10px;font-size:14px;display:flex}.backup-actions{flex-direction:column;gap:8px;margin-top:14px;display:flex}.backup-actions .btn-primary,.backup-actions .btn-secondary{width:100%}.backup-actions .file-input{margin:0}.backup-actions .file-input span{width:100%}.chip-grid{flex-wrap:wrap;gap:8px;display:flex}.class-chip{border:1px solid var(--border-strong);background:var(--surface);min-height:38px;color:var(--text);border-radius:999px;align-items:center;gap:6px;padding:0 12px;font-size:14px;font-weight:600;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.class-chip:hover:not(:disabled){border-color:var(--accent)}.class-chip.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-text)}.class-chip-count{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px;font-weight:600}.class-chip.on .class-chip-count{color:var(--accent-text);opacity:.75}.group-preview{flex-direction:column;gap:6px;margin:10px 0 0;padding:0;list-style:none;display:flex}.group-preview li{border-radius:var(--radius-sm);background:var(--surface-2);align-items:baseline;gap:8px;padding:8px 12px;font-size:13.5px;display:flex}.group-preview span{color:var(--muted)}.list.compact{margin-top:0}.needs-summary{justify-content:space-between;align-items:center;gap:8px;padding:8px 0;font-size:14px;font-weight:500;display:flex}.needs-summary+.needs-summary{border-top:1px solid var(--border)}.needs-summary .hint{margin:0}.tags{flex-wrap:wrap;justify-content:flex-end;gap:4px;display:inline-flex}.tag{background:var(--accent-soft);color:var(--accent-text);white-space:nowrap;vertical-align:middle;border-radius:999px;align-items:center;padding:2px 8px;font-size:11.5px;font-weight:600;display:inline-flex}h3 .tag{margin-left:8px}.needs-modal{max-width:600px}.search{border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--faint);align-items:center;gap:8px;margin-top:14px;padding:0 12px;display:flex}.search:focus-within{border-color:var(--accent);box-shadow:var(--ring)}.search input{background:0 0;border:0;padding-left:0;box-shadow:none!important}.needs-list{margin-top:8px}.needs-class{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:16px 0 2px;font-size:12px;font-weight:650}.needs-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:8px 0;display:flex}.needs-row+.needs-row{border-top:1px solid var(--border)}.needs-name{font-weight:550}.chip-toggles{flex-wrap:wrap;gap:6px;display:inline-flex}.chip-toggle{border:1px solid var(--border-strong);background:var(--surface);min-height:30px;color:var(--muted);border-radius:999px;padding:0 10px;font-size:12.5px;font-weight:600}.chip-toggle.on{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.room-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.room-card{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-2);padding:10px 10px 8px 12px}.room-card.special{border-color:var(--accent);background:var(--accent-soft)}.room-card-row{align-items:center;gap:6px;display:flex}.room-name{font-weight:600}.num-input{text-align:center;flex:none;width:52px;min-height:36px;padding:6px}.room-card .field-x{padding:0}.room-card-meta{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 12px;margin-top:4px;display:flex}.mini-check{color:var(--muted);cursor:pointer;align-items:center;gap:6px;font-size:12.5px;font-weight:500;display:inline-flex}.mini-check input{width:15px;height:15px}.blocked-editor-wrap .hint{margin-top:4px}.blocked-editor{gap:4px;margin:8px 0 4px;display:grid}.blocked-editor button{background:var(--accent);border:0;border-radius:5px;width:26px;height:22px;padding:0}.blocked-editor button.off{box-shadow:inset 0 0 0 1px var(--border-strong);background:0 0}.room-actions{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.room-actions .select-small{min-width:150px}.select-small{flex:1;min-width:0;min-height:36px;font-size:13.5px;font-weight:600}.capacity{border-radius:var(--radius-sm);background:var(--surface-2);color:var(--muted);margin-top:14px;padding:10px 12px;font-size:14px}.capacity strong{color:var(--text)}.capacity.over{background:var(--danger-soft);color:var(--danger)}.capacity.over strong{color:var(--danger)}.export-bar{border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;display:flex}.export-label{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-right:4px;font-size:12px;font-weight:650}.export-bar .hint{margin:0}.empty-hero{text-align:center;border:1px dashed var(--border-strong);border-radius:var(--radius-lg);padding:48px 24px}.empty-hero h2{font-size:20px;font-weight:700}.empty-hero p{max-width:460px;color:var(--muted);margin:8px auto 0}.notice{border-radius:var(--radius);background:var(--warning-soft);color:var(--text);flex-wrap:wrap;align-items:center;gap:6px;margin:0;padding:12px 14px;font-size:14px;display:flex}.notice.danger{background:var(--danger-soft);color:var(--danger)}.exam-pages{flex-direction:column;gap:16px;display:flex}.exam-page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:12px;display:flex}.exam-page-header h3{font-size:18px;font-weight:700}.exam-page-header .hint{margin:2px 0 0}.status{border-radius:999px;align-items:center;padding:4px 10px;font-size:12.5px;font-weight:600;display:inline-flex}.status.ok{background:var(--warning-soft);color:var(--warning)}.status.bad{background:var(--danger-soft);color:var(--danger)}.legend{color:var(--muted);flex-wrap:wrap;gap:6px 14px;margin-bottom:14px;font-size:13px;font-weight:550;display:flex}.legend-item{align-items:center;gap:6px;display:inline-flex}.legend-item i,.exam-seat-group i{border-radius:50%;flex:none;width:9px;height:9px;display:inline-block}.exam-seat-group{color:var(--muted);align-items:center;gap:5px;margin-top:6px;font-size:11.5px;font-weight:600;display:inline-flex}.seat-list{border-top:1px solid var(--border);columns:2 280px;column-gap:32px;margin:16px 0 0;padding:14px 0 0 24px;font-size:13.5px}.seat-list li{break-inside:avoid;padding:2px 0}.seat-list li::marker{color:var(--faint)}.seat-list-pos{color:var(--muted);font-variant-numeric:tabular-nums;margin-right:8px}.seat-list strong{margin-right:6px;font-weight:600}.seat-list .hint{margin:0}.data-table{border-collapse:collapse;width:100%;font-size:14px}.data-table th{text-align:left;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--border-strong);padding:8px 10px;font-size:11.5px;font-weight:650}.data-table td{border-bottom:1px solid var(--border);color:var(--muted);padding:9px 10px}.data-table td.strong{color:var(--text);font-weight:600}.data-table tbody tr:hover td{background:var(--surface-2)}@media (width<=1080px){.classroom-layout,.exam-layout{grid-template-columns:minmax(0,1fr)}}@media (width<=640px){:root{--seat-min:100px;--seat-h:80px;font-size:15px}.app-bar{gap:10px;padding:10px 14px}.brand{gap:8px;min-width:0}.brand-name{text-overflow:ellipsis;font-size:15.5px;overflow:hidden}.app-bar .segmented button{padding:0 10px}.classroom-tabs{padding:2px 14px 10px}.app-main{padding:14px 12px calc(28px + env(safe-area-inset-bottom));gap:14px}.panel,.seat-grid-wrap,.student-bank{border-radius:14px;padding:14px}.seat-grid{gap:8px}.person-first{font-size:15px}.hide-sm{display:none}.map-toolbar .btn-primary{flex:1}.map-toolbar .toolbar-spacer{display:none}.map-toolbar .segmented{order:10;width:100%}.map-toolbar .segmented button{flex:1;justify-content:center}.export-bar .btn-secondary{flex:1}.export-label{width:100%}.modal-backdrop{align-items:flex-end;padding:0}.modal{max-width:none;padding:20px 18px calc(20px + env(safe-area-inset-bottom));border-radius:20px 20px 0 0;max-height:92svh}.modal-actions .btn-primary,.modal-actions .btn-secondary{flex:1}.data-table th:nth-child(4),.data-table td:nth-child(4){display:none}}@media print{.app-header,.app-sidebar,.map-toolbar,.export-bar,.student-bank,.seat-action{display:none!important}.app-main{padding:0;display:block}body,.panel,.seat-grid-wrap{box-shadow:none;background:#fff}.exam-page{break-after:page}}.needs-modal .modal-actions{background:var(--surface);border-top:1px solid var(--border);margin:16px -22px -22px;padding:14px 22px 22px;position:sticky;bottom:-22px}@media (width<=420px){.brand-name{display:none}.brand{margin-right:auto}}.confirm-modal{max-width:400px}.confirm-text{margin:0;font-size:15.5px;font-weight:500;line-height:1.5}.btn-primary.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff;box-shadow:none}.btn-primary.btn-danger:hover:not(:disabled){background:var(--danger);filter:brightness(.92)}.batch-modal{max-width:520px}.batch-modal>.segmented{margin-top:12px}.batch-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px;display:grid}.batch-wide{grid-column:1/-1}.range{color:var(--muted);align-items:center;gap:8px;font-size:14px;display:flex}.range input{text-align:center;flex:none;width:64px}.batch-modal textarea{resize:vertical}.batch-summary{border-radius:var(--radius);background:var(--surface-2);margin-top:16px;padding:12px 14px}.batch-summary-head{font-size:14px}.batch-summary-head .hint{margin:0}.batch-chips{flex-wrap:wrap;gap:6px;max-height:160px;margin-top:10px;display:flex;overflow-y:auto}.batch-chip{background:var(--surface);border:1px solid var(--border);border-radius:999px;align-items:baseline;gap:6px;padding:4px 10px;font-size:13px;font-weight:600;display:inline-flex}.batch-chip small{color:var(--faint);font-variant-numeric:tabular-nums;font-weight:500}.batch-chip.dup{opacity:.45;text-decoration:line-through}.tabs-batch{flex:none}.number-field{text-align:center;font-variant-numeric:tabular-nums;font-weight:600}.stepper{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);align-items:stretch;width:100%;display:inline-flex;overflow:hidden}.stepper:focus-within{border-color:var(--accent);box-shadow:var(--ring)}.stepper .number-field{border:0;border-radius:0;flex:1;min-width:0;font-size:16px;box-shadow:none!important}.stepper button{background:var(--surface-2);width:44px;color:var(--text);border:0;flex:none;font-size:20px;line-height:1}.stepper button:hover:not(:disabled){background:var(--surface-3)}.size-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.size-fields .field{margin-top:0}.size-hint{margin-top:8px}.toast{z-index:80;left:50%;bottom:calc(20px + env(safe-area-inset-bottom));background:var(--text);max-width:min(92vw,440px);color:var(--bg);box-shadow:var(--shadow-lg);border-radius:12px;padding:12px 16px;font-size:14px;font-weight:550;transition:opacity .3s,transform .3s;animation:.2s ease-out toast-in;position:fixed;transform:translate(-50%)}.toast.error{background:var(--danger);color:#fff}.toast.leaving{opacity:0;transform:translate(-50%,8px)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}}.room-head-side{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.room-exports{flex-wrap:wrap;justify-content:flex-end;gap:2px;display:inline-flex}.room-exports .btn-ghost{color:var(--accent-text)}.rollcall-summary{border-radius:var(--radius);background:var(--surface);border:1px solid var(--accent);box-shadow:var(--ring);padding:14px 16px}.rollcall-counts{flex-wrap:wrap;gap:8px;display:flex}.rollcall-counts .count{background:var(--surface-2);font-variant-numeric:tabular-nums;border-radius:999px;align-items:center;gap:5px;padding:5px 12px;font-size:14px;font-weight:650;display:inline-flex}.rollcall-counts .count.present{background:var(--success-soft);color:var(--success)}.rollcall-counts .count.absent{background:var(--danger-soft);color:var(--danger)}.rollcall-absent{color:var(--danger);margin:8px 0 0;font-size:14px}.rollcall-room-actions{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.seat-cell.rollcall{font:inherit;color:inherit;cursor:pointer;-webkit-user-select:none;user-select:none;width:100%}.seat-cell.rollcall:active{transform:scale(.97)}.seat-cell.att-present{box-shadow:0 0 0 2px var(--success-soft);border-color:var(--success)!important}.seat-cell.att-absent{border-color:var(--danger)!important;background:var(--danger-soft)!important}.seat-cell.att-absent .person-name{opacity:.55;text-decoration:line-through}.att-badge{color:#fff;border-radius:50%;place-items:center;width:20px;height:20px;display:grid;position:absolute;top:5px;right:6px}.att-badge.present{background:var(--success)}.att-badge.absent{background:var(--danger)}.att-text{margin-left:6px;font-size:12px;font-weight:650}.att-text.present{color:var(--success)}.att-text.absent{color:var(--danger)}.lock-btn.on{opacity:1;color:var(--accent);background:var(--accent-soft)}.seat-cell.locked .seat-occupant{cursor:default}.panel h2 svg{color:var(--muted)}.history-item{justify-content:space-between;align-items:center;gap:8px;min-height:44px;display:flex}.history-item+.history-item{border-top:1px solid var(--border)}.history-date{font-variant-numeric:tabular-nums;font-size:14px;font-weight:550}.history-date .tag{margin-left:8px}.history-date .hint{margin:0;font-weight:450}.history-actions{display:inline-flex}.preview-facts{margin-top:10px}.undo-buttons{gap:2px;display:inline-flex}.undo-buttons .icon-btn{width:38px;height:38px;color:var(--muted)}.undo-buttons .icon-btn:disabled{opacity:.3}@media (width<=420px){.app-bar{gap:6px}.undo-buttons .icon-btn{width:34px}}.seat-grid.fileira-header{margin-bottom:6px}.fileira-header span{text-align:center;letter-spacing:.08em;color:var(--muted);font-size:12px;font-weight:700}.seat-index{color:var(--muted);letter-spacing:.02em;font-size:11px;font-weight:700}.code-input{margin:2px 0 6px;font-size:14px}.clique-switches{flex-wrap:wrap;gap:10px 18px;margin-bottom:12px;display:flex}.clique-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.clique-item{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-2);padding:10px 10px 10px 12px}.clique-item.paused{opacity:.6}.clique-head{align-items:center;gap:8px;font-size:14px;display:flex}.clique-swatch{border-radius:4px;flex:none;width:12px;height:12px}.clique-actions{margin-left:auto;display:inline-flex}.clique-actions .icon-btn{width:30px;height:30px}.clique-members{flex-wrap:wrap;gap:5px;margin:8px 0;display:flex}.member-chip{background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:3px 9px;font-size:12.5px;font-weight:600}.clique-strength{width:auto;min-width:160px}.clique-status{margin-top:8px;font-size:12.5px;font-weight:600;display:block}.clique-status.good{color:var(--success)}.clique-status.bad{color:var(--danger)}.tag.muted{background:var(--surface-3);color:var(--muted)}.clique-dots{gap:3px;display:inline-flex}.clique-dot{width:9px;height:9px;box-shadow:0 0 0 1.5px var(--surface);border-radius:50%;display:inline-block}.student-chip-seat .clique-dots{position:absolute;top:7px;left:50%;transform:translate(-50%)}.clique-modal{max-width:560px}.clique-count{color:var(--accent-text);margin-left:4px}.clique-picker{flex-wrap:wrap;gap:6px;max-height:260px;margin-top:10px;display:flex;overflow-y:auto}.pick-chip{border:1px solid var(--border-strong);background:var(--surface);min-height:36px;color:var(--text);border-radius:999px;align-items:center;gap:6px;padding:0 12px;font-size:13.5px;font-weight:550;display:inline-flex}.pick-chip.on{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.preview-facts.ok{color:var(--success)}.preview-facts.warn{color:var(--warning)}.tag.from-note{box-shadow:inset 0 0 0 1px var(--accent);background:0 0;border:0}.needs-note{color:var(--muted);margin-top:2px;font-size:12.5px;font-weight:450;display:block}.import-needs{color:var(--accent-text);margin:6px 0 0;font-size:13.5px;font-weight:550}.person-rest{letter-spacing:.01em;color:var(--faint)!important;font-size:11px!important;font-weight:450!important}.person-name.compact .person-rest{color:var(--muted)!important;font-size:12px!important}.map-name-editor{border-radius:var(--radius-sm);background:var(--surface-2);margin:4px 0 8px;padding:10px 12px}.map-name-head{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px 12px;font-size:12.5px;font-weight:600;display:flex}.map-name-preview{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:4px 12px;display:inline-flex}.map-name-head .link-btn{margin-left:auto;font-size:12.5px}.map-name-row{align-items:baseline;gap:8px;margin-top:8px;display:flex}.map-name-label{width:72px;color:var(--muted);flex:none;font-size:12px}.map-name-row .chip-toggle{min-height:28px;font-size:12.5px}.chip-toggle.particle{min-width:0;padding:0 8px;font-weight:500}.school-pill{border:1px solid var(--border);background:var(--surface);max-width:220px;min-height:32px;color:var(--text);border-radius:999px;align-items:center;gap:6px;margin-left:4px;padding:0 10px;font-size:13px;font-weight:600;display:inline-flex}.school-pill:hover{border-color:var(--border-strong)}.school-pill svg{color:var(--muted);flex:none}.school-pill-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.schools-modal{max-width:520px}.school-list{flex-direction:column;gap:6px;margin:14px 0 0;padding:0;list-style:none;display:flex}.school-item{border-radius:var(--radius);border:1px solid var(--border);align-items:center;gap:4px;padding:4px 6px 4px 4px;display:flex}.school-item.active{border-color:var(--accent);background:var(--accent-soft)}.school-open{text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:10px;min-width:0;padding:8px;display:flex}.school-open>span{flex-direction:column;display:flex}.school-open .hint{margin:0}.school-item .inline-input{flex:1;margin:6px}.school-new{margin-top:14px}@media (width<=420px){.school-pill{max-width:120px;margin-left:0}}.exam-library .exam-current{border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--surface);width:100%;box-shadow:var(--shadow-sm);text-align:left;align-items:center;gap:10px;padding:12px 14px;display:flex}.exam-current>span:nth-child(2){flex-direction:column;flex:1;min-width:0;display:flex}.exam-current strong{text-overflow:ellipsis;white-space:nowrap;font-size:15px;overflow:hidden}.exam-current .hint,.exams-modal .hint{margin:0}.exam-current svg{color:var(--muted);flex:none}.exam-count{background:var(--surface-2);min-width:22px;height:22px;color:var(--muted);border-radius:999px;place-items:center;font-size:12px;font-weight:600;display:inline-grid}.exams-modal{max-width:540px}.day-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.day-list li{align-items:center;gap:6px;display:flex}.day-num{background:var(--surface-2);width:24px;height:24px;color:var(--muted);border-radius:50%;flex:none;place-items:center;font-size:12px;font-weight:700;display:grid}.day-list li.active .day-num{background:var(--accent);color:var(--accent-contrast)}.day-date{flex:1.1;min-width:0}.day-subject{flex:1;min-width:0}.add-day{align-self:flex-start;margin-top:4px}.rotate-switch{margin-top:6px}.day-tabs{scrollbar-width:none;gap:8px;display:flex;overflow-x:auto}.day-tab{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);text-align:left;flex-direction:column;flex:none;align-items:flex-start;gap:1px;min-width:120px;padding:8px 14px 8px 12px;display:flex;position:relative}.day-tab strong{font-size:13.5px}.day-tab span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;max-width:180px;font-size:12px;overflow:hidden}.day-tab.active{border-color:var(--accent);background:var(--accent-soft)}.day-dot{background:var(--border-strong);border-radius:50%;width:7px;height:7px;position:absolute;top:8px;right:8px}.day-dot.ok{background:var(--success)}.staff-add{flex-direction:column;gap:6px;display:flex}.staff-add button{align-self:flex-start}.staff-list{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.staff-list li{background:var(--surface-2);border-radius:999px;align-items:center;gap:2px;padding:2px 2px 2px 10px;font-size:13px;font-weight:500;display:inline-flex}.staff-list .icon-btn{width:24px;height:24px}.room-proctors{flex-wrap:wrap;align-items:center;gap:8px;margin:2px 0 10px;display:flex}.room-proctors select{width:auto;min-width:150px;max-width:100%;padding-block:6px;font-size:13.5px}.projector{z-index:200;color:#111;background:#fff;flex-direction:column;gap:1vh;padding:2vh 2vw;display:flex;position:fixed;inset:0}.projector-head{align-items:baseline;gap:16px;display:flex}.projector-head h1{white-space:nowrap;letter-spacing:-.02em;margin:0;font-size:clamp(18px,3.4vh,40px)}.projector-head span{color:#666;font-size:clamp(13px,2.2vh,26px)}.projector-close{color:#999;opacity:.35;background:0 0;border:0;border-radius:50%;place-items:center;width:40px;height:40px;margin-left:auto;display:grid}.projector-close:hover,.projector-close:focus-visible{opacity:1;background:#f0f0f2}.projector-board{color:#fff;text-align:center;letter-spacing:.2em;text-transform:uppercase;background:#1f2a24;border-radius:8px;align-self:center;width:50%;padding:.6vh 0;font-size:clamp(11px,1.8vh,20px);font-weight:700}.projector-letters,.projector-grid{grid-template-columns:repeat(var(--cols), minmax(0, 1fr));gap:1vh 1vw;display:grid}.projector-letters span{text-align:center;color:#888;font-size:clamp(12px,2vh,24px);font-weight:800}.projector-grid{grid-template-rows:repeat(var(--rows), minmax(0, 1fr));flex:1;min-height:0}.projector-seat{text-align:center;border:2px solid #222;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;min-width:0;padding:.4vh .4vw;line-height:1.05;display:flex;position:relative;overflow:hidden}.projector-seat strong{max-width:100%;font-size:clamp(8px, min(calc(32vh / var(--rows)), calc(14vw / var(--cols))), 64px);letter-spacing:-.02em;font-weight:800}.projector-seat small{color:#555;max-width:100%;font-size:clamp(9px, min(calc(14vh / var(--rows)), calc(7vw / var(--cols))), 28px);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.projector-seat em{color:#777;font-style:normal;font-size:clamp(9px, min(calc(12vh / var(--rows)), calc(6vw / var(--cols))), 22px)}.projector-code{color:#999;font-weight:800;font-size:clamp(9px, min(calc(12vh / var(--rows)), calc(5vw / var(--cols))), 22px);position:absolute;top:.3vh;left:.5vw}.projector-seat.empty{border-style:dashed;border-color:#ccc}.projector-seat.off{background:#f2f2f4;border:0}.duplicate-actions{flex-wrap:wrap;gap:4px 16px;display:flex}.rotate-banner{border-radius:var(--radius);background:var(--accent-soft);border:1px solid var(--accent);flex-wrap:wrap;align-items:center;gap:8px 12px;padding:10px 14px;font-size:14px;display:flex}.rotate-banner span{flex:1;min-width:200px}.groups-modal{width:min(860px,100vw - 32px);max-width:860px}.groups-controls,.groups-options{flex-wrap:wrap;align-items:center;gap:8px 14px;margin-bottom:10px;display:flex}.groups-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;max-height:52vh;margin-bottom:4px;display:grid;overflow-y:auto}.group-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:10px 12px}.group-card header{justify-content:space-between;margin-bottom:6px;display:flex}.group-card ul{flex-direction:column;gap:4px;margin:0;padding:0;font-size:14px;list-style:none;display:flex}.groups-controls .stepper{width:150px}.school-pill{flex-shrink:1;min-width:0}@media (width<=480px){.brand .brand-mark,.brand>svg:first-child,.school-pill>svg:last-child{display:none}.school-pill{padding:0 8px}}[hidden]{display:none!important}:root.has-brand{--accent:var(--brand);--accent-hover:color-mix(in srgb, var(--brand) 86%, #000);--accent-soft:color-mix(in srgb, var(--brand) 9%, #fff);--accent-text:color-mix(in srgb, var(--brand) 82%, #000);--ring:0 0 0 3px color-mix(in srgb, var(--brand) 24%, transparent)}@media (prefers-color-scheme:dark){:root.has-brand:not([data-theme=light]){--accent:color-mix(in srgb, var(--brand) 72%, #fff);--accent-hover:color-mix(in srgb, var(--brand) 60%, #fff);--accent-soft:color-mix(in srgb, var(--brand) 18%, transparent);--accent-text:color-mix(in srgb, var(--brand) 55%, #fff);--accent-contrast:#0d0d10}}:root.has-brand[data-theme=dark]{--accent:color-mix(in srgb, var(--brand) 72%, #fff);--accent-hover:color-mix(in srgb, var(--brand) 60%, #fff);--accent-soft:color-mix(in srgb, var(--brand) 18%, transparent);--accent-text:color-mix(in srgb, var(--brand) 55%, #fff);--accent-contrast:#0d0d10}.btn-primary{box-shadow:0 1px 2px color-mix(in srgb, var(--accent) 30%, transparent)}.school-avatar{color:#fff;letter-spacing:-.02em;-webkit-user-select:none;user-select:none;border-radius:28%;flex:none;place-items:center;font-weight:800;display:inline-grid;overflow:hidden}.school-avatar.has-logo{border:1px solid var(--border);background:#fff}.school-avatar img{object-fit:contain;width:100%;height:100%;padding:2px}.school-pill{max-width:300px;min-height:40px;color:var(--text);border-radius:14px;gap:9px;padding:4px 12px 4px 4px;font-size:14.5px;font-weight:650}.school-pill .school-pill-chevron{color:var(--faint)}.school-open-now{color:var(--accent-text);align-items:center;gap:4px;display:inline-flex}.bottom-nav{z-index:40;padding:6px 8px calc(6px + env(safe-area-inset-bottom));background:color-mix(in srgb, var(--surface) 88%, transparent);-webkit-backdrop-filter:saturate(1.6)blur(16px);border-top:1px solid var(--border);grid-template-columns:repeat(4,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.bottom-nav button{min-height:54px;color:var(--muted);background:0 0;border:0;flex-direction:column;align-items:center;gap:3px;font-size:12px;font-weight:650;display:flex}.bottom-nav-icon{border-radius:999px;place-items:center;width:60px;height:30px;transition:background .2s;display:grid}.bottom-nav button.active{color:var(--accent-text)}.bottom-nav button.active .bottom-nav-icon{background:var(--accent-soft);color:var(--accent)}.section-tabs{top:calc(var(--header-h,57px) + env(safe-area-inset-top));z-index:15;background:color-mix(in srgb, var(--bg) 90%, transparent);-webkit-backdrop-filter:saturate(1.6)blur(14px);border-bottom:1px solid var(--border);gap:4px;padding:8px 12px;display:flex;position:sticky}.section-tabs button{min-width:0;min-height:40px;color:var(--muted);white-space:nowrap;background:0 0;border:0;border-radius:10px;flex:1;justify-content:center;align-items:center;gap:6px;padding:0 6px;font-size:14px;font-weight:650;display:inline-flex}.section-tabs button.active{background:var(--surface);color:var(--text);box-shadow:0 1px 3px #10101814, 0 0 0 1px var(--border)}.section-tabs button.active svg{color:var(--accent)}.section-badge{background:var(--surface-2);min-width:20px;color:var(--muted);border-radius:999px;padding:1px 6px;font-size:11.5px;font-style:normal;font-weight:700}.section-tabs button.active .section-badge{background:var(--accent-soft);color:var(--accent-text)}.app.compact{--seat-min:0px;--seat-h:68px;--header-h:57px;padding-bottom:calc(70px + env(safe-area-inset-bottom))}.app.compact .app-header{background:color-mix(in srgb, var(--bg) 88%, transparent)}.app.compact .app-bar{gap:8px;min-height:56px;padding:8px 12px}.app.compact .school-pill{letter-spacing:-.01em;background:0 0;border:0;flex:0 auto;max-width:none;padding-left:0;font-size:16px;font-weight:750}.app.compact .school-pill .school-avatar{width:34px!important;height:34px!important}.app.compact .classroom-tabs{width:100%;margin:0;padding:10px 12px 2px}.app.compact .app-main{gap:14px;padding:14px 12px 24px}.compact-main{flex-direction:column;align-items:stretch!important;max-width:760px!important;display:flex!important}.app.compact .panel,.app.compact .seat-grid-wrap,.app.compact .student-bank{border-radius:18px;padding:16px}.app.compact .panel h2{font-size:16px}.app.compact .seat-grid-wrap{padding:14px 8px 12px}.app.compact .map-title{padding:0 6px}.app.compact .seat-grid{gap:5px}.app.compact .seat-grid-scroll{margin:0;padding:0;overflow-x:visible}.app.compact .seat-cell{border-radius:10px;min-width:0;padding:15px 2px 6px}.app.compact .seat-index{font-size:9.5px;top:3px;left:5px}.app.compact .seat-cell .seat-action{display:none}.app.compact .seat-placeholder{font-size:0}.app.compact .seat-cell.empty .seat-placeholder:before{content:"+";color:var(--faint);font-size:16px}.app.compact .seat-disabled-label{text-align:center;font-size:9.5px;line-height:1.1}.app.compact .person-first{letter-spacing:-.025em;white-space:normal;-webkit-hyphens:auto;hyphens:auto;overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;max-width:100%;font-size:clamp(10.5px,3vw,15px);line-height:1.12;display:-webkit-box}.app.compact .person-rest{-webkit-line-clamp:1;margin-top:1px;font-size:clamp(9px,2.6vw,12px)}.app.compact .student-chip-seat .note-indicator-wrap{display:none}.app.compact .note-icon{width:16px;height:16px}.app.compact .note-icon svg{width:10px;height:10px}.app.compact .seat-occupant{touch-action:manipulation;cursor:pointer}.app.compact .student-chip-pill{touch-action:manipulation}.app.compact .fileira-header span{font-size:11px}.app.compact .board-label{max-width:70%;height:26px;margin-bottom:10px;font-size:10.5px}.app.compact .exam-seat-group{gap:3px;margin-top:3px;font-size:clamp(9px,2.5vw,11.5px)}.app.compact .exam-seat-group i{width:7px;height:7px}.seat-cell.moving{border-color:var(--accent);box-shadow:var(--ring);background:var(--accent-soft)}.seat-lock-mark{color:var(--accent);position:absolute;top:4px;right:4px}.move-banner{top:calc(var(--header-h,57px) + 58px + env(safe-area-inset-top));z-index:12;background:var(--accent);color:var(--accent-contrast);border-radius:12px;align-items:center;gap:8px;margin-bottom:10px;padding:8px 8px 8px 12px;font-size:14px;display:flex;position:sticky}.move-banner span{flex:1}.move-banner .icon-btn{color:inherit}.compact-toolbar{grid-template-columns:1fr auto auto auto;gap:6px!important;display:grid!important}.compact-toolbar .btn-primary{border-radius:14px;min-height:50px;font-size:15px}.tool-btn{border:1px solid var(--border);background:var(--surface);min-width:62px;min-height:50px;color:var(--text);border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:0 6px;font-size:11.5px;font-weight:600;display:flex}.tool-btn svg{color:var(--accent)}.app.compact .rotate-banner{border-radius:16px}.action-sheet{max-width:440px;padding-top:10px}.sheet-grip{background:var(--border-strong);border-radius:999px;width:40px;height:4px;margin:0 auto 12px}.sheet-head{margin-bottom:8px}.sheet-head .hint{margin-top:2px;font-size:14px}.sheet-actions{margin:6px -8px 0;padding:0;list-style:none}.sheet-action{text-align:left;background:0 0;border:0;border-radius:12px;align-items:center;gap:14px;width:100%;min-height:56px;padding:8px;display:flex}.sheet-action:hover:not(:disabled),.sheet-action:active:not(:disabled){background:var(--surface-2)}.sheet-action-icon{background:var(--accent-soft);width:40px;height:40px;color:var(--accent);border-radius:12px;flex:none;place-items:center;display:grid}.sheet-action.danger .sheet-action-icon{background:var(--danger-soft);color:var(--danger)}.sheet-action-text{flex-direction:column;min-width:0;display:flex}.sheet-action-text strong{font-size:15px;font-weight:600}.sheet-action-text small{color:var(--muted);font-size:13px}.sheet-cancel{width:100%;margin-top:10px}.sheet-pick{margin:4px 0 8px}.sheet-pick-list{flex-wrap:wrap;gap:6px;max-height:200px;margin-top:6px;display:flex;overflow-y:auto}.pick-chip{border:1px solid var(--border-strong);background:var(--surface);border-radius:999px;min-height:38px;padding:0 12px;font-size:14px;font-weight:550}.room-chips{scrollbar-width:none;gap:6px;margin:0 -12px;padding:0 12px 2px;display:flex;overflow-x:auto}.room-chips::-webkit-scrollbar{display:none}.room-chip{border:1px solid var(--border);background:var(--surface);min-height:40px;color:var(--muted);border-radius:999px;flex:none;align-items:center;gap:6px;padding:0 14px;font-size:14px;font-weight:700;display:inline-flex}.room-chip small{opacity:.65;font-size:11.5px;font-weight:650}.room-chip.active{background:var(--text);border-color:var(--text);color:var(--bg)}.room-chip.bad:not(.active){border-color:var(--danger)}.rollcall-row{justify-content:flex-end;display:flex}.sticky-cta{bottom:calc(76px + env(safe-area-inset-bottom));z-index:10;margin-top:4px;position:sticky}.sticky-cta .btn-primary{width:100%;min-height:54px;box-shadow:0 8px 24px color-mix(in srgb, var(--accent) 35%, transparent), 0 1px 2px #0000001a;border-radius:16px;font-size:16px}.cta-meta{opacity:.8;margin-left:4px;font-size:13.5px;font-weight:500}.print-grid{grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:8px;display:grid}.print-tile{border:1px solid var(--border);background:var(--surface);text-align:left;border-radius:14px;flex-direction:column;align-items:flex-start;gap:4px;min-height:112px;padding:14px;transition:border-color .15s,background .15s;display:flex}.print-tile svg{color:var(--accent);margin-bottom:4px}.print-tile strong{font-size:14.5px;line-height:1.2}.print-tile span{color:var(--muted);font-size:12.5px;line-height:1.3}.print-tile:hover:not(:disabled),.print-tile:active:not(:disabled){border-color:var(--accent);background:var(--accent-soft)}.print-one{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.print-one .btn-secondary{flex:140px}.seat-list-details{border-top:1px solid var(--border);margin-top:14px}.seat-list-details summary{color:var(--accent-text);cursor:pointer;padding:12px 0 0;font-size:14px;font-weight:600}.seat-list-details .seat-list{border-top:0;margin-top:8px}.app.compact .exam-page-header h3{font-size:19px}.app.compact .room-proctors select{flex:1}.app.compact .day-tab{min-width:0}.needs-counts{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.needs-count{background:var(--accent-soft);color:var(--accent-text);border-radius:999px;padding:4px 10px;font-size:13px}.staff-summary{margin:0;font-size:14px;line-height:1.5}.staff-summary .link-btn{margin-left:8px}.staff-distribute{width:100%;margin-top:14px}.panel-lead{margin:-6px 0 12px}.school-layout{grid-template-columns:repeat(2,minmax(0,1fr))}.school-hero{grid-column:1/-1;align-items:center;gap:16px;padding:6px 2px;display:flex}.school-hero h1{letter-spacing:-.02em;font-size:24px}.school-hero .hint{margin:2px 0 0}.school-col{flex-direction:column;gap:16px;min-width:0;display:flex}.logo-row{align-items:center;gap:14px;display:flex}.logo-tile{border:1.5px dashed var(--border-strong);width:96px;height:96px;color:var(--faint);background:var(--surface-2);border-radius:18px;flex:none;place-items:center;display:grid;overflow:hidden}.logo-tile.filled{border-style:solid;border-color:var(--border);background:#fff}.logo-tile img{object-fit:contain;width:100%;height:100%;padding:8px}.logo-actions{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.logo-actions .file-input{margin:0}.logo-actions .link-btn.danger{margin-top:4px}.swatches{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.swatch{border:0;border-radius:50%;width:34px;height:34px;padding:0;transition:transform .12s;position:relative;box-shadow:inset 0 0 0 1px #0000001f}.swatch.on{box-shadow:0 0 0 3px var(--surface), 0 0 0 5px var(--text)}.swatch:active{transform:scale(.92)}.swatch-custom{cursor:pointer;background:conic-gradient(#f03e3e,#fab005,#40c057,#15aabf,#4c6ef5,#be4bdb,#f03e3e);display:inline-block;overflow:hidden}.swatch-custom input{opacity:0;cursor:pointer;width:100%;height:100%}.print-preview{border:1px solid var(--border);color:#141416;box-shadow:var(--shadow);background:#fff;border-radius:10px;padding:14px 16px 16px}.print-preview-head{border-bottom:2px solid #141416;align-items:center;gap:10px;padding-bottom:10px;display:flex}.print-preview-head img{object-fit:contain;width:44px;height:44px}.print-preview-head>div{flex-direction:column;flex:1;min-width:0;line-height:1.25;display:flex}.print-preview-head small{color:#6b6b72;letter-spacing:.04em;white-space:nowrap;text-overflow:ellipsis;font-size:8.5px;font-weight:700;overflow:hidden}.print-preview-head strong{font-size:13px}.print-preview-head em{color:#6b6b72;font-size:10.5px;font-style:normal}.print-preview-room{border:2px solid #141416;flex-direction:column;padding:4px 12px;display:flex}.print-preview-room small{color:#6b6b72;font-size:7px;font-weight:700}.print-preview-room b{font-size:18px;line-height:1}.print-preview-lines{flex-direction:column;gap:7px;margin-top:12px;display:flex}.print-preview-lines i{background:#ececef;border-radius:4px;height:7px}.print-preview-lines i:nth-child(2){width:82%}.print-preview-lines i:nth-child(3){width:64%}.about{text-align:center;margin:4px 0 0}.app.compact .school-layout{flex-direction:column;max-width:760px;display:flex!important}@media (width<=1079px){.toast{bottom:calc(84px + env(safe-area-inset-bottom))}}@media (width<=380px){.section-tabs button{gap:4px;font-size:13px}.section-tabs button svg{display:none}}.app.compact .seat-cell{padding-left:1px;padding-right:1px}.app.compact .exam-layout .map-toolbar .segmented,.app.compact .compact-main>.map-toolbar .segmented{width:100%}@media (width>=600px) and (width<=1079px){.app.compact{--seat-h:84px}.app.compact .seat-grid{gap:8px}.section-tabs{justify-content:center}.section-tabs button{flex:0 180px}}:root{--bg:#f2f3f6;--border:#e4e5ea;--border-strong:#cfd1d9;--radius-lg:20px;--radius:14px;--radius-sm:10px;--shadow-sm:0 1px 2px #1010180d;--shadow:0 1px 2px #1010180d, 0 6px 20px -6px #1010181f;--shadow-lg:0 28px 70px -20px #10101859;--ink:#15161c}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0c0c10;--surface:#15151a;--surface-2:#1c1c22;--surface-3:#26262e;--border:#24242b;--border-strong:#35353e;--shadow:0 1px 2px #0006, 0 10px 30px -10px #0009;--ink:#f3f3f5}}:root[data-theme=dark]{--bg:#0c0c10;--surface:#15151a;--surface-2:#1c1c22;--surface-3:#26262e;--border:#24242b;--border-strong:#35353e;--shadow:0 1px 2px #0006, 0 10px 30px -10px #0009;--ink:#f3f3f5}body{background:radial-gradient(900px 420px at 50% -220px, color-mix(in srgb, var(--accent) 14%, transparent), transparent 70%), var(--bg);background-attachment:fixed}.app-header{background:color-mix(in srgb, var(--bg) 78%, transparent);border-bottom-color:color-mix(in srgb, var(--border) 70%, transparent)}.app-main{animation:.22s ease-out section-in}@keyframes section-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.panel h2,.student-bank h2{letter-spacing:-.015em;font-size:16px;font-weight:700}.map-title{letter-spacing:-.025em;margin-bottom:14px;font-size:21px;font-weight:750}.exam-page-header h3{letter-spacing:-.025em;font-size:21px;font-weight:750}.field>span:first-child{letter-spacing:.01em;font-size:12.5px;font-weight:600}.modal-title{letter-spacing:-.02em;font-size:19px}.panel,.student-bank{border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:20px}.panel-head{margin-bottom:16px}.seat-grid-wrap,.exam-page{box-shadow:var(--shadow);border-radius:22px;padding:22px}.exam-page{border-color:color-mix(in srgb, var(--border) 60%, transparent)}.board-label{color:#ffffffdb;letter-spacing:.18em;background:linear-gradient(#2b3a33,#1d2a24);border:0;border-radius:8px;max-width:56%;height:32px;font-size:11px;box-shadow:inset 0 1px #ffffff14,0 2px 6px -2px #00000059}.fileira-header span{color:var(--faint);font-size:12.5px}.seat-cell{background:var(--surface);border-color:var(--border);border-radius:13px;padding:18px 8px 10px}.seat-cell.occupied{box-shadow:0 1px 2px #1010180d,0 4px 12px -6px #1010181f}.seat-cell.empty{background:color-mix(in srgb, var(--surface-2) 55%, transparent);border:1.5px dashed var(--border)}.seat-cell.empty .seat-placeholder{color:#0000;font-size:0}.seat-cell.empty .seat-index{color:var(--border-strong)}.seat-index{letter-spacing:.04em;font-size:10px;font-weight:700}.seat-cell .seat-action{opacity:0}.seat-cell:hover .seat-action,.seat-cell:focus-within .seat-action,.seat-action.on{opacity:1}@media (hover:none){.seat-cell .seat-action{opacity:.55}}@media (hover:hover){.seat-cell.occupied:hover{transform:translateY(-1px);box-shadow:0 2px 4px #1010180f,0 10px 22px -10px #10101833}.seat-cell.empty:hover{border-color:var(--accent);background:var(--accent-soft)}}.seat-cell.locked{border-color:color-mix(in srgb, var(--accent) 55%, var(--border));box-shadow:0 0 0 2px var(--accent-soft)}.seat-cell.locked .lock-btn{opacity:1}.person-first{letter-spacing:-.015em;font-size:16px;font-weight:650}.person-rest{font-size:12px}.btn-primary{background:linear-gradient(180deg, color-mix(in srgb, var(--accent) 88%, #fff), var(--accent) 55%, var(--accent-hover));border-color:color-mix(in srgb, var(--accent) 80%, #000);box-shadow:inset 0 1px 0 #ffffff38, 0 1px 2px color-mix(in srgb, var(--accent) 35%, transparent), 0 6px 16px -8px color-mix(in srgb, var(--accent) 70%, transparent)}.btn-primary:hover:not(:disabled){background:linear-gradient(180deg, var(--accent), var(--accent-hover));box-shadow:inset 0 1px 0 #ffffff2e, 0 8px 20px -8px color-mix(in srgb, var(--accent) 80%, transparent)}.btn-secondary{box-shadow:var(--shadow-sm)}.btn-group{display:inline-flex}.btn-group>.btn-secondary{box-shadow:none;border-radius:0;margin-left:-1px}.btn-group>.btn-secondary:first-child{border-radius:var(--radius-sm) 0 0 var(--radius-sm);margin-left:0}.btn-group>.btn-secondary:last-child{border-radius:0 var(--radius-sm) var(--radius-sm) 0}.btn-group>.btn-secondary:hover:not(:disabled){z-index:1;position:relative}.classroom-tab.active .classroom-tab-btn,.room-chip.active{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.classroom-tab.active .classroom-tab-btn .tab-count{opacity:.8}.day-tab{border-radius:var(--radius)}.day-tab.active{box-shadow:inset 3px 0 0 var(--accent)}.day-dot.ok{background:var(--success);box-shadow:0 0 0 3px var(--success-soft)}.class-chip.on{box-shadow:0 0 0 1px var(--accent)}.export-bar{border-radius:var(--radius);box-shadow:var(--shadow-sm);gap:6px;padding:12px 14px}.export-bar .btn-secondary svg{color:var(--accent)}.export-label{letter-spacing:.08em;width:100%;margin:0 0 2px;font-size:11.5px}.status.good{background:var(--success-soft);color:var(--success)}.start-hero{text-align:center;flex-direction:column;align-items:center;padding:36px 20px 40px;display:flex}.start-hero-art{grid-template-columns:repeat(3,26px);gap:6px;margin-bottom:22px;display:grid;transform:rotate(-6deg)}.start-hero-art i{border:1.5px dashed var(--border-strong);border-radius:6px;height:20px}.start-hero-art i.on{background:var(--accent);box-shadow:0 6px 14px -4px color-mix(in srgb, var(--accent) 70%, transparent);border:0}.start-hero h2{letter-spacing:-.025em;font-size:22px;font-weight:750}.start-hero p{max-width:420px;color:var(--muted);margin:8px 0 22px;line-height:1.5}.start-hero-actions{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.empty-hero{background:color-mix(in srgb, var(--surface) 70%, transparent)}.toast{background:var(--ink);color:var(--bg);border-radius:999px;padding:11px 18px;font-size:14px}.app.compact .seat-grid-wrap,.app.compact .exam-page{border-radius:20px;padding:16px 10px 14px}.app.compact .map-title,.app.compact .exam-page-header{padding:0 6px}.app.compact .seat-cell{border-radius:10px}.app.compact .seat-cell.empty .seat-placeholder:before{content:none}.app.compact .start-hero{padding:24px 8px 28px}.app.compact .start-hero-actions .btn-primary,.app.compact .start-hero-actions .btn-secondary{flex:100%}.app.compact .classroom-tab-btn{min-height:38px}.app.compact .person-first[data-long]{letter-spacing:-.045em;font-size:clamp(8.5px,2.2vw,13.5px)}.app.compact .person-first{-webkit-hyphens:manual;hyphens:manual;overflow-wrap:normal;word-break:normal;overflow:hidden}.formation-main{max-width:1180px!important}.app:not(.compact) .formation-main{padding-top:20px}.start-panel{text-align:center;flex-direction:column;align-items:center;padding:32px 22px;display:flex}.start-panel h2{letter-spacing:-.025em;font-size:22px;font-weight:750}.start-panel>.hint{max-width:520px;margin:8px 0;line-height:1.5}.new-formation{text-align:left;flex-direction:column;width:100%;max-width:560px;display:flex}.new-formation .chip-grid{margin-top:2px}.new-formation-go{min-height:48px;margin-top:18px}.picker-modal{flex-direction:column;max-width:520px;display:flex}.picker-search{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--muted);align-items:center;gap:8px;margin:12px 0 8px;padding:0 12px;display:flex}.picker-search input{background:0 0;border:0;padding-left:0;box-shadow:none!important}.picker-chosen{flex-wrap:wrap;gap:6px;margin-bottom:6px;display:flex}.picker-list{max-height:min(52vh,460px);margin:0 -6px;padding:0 6px;overflow-y:auto}.picker-list h3{z-index:1;background:var(--surface);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:8px 4px 4px;font-size:12px;font-weight:700;position:sticky;top:0}.picker-row{border:0;border-bottom:1px solid var(--border);text-align:left;background:0 0;align-items:center;gap:10px;width:100%;min-height:44px;padding:6px 4px;font-size:15px;display:flex}.picker-check{border:1.5px solid var(--border-strong);width:22px;height:22px;color:var(--accent-contrast);border-radius:7px;flex:none;place-items:center;display:grid}.picker-row.on .picker-check{background:var(--accent);border-color:var(--accent)}.picker-row.on{font-weight:600}.pick-chip{align-items:center;gap:6px;display:inline-flex}.pick-chip small{color:var(--muted);font-size:12px}.pick-chip.on,.pick-chip.suggested{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-text)}.pick-chip.ghost{color:var(--muted);border-style:dashed}.class-names{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px;margin-top:12px;display:grid}.needs-count.muted{background:var(--surface-2);color:var(--muted)}.pool-list,.request-list,.formed-list{margin:12px 0 0;padding:0;list-style:none}.pool-list li{border-bottom:1px solid var(--border);align-items:center;gap:8px;min-height:52px;display:flex}.pool-list li.gone .pool-name strong{color:var(--muted);text-decoration:line-through}.pool-name{flex-direction:column;flex:1;min-width:0;line-height:1.25;display:flex}.pool-name strong{text-overflow:ellipsis;white-space:nowrap;font-size:14.5px;font-weight:600;overflow:hidden}.pool-name small{color:var(--muted);font-size:12px}.sex-toggle{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;gap:2px;padding:2px;display:inline-flex}.sex-toggle button{width:34px;height:30px;color:var(--faint);background:0 0;border:0;border-radius:8px;font-size:13px;font-weight:700}.sex-toggle button.on{background:var(--surface);color:var(--text);box-shadow:0 1px 2px #0000001a}.sex-toggle button.on.guess{color:var(--accent-text);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--accent) 45%, transparent)}.request-actions{flex-wrap:wrap;gap:8px;display:flex}.request-actions .file-input{margin:0}.import-note{margin-top:12px}.pending-panel{border-color:color-mix(in srgb, var(--warning) 45%, var(--border))}.pending-list,.chain-list,.rule-cards{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.pending-list li{border-radius:var(--radius);background:var(--surface-2);padding:12px}.pending-head{flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin-bottom:8px;display:flex}.pending-head .hint{margin:0}.pending-options{flex-wrap:wrap;gap:6px;display:flex}.chain-list li{border-radius:var(--radius);border:1px solid color-mix(in srgb, var(--accent) 35%, var(--border));background:var(--accent-soft);padding:12px}.chain-list li.kept{border-color:var(--border);background:var(--surface-2)}.chain-head{flex-wrap:wrap;align-items:baseline;gap:4px 10px;display:flex}.chain-head strong{align-items:center;gap:6px;display:inline-flex}.chain-head .hint{margin:0}.chain-names{margin:6px 0 10px;font-size:13.5px;line-height:1.45}.request-row{border:0;border-bottom:1px solid var(--border);text-align:left;background:0 0;align-items:center;gap:10px;width:100%;min-height:56px;padding:8px 2px;display:flex}.request-row .pool-name{flex:0 44%}.request-friends{flex-wrap:wrap;flex:1;gap:4px;min-width:0;display:flex}.request-friends .hint{margin:0}.friend-chip{background:var(--surface-2);white-space:nowrap;border-radius:999px;align-items:center;gap:3px;padding:2px 8px;font-size:12.5px;font-weight:550;display:inline-flex}.friend-chip.mutual{background:var(--accent-soft);color:var(--accent-text)}.friend-chip.met{background:var(--success-soft);color:var(--success)}.friend-chip.missed{background:var(--surface-2);color:var(--muted)}.request-edit{color:var(--faint);flex:none}.rule-add{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:12px;display:grid}.rule-card{border-radius:var(--radius);border:1px solid var(--border);border-left:4px solid var(--success);background:var(--surface);padding:12px}.rule-card.apart{border-left-color:var(--danger)}.rule-card-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.rule-card-head strong{letter-spacing:.04em;text-transform:uppercase;align-items:center;gap:6px;font-size:12.5px;font-weight:750;display:inline-flex}.rule-card.together .rule-card-head strong{color:var(--success)}.rule-card.apart .rule-card-head strong{color:var(--danger)}.rule-card-names{margin:4px 0 10px;font-size:14.5px;font-weight:550;line-height:1.45}.option-switch{color:var(--text);margin-top:16px}.priority-list{flex-direction:column;gap:6px;margin:0;padding-left:22px;font-size:14px;display:flex}.priority-list li::marker{color:var(--accent);font-weight:700}.formation-go{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;display:flex}.formation-go-text{flex:260px}.formation-go-text h2{font-size:19px!important}.formation-go-text .hint{margin-top:4px}.formation-go-btn{border-radius:14px;min-height:50px;padding:0 22px;font-size:15.5px}.app.compact .formation-go-btn{width:100%}.formation-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.stat{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow-sm);flex-direction:column;gap:2px;padding:14px 16px;display:flex}.stat strong{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:22px;font-weight:750}.stat span{color:var(--muted);font-size:12.5px}.stat.good strong{color:var(--success)}.stat.bad strong{color:var(--danger)}.formation-issues{border-color:color-mix(in srgb, var(--warning) 45%, var(--border))}.formation-issues h2{margin-bottom:8px}.formation-issues h2 svg{color:var(--warning)!important}.formation-issues ul{flex-direction:column;gap:6px;margin:0;padding-left:18px;font-size:14px;display:flex}.formation-issues .link-btn{padding:0;font-size:14px;font-weight:650}.ok-notice{background:var(--success-soft);color:var(--success);font-weight:600}.formation-exports{flex-wrap:wrap;gap:8px;display:flex}.formation-exports .btn-secondary svg{color:var(--accent)}.formation-tip{margin:0}.formed-grid{grid-template-columns:repeat(var(--k), minmax(240px, 1fr));align-items:start;gap:12px;padding-bottom:6px;display:grid;overflow-x:auto}.formed-class{padding:16px}.formed-head{justify-content:space-between;align-items:center;display:flex}.formed-head h3{letter-spacing:-.02em;font-size:19px;font-weight:750}.formed-count{background:var(--accent-soft);min-width:34px;height:28px;color:var(--accent-text);border-radius:999px;place-items:center;padding:0 8px;font-weight:750;display:inline-grid}.formed-stats{color:var(--muted);flex-wrap:wrap;gap:4px 12px;margin-top:4px;font-size:12.5px;display:flex}.formed-list{margin-top:10px}.formed-row{border:0;border-bottom:1px solid var(--border);text-align:left;background:0 0;align-items:center;gap:10px;width:100%;min-height:46px;padding:4px 2px;display:flex}.formed-row:hover{background:var(--surface-2)}.sex-dot{background:var(--surface-2);width:22px;height:22px;color:var(--muted);border-radius:7px;flex:none;place-items:center;font-size:11px;font-weight:800;display:grid}.sex-dot.F{color:#c2255c;background:#d6336c24}.sex-dot.M{color:#1971c2;background:#1c7ed624}.formed-icon{color:var(--muted);flex:none}.friend-score{background:var(--success-soft);min-width:34px;color:var(--success);text-align:center;font-variant-numeric:tabular-nums;border-radius:999px;flex:none;padding:2px 6px;font-size:12px;font-weight:700}.friend-score.bad{background:var(--danger-soft);color:var(--danger)}.sheet-friends{flex-wrap:wrap;gap:4px;margin-top:8px;display:flex}@media (width<=1079px){.formation-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.bottom-nav button{font-size:11px}.bottom-nav-icon{width:52px}}@media (width<=420px){.rule-add{grid-template-columns:1fr}.request-row{flex-wrap:wrap}.request-row .pool-name{flex-basis:calc(100% - 30px)}.request-friends{flex-basis:100%;order:3}}.rule-card-head>span{flex:none;display:inline-flex}.repeat-tag{background:var(--warning-soft);color:var(--warning);flex:none}.repeat-switch{color:var(--text);align-items:flex-start;margin:2px 0 10px}.repeat-switch>span:last-child{flex-direction:column;line-height:1.3;display:flex}.repeat-switch small{color:var(--muted);font-size:12px;font-weight:450}
