:root{--bg: #f6f8f7;--surface: #ffffff;--surface-2: #f9fbfa;--text: #1d2a2a;--muted: #6f7d7a;--line: #dfe7e4;--line-strong: #c8d4d0;--primary: #0f8c7f;--primary-dark: #087368;--primary-soft: #dff4ef;--accent: #f0b429;--coral: #e85d4f;--blue: #4285d9;--shadow: 0 14px 34px rgba(34, 54, 50, .08);--font: Inter, Pretendard, "Apple SD Gothic Neo", "Noto Sans KR", system-ui, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;min-height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font);letter-spacing:0;overflow:hidden}button,input,select{font:inherit}button{color:inherit}.app-shell{height:100vh;min-height:0;display:flex;flex-direction:column;overflow:hidden}.topbar{height:64px;flex:0 0 64px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:0 22px;background:#ffffffeb;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;gap:12px;min-width:214px}.brand-mark{width:34px;height:34px;display:grid;grid-template-columns:repeat(2,1fr);gap:4px;color:var(--primary)}.brand-mark span{background:currentColor;border-radius:5px}.brand strong{display:block;color:var(--primary-dark);font-size:23px;line-height:1}.brand small{display:block;margin-top:5px;color:var(--muted);font-size:12px}.top-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.save-state{display:inline-flex;align-items:center;gap:6px;color:var(--primary-dark);font-size:13px;padding-right:8px}.icon-button,.ghost-button,.primary-button,.canvas-tools button,.seat-actions button,.roster-actions button{border:1px solid var(--line);background:var(--surface);min-height:36px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:0 12px;cursor:pointer;transition:transform .14s ease,border-color .14s ease,background .14s ease,color .14s ease}.icon-button{width:38px;padding:0}.ghost-button:hover,.icon-button:hover,.canvas-tools button:hover,.seat-actions button:hover{border-color:var(--line-strong);background:var(--surface-2);transform:translateY(-1px)}.primary-button{border-color:var(--primary);background:var(--primary);color:#fff;font-weight:800;padding:0 16px;box-shadow:0 11px 20px #0f8c7f33}.primary-button:hover{background:var(--primary-dark)}.primary-button:disabled,.ghost-button:disabled{opacity:.58;cursor:not-allowed}.spin{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.toast{position:fixed;top:78px;right:22px;z-index:40;display:flex;align-items:center;gap:9px;max-width:min(420px,calc(100vw - 32px));padding:12px 14px;border:1px solid var(--line);border-radius:8px;background:var(--surface);box-shadow:var(--shadow);color:var(--text)}.toast.success{border-color:#b9dfd5;color:var(--primary-dark)}.toast.danger{border-color:#f4c2ba;color:#b43d32}.loading-screen{flex:1;display:grid;place-items:center;align-content:center;gap:12px;color:var(--muted)}.workspace{flex:1;display:grid;grid-template-columns:minmax(620px,1fr);grid-template-rows:minmax(0,1fr);height:calc(100vh - 64px);min-height:0;overflow:hidden}.workspace.insights-open{grid-template-rows:minmax(0,1fr) 112px}.workspace.students-open{grid-template-columns:334px minmax(620px,1fr)}.workspace.rules-open{grid-template-columns:minmax(620px,1fr) 320px}.workspace.students-open.rules-open{grid-template-columns:334px minmax(620px,1fr) 320px}.left-rail,.right-rail,.bottom-panel{background:var(--surface);border-color:var(--line)}.left-rail{grid-column:1;grid-row:1;border-right:1px solid var(--line);min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden}.right-rail{grid-column:-2 / -1;grid-row:1;border-left:1px solid var(--line);min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden}.rail-title,.panel-heading{min-height:62px;display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line)}.rail-title strong,.panel-heading strong{display:block;font-size:15px}.rail-title small,.panel-heading small{display:block;margin-top:3px;color:var(--muted);font-size:12px}.roster{display:flex;min-height:0;flex:1;flex-direction:column;padding:12px;gap:10px;overflow:auto}.student-add-form{display:grid;grid-template-columns:58px 1fr 66px 36px;gap:6px}.student-add-form input,.student-add-form select,.friend-field,.roster-search,.bulk-add-form textarea,.seat-form input{width:100%;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:8px;min-height:36px;padding:0 10px;outline:none}.student-add-form input:focus,.student-add-form select:focus,.friend-field:focus,.roster-search:focus,.bulk-add-form textarea:focus,.seat-form input:focus,.friend-edit input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #0f8c7f1f}.student-add-form button{border:0;border-radius:8px;background:var(--primary);color:#fff;display:grid;place-items:center;cursor:pointer}.support-toggle{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px}.friend-field,.roster-search{min-height:34px}.bulk-add-form{display:grid;gap:7px;padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2)}.bulk-add-form label{color:var(--muted);font-size:12px;font-weight:800}.bulk-add-form textarea{min-height:88px;resize:vertical;padding:9px 10px;line-height:1.45}.bulk-error{margin:0;color:var(--coral);font-size:12px;line-height:1.35}.bulk-add-form button{justify-self:end;border:1px solid var(--primary);border-radius:8px;min-height:32px;display:inline-flex;align-items:center;gap:6px;padding:0 11px;background:var(--primary);color:#fff;font-weight:800;cursor:pointer}.bulk-add-form button:disabled{border-color:var(--line);background:#e7eeeb;color:var(--muted);cursor:not-allowed}.student-table{min-height:220px;display:flex;flex:1;flex-direction:column;border:1px solid var(--line);border-radius:8px;overflow:hidden}.roster-actions{min-height:30px;display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--muted);font-size:12px}.roster-actions button{min-height:30px;padding:0 9px;color:var(--coral)}.roster-actions button:disabled{color:var(--muted);opacity:.48;cursor:not-allowed}.student-row{display:grid;grid-template-columns:42px minmax(56px,1fr) 42px 120px;align-items:center;column-gap:6px;width:100%;min-height:42px;padding:0 9px;border:0;border-bottom:1px solid var(--line);background:var(--surface);text-align:left;font-size:13px}.student-row:not(.table-head){cursor:pointer}.student-row:not(.table-head):hover,.student-row.selected{background:#f2faf7}.student-row.table-head{color:var(--muted);background:var(--surface-2);font-size:12px;min-height:36px}.student-scroll{min-height:0;overflow:auto}.empty-roster{min-height:210px;display:grid;place-items:center;align-content:center;gap:8px;padding:20px;color:var(--muted);text-align:center}.empty-roster strong{color:var(--text);font-size:14px}.empty-roster span{max-width:210px;font-size:12px;line-height:1.45}.student-number{color:var(--muted);font-variant-numeric:tabular-nums}.student-name{display:inline-flex;align-items:center;gap:4px;min-width:0;font-weight:700}.gender-chip,.mini-check{display:inline-flex;align-items:center;justify-content:center;border-radius:8px;min-height:24px;padding:0 8px;font-size:12px;border:1px solid var(--line)}.gender-chip.F{color:#ba4a6c;background:#fff0f4;border-color:#f6cbd8}.gender-chip.M{color:#2e68b3;background:#eef6ff;border-color:#c7ddfb}.gender-chip.X{color:var(--muted);background:var(--surface-2)}.tag-stack{display:flex;align-items:center;gap:5px;min-width:0;overflow:hidden}.mini-check{gap:4px;color:var(--muted);background:var(--surface);cursor:pointer;white-space:nowrap;padding:0 6px}.mini-check input{position:absolute;opacity:0;pointer-events:none}.mini-check.on{border-color:#9ad7c9;background:var(--primary-soft);color:var(--primary-dark)}.friend-edit{min-width:0;display:inline-flex;align-items:center;gap:2px;color:var(--accent)}.friend-edit svg{display:none}.friend-edit input{width:42px;min-height:24px;border:1px solid var(--line);border-radius:8px;padding:0 6px;font-size:12px}.row-delete{width:24px;height:24px;border:0;border-radius:8px;background:transparent;color:var(--muted);display:grid;place-items:center;cursor:pointer}.row-delete:hover{background:#fff0ee;color:var(--coral)}.canvas-region{grid-column:1;grid-row:1;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden;background:#f7f7f4}.workspace.students-open .canvas-region{grid-column:2}.workspace.students-open .canvas-region,.workspace.rules-open .canvas-region{overflow:auto}.workspace.students-open .classroom-canvas,.workspace.rules-open .classroom-canvas,.workspace.students-open.rules-open .classroom-canvas{min-width:0}.canvas-toolbar{min-height:54px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 18px;background:#ffffffe0;border-bottom:1px solid var(--line)}.view-tabs{display:flex;gap:4px}.view-tabs button{min-height:36px;border:0;border-bottom:2px solid transparent;background:transparent;display:inline-flex;align-items:center;gap:7px;padding:0 10px;color:var(--muted);cursor:pointer}.view-tabs button.active{color:var(--primary-dark);border-color:var(--primary);font-weight:800}.canvas-tools{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px}.canvas-tools span{min-height:28px;display:inline-flex;align-items:center;padding:0 9px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.canvas-tools button.active-tool{border-color:var(--primary);background:var(--primary-soft);color:var(--primary-dark);font-weight:800}.comparison-view{flex:1;margin:16px 18px 14px;min-height:540px;display:grid;grid-template-rows:auto auto minmax(0,1fr);border:1px solid var(--line);border-radius:8px;background:var(--surface);overflow:hidden}.comparison-header{min-height:66px;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 16px;border-bottom:1px solid var(--line)}.comparison-header strong{display:block;font-size:16px}.comparison-header small{display:block;margin-top:4px;color:var(--muted);font-size:12px}.comparison-header select{min-width:250px;min-height:38px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--text);padding:0 10px}.comparison-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-bottom:1px solid var(--line)}.comparison-stats div{min-height:76px;display:grid;grid-template-columns:26px 1fr;align-content:center;gap:2px 8px;padding:12px 16px;border-right:1px solid var(--line)}.comparison-stats div:last-child{border-right:0}.comparison-stats svg{grid-row:1 / 3;align-self:center;color:var(--primary)}.comparison-stats span{color:var(--muted);font-size:12px}.comparison-stats strong{font-size:21px}.comparison-table{min-height:0;display:grid;grid-template-rows:38px minmax(0,1fr)}.comparison-row{display:grid;grid-template-columns:120px 1fr 1fr 92px;align-items:center;gap:12px;min-height:42px;padding:0 16px;border-bottom:1px solid var(--line);font-size:13px}.comparison-head{background:var(--surface-2);color:var(--muted);font-size:12px}.comparison-scroll{overflow:auto}.compare-warning,.compare-ok{min-height:26px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;font-size:12px;font-weight:800}.compare-warning{color:#a84c18;background:#fff7e6;border:1px solid #f3d393}.compare-ok{color:var(--primary-dark);background:var(--primary-soft);border:1px solid #b9dfd5}.comparison-empty{flex:1;min-height:540px;margin:16px 18px 14px;display:grid;place-items:center;align-content:center;gap:10px;border:1px dashed var(--line-strong);border-radius:8px;background:var(--surface);color:var(--muted);text-align:center}.comparison-empty strong{color:var(--text);font-size:16px}.comparison-empty span{max-width:360px;font-size:13px;line-height:1.5}.classroom-canvas{position:relative;flex:1 1 auto;min-height:0;margin:clamp(8px,1vw,14px);overflow:hidden;border:1px solid #d5d2c8;border-radius:8px;background:linear-gradient(#ffffffbd,#ffffffbd),linear-gradient(90deg,rgba(151,145,124,.14) 1px,transparent 1px),linear-gradient(rgba(151,145,124,.14) 1px,transparent 1px),#f5f0e6;background-size:auto,28px 28px,28px 28px,auto;box-shadow:inset 0 0 0 8px #ffffff57;touch-action:none}.snap-note{position:absolute;left:16px;bottom:14px;z-index:2;min-height:26px;display:inline-flex;align-items:center;border:1px solid rgba(15,140,127,.18);border-radius:8px;background:#fffc;padding:0 9px;color:var(--primary-dark);font-size:12px;font-weight:800}.manual-swap-note{position:absolute;right:16px;bottom:14px;z-index:5;min-height:26px;display:inline-flex;align-items:center;border:1px solid rgba(240,180,41,.34);border-radius:8px;background:#fffbebeb;padding:0 10px;color:#8a5c12;font-size:12px;font-weight:900}.snap-line{position:absolute;z-index:3;pointer-events:none;background:#0f8c7f52}.snap-line.vertical{top:0;bottom:0;width:1px}.snap-line.horizontal{left:0;right:0;height:1px}.snap-dot{position:absolute;z-index:4;width:13px;height:13px;border:2px solid var(--primary);border-radius:50%;background:#fff;transform:translate(-50%,-50%);box-shadow:0 3px 10px #0f8c7f33;pointer-events:none}.room-wall.top{position:absolute;left:13%;right:13%;top:22px;height:18px;border-radius:7px;background:#477b6b;box-shadow:inset 0 2px #ffffff38,0 3px #bd9a69;color:#fffffff0;display:grid;place-items:center;font-size:11px;font-weight:800}.classroom-canvas.flipped .room-wall.top{top:auto;bottom:22px}.room-wall.left,.room-wall.right{position:absolute;top:0;bottom:0;width:10px;background:#a6907038}.room-wall.left{left:0}.room-wall.right{right:0}.teacher-desk,.cabinet,.window-strip{position:absolute;border:1px solid rgba(116,84,42,.25);background:#c79f68;border-radius:7px;box-shadow:0 5px 12px #4f3a2124;color:#6d4a24;font-size:12px;font-weight:800;display:grid;place-items:center}.teacher-desk{top:50px;left:45%;width:118px;height:34px}.cabinet{top:28px;right:28px;width:70px;height:42px}.window-strip{left:0;width:12px;height:94px;background:#dce9ec}.window-strip.one{top:190px}.window-strip.two{bottom:120px}.classroom-canvas.flipped .teacher-desk{top:auto;bottom:50px}.classroom-canvas.flipped .cabinet{top:auto;right:auto;left:28px;bottom:28px}.classroom-canvas.flipped .window-strip{left:auto;right:0}.classroom-canvas.flipped .window-strip.one{top:auto;bottom:190px}.classroom-canvas.flipped .window-strip.two{top:120px;bottom:auto}.classroom-door{position:absolute;z-index:3;width:38px;height:58px;display:grid;place-items:center;align-content:center;gap:2px;transform:translateY(-50%);border:2px solid #c88d43;background:#fffaf0;color:#80571f;box-shadow:0 5px 12px #4f3a2121;pointer-events:none}.classroom-door.left{left:-2px;border-left:0;border-radius:0 7px 7px 0}.classroom-door.right{right:-2px;border-right:0;border-radius:7px 0 0 7px}.classroom-door.door-zone-front{top:25%}.classroom-door.door-zone-middle{top:53%}.classroom-door.door-zone-back{top:81%}.classroom-door svg{width:19px;height:19px}.classroom-door span{font-size:10px;font-weight:850;line-height:1}.seat-card{position:absolute;left:var(--x);top:var(--y);width:var(--seat-w, clamp(68px, 6.4%, 82px));min-width:0;height:var(--seat-h, clamp(52px, 6vh, 58px));transform:translate(-50%,-50%);border:2px solid color-mix(in srgb,var(--group-color),#ffffff 16%);border-radius:8px;background:linear-gradient(180deg,#fff,#f7fbfa);box-shadow:0 8px 16px #2a36321f;display:grid;grid-template-rows:minmax(0,1fr) var(--seat-meta-h, 18px);padding:var(--seat-pad, 6px);cursor:grab;transition:left .24s cubic-bezier(.22,.8,.24,1),top .24s cubic-bezier(.22,.8,.24,1),box-shadow .12s ease,transform .12s ease,border-color .12s ease;-webkit-user-select:none;user-select:none}.seat-card:before{content:"";position:absolute;left:max(10px,calc(var(--seat-w, 76px) * .24));right:max(10px,calc(var(--seat-w, 76px) * .24));top:-10px;height:9px;border-radius:6px 6px 2px 2px;background:#b98b54;border:1px solid rgba(90,62,28,.2)}.seat-card.selected{box-shadow:0 0 0 4px #0f8c7f26,0 13px 24px #2a363229}.classroom-canvas.manual-mode .seat-card{cursor:pointer}.seat-card.swap-target:hover{border-color:var(--primary);box-shadow:0 0 0 4px #0f8c7f1a,0 13px 24px #2a363229;transform:translate(-50%,-50%) scale(1.02)}.seat-card.swap-source{z-index:5;border-style:solid;border-color:var(--accent);box-shadow:0 0 0 5px #f0b42933,0 15px 26px #2a363229}.seat-card.dragging{z-index:6;cursor:grabbing;transform:translate(-50%,-50%) scale(1.04);transition:box-shadow .12s ease,transform .12s ease,border-color .12s ease}.seat-card.swapping{z-index:9;pointer-events:none;box-shadow:0 0 0 4px #147b6c29,0 18px 30px #19393133;transition:box-shadow .2s ease,transform .2s ease,border-color .2s ease}.classroom-canvas.swap-animating .manual-swap-note{border-color:#9fd3c5;background:#e7f7f1;color:var(--primary-dark)}.seat-card.placing{z-index:7;animation:seat-place .68s cubic-bezier(.18,.82,.22,1)}@keyframes seat-place{0%{opacity:0;transform:translate(-50%,-50%) scale(.68)}58%{opacity:1;transform:translate(-50%,-50%) scale(1.1)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.seat-card.empty{border-style:dashed;background:#ffffffb8;color:var(--muted)}.seat-handle{position:absolute;top:max(3px,calc(var(--seat-pad, 6px) - 1px));right:max(3px,calc(var(--seat-pad, 6px) - 1px));color:var(--muted);opacity:.74}.seat-card.locked{border-color:#d99a1b;box-shadow:0 0 0 2px #f0b42947}.seat-lock{position:absolute;top:max(3px,calc(var(--seat-pad, 6px) - 1px));left:max(3px,calc(var(--seat-pad, 6px) - 1px));display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:#f0b429;color:#4a3403}.seat-lock svg{width:10px;height:10px}.seat-name{min-width:0;display:flex;align-items:center;gap:5px;overflow:hidden;font-size:var(--seat-name-size, 13px);font-weight:800;color:var(--text);line-height:1.05;white-space:nowrap}.seat-name svg{width:var(--seat-icon-size, 13px);height:var(--seat-icon-size, 13px);flex:0 0 auto}.seat-handle svg{width:clamp(13px,var(--seat-icon-size, 14px),16px);height:clamp(13px,var(--seat-icon-size, 14px),16px);flex:0 0 auto}.seat-name>span,.seat-name{text-overflow:ellipsis}.seat-card.empty .seat-name{color:var(--muted)}.seat-meta{display:flex;align-items:center;justify-content:space-between;gap:4px;min-width:0;overflow:hidden;color:var(--muted);font-size:var(--seat-meta-size, 11px);line-height:1;white-space:nowrap}.seat-meta b{color:var(--group-color);font-weight:900;min-width:0;overflow:hidden;text-overflow:ellipsis}.student-picker,.picker-empty{flex:1 1 auto;min-height:0;margin:clamp(8px,1vw,14px);border:1px solid var(--line);border-radius:8px;background:var(--surface);overflow:hidden}.student-picker{display:grid;grid-template-rows:auto auto minmax(0,1fr)}.picker-empty{display:grid;place-items:center;align-content:center;gap:10px;padding:24px;color:var(--muted);text-align:center}.picker-empty svg{color:var(--primary)}.picker-empty strong{color:var(--text);font-size:16px}.picker-empty span{max-width:320px;font-size:13px;line-height:1.45}.picker-header{min-height:66px;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 16px;border-bottom:1px solid var(--line);background:var(--surface-2)}.picker-header strong{display:block;font-size:16px}.picker-header small{display:block;margin-top:4px;color:var(--muted);font-size:12px}.picker-controls{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.picker-controls label{min-height:36px;display:inline-flex;align-items:center;gap:8px;padding:0 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--muted);font-size:12px;font-weight:800}.picker-controls input{width:58px;min-height:26px;border:1px solid var(--line);border-radius:7px;padding:0 6px;color:var(--text);text-align:center;outline:none}.picker-controls input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #0f8c7f1f}.picker-controls button{min-height:36px;border:1px solid var(--line);border-radius:8px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:0 12px;background:var(--surface);cursor:pointer}.picker-controls button:first-of-type{border-color:var(--primary);background:var(--primary);color:#fff;font-weight:800}.picker-controls button:disabled{border-color:var(--line);background:#e7eeeb;color:var(--muted);cursor:not-allowed}.picker-result{min-height:46px;max-height:46px;display:flex;align-items:center;gap:7px;flex-wrap:nowrap;padding:9px 16px;border-bottom:1px solid var(--line);background:#fbfdfc;overflow:hidden}.picker-result span{flex:0 1 auto;max-width:160px;min-height:28px;display:inline-flex;align-items:center;border:1px solid #b9dfd5;border-radius:8px;padding:0 10px;background:var(--primary-soft);color:var(--primary-dark);font-size:12px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker-board{min-height:0;display:grid;grid-template-columns:repeat(var(--picker-columns, 5),minmax(0,1fr));grid-template-rows:repeat(var(--picker-rows, 4),minmax(0,1fr));grid-auto-rows:minmax(0,1fr);align-content:stretch;gap:clamp(8px,1vw,14px);overflow:hidden;padding:clamp(12px,1.4vw,18px);background:linear-gradient(#fffc,#fffc),linear-gradient(90deg,rgba(15,140,127,.08) 1px,transparent 1px),linear-gradient(rgba(15,140,127,.08) 1px,transparent 1px),#f2f8f5;background-size:auto,24px 24px,24px 24px,auto}.picker-card{position:relative;min-width:0;height:100%;min-height:0;border:0;border-radius:8px;padding:0;background:transparent;cursor:pointer;text-align:center;perspective:900px}.picker-card-inner{position:relative;display:block;width:100%;height:100%;min-height:0;border-radius:8px;transform-style:preserve-3d;transition:transform .52s cubic-bezier(.2,.74,.22,1),box-shadow .16s ease;box-shadow:0 10px 20px #173a331f}.picker-card:hover .picker-card-inner{box-shadow:0 15px 28px #173a332e}.picker-card:focus-visible{outline:0}.picker-card:focus-visible .picker-card-inner{box-shadow:0 0 0 4px #0f8c7f29,0 15px 28px #173a332e}.picker-card.revealed .picker-card-inner{transform:rotateY(180deg)}.picker-board.shuffling{isolation:isolate}.picker-board.shuffling .picker-card{pointer-events:none;will-change:transform}.picker-board.shuffling .picker-card-inner{box-shadow:0 18px 32px #173a3338}.picker-face{position:absolute;top:0;right:0;bottom:0;left:0;border:1px solid rgba(8,115,104,.18);border-radius:8px;display:grid;place-items:center;align-content:center;gap:6px;padding:clamp(5px,.9vw,10px);backface-visibility:hidden;overflow:hidden}.picker-face-back{background:radial-gradient(circle at 50% 24%,rgba(255,255,255,.24),transparent 32%),linear-gradient(145deg,#087368,#0f8c7f 58%,#2aa58f);color:#fff}.picker-face-front{border-color:color-mix(in srgb,var(--primary),#ffffff 24%);background:linear-gradient(180deg,#fffffffa,#f7fbfafa),linear-gradient(135deg,rgba(15,140,127,.08),transparent 54%);color:var(--text);transform:rotateY(180deg)}.picker-face strong{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:clamp(12px,calc(30px - (var(--picker-rows, 4) * 1.5px)),28px);line-height:1.15}.picker-face>span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:clamp(9px,calc(15px - (var(--picker-rows, 4) * .45px)),14px);opacity:.86}.picker-face-front strong{color:var(--primary-dark)}.picker-face-front span{color:var(--muted);opacity:1}.rules-panel{flex:1;min-height:0;display:flex;flex-direction:column;overflow:auto}.rules-section{padding:16px;border-bottom:1px solid var(--line)}.rules-section h2{margin:0 0 12px;display:flex;align-items:center;gap:7px;font-size:14px}.toggle-list,.weight-list,.seat-form,.class-form{display:grid;gap:10px}.class-form{grid-template-columns:1.2fr 1fr 1fr}.class-form label{display:grid;gap:6px;color:var(--muted);font-size:12px}.class-form input{width:100%;min-height:36px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--text);padding:0 9px;outline:none}.class-form input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #0f8c7f1f}.rule-toggle{position:relative;display:grid;grid-template-columns:1fr 42px;align-items:center;gap:10px;min-height:54px}.rule-toggle strong{display:block;font-size:13px}.rule-toggle small{display:block;margin-top:3px;color:var(--muted);font-size:12px;line-height:1.35}.rule-toggle input{position:absolute;opacity:0;pointer-events:none}.rule-toggle i{justify-self:end;position:relative;width:42px;height:24px;border-radius:999px;background:#d5dedb;transition:background .12s ease}.rule-toggle i:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 2px 6px #15242133;transition:transform .12s ease}.rule-toggle input:checked+i:after{transform:translate(18px)}.weight-row{display:grid;grid-template-columns:72px 1fr 34px;align-items:center;gap:10px;color:var(--muted);font-size:12px}.weight-row input{accent-color:var(--primary)}.weight-row b{color:var(--text);text-align:right;font-variant-numeric:tabular-nums}.seat-form label{display:grid;gap:6px;color:var(--muted);font-size:12px}.seat-actions{display:grid;grid-template-columns:1fr 88px;gap:8px}.lock-toggle{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:transparent;color:var(--text);font-size:13px;font-weight:700;cursor:pointer}.lock-toggle.locked{border-color:#d99a1b;background:#f0b42929;color:#8a6203}.lock-note{color:var(--muted);font-size:12px;line-height:1.45}.seat-actions button.danger{color:var(--coral)}.empty-note{margin:0;color:var(--muted);font-size:13px;line-height:1.45}.bottom-panel{grid-column:1 / -1;grid-row:2;display:grid;grid-template-columns:260px 1.1fr 1fr 260px;gap:0;border-top:1px solid var(--line);min-height:0;overflow:hidden}.score-block,.rule-score-block,.warning-block,.history-block{min-height:0;overflow:hidden;padding:10px 14px;border-right:1px solid var(--line);min-width:0}.history-block{border-right:0}.score-block{display:flex;align-items:center;gap:16px}.score-ring{width:78px;height:78px;border-radius:50%;display:grid;place-items:center;align-content:center;background:radial-gradient(circle at center,#fff 58%,transparent 59%),conic-gradient(var(--primary) var(--score),#e4ece8 0);flex:0 0 auto}.score-ring.pending{background:radial-gradient(circle at center,#fff 58%,transparent 59%),conic-gradient(#ccd8d4 360deg,#e4ece8 0)}.score-ring strong{font-size:23px;line-height:1}.score-ring span{color:var(--muted);font-size:11px}.score-copy strong{display:block;color:var(--primary-dark);font-size:16px}.score-copy small{display:block;margin-top:4px;color:var(--muted);font-size:12px;line-height:1.45}.score-copy p{display:flex;align-items:center;gap:5px;margin:6px 0 0;color:var(--primary-dark);font-size:12px}.bottom-panel h2{margin:0 0 7px;display:flex;align-items:center;gap:7px;font-size:14px}.score-bars{display:grid;gap:5px}.score-bar{display:grid;grid-template-columns:94px 1fr 34px;align-items:center;gap:10px;color:var(--muted);font-size:12px}.score-bar i{height:7px;border-radius:99px;background:#e4ebe8;overflow:hidden}.score-bar b{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--primary),#2ebc88)}.score-bar strong{color:var(--text);text-align:right;font-variant-numeric:tabular-nums}.warning-list,.history-list{display:grid;gap:5px;max-height:58px;overflow:auto}.warning-item{min-height:28px;display:flex;align-items:center;gap:7px;color:#a84c18;font-size:12px}.warning-item.danger{color:var(--coral)}.warning-item.ok{color:var(--primary-dark)}.history-item{min-height:30px;display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--line);border-radius:8px;padding:0 9px;font-size:12px}.history-item span{color:var(--muted)}.history-item b{color:var(--primary-dark)}@media(max-width:1180px){.workspace{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(500px,1fr) auto auto;overflow:auto}.workspace.insights-open{grid-template-rows:minmax(500px,1fr) auto auto 210px}.workspace.students-open,.workspace.rules-open,.workspace.students-open.rules-open{grid-template-columns:minmax(0,1fr)}.left-rail,.right-rail,.workspace.students-open .canvas-region{grid-column:1}.left-rail{grid-row:2;border-right:0;border-top:1px solid var(--line)}.right-rail{grid-row:3;border-left:0;border-top:1px solid var(--line)}.rules-panel{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.rules-section{border-bottom:0;border-right:1px solid var(--line)}.bottom-panel{grid-row:4;grid-template-columns:repeat(2,minmax(0,1fr))}.comparison-view{min-width:0}}@media(max-width:860px){body{overflow:auto}.app-shell{height:auto;min-height:100vh;overflow:visible}.topbar{height:auto;flex:0 0 auto;min-height:64px;align-items:flex-start;flex-direction:column;padding:12px}.top-actions{width:100%;justify-content:flex-start}.workspace{display:flex;flex-direction:column;height:auto;overflow:visible}.left-rail,.right-rail{border:0;border-bottom:1px solid var(--line)}.left-rail{max-height:540px}.canvas-region{min-height:min(650px,calc(100svh - 140px));overflow:hidden}.workspace.students-open .canvas-region,.workspace.rules-open .canvas-region,.workspace.students-open.rules-open .canvas-region{overflow:hidden}.classroom-canvas{width:auto;min-width:0;min-height:clamp(400px,calc(100svh - 300px),520px);flex:1 1 auto;margin:8px}.student-picker,.picker-empty{min-height:520px;width:calc(100vw - 20px);flex:1 1 520px;margin:10px}.picker-header{align-items:flex-start;flex-direction:column}.canvas-toolbar{align-items:flex-start;flex-direction:column;gap:8px;padding:8px 10px;overflow:hidden}.view-tabs,.canvas-tools{width:100%;flex-wrap:wrap;justify-content:flex-start}.view-tabs button,.canvas-tools span,.canvas-tools button{min-height:32px;padding:0 8px;font-size:12px;white-space:nowrap}.rules-panel{display:block}.class-form{grid-template-columns:repeat(3,minmax(0,1fr))}.comparison-view,.comparison-empty{min-width:0;margin:10px}.bottom-panel{display:block}.score-block,.rule-score-block,.warning-block,.history-block{border-right:0;border-bottom:1px solid var(--line)}}.account-menu{position:relative}.user-menu-button{min-height:40px;max-width:150px;display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:0 10px;color:var(--text);cursor:pointer;font-size:12px;font-weight:800}.user-menu-button span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-menu-button:hover{border-color:var(--line-strong);background:var(--surface-2)}.account-popover{position:absolute;top:calc(100% + 8px);right:0;z-index:50;width:190px;display:grid;gap:3px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:6px;box-shadow:var(--shadow)}.account-identity{display:grid;gap:2px;margin:2px 4px 5px;padding:7px 7px 10px;border-bottom:1px solid var(--line)}.account-identity strong{font-size:13px}.account-identity span{color:var(--muted);font-size:11px}.account-popover button{min-height:38px;display:flex;align-items:center;gap:9px;border:0;border-radius:6px;background:transparent;padding:0 9px;color:var(--text);cursor:pointer;font-size:12px;font-weight:750}.account-popover button:hover{background:var(--surface-2);color:var(--primary-dark)}.auth-screen{min-height:100dvh;display:grid;place-items:center;overflow:auto;background:linear-gradient(#ffffffc2,#ffffffc2),linear-gradient(90deg,rgba(89,134,120,.11) 1px,transparent 1px),linear-gradient(rgba(89,134,120,.11) 1px,transparent 1px),#eef5f2;background-size:auto,32px 32px,32px 32px,auto;padding:24px}.auth-panel{width:min(100%,420px);border:1px solid #cbdad5;border-radius:8px;background:#fff;padding:26px;box-shadow:0 18px 45px #19393124}.auth-brand{display:flex;align-items:center;gap:10px;margin-bottom:28px}.auth-brand .brand-mark{width:31px;height:31px}.auth-brand>strong{font-size:21px}.auth-heading{display:grid;grid-template-columns:44px minmax(0,1fr);align-items:center;gap:12px;margin-bottom:22px}.auth-heading-icon{width:44px;height:44px;display:grid;place-items:center;border-radius:8px;background:#e7f5f0;color:var(--primary-dark)}.auth-heading-icon svg{width:23px;height:23px}.auth-heading h1{margin:0;font-size:21px}.auth-heading p{margin:4px 0 0;color:var(--muted);font-size:12px}.auth-mode{display:grid;grid-template-columns:repeat(2,1fr);gap:4px;margin-bottom:20px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2);padding:4px}.auth-mode button{min-height:36px;border:0;border-radius:6px;background:transparent;color:var(--muted);cursor:pointer;font-size:13px;font-weight:800}.auth-mode button.active{background:#fff;color:var(--primary-dark);box-shadow:0 2px 8px #1939311a}.auth-form,.password-dialog form{display:grid;gap:14px}.auth-form label,.password-dialog label{display:grid;gap:6px}.auth-form label>span:first-child,.password-dialog label>span:first-child{color:#41514c;font-size:12px;font-weight:800}.auth-form input,.password-dialog input{width:100%;min-height:43px;border:1px solid var(--line-strong);border-radius:7px;background:#fff;padding:0 12px;outline:none;color:var(--text)}.auth-form input:focus,.password-dialog input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #0f8c7f1f}.password-input{position:relative;display:block}.password-input input{padding-right:45px}.password-input button{position:absolute;top:4px;right:4px;width:35px;height:35px;display:grid;place-items:center;border:0;background:transparent;color:var(--muted);cursor:pointer}.password-input button svg{width:18px;height:18px}.auth-error{min-height:18px;color:#b43d32;font-size:12px;line-height:1.45}.auth-submit{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--primary);border-radius:8px;background:var(--primary);color:#fff;cursor:pointer;font-size:14px;font-weight:850}.auth-submit:hover:not(:disabled){background:var(--primary-dark)}.auth-submit:disabled{opacity:.65;cursor:wait}.auth-submit svg{width:18px;height:18px}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:grid;place-items:center;background:#1326216b;padding:20px}.password-dialog{width:min(100%,430px);max-height:calc(100dvh - 40px);overflow:auto;border:1px solid var(--line);border-radius:8px;background:#fff;box-shadow:0 24px 60px #1326213d}.password-dialog>header{display:grid;grid-template-columns:40px minmax(0,1fr) 36px;align-items:center;gap:10px;border-bottom:1px solid var(--line);padding:18px}.password-dialog>header>span{width:40px;height:40px;display:grid;place-items:center;border-radius:8px;background:#e7f5f0;color:var(--primary-dark)}.password-dialog h2{margin:0;font-size:17px}.password-dialog p{margin:3px 0 0;color:var(--muted);font-size:11px}.password-dialog header button{width:36px;height:36px;display:grid;place-items:center;border:0;border-radius:7px;background:transparent;color:var(--muted);cursor:pointer}.password-dialog form{padding:18px}.classroom-door-dialog{width:min(100%,430px);max-height:calc(100dvh - 40px);overflow:auto;border:1px solid var(--line);border-radius:8px;background:#fff;box-shadow:0 24px 60px #1326213d}.classroom-door-dialog>header{display:grid;grid-template-columns:40px minmax(0,1fr) 36px;align-items:center;gap:10px;border-bottom:1px solid var(--line);padding:16px 18px}.classroom-door-dialog>header>span{width:40px;height:40px;display:grid;place-items:center;border-radius:8px;background:#e7f5f0;color:var(--primary-dark)}.classroom-door-dialog h2{margin:0;font-size:17px}.classroom-door-dialog header button{width:36px;height:36px;display:grid;place-items:center;border:0;border-radius:7px;background:transparent;color:var(--muted);cursor:pointer}.classroom-door-dialog header button:hover{background:var(--surface-2);color:var(--text)}.door-dialog-body{display:grid;gap:14px;padding:20px 24px 22px}.door-position-map{position:relative;width:min(100%,330px);aspect-ratio:1.42;margin:0 auto;border:2px solid #cbdad5;border-radius:8px;background-color:#f4f8f7;background-image:linear-gradient(rgba(89,134,120,.09) 1px,transparent 1px),linear-gradient(90deg,rgba(89,134,120,.09) 1px,transparent 1px);background-size:22px 22px}.door-map-board{position:absolute;left:18%;right:18%;top:10px;height:13px;display:grid;place-items:center;border-radius:5px;background:#226c63;color:#fff;font-size:8px;font-weight:850}.door-map-desk{position:absolute;top:34px;left:50%;width:58px;height:20px;transform:translate(-50%);border:1px solid #cca158;border-radius:5px;background:#e2bd78}.door-zone-label{position:absolute;left:50%;transform:translate(-50%,-50%);color:#7b918a;font-size:10px;font-weight:800}.door-zone-label.front{top:31%}.door-zone-label.middle{top:56%}.door-zone-label.back{top:81%}.door-position-choice{position:absolute;z-index:2;width:42px;height:42px;display:grid;place-items:center;transform:translateY(-50%);border:2px solid #c7d7d2;border-radius:8px;background:#fff;color:#668078;box-shadow:0 5px 12px #1939311a;cursor:pointer}.door-position-choice.left{left:-18px}.door-position-choice.right{right:-18px}.door-position-choice.front{top:31%}.door-position-choice.middle{top:56%}.door-position-choice.back{top:81%}.door-position-choice:hover,.door-position-choice.selected{border-color:var(--primary);background:var(--primary-soft);color:var(--primary-dark)}.door-position-choice:focus-visible,.door-hidden-choice:focus-visible{outline:3px solid rgba(20,123,108,.2);outline-offset:2px}.door-position-choice>svg:first-child{width:21px;height:21px}.door-choice-check{position:absolute;right:2px;bottom:2px;width:12px;height:12px;stroke-width:3}.door-hidden-choice{width:min(100%,330px);min-height:42px;margin:0 auto;display:grid;grid-template-columns:22px minmax(0,1fr) 18px;align-items:center;gap:9px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:0 12px;color:var(--muted);cursor:pointer;font-size:13px;font-weight:800;text-align:left}.door-hidden-choice:hover,.door-hidden-choice.selected{border-color:#b8d6cd;background:var(--primary-soft);color:var(--primary-dark)}.door-hidden-choice svg{width:18px;height:18px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px}@media(max-width:520px){.auth-screen{place-items:start center;padding:14px}.auth-panel{margin-top:4vh;padding:20px}.auth-brand{margin-bottom:22px}.auth-heading h1{font-size:19px}.door-dialog-body{padding:18px 26px 20px}.door-position-choice{width:38px;height:38px}.door-position-choice.left{left:-16px}.door-position-choice.right{right:-16px}}@media print{@page{size:A4 landscape;margin:0}html,body,#root{width:0!important;height:0!important;min-height:0!important;overflow:visible!important}body.print-classroom{width:0!important;height:0!important;min-height:0!important;background:#fff;overflow:visible!important}body.print-classroom>:not(.print-clone){display:none!important}body.print-classroom *{visibility:hidden!important}body.print-classroom .print-clone,body.print-classroom .print-clone *{visibility:visible!important}body.print-classroom .print-clone{display:block!important;position:fixed!important;inset:auto!important;left:15mm!important;top:12mm!important;width:267mm!important;height:184mm!important;min-width:0!important;max-width:267mm!important;min-height:0!important;max-height:184mm!important;flex:none!important;margin:0!important;border:1px solid #d5d2c8!important;border-radius:8px!important;box-shadow:none!important;overflow:hidden!important;break-inside:avoid!important;page-break-inside:avoid!important;print-color-adjust:exact;-webkit-print-color-adjust:exact}body.print-classroom .seat-card{width:20mm!important;height:13.5mm!important;padding:1.6mm!important;box-shadow:none!important}body.print-classroom .seat-card:before{left:4mm!important;right:4mm!important;top:-2.2mm!important;height:2mm!important}body.print-classroom .seat-handle{display:none!important}body.print-classroom .seat-name{gap:1mm!important;font-size:8.5pt!important;line-height:1.1!important}body.print-classroom .seat-meta{font-size:6.8pt!important;line-height:1.1!important}body.print-classroom .snap-note,body.print-classroom .manual-swap-note,body.print-classroom .snap-line,body.print-classroom .snap-dot{display:none!important}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}:root{--bg: #f2f6f4;--surface: #ffffff;--surface-2: #f7faf8;--text: #19322d;--muted: #667672;--line: #d9e4e0;--line-strong: #b8cbc4;--primary: #147b6c;--primary-dark: #0c5d53;--primary-soft: #ddf3ed;--accent: #f1b54a;--coral: #d9574d;--blue: #3d72d8;--shadow: 0 18px 38px rgba(30, 62, 53, .1)}html,body,#root{min-width:0}body{background:var(--bg)}button,input,select,textarea{-webkit-tap-highlight-color:transparent}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid rgba(61,114,216,.28);outline-offset:2px}.app-shell{background:var(--bg)}.topbar{height:72px;flex-basis:72px;gap:18px;padding:0 clamp(16px,2.2vw,32px);background:#fffffff5;box-shadow:0 1px #19322d0a}.brand{min-width:0;gap:10px}.brand-mark{width:36px;height:36px;gap:4px;flex:0 0 auto}.brand-mark span{border-radius:5px}.brand-mark span:nth-child(1),.brand-mark span:nth-child(4){color:#147b6c}.brand-mark span:nth-child(2){color:#3d72d8}.brand-mark span:nth-child(3){color:#f1b54a}.brand strong{color:var(--text);font-size:20px;letter-spacing:0}.brand small{margin-top:4px;color:var(--muted);font-size:11px;white-space:nowrap}.top-actions{min-width:0;gap:10px}.save-state{min-height:34px;gap:6px;padding:0 10px;border:1px solid #cae7dd;border-radius:999px;background:#f3fbf7;color:var(--primary-dark);font-size:12px;font-weight:750}.save-state svg{color:var(--primary)}.save-state.is-busy{border-color:#f1dba5;background:#fffaf0;color:#89601b}.desktop-top-actions,.mobile-top-actions{align-items:center;gap:8px}.desktop-top-actions{display:flex}.mobile-top-actions{display:none}.icon-button,.ghost-button,.primary-button,.canvas-tools button,.seat-actions button,.roster-actions button{min-height:40px;border-radius:8px}.icon-button{width:42px;background:#fff}.icon-button svg{width:20px;height:20px}.ghost-button svg,.primary-button svg{width:19px;height:19px;flex:0 0 auto}.ghost-button{background:#fff;font-size:13px;font-weight:700}.primary-button{min-width:118px;background:var(--primary);box-shadow:none;font-size:13px}.primary-button:hover:not(:disabled){background:var(--primary-dark);transform:translateY(-1px)}.top-action-menu{position:relative}.action-popover{position:absolute;top:calc(100% + 8px);right:0;z-index:50;width:176px;display:grid;gap:3px;padding:6px;border:1px solid var(--line);border-radius:8px;background:#fff;box-shadow:var(--shadow)}.action-popover button{min-height:38px;display:flex;align-items:center;gap:9px;border:0;border-radius:6px;background:transparent;padding:0 10px;color:var(--text);cursor:pointer;font-size:13px;font-weight:700;text-align:left}.action-popover button:hover:not(:disabled){background:var(--surface-2);color:var(--primary-dark)}.action-popover button:disabled{color:var(--muted);cursor:not-allowed}.toast{top:84px;right:clamp(12px,2vw,28px);border-radius:8px}.loading-screen{background:var(--bg)}.workspace{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);height:calc(100dvh - 72px);background:var(--bg)}.workspace.insights-open{grid-template-rows:minmax(0,1fr) 148px}.workspace.students-open{grid-template-columns:minmax(312px,360px) minmax(0,1fr)}.workspace.rules-open{grid-template-columns:minmax(0,1fr) minmax(300px,332px)}.workspace.students-open.rules-open{grid-template-columns:minmax(312px,360px) minmax(0,1fr) minmax(300px,332px)}.left-rail,.right-rail,.bottom-panel{background:var(--surface)}.left-rail,.right-rail{z-index:12}.rail-title,.panel-heading{min-height:68px;padding:14px 16px;background:#fff}.rail-title>div,.panel-heading>div{min-width:0}.rail-title strong,.panel-heading strong{font-size:15px}.panel-close{width:36px;height:36px;margin-left:auto;display:inline-grid;place-items:center;flex:0 0 auto;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--muted);cursor:pointer}.panel-close:hover{border-color:var(--line);background:var(--surface-2);color:var(--text)}.panel-backdrop{display:none}.roster{padding:14px;gap:12px;background:#fbfcfb}.student-add-form input,.student-add-form select,.friend-field,.roster-search,.bulk-add-form textarea,.seat-form input,.class-form input{border-color:var(--line);background:#fff}.bulk-add-form,.student-table{border-radius:8px}.bulk-add-form{background:#fff}.student-row:not(.table-head):hover,.student-row.selected{background:#ecf8f3}.canvas-region{background:var(--bg)}.workspace.students-open .canvas-region,.workspace.rules-open .canvas-region{overflow:hidden}.canvas-toolbar{min-height:62px;gap:10px;padding:8px clamp(12px,1.8vw,22px);background:#fffffff5}.view-tabs{min-width:0;gap:2px}.view-tabs button{min-height:40px;border-radius:7px;border-bottom:0;padding:0 10px;font-size:13px;font-weight:700}.view-tabs button svg{width:18px;height:18px;flex:0 0 auto}.view-tabs button:hover{background:var(--surface-2);color:var(--text)}.view-tabs button.active{border-color:transparent;background:var(--primary-soft);color:var(--primary-dark)}.canvas-tools{min-width:0;justify-content:flex-end;gap:6px}.canvas-tools button{min-height:38px;border-color:transparent;background:transparent;padding:0 8px;color:var(--muted);font-size:12px;font-weight:700}.canvas-tools button svg{width:18px;height:18px;flex:0 0 auto}.canvas-tools button:hover{border-color:var(--line);background:var(--surface-2);color:var(--text)}.canvas-tools button.active-tool{border-color:#b8e1d5;background:var(--primary-soft);color:var(--primary-dark)}.canvas-tools button.seat-delete-tool:not(:disabled){color:#b6423a}.canvas-tools button.seat-delete-tool:not(:disabled):hover{border-color:#efc0bc;background:#fff2f0;color:#8f2923}.canvas-tools button.seat-delete-tool:disabled{color:#aebbb7;cursor:not-allowed}.canvas-tools span{min-height:30px;border-color:transparent;background:#eef5f2;color:#527169;font-size:11px;font-weight:800}.seat-zoom-controls{flex:0 0 auto;min-height:36px;display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden}.canvas-tools .seat-zoom-controls button{width:34px;min-width:34px;min-height:34px;border:0;border-radius:0;padding:0}.canvas-tools .seat-zoom-controls output+button,.canvas-tools .seat-zoom-controls button+output,.canvas-tools .seat-zoom-controls button+button{border-left:1px solid var(--line)}.canvas-tools .seat-zoom-controls button svg{width:19px;height:19px}.seat-zoom-controls output{width:48px;min-width:48px;color:var(--text);font-size:11px;font-weight:900;text-align:center;font-variant-numeric:tabular-nums}.canvas-tools .seat-zoom-controls button:disabled{background:#f4f7f6;color:#aebbb7;cursor:not-allowed}.rail-title>svg,.panel-heading>svg{width:21px;height:21px;flex:0 0 auto}.classroom-canvas{min-height:0;margin:clamp(10px,1.2vw,16px);border-color:#cbdad5;border-radius:8px;background-color:#f4f8f7;background-image:linear-gradient(rgba(89,134,120,.1) 1px,transparent 1px),linear-gradient(90deg,rgba(89,134,120,.1) 1px,transparent 1px);background-size:30px 30px;box-shadow:inset 0 0 0 8px #ffffff6b}.room-wall.top{background:#226c63;box-shadow:inset 0 2px #fff3,0 3px #d9ad5e}.teacher-desk,.cabinet,.window-strip{border-radius:7px}.teacher-desk,.cabinet{background:#e2bd78;color:#68480f}.window-strip{background:#d8ecf2}.snap-note,.manual-swap-note{min-height:28px;border-radius:8px;box-shadow:0 4px 11px #1c3c3414}.seat-card{border-radius:8px;background:#fff;box-shadow:0 7px 15px #1939311f}.seat-name{gap:6px}.seat-lock{width:18px;height:18px}.seat-lock svg{width:12px;height:12px}.seat-card:before{background:#8e6a47}.seat-card.selected{z-index:4;box-shadow:0 0 0 4px #3d72d82e,0 12px 22px #19393129}.seat-card.swap-target:hover{box-shadow:0 0 0 4px #147b6c24,0 12px 22px #19393129}.seat-card.locked{border-color:#d5a230}.rules-section{padding:16px}.rule-toggle{min-height:58px}.rule-toggle i{width:44px}.rule-toggle input:checked+i{background:var(--primary)}.comparison-view,.comparison-empty,.student-picker,.picker-empty{margin:clamp(10px,1.2vw,16px);border-color:var(--line);border-radius:8px;box-shadow:0 6px 18px #1c3c340a}.comparison-view,.student-picker,.comparison-empty{min-height:0}.comparison-header,.picker-header{background:#fff}.comparison-stats div{min-height:72px}.comparison-row{grid-template-columns:minmax(82px,120px) minmax(0,1fr) minmax(0,1fr) 86px}.picker-board{background-color:#edf7f4;background-image:linear-gradient(rgba(20,123,108,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(20,123,108,.07) 1px,transparent 1px);background-size:24px 24px}.picker-face-back{background:#147b6c}.bottom-panel{grid-template-columns:minmax(220px,1fr) minmax(280px,1.25fr) minmax(250px,1.1fr) minmax(190px,.8fr);border-top-color:var(--line)}.score-block,.rule-score-block,.warning-block,.history-block{padding:14px 16px}.score-ring{width:76px;height:76px}.score-copy small{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.score-bars{gap:6px}.warning-list,.history-list{max-height:66px}@media(max-width:1400px){.workspace.students-open.rules-open{grid-template-columns:minmax(292px,324px) minmax(0,1fr) minmax(282px,308px)}.workspace.students-open.rules-open .canvas-toolbar{align-items:flex-start;flex-wrap:wrap}.workspace.students-open.rules-open .canvas-tools{width:100%;justify-content:flex-start}.bottom-panel{grid-template-columns:minmax(205px,.9fr) minmax(250px,1.2fr) minmax(220px,1fr) minmax(164px,.72fr)}.score-bar{grid-template-columns:80px 1fr 28px;gap:7px}}@media(max-width:1180px){.workspace,.workspace.students-open,.workspace.rules-open,.workspace.students-open.rules-open{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);overflow:hidden}.workspace.insights-open{grid-template-rows:minmax(0,1fr) 154px}.canvas-region,.workspace.students-open .canvas-region,.workspace.rules-open .canvas-region,.workspace.students-open.rules-open .canvas-region{grid-column:1;grid-row:1;overflow:hidden}.left-rail,.right-rail{position:fixed;top:72px;bottom:0;width:min(370px,calc(100vw - 48px));max-width:100%;grid-column:auto;grid-row:auto;border:0;box-shadow:0 18px 44px #17312b2e}.left-rail{left:0;border-right:1px solid var(--line)}.right-rail{right:0;border-left:1px solid var(--line)}.panel-backdrop{position:fixed;top:72px;right:0;bottom:0;left:0;z-index:11;display:block;width:100%;border:0;background:#162f294d;cursor:default}.canvas-toolbar{flex-wrap:wrap}.canvas-tools{width:100%;justify-content:flex-start;flex-wrap:wrap}.bottom-panel{grid-template-columns:minmax(230px,1fr) minmax(280px,1.2fr) minmax(230px,1fr)}.history-block{display:none}}@media(max-width:860px){body{overflow:auto}.app-shell{height:auto;min-height:100dvh;overflow:visible}.topbar{position:sticky;height:64px;min-height:64px;flex-basis:64px;flex-direction:row;align-items:center;justify-content:space-between;padding:0 14px;z-index:30}.brand-mark{width:32px;height:32px}.brand strong{font-size:18px}.brand small{max-width:min(42vw,210px);overflow:hidden;text-overflow:ellipsis}.save-state{display:none}.top-actions{width:auto;justify-content:flex-end}.desktop-top-actions{display:none}.mobile-top-actions{display:flex}.mobile-top-actions .primary-button{min-width:112px;min-height:40px}.workspace,.workspace.students-open,.workspace.rules-open,.workspace.students-open.rules-open{display:flex;flex-direction:column;height:auto;min-height:calc(100dvh - 64px);overflow:visible}.workspace.insights-open{display:flex}.canvas-region{min-height:min(660px,calc(100dvh - 64px));overflow:hidden}.canvas-toolbar{position:static;gap:8px;flex-wrap:nowrap;flex-direction:column;align-items:stretch;padding:8px 10px}.view-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%}.view-tabs button{min-width:0;min-height:36px;justify-content:center;gap:5px;padding:0 6px;font-size:12px;white-space:nowrap}.view-tabs button svg{width:15px;height:15px;flex:0 0 auto}.canvas-tools{width:calc(100% + 20px);margin:0 -10px -8px;padding:0 10px 8px;flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;scrollbar-width:none}.canvas-tools::-webkit-scrollbar{display:none}.canvas-tools button,.canvas-tools span{flex:0 0 auto}.canvas-tools button{min-height:34px;border-color:var(--line);background:#fff}.classroom-canvas{min-height:clamp(410px,60dvh,600px);margin:10px}.teacher-desk{left:calc(50% - 52px);width:104px;height:32px}.cabinet{right:18px;width:58px;height:36px}.left-rail,.right-rail{top:auto;bottom:0;width:100%;max-height:min(82dvh,720px);border:1px solid var(--line);border-bottom:0;border-radius:16px 16px 0 0}.left-rail,.right-rail{left:0;right:auto}.rail-title,.panel-heading{min-height:62px;padding:12px 16px}.panel-backdrop{top:64px;right:0;bottom:0;left:0}.roster{padding:12px}.comparison-view,.comparison-empty,.student-picker,.picker-empty{flex:1 1 auto;min-height:520px;width:auto;margin:10px}.comparison-header,.picker-header{align-items:flex-start;flex-direction:column}.comparison-header select,.picker-controls{width:100%}.comparison-header select{min-width:0}.picker-controls{justify-content:flex-start}.comparison-stats{grid-template-columns:1fr}.comparison-stats div{min-height:56px;border-right:0;border-bottom:1px solid var(--line)}.comparison-row{grid-template-columns:72px minmax(0,1fr) 74px;gap:8px;padding:9px 12px}.comparison-row>span:nth-child(3){display:none}.comparison-head>span:nth-child(3){display:none}.bottom-panel{display:grid;grid-template-columns:1fr;width:100%;overflow:visible}.score-block,.rule-score-block,.warning-block,.history-block{min-height:auto;padding:16px;border-right:0;border-bottom:1px solid var(--line)}.history-block{display:block}}@media(max-width:520px){.topbar{gap:8px;padding:0 10px}.brand{gap:8px}.brand-mark{width:29px;height:29px;gap:3px}.brand strong{font-size:17px}.brand small{max-width:124px;font-size:10px}.mobile-top-actions{gap:6px}.mobile-top-actions .primary-button{min-width:104px;padding:0 10px;font-size:12px}.action-popover{width:168px}.view-tabs button{gap:4px;font-size:11px}.view-tabs button svg{display:none}.classroom-canvas{min-height:440px;margin:8px}.room-wall.top{left:15%;right:15%}.teacher-desk{top:47px}.classroom-canvas.flipped .teacher-desk{bottom:47px}.snap-note{left:10px;bottom:10px;font-size:11px}.manual-swap-note{right:10px;bottom:10px;font-size:11px}.student-add-form{grid-template-columns:54px minmax(0,1fr) 54px 38px}.student-row{grid-template-columns:38px minmax(52px,1fr) 38px 106px;padding:0 7px;font-size:12px}.friend-edit input{width:34px}.mini-check{padding:0 4px}.picker-controls label{width:100%;justify-content:space-between}.picker-controls button{flex:1 1 0;padding:0 8px}.picker-result{overflow-x:auto}.score-bar{grid-template-columns:86px 1fr 30px}}@media print{html,body,#root,body.print-classroom{width:100%!important;height:100%!important;min-height:100%!important}}:root{--bg: #f4f5f7;--surface-2: #f7f8fa;--text: #242b35;--muted: #64707c;--line: #e1e5e9;--line-strong: #c3cbd3;--primary: #207868;--primary-dark: #185d51;--primary-soft: #e5f2ed;--font: Pretendard, "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", system-ui, sans-serif}@media screen{body{overflow:hidden}.app-shell{height:100dvh;min-height:0;overflow:hidden}.topbar{height:72px;flex:0 0 72px;padding:0 24px;background:#fff;box-shadow:none}.brand strong{font-size:24px}.brand small{font-size:12px}.brand-mark{width:36px;height:36px}.top-actions button{flex-shrink:0;white-space:nowrap}.primary-button{min-height:42px;font-size:14px;font-weight:750}.icon-button,.ghost-button{min-height:42px;font-size:14px}.top-actions svg{width:20px;height:20px}.save-state{border:0;background:transparent;font-size:12px}.workspace,.workspace.students-open,.workspace.rules-open,.workspace.students-open.rules-open{flex:1;height:0;min-height:0;overflow:hidden}.canvas-region{min-height:0;background:var(--bg)}.workspace-toolbar{flex:0 0 auto;z-index:10;background:#fff}.unassigned-students{flex:0 0 auto;display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding:10px 24px;background:#f0f7f3;border-bottom:1px solid #cddfd5}.unassigned-heading{display:flex;align-items:center;gap:7px;white-space:nowrap}.unassigned-heading svg{width:20px;height:20px;color:var(--primary)}.unassigned-heading strong{font-size:14px}.unassigned-heading>span{font-size:12px;color:var(--muted);margin-right:6px}.unassigned-students label{display:flex;align-items:center;gap:6px;flex:1 1 140px;min-width:0}.unassigned-students label>span{white-space:nowrap;font-size:12px;color:var(--muted)}.unassigned-students select{min-width:0;width:100%;height:38px;padding:0 8px;font-size:14px;border:1px solid var(--line-strong);border-radius:6px;background:#fff;color:var(--text)}.unassigned-students>button{flex-shrink:0;white-space:nowrap;min-height:38px}.workspace-navigation{min-height:64px;padding:8px 22px;display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line)}.view-tabs{display:flex;flex:0 1 auto;width:auto;gap:4px}.view-tabs button{flex:0 0 auto;min-height:42px;gap:8px;padding:0 13px;font-size:14px;white-space:nowrap;word-break:keep-all;border-radius:6px}.view-tabs button svg{display:block;width:20px;height:20px}.view-tabs button.active{background:#e8f2ed;color:#185d51}.management-tools,.layout-tools{display:flex;align-items:center;gap:6px;min-width:0;flex-shrink:0}.workspace-tool{position:relative;width:40px;height:40px;min-width:40px;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:6px;padding:0;background:transparent;color:#52606e;cursor:pointer;transition:background .15s ease,color .15s ease}.workspace-tool>svg{width:21px;height:21px;flex:0 0 auto}.workspace-tool.with-label{width:auto;padding:0 12px}.workspace-tool .tool-label{white-space:nowrap;font-size:14px;font-weight:650}.workspace-tool:hover:not(:disabled){color:var(--text);background:#f0f2f4}.workspace-tool.active-tool{border-color:#b4d3c7;color:var(--primary-dark);background:var(--primary-soft)}.workspace-tool:disabled{color:#b8c0c7;cursor:not-allowed}.workspace-tool[aria-label="자리 삭제"]:not(:disabled):hover{color:#a23935;background:#fdf0ef}.tool-tip{position:absolute;top:calc(100% + 7px);left:50%;transform:translate(-50%);z-index:80;display:none;padding:6px 9px;border-radius:4px;background:#29323b;color:#fff;font-size:12px;white-space:nowrap;pointer-events:none}.workspace-tool:hover>.tool-tip,.workspace-tool:focus-visible>.tool-tip{display:block}.layout-tools>.workspace-tool:last-child .tool-tip{left:auto;right:0;transform:none}.layout-commandbar{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:58px;padding:6px 24px;border-bottom:1px solid var(--line)}.layout-counts{display:flex;align-items:baseline;gap:12px;min-width:0;white-space:nowrap}.layout-counts strong{font-size:15px;font-weight:750}.layout-counts>span{font-size:12px;color:var(--muted)}.tool-divider{height:22px;width:1px;margin:0 6px;background:var(--line)}.classroom-canvas{flex:1 1 0;min-height:0;margin:16px 20px 0;border:1px solid #dbe1e6;border-radius:8px;background-color:#fbfcfd;background-image:radial-gradient(#d9e0e5 .8px,transparent .8px);background-size:20px 20px;box-shadow:none}.room-wall.top{top:min(18px,calc(var(--front-space) * .16));left:23%;right:23%;height:min(26px,calc(var(--front-space) * .25));font-size:12px;font-weight:700;border-radius:4px;background:#397f70;box-shadow:0 2px #d7e5df}.classroom-canvas.flipped .room-wall.top{top:auto;bottom:min(18px,calc(var(--front-space) * .16))}.room-wall.left,.room-wall.right{width:5px;background:#e8edf0}.teacher-desk{top:calc(var(--front-space) * .54);left:calc(50% - 43px);width:86px;height:min(28px,calc(var(--front-space) * .27));background:#f5f0e5;color:#75633d;border:1px solid #e6ddc8;border-radius:5px;box-shadow:none;font-size:12px}.classroom-canvas.flipped .teacher-desk{top:auto;bottom:calc(var(--front-space) * .54)}.cabinet{width:48px;height:28px;top:18px;right:18px;background:#eef1f4;border-color:#dce3e9;box-shadow:none}.classroom-canvas.flipped .cabinet{bottom:18px;left:18px}.window-strip{width:7px;height:68px;border-color:#c7e1ea;box-shadow:none}.window-strip.one{top:35%}.window-strip.two{bottom:15%}.classroom-door{width:20px;height:42px;min-height:42px;border-color:#bba779;background:#faf7ee;box-shadow:none}.classroom-door svg{width:14px;height:14px}.classroom-door>span{font-size:10px}.snap-note{display:none}.manual-swap-note{right:50%;bottom:8px;transform:translate(50%);min-height:24px;font-size:12px}.seat-card{display:grid;grid-template-rows:18px minmax(0,1fr) 16px;gap:3px;padding:var(--seat-pad);border:1px solid color-mix(in srgb,var(--group-color),white 30%);border-radius:7px;background:#fff;box-shadow:0 2px 4px #25374609,0 6px 14px #25374608}.seat-card:before{top:-5px;height:4px;left:32%;right:32%;background:var(--group-color);border:0;border-radius:3px 3px 0 0}.seat-identity{display:flex;align-items:center;gap:4px;min-width:0;color:var(--muted);font-size:11px;line-height:1}.seat-number{font-variant-numeric:tabular-nums;font-weight:650}.seat-gender{display:flex;margin-left:auto}.seat-gender svg{width:16px;height:16px}.seat-handle{position:static;display:flex;opacity:0;width:14px}.seat-card:hover .seat-handle,.seat-card.selected .seat-handle,.seat-card:focus-visible .seat-handle{opacity:.7}.seat-lock{left:auto;right:8px;top:-11px;height:20px;width:20px;border:2px solid white}.seat-name{justify-content:center;gap:0;font-size:var(--seat-name-size);line-height:1.25;font-weight:750;overflow:visible}.seat-name-text{display:block;max-width:100%;overflow-wrap:anywhere;white-space:normal;text-align:center}.seat-meta{gap:4px;font-size:11px;line-height:1.25;overflow:visible}.seat-meta b{font-size:inherit;color:color-mix(in srgb,var(--group-color),#25323c 35%);font-weight:700}.seat-card.empty{border-color:#ccd5dc;background:#fafbfd;box-shadow:none}.seat-card.empty .seat-name{color:#9ba6b0;font-weight:500}.seat-card.short-seat{grid-template-rows:14px minmax(0,1fr) 14px;gap:2px}.seat-card.compact-seat{grid-template-rows:11px minmax(0,1fr) 11px;gap:1px}.compact-seat .seat-identity{justify-content:center;font-size:9px}.compact-seat .seat-handle,.compact-seat .seat-gender,.compact-seat .seat-label{display:none}.compact-seat .seat-meta{justify-content:center;font-size:9px}.compact-seat .seat-name{line-height:1.1}.seat-card.micro-seat{grid-template-rows:minmax(0,1fr);gap:0}.micro-seat .seat-identity,.micro-seat .seat-meta{display:none}.canvas-statusbar{flex:0 0 auto;min-height:52px;padding:7px 20px;display:flex;align-items:center;justify-content:space-between;gap:12px}.canvas-status-text{font-size:12px;color:var(--muted);white-space:nowrap}.canvas-statusbar .seat-zoom-controls{min-height:34px;border-radius:6px}.canvas-statusbar .seat-zoom-controls button{width:36px;height:34px;min-height:34px;display:grid;place-items:center;border:0;background:#fff;color:var(--muted);cursor:pointer;padding:0}.canvas-statusbar .seat-zoom-controls button:hover{background:var(--surface-2)}.canvas-statusbar .seat-zoom-controls button:disabled{color:#b7c0c8;cursor:not-allowed}.canvas-statusbar .seat-zoom-controls button svg{width:20px;height:20px}.canvas-statusbar .seat-zoom-controls output{width:48px;font-size:12px}.canvas-statusbar .seat-zoom-controls button:last-child{border-left:1px solid var(--line)}.rail-title strong,.panel-heading strong{font-size:18px}.rail-title small,.panel-heading small{font-size:12px}.rules-section h3{font-size:14px}.roster,.rules-panel{scrollbar-width:thin;scrollbar-color:#bac6cf transparent}.roster{background:#fff}.roster-search,.student-add-form input,.student-add-form select,.class-form input,.seat-form input{min-height:40px}.student-row:not(.table-head){min-height:44px}.comparison-view,.comparison-empty,.student-picker,.picker-empty{min-height:0;flex:1 1 0;margin:0;border:0;border-radius:0;box-shadow:none}.comparison-header,.picker-header{min-height:76px;padding:16px 24px}.comparison-header strong,.picker-header strong{font-size:20px}.comparison-header small,.picker-header small{font-size:13px}.comparison-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.comparison-stats div{min-height:70px}.comparison-row{grid-template-columns:minmax(92px,1fr) minmax(0,1.5fr) minmax(0,1.5fr) 84px}.comparison-row>span:nth-child(3){display:block}.comparison-row>span{white-space:normal;word-break:keep-all;overflow-wrap:anywhere}.student-picker{grid-template-rows:auto minmax(0,1fr)}.picker-result{display:none}.picker-header{flex-direction:row;align-items:center}.picker-controls{width:auto;flex-wrap:nowrap}.picker-controls label{min-height:42px;font-size:13px}.picker-controls button{height:42px;min-height:42px;white-space:nowrap;font-size:14px}.picker-controls button svg{width:20px;height:20px}.picker-controls input{height:30px;font-size:16px}.picker-board{background:#f4f5f7;gap:12px;padding:20px}.picker-card{container-type:size}.picker-card-inner{box-shadow:0 2px 5px #25374612}.picker-face{padding:8px;gap:8px}.picker-face-back{background:#347d6f;border-color:#276757}.picker-card:nth-child(4n+2) .picker-face-back{background:#526e9c;border-color:#455e88}.picker-card:nth-child(4n+3) .picker-face-back{background:#977449;border-color:#876640}.picker-card:nth-child(4n) .picker-face-back{background:#826583;border-color:#715774}.picker-face-back strong{font-size:36px;font-weight:500}.picker-face-back>span{font-size:11px;opacity:.65}.picker-face-front{background:#fff;border:2px solid #94b7aa}.picker-face-front strong{font-size:28px;font-weight:750;color:var(--text);white-space:normal;overflow-wrap:anywhere;text-overflow:clip}.picker-face-front>span{font-size:13px}.picker-empty .primary-button{margin-top:8px}.bottom-panel{border-top:1px solid var(--line)}.toast{top:80px;max-width:min(480px,calc(100% - 32px));font-size:14px;line-height:1.5}.auth-screen{height:100dvh;min-height:0;align-items:safe center;background:#f5f7f8;background-image:radial-gradient(#dce3e8 .8px,transparent .8px);background-size:24px 24px}.auth-panel{box-shadow:0 16px 56px #263b4510;border-color:#e1e6e9}.auth-brand>strong{font-size:27px}.auth-heading h1{font-size:22px}.auth-form input{font-size:16px;min-height:46px}.auth-submit{min-height:46px;font-size:15px}}@container (max-width: 110px){.picker-face-front strong{font-size:17px}.picker-face-back strong{font-size:24px}.picker-face>span{font-size:10px}}@container (max-height: 75px){.picker-face{gap:3px;padding:4px}.picker-face-back strong{font-size:20px}.picker-face-front strong{font-size:15px}.picker-face>span{font-size:9px}.picker-face-back>span{display:none}}@media screen and (max-width:1180px){.layout-counts>strong{display:none}.workspace-navigation{padding:8px 16px;gap:8px}.management-tools .workspace-tool{width:40px;padding:0}.management-tools .tool-label{display:none}.layout-commandbar{padding:6px 16px}}@media screen and (max-width:860px){.topbar{height:64px;flex-basis:64px;min-height:64px;padding:0 16px}.brand strong{font-size:21px}.brand small{font-size:11px}.workspace,.workspace.students-open,.workspace.rules-open,.workspace.students-open.rules-open{height:0;min-height:0;flex:1;display:flex;overflow:hidden}.canvas-region{min-height:0;flex:1}.classroom-canvas{min-height:0}.workspace-navigation{min-height:58px;padding:6px 12px}.layout-commandbar{min-height:50px;padding:4px 12px}.layout-counts{display:none}.layout-tools{width:100%;justify-content:space-between;gap:3px}.classroom-canvas{margin:12px 12px 0}.canvas-statusbar{min-height:48px;padding:6px 12px}.comparison-header,.picker-header{padding:12px 16px}.comparison-header{flex-direction:row;align-items:center}.comparison-header>div{min-width:0}.comparison-header small{display:none}.comparison-header select{width:46%;max-width:280px}.comparison-stats div{display:flex;flex-wrap:wrap;gap:6px;padding:10px}.comparison-row{grid-template-columns:74px minmax(0,1fr) minmax(0,1fr) 64px;gap:6px;padding:10px;font-size:12px}.picker-header{flex-wrap:wrap;gap:10px}.picker-controls{width:100%;justify-content:flex-start;gap:6px}.picker-controls label{width:auto}.picker-controls label>span{white-space:nowrap}.picker-board{padding:12px;gap:8px}.left-rail,.right-rail{top:64px;max-height:none;border-radius:8px 8px 0 0}.panel-backdrop{top:64px}.bottom-panel{flex:0 0 auto;max-height:180px;overflow-y:auto;grid-template-columns:1fr}.toast{top:72px}}@media screen and (max-width:520px){.unassigned-students{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);padding:8px 12px;gap:6px 8px}.unassigned-heading{grid-column:1 / -1}.unassigned-students label{flex-direction:column;align-items:stretch;gap:3px}.unassigned-students select{font-size:16px}.unassigned-students>button{grid-column:1 / -1}.topbar{padding:0 12px}.brand strong{font-size:20px}.brand-mark{width:30px;height:30px}.brand small{font-size:11px}.mobile-top-actions .primary-button{font-size:13px;min-width:98px;min-height:40px}.workspace-navigation{padding:5px 8px;gap:4px}.view-tabs{flex:1;display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:0}.view-tabs button{padding:0 6px;font-size:12px;min-width:0;min-height:40px}.view-tabs button svg{display:none}.management-tools{gap:0}.management-tools .workspace-tool{width:36px;min-width:36px}.workspace-tool>svg{width:20px;height:20px}.layout-tools{gap:0}.layout-tools .workspace-tool{width:36px;min-width:36px;height:38px}.layout-tools .with-label{width:auto;padding:0 9px}.workspace-tool .tool-label{font-size:12px}.tool-divider{margin:0 3px}.classroom-canvas{margin:8px 8px 0}.canvas-statusbar{padding:5px 8px}.canvas-status-text{font-size:11px}.picker-header strong,.comparison-header strong{font-size:17px}.picker-header>div:first-child{width:100%;display:flex;align-items:center;justify-content:space-between}.picker-header small{margin-top:0;font-size:12px}.picker-controls label{flex:0 0 auto;padding:0 7px;gap:4px;min-height:38px}.picker-controls label>span{font-size:11px}.picker-controls input{width:40px}.picker-controls button{flex:1 1 auto;height:38px;min-height:38px;padding:0 8px;font-size:12px;gap:4px}.picker-controls button:last-child{flex:0 0 38px;width:38px;font-size:0;gap:0;padding:0}.picker-controls button:last-child svg{width:20px;height:20px}.comparison-header{gap:8px;padding:12px}.comparison-stats span{font-size:11px}.comparison-stats svg{display:none}.comparison-stats strong{font-size:18px}.comparison-row{grid-template-columns:60px minmax(0,1fr) minmax(0,1fr) 54px;font-size:11px}.comparison-row>span:last-child{font-size:10px}.tool-tip{display:none!important}}@media screen and (max-width:359px){.layout-tools .with-label{width:38px;padding:0}.layout-tools .tool-label{display:none}.brand small{max-width:115px}.picker-controls label>span{display:none}}@media screen and (max-height:540px){.topbar{height:52px;min-height:52px;flex-basis:52px}.workspace-navigation{min-height:44px;padding-top:2px;padding-bottom:2px}.layout-commandbar{min-height:40px;padding-top:0;padding-bottom:0}.classroom-canvas{margin-top:6px}.canvas-statusbar{min-height:36px;padding-top:1px;padding-bottom:1px}.teacher-desk,.cabinet{display:none}.room-wall.top{top:8px;height:18px}.classroom-canvas.flipped .room-wall.top{bottom:8px}.picker-header{flex-wrap:nowrap;min-height:48px;padding:6px 12px}.picker-header>div:first-child{width:auto}.picker-header small{display:none}.picker-controls{width:auto}.picker-board{padding:8px;gap:6px}.left-rail,.right-rail,.panel-backdrop{top:52px}}@media print{body.print-classroom .print-clone{background:#fff!important;box-shadow:none!important}body.print-classroom .seat-card{width:28mm!important;height:19mm!important;padding:1.5mm!important;display:grid!important;grid-template-rows:3mm minmax(0,1fr) 3mm!important;gap:.5mm!important;background:#fff!important;border-radius:2mm!important}body.print-classroom .seat-card:before{height:1mm!important;top:-1mm!important;background:var(--group-color)!important;border:0!important}body.print-classroom .seat-identity{display:flex!important;align-items:center;justify-content:space-between;font-size:7pt;line-height:1;color:#52606e}body.print-classroom .seat-gender{display:flex!important}body.print-classroom .seat-gender svg{width:9pt!important;height:9pt!important}body.print-classroom .seat-name{display:flex!important;align-items:center!important;justify-content:center!important;overflow:visible!important;font-size:11pt!important;line-height:1.15!important}body.print-classroom .seat-name-text{max-width:100%;white-space:normal!important;overflow-wrap:anywhere;text-align:center}body.print-classroom .seat-meta{font-size:7pt!important;line-height:1.2!important;overflow:visible!important}body.print-classroom .seat-label{display:block!important}body.print-classroom .seat-handle{display:none!important}}
