: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}.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: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)}.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-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,.seat-handle svg{width:var(--seat-icon-size, 13px);height:var(--seat-icon-size, 13px);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 .picker-card-inner{animation:picker-shuffle .62s cubic-bezier(.2,.72,.18,1) both;animation-delay:calc(var(--card-index, 0) * 8ms)}@keyframes picker-shuffle{0%{transform:translateZ(0) rotate(0) scale(1)}38%{transform:translate3d(calc(var(--shuffle-x, 0px) * 3),calc(var(--shuffle-y, 0px) * 3),0) rotate(var(--shuffle-rotate, 0deg)) scale(.96)}72%{transform:translate3d(calc(var(--shuffle-x, 0px) * -1.5),calc(var(--shuffle-y, 0px) * -1.5),0) rotate(calc(var(--shuffle-rotate, 0deg) * -.7)) scale(1.02)}to{transform:translateZ(0) rotate(0) scale(1)}}.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{background:var(--primary)}.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}.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)}}@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}}
