@font-face{font-family:'Black Han Sans';font-style:normal;font-weight:400;font-display:swap;src:url('font-1.e5f9366e8014.woff2') format('woff2')}@font-face{font-family:Jua;font-style:normal;font-weight:400;font-display:swap;src:url('font-2.e1023cecacd1.woff2') format('woff2')}@font-face{font-family:'IBM Plex Sans KR';font-style:normal;font-weight:400;font-display:swap;src:url('font-3.e132cfd4b428.woff2') format('woff2')}@font-face{font-family:'IBM Plex Sans KR';font-style:normal;font-weight:700;font-display:swap;src:url('font-4.80894f57ffb3.woff2') format('woff2')}:root{--wall:#f3ead6;--board:#2f5d50;--board-deep:#24493f;--chalk:#f5f2e8;--wood:#e2b47a;--wood-deep:#b6834c;--ink:#1e2533;--ink-soft:#596175;--paper:#fffdf6;--paper-edge:#e7dfcc;--line-soft:#cfc7b4;--blue:#2153c4;--blue-deep:#173d93;--gold:#f4b522;--red:#d8432b;--red-deep:#a93119;--boy:#2f6fd6;--boy-soft:#e3ecfb;--girl:#d9466f;--girl-soft:#fbe5ec;--leather:#4a2f1d;--leather-deep:#2f1d12;--note:#fbf6e7;--font-display:"Black Han Sans","Jua","Apple SD Gothic Neo","Malgun Gothic",sans-serif;--font-fun:"Jua","Apple SD Gothic Neo","Malgun Gothic",sans-serif;--font-body:"IBM Plex Sans KR","Apple SD Gothic Neo","Malgun Gothic",system-ui,sans-serif;--font-name:"Apple SD Gothic Neo","Malgun Gothic","Noto Sans KR","Nanum Gothic",system-ui,sans-serif;color-scheme:light}body,html{height:100%}[hidden]{display:none!important}body{margin:0;font-size:14px;background:var(--wall);color:var(--ink);font-family:var(--font-body);overflow:hidden;-webkit-tap-highlight-color:transparent}button{font-family:inherit;color:inherit}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}#app{position:relative;height:100%;height:var(--app-height,100dvh);overflow:hidden}#stage{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,textarea:focus-visible{outline:3px solid var(--gold);outline-offset:2px}.tools{position:absolute;z-index:9;top:calc(10px + env(safe-area-inset-top,0px));right:max(16px,env(safe-area-inset-right,0px));display:flex;gap:8px}.icon-btn{width:44px;height:44px;border-radius:12px;border:0;background:rgba(255,253,246,.94);color:var(--ink);display:grid;place-items:center;cursor:pointer;box-shadow:0 2px 0 rgba(30,37,51,.2);padding:0}.icon-btn svg{width:22px;height:22px}.icon-btn:hover{background:#fff}.hud-top{position:absolute;z-index:5;top:calc(10px + env(safe-area-inset-top,0px));left:max(16px,env(safe-area-inset-left,0px));display:flex;align-items:center;gap:8px;max-width:calc(100% - 150px)}.chip-btn{display:flex;align-items:center;gap:4px;height:40px;padding:0 14px 0 10px;border:0;border-radius:999px;background:rgba(255,253,246,.94);box-shadow:0 2px 0 rgba(30,37,51,.2);font:16px var(--font-fun);cursor:pointer}.chip-btn svg{width:18px;height:18px}.chip-btn:hover{background:#fff}.class-chip{margin:0;padding:8px 14px;border-radius:999px;background:rgba(30,37,51,.72);color:#fff;font:15px var(--font-fun);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.class-chip .nm{font-family:var(--font-name);font-weight:700}.hud{position:absolute;z-index:4;left:0;right:0;bottom:0;display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:0 max(16px,env(safe-area-inset-right,0px)) calc(12px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));pointer-events:none}.ticker{margin:0;min-height:22px;max-width:min(660px,62vw);padding:9px 16px;border-radius:12px;background:rgba(255,253,246,.95);box-shadow:0 3px 0 rgba(30,37,51,.2);font:19px var(--font-fun);line-height:1.3;opacity:0;transform:translateY(6px);transition:opacity .25s,transform .25s}.ticker.on{opacity:1;transform:none}#app.is-done .ticker{opacity:0}.ticker .nm{font-family:var(--font-name);font-weight:800;color:var(--red)}.ticker .num{color:var(--red)}.big-stat{margin:0;font:clamp(20px,2.6vw,30px) var(--font-display);color:#fff;text-shadow:0 2px 0 rgba(30,37,51,.55),0 0 2px rgba(30,37,51,.6);white-space:nowrap}.ready-bar{position:absolute;z-index:5;left:50%;bottom:calc(22px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);display:grid;justify-items:center;gap:6px}.go-big{font-size:clamp(22px,3vw,30px)!important;padding:16px 34px!important;white-space:nowrap}.ready-hint{margin:0;padding:3px 10px;border-radius:99px;background:rgba(30,37,51,.6);color:#fff;font-size:12px}.skip-btn{position:absolute;z-index:5;right:max(16px,env(safe-area-inset-right,0px));top:calc(64px + env(safe-area-inset-top,0px));display:flex;align-items:center;gap:6px;height:38px;padding:0 14px;border:0;border-radius:999px;background:rgba(30,37,51,.62);color:#fff;font:15px var(--font-fun);cursor:pointer}.skip-btn svg{width:16px;height:16px}.skip-btn:hover{background:rgba(30,37,51,.8)}.done-bar{position:absolute;z-index:5;left:50%;bottom:calc(14px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:16px;background:rgba(255,253,246,.96);box-shadow:0 4px 0 rgba(30,37,51,.22),0 18px 40px rgba(16,20,32,.25);animation:barIn .3s ease-out both}.done-bar .go{font-size:20px;padding:11px 18px;white-space:nowrap}.done-bar .btn2{font-size:17px;padding:9px 14px;white-space:nowrap}.done-bar .btn2[aria-pressed=true]{background:var(--ink);color:#fff}.done-bar .link{white-space:nowrap}.swap-hint{position:absolute;z-index:5;left:50%;bottom:calc(96px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);margin:0;padding:7px 14px;border-radius:99px;background:var(--ink);color:#fff;font:15px var(--font-fun);white-space:nowrap}@keyframes barIn{from{opacity:0;transform:translate(-50%,16px)}to{opacity:1;transform:translate(-50%,0)}}.scrim{position:absolute;inset:0;z-index:6;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;padding:calc(84px + env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) calc(18px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));background:rgba(30,37,51,.3);-webkit-overflow-scrolling:touch}.badge{position:absolute;top:calc(12px + env(safe-area-inset-top,0px));left:max(16px,env(safe-area-inset-left,0px));display:flex;align-items:center;gap:10px;padding:6px 16px 6px 6px;background:var(--paper);border-radius:999px;box-shadow:0 3px 0 rgba(30,37,51,.22);box-sizing:border-box;max-width:calc(100% - 130px)}.badge-art{display:grid;place-items:center;width:48px;height:48px;flex:none;border-radius:50%;background:#dcebbf;box-shadow:inset 0 0 0 2px #adc580;-webkit-user-select:none;user-select:none}.badge canvas{width:36px;height:36px;image-rendering:pixelated;image-rendering:crisp-edges}.badge b{display:block;font-family:var(--font-display);font-weight:400;font-size:19px;line-height:1.1}.badge small{display:block;font-size:12px;color:var(--ink-soft)}.badge-art.nudge{animation:nudge .45s ease-out}@keyframes nudge{30%{transform:rotate(-10deg) scale(1.06)}65%{transform:rotate(7deg)}100%{transform:none}}.sheet{position:relative;flex:none;box-sizing:border-box;margin:auto 0;width:min(1120px,100%);background:var(--paper);border-radius:6px;box-shadow:0 2px 0 var(--paper-edge),0 24px 48px rgba(16,20,32,.32)}.pin{position:absolute;top:-7px;z-index:2;width:18px;height:18px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ff8a73,#d8432b 55%,#a93119);box-shadow:0 3px 3px rgba(0,0,0,.28)}.pin-l{left:22px}.pin-r{right:22px;background:radial-gradient(circle at 35% 30%,#ffe189,#f4b522 55%,#c48a0c)}.sheet-band{position:relative;overflow:hidden;background:var(--board);color:var(--chalk);padding:15px 40px 13px;text-align:center;border-radius:6px 6px 0 0;border-bottom:7px solid #b07a45}.sheet-band::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 20% 40%,rgba(255,255,255,.07),transparent 55%),radial-gradient(ellipse at 80% 70%,rgba(255,255,255,.05),transparent 50%);pointer-events:none}.sheet-band h1{position:relative;margin:0;font-family:var(--font-display);font-weight:400;font-size:clamp(28px,5vw,38px);line-height:1.1;letter-spacing:.02em;text-shadow:0 0 1px rgba(255,255,255,.4)}.sheet-body{padding:16px 22px 22px;display:grid;gap:14px}.class-panel{min-width:0;border:1.5px solid var(--line-soft);border-radius:7px;background:#f7f3e8}.class-panel summary{display:flex;align-items:center;gap:8px;min-height:40px;padding:0 11px;cursor:pointer;font-weight:700;list-style:none}.class-panel summary::-webkit-details-marker{display:none}.class-panel summary::after{content:"+";margin-left:auto;font:22px var(--font-fun);color:var(--blue-deep)}.class-panel[open] summary::after{content:"−"}.class-summary{max-width:60%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-name);font-size:13px;font-weight:600;color:var(--blue-deep)}.class-editor{display:grid;gap:10px;padding:4px 11px 12px}.class-editor label{display:grid;gap:5px;font-size:13px;font-weight:600}.class-row{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:end}.class-editor input,.class-editor select{box-sizing:border-box;width:100%;min-width:0;height:40px;padding:0 9px;border:1.5px solid var(--line-soft);border-radius:5px;background:#fff;color:var(--ink);font:16px var(--font-name)}.class-actions{display:flex;flex-wrap:wrap;gap:7px}.class-note{margin:0;font-size:12px;line-height:1.45;color:var(--ink-soft)}.class-note.error{color:var(--red)}.mini-btn{min-height:38px;padding:6px 12px;border:1.5px solid var(--ink);border-radius:6px;background:var(--ink);color:#fff;font:15px var(--font-fun);cursor:pointer;white-space:nowrap}.mini-btn:hover{filter:brightness(1.15)}.mini-btn.ghost{background:#fff;color:var(--ink);border-color:var(--line-soft)}.mini-btn.ghost:hover{background:#f3efe4;filter:none}.mini-btn.danger{background:#fff;color:var(--red);border-color:var(--line-soft);margin-left:auto}.mini-btn.gold{background:var(--gold);border-color:#c48a0c;color:var(--ink)}.mini-btn:disabled{opacity:.35;cursor:default;filter:none}.cols{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr) minmax(0,.86fr);gap:18px;align-items:start}.col{display:grid;gap:12px;min-width:0}.col-title{margin:0;font:19px var(--font-fun);display:flex;align-items:center;gap:7px}.col-title::before{content:"";width:6px;height:18px;border-radius:3px;background:var(--board)}.col-layout,.col-rules{padding-left:18px;border-left:1.5px dashed var(--line-soft)}.field{display:grid;gap:8px}.field-label{font-weight:700;font-size:15px}.stepper{display:flex;align-items:center;justify-content:center;gap:14px}.step{width:48px;height:48px;border-radius:50%;border:2.5px solid var(--ink);background:#fff;font-size:28px;font-family:var(--font-display);color:var(--ink);cursor:pointer;display:grid;place-items:center;line-height:1;padding:0}.step:hover{background:#f3efe4}.step:disabled{opacity:.35;cursor:default}.step.sm{width:32px;height:32px;font-size:20px;border-width:2px}.count-wrap{display:flex;align-items:baseline;gap:4px}#count{width:2.3ch;font-family:var(--font-display);font-size:64px;line-height:1;text-align:center;border:0;border-bottom:3px solid var(--ink);background:0 0;color:var(--ink);padding:0;border-radius:0;-moz-appearance:textfield;appearance:textfield;font-variant-numeric:tabular-nums}#count::-webkit-inner-spin-button,#count::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.unit{font-family:var(--font-fun);font-size:22px}#studentNames{box-sizing:border-box;width:100%;min-width:0;min-height:96px;max-height:220px;resize:vertical;padding:9px 11px;border:2px solid var(--line-soft);border-radius:8px;background:#fff;color:var(--ink);font:16px/1.5 var(--font-name)}.help{margin:0;color:var(--ink-soft);font-size:12px;line-height:1.45;overflow-wrap:anywhere;word-break:keep-all}.seg{border:0;padding:0;margin:0;min-width:0}.seg legend{padding:0;margin-bottom:7px;font-weight:700;font-size:14px}.seg-row{display:grid;grid-template-columns:repeat(2,1fr);gap:7px}.seg-3 .seg-row{grid-template-columns:repeat(3,1fr)}.seg input{position:absolute;opacity:0;pointer-events:none}.seg label{display:grid;justify-items:center;align-content:center;gap:1px;min-height:40px;padding:6px 4px;border:2px solid var(--line-soft);border-radius:8px;cursor:pointer;background:#fff;text-align:center;word-break:keep-all}.seg label b{font-family:var(--font-fun);font-weight:400;font-size:17px;line-height:1.15}.seg label small{font-size:11px;color:var(--ink-soft);line-height:1.2}.seg input:checked+label{border-color:var(--ink);background:var(--ink);color:#fff}.seg input:checked+label small{color:#d7dbe4}.seg input:focus-visible+label{outline:3px solid var(--gold);outline-offset:2px}.seg-3 label b{font-size:15px}.roster-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.roster-count{font:15px var(--font-fun);color:var(--blue-deep)}.roster-count .warn{color:var(--red)}.tap-mode{display:flex;border:1.5px solid var(--line-soft);border-radius:8px;overflow:hidden}.tap-mode button{min-height:32px;padding:3px 10px;border:0;background:#fff;font:14px var(--font-fun);cursor:pointer}.tap-mode button+button{border-left:1.5px solid var(--line-soft)}.tap-mode button[aria-pressed=true]{background:var(--ink);color:#fff}.roster{display:grid;grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:5px;max-height:216px;overflow-y:auto;overscroll-behavior:contain;padding:2px;scrollbar-width:thin}.roster.names{grid-template-columns:repeat(auto-fill,minmax(84px,1fr))}.rchip{position:relative;display:flex;align-items:center;justify-content:center;gap:3px;min-height:34px;padding:3px 4px;border:1.5px solid var(--line-soft);border-radius:7px;background:#fff;font:16px var(--font-display);cursor:pointer;min-width:0;line-height:1.1}.roster.names .rchip{font:700 14px var(--font-name);justify-content:flex-start;padding-left:6px}.rchip .rn{font:10px var(--font-body);color:var(--ink-soft);flex:none}.rchip .rl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.rchip .rg{position:absolute;top:-6px;right:-5px;min-width:16px;height:16px;border-radius:8px;font:11px/16px var(--font-fun);color:#fff;text-align:center;padding:0 2px;box-sizing:border-box}.rchip.m{border-color:#9ab7ea;background:var(--boy-soft)}.rchip.m .rg{background:var(--boy)}.rchip.f{border-color:#eba6ba;background:var(--girl-soft)}.rchip.f .rg{background:var(--girl)}.rchip.absent{opacity:.45;background:repeating-linear-gradient(-45deg,#f1ece0 0 5px,#e7e0cf 5px 10px);border-style:dashed}.rchip.absent .rl{text-decoration:line-through}.rchip:hover{border-color:var(--ink)}.gender-quick{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 10px;border-radius:8px;background:var(--boy-soft);font:14px var(--font-fun)}.gender-quick input{width:46px;height:32px;box-sizing:border-box;border:1.5px solid #9ab7ea;border-radius:6px;text-align:center;font:16px var(--font-display);background:#fff;color:var(--ink)}.gender-quick .mini-btn{min-height:32px;padding:3px 10px;font-size:14px}.link{background:0 0;border:0;font:inherit;font-size:15px;font-weight:600;color:var(--blue-deep);text-decoration:underline;text-underline-offset:3px;cursor:pointer;padding:6px}.link.small{font-size:12px;padding:2px 4px}.preview{position:relative;display:block;width:100%;padding:0;border:2px solid var(--line-soft);border-radius:10px;background:#efe3c8;cursor:pointer;overflow:hidden;aspect-ratio:16/9}.preview:hover{border-color:var(--ink)}.preview canvas{display:block;width:100%;height:100%}.seat-badge{position:absolute;right:8px;bottom:8px;padding:4px 9px;border-radius:99px;background:rgba(30,37,51,.82);color:#fff;font:14px var(--font-fun)}.seat-badge.bad{background:var(--red)}.preset-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.preset{display:grid;justify-items:center;gap:3px;padding:6px 3px 5px;border:1.5px solid var(--line-soft);border-radius:8px;background:#fff;cursor:pointer;font:13px var(--font-fun);line-height:1.1;min-width:0}.preset svg{width:100%;max-width:64px;height:30px}.preset:hover{border-color:var(--ink)}.preset[aria-pressed=true]{border-color:var(--board);background:#e7f1ec;box-shadow:inset 0 0 0 1.5px var(--board)}.preset-grid.compact .preset{font-size:12px}.layout-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}.btn2{display:inline-flex;align-items:center;justify-content:center;gap:6px;font-family:var(--font-fun);font-size:19px;padding:12px;border:2.5px solid var(--ink);border-radius:10px;background:#fff;color:var(--ink);cursor:pointer}.btn2:hover{background:#f3efe4}.btn2.small{font-size:16px;padding:8px 8px;border-width:2px}.btn2 svg{width:17px;height:17px;flex:none}.switch-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 10px;border:1.5px solid var(--line-soft);border-radius:8px;background:#fff;cursor:pointer}.switch-row>span{display:grid;gap:1px;min-width:0}.switch-row b{font:16px var(--font-fun);font-weight:400}.switch-row small{font-size:11.5px;color:var(--ink-soft);line-height:1.3;word-break:keep-all}.switch-row input{position:absolute;opacity:0;pointer-events:none}.switch-row i{position:relative;flex:none;width:44px;height:26px;border-radius:13px;background:#cfc7b4;transition:background .18s}.switch-row i::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.3);transition:transform .18s}.switch-row input:checked+i{background:var(--board)}.switch-row input:checked+i::after{transform:translateX(18px)}.switch-row input:focus-visible+i{outline:3px solid var(--gold);outline-offset:2px}.gender-rules{display:grid;gap:10px;padding:10px;border-radius:9px;background:#f4efe2}.go{font-family:var(--font-display);font-weight:400;font-size:24px;padding:14px;border:0;border-radius:10px;background:var(--red);color:#fff;cursor:pointer;box-shadow:0 4px 0 var(--red-deep)}.go:hover{filter:brightness(1.05)}.go:active{transform:translateY(2px);box-shadow:0 2px 0 var(--red-deep)}.go:disabled{background:#b9b2a3;box-shadow:none;cursor:not-allowed;filter:none;transform:none}.go.small{font-size:19px;padding:10px 18px}.err{margin:0;color:var(--red);font-size:14px;font-weight:600;line-height:1.4;word-break:keep-all}.err .link{font-size:14px;padding:0 2px;color:var(--red)}.modal{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;box-sizing:border-box;padding:max(14px,env(safe-area-inset-top,0px)) max(14px,env(safe-area-inset-right,0px)) max(14px,env(safe-area-inset-bottom,0px)) max(14px,env(safe-area-inset-left,0px));background:rgba(20,25,38,.5);overflow-y:auto}.modal-card{position:relative;box-sizing:border-box;width:min(1040px,100%);max-height:100%;display:flex;flex-direction:column;background:var(--paper);border-radius:10px;box-shadow:0 2px 0 var(--paper-edge),0 24px 48px rgba(16,20,32,.4);overflow:hidden;animation:cardIn .24s ease-out both}@keyframes cardIn{from{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:none}}.modal-band{position:relative;padding:13px 54px;text-align:center;flex:none}.modal-band h2{margin:0;font:400 clamp(22px,3.4vw,30px)/1.15 var(--font-display)}.board-band{background:var(--board);color:var(--chalk);border-bottom:6px solid #b07a45}.close-x{position:absolute;top:50%;right:12px;transform:translateY(-50%);width:40px;height:40px;border:0;border-radius:50%;background:rgba(255,255,255,.16);color:inherit;font:28px/1 var(--font-body);cursor:pointer}.close-x:hover{background:rgba(255,255,255,.28)}.chart-band .close-x{background:rgba(30,37,51,.1)}.modal-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 16px;border-top:1.5px solid var(--paper-edge);flex:none}.editor-body{display:grid;grid-template-columns:220px minmax(0,1fr);gap:16px;padding:14px 16px;min-height:0;overflow:auto}.editor-side{display:grid;align-content:start;gap:8px}.side-label{margin:4px 0 0;font:15px var(--font-fun);color:var(--ink-soft)}.brushes{display:grid;gap:5px}.brushes button{display:flex;align-items:center;gap:8px;min-height:38px;padding:4px 10px;border:1.5px solid var(--line-soft);border-radius:8px;background:#fff;font:15px var(--font-fun);cursor:pointer;text-align:left}.brushes button[aria-pressed=true]{border-color:var(--ink);background:var(--ink);color:#fff}.bi{display:grid;place-items:center;width:22px;height:22px;flex:none;border-radius:5px;font:13px var(--font-fun);font-style:normal}.bi-desk{background:var(--wood);box-shadow:inset 0 -4px 0 var(--wood-deep)}.bi-turn{background:#dfe8e3;position:relative}.bi-turn::after{content:"↻";color:var(--board);font:17px var(--font-body)}.bi-m{background:var(--boy);color:#fff}.bi-f{background:var(--girl);color:#fff}.bi-a{background:#e9e3d4;color:var(--ink)}.size-row{display:grid;grid-template-columns:28px 32px 1fr 32px;align-items:center;gap:8px;font:15px var(--font-fun)}.size-row b{text-align:center;font:22px var(--font-display);font-weight:400}.editor-main{display:grid;align-content:start;gap:10px;min-width:0}.editor-front{position:relative;display:flex;justify-content:center;align-items:flex-start;height:38px}.ef-board{width:min(60%,420px);height:24px;display:grid;place-items:center;border-radius:4px;background:var(--board);color:var(--chalk);font:14px var(--font-fun);box-shadow:0 4px 0 #b07a45}.ef-desk{position:absolute;top:24px;left:50%;transform:translateX(-50%);padding:1px 12px;border-radius:4px;background:var(--wood);font:12px var(--font-fun);box-shadow:0 2px 0 var(--wood-deep)}.edit-grid{--cell:48px;display:grid;justify-content:center;gap:4px;padding:10px;border-radius:10px;background:#ead8b7;touch-action:none;-webkit-user-select:none;user-select:none;overflow:auto}.ecell{position:relative;width:var(--cell);height:var(--cell);border:1.5px dashed rgba(120,90,50,.28);border-radius:6px;background:rgba(255,255,255,.18);padding:0;cursor:pointer}.ecell:hover{background:rgba(255,255,255,.5)}.ecell.seat{border:0;background:0 0}.ecell.seat::before{content:"";position:absolute;left:8%;right:8%;top:6%;height:48%;border-radius:4px;background:var(--wood);box-shadow:inset 0 -5px 0 var(--wood-deep)}.ecell.seat::after{content:"";position:absolute;left:28%;right:28%;top:62%;height:28%;border-radius:4px;background:#6c9cc4;box-shadow:inset 0 -4px 0 #4d7aa1}.ecell.seat.f-d::before{top:46%}.ecell.seat.f-d::after{top:10%}.ecell.seat.f-l::before{left:6%;right:auto;width:48%;top:8%;height:84%}.ecell.seat.f-l::after{left:62%;right:auto;width:28%;top:28%;height:44%}.ecell.seat.f-r::before{right:6%;left:auto;width:48%;top:8%;height:84%}.ecell.seat.f-r::after{right:62%;left:auto;width:28%;top:28%;height:44%}.ecell.seat.g-m::after{background:var(--boy);box-shadow:inset 0 -4px 0 #1f4fa3}.ecell.seat.g-f::after{background:var(--girl);box-shadow:inset 0 -4px 0 #a52c50}.ecell .gtag{position:absolute;z-index:1;left:50%;top:50%;transform:translate(-50%,-50%);font:12px var(--font-fun);color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.5);pointer-events:none}.editor-tip{margin:0;font-size:12px;color:var(--ink-soft);line-height:1.45;word-break:keep-all}.editor-status{font:16px var(--font-fun);word-break:keep-all}.modal-foot .go{flex:none;white-space:nowrap}.editor-status .bad{color:var(--red)}.editor-status .ok{color:var(--board)}.secret-card{width:min(860px,100%);background:var(--note);border:3px solid var(--leather);box-shadow:0 0 0 6px var(--leather-deep),0 30px 60px rgba(0,0,0,.5)}.secret-band{position:relative;flex:none;padding:14px 56px 12px;background:linear-gradient(180deg,#5a3a24,var(--leather));color:#f6e3b4;text-align:center;border-bottom:2px dashed rgba(246,227,180,.4)}.secret-band h2{margin:0;font:400 clamp(22px,3.4vw,30px)/1.15 var(--font-display);letter-spacing:.03em}.secret-band p{margin:3px 0 0;font-size:12.5px;opacity:.82}.close-x.light{color:#f6e3b4}.secret-tabs{display:flex;gap:4px;padding:10px 12px 0;flex:none;overflow-x:auto;background:#efe6cc}.secret-tabs button{flex:1 0 auto;display:flex;align-items:center;justify-content:center;gap:5px;min-height:40px;padding:4px 12px;border:0;border-radius:9px 9px 0 0;background:#e0d3b0;color:#5b4630;font:16px var(--font-fun);cursor:pointer}.secret-tabs button[aria-selected=true]{background:var(--note);color:var(--ink)}.secret-tabs em{font-style:normal;min-width:18px;height:18px;padding:0 4px;box-sizing:border-box;border-radius:9px;background:var(--leather);color:#f6e3b4;font:12px/18px var(--font-fun)}.secret-tabs em:empty{display:none}.secret-body{padding:12px 16px;overflow-y:auto;min-height:0;flex:1}.secret-pane{display:grid;gap:10px}.pane-tip{margin:0;font-size:13.5px;line-height:1.5;color:#4b3b2a;word-break:keep-all}.secret-roster{display:grid;grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:5px;max-height:220px;overflow-y:auto;padding:2px}.secret-roster.names{grid-template-columns:repeat(auto-fill,minmax(84px,1fr))}.schip{position:relative;display:flex;align-items:center;justify-content:center;gap:3px;min-height:34px;padding:3px 4px;border:1.5px solid #d9cba5;border-radius:7px;background:#fff;font:16px var(--font-display);cursor:pointer;min-width:0}.secret-roster.names .schip{font:700 14px var(--font-name)}.schip .rl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.schip.on{background:var(--leather);border-color:var(--leather);color:#f6e3b4}.schip.pick{background:var(--gold);border-color:#c48a0c;color:var(--ink);box-shadow:0 0 0 2px #fff,0 0 0 4px #c48a0c}.schip.used::after{content:"";position:absolute;top:3px;right:3px;width:7px;height:7px;border-radius:50%;background:#c0623a}.schip.away{opacity:.4}.rule-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}.rule-list:empty::before{content:attr(data-empty);font-size:13px;color:#8a7a62}.rule-list li{display:flex;align-items:center;gap:6px;padding:4px 4px 4px 10px;border-radius:99px;background:#fff;border:1.5px solid #d9cba5;font:15px var(--font-fun)}.rule-list li .nm{font-family:var(--font-name);font-weight:700}.rule-list li .sep{color:#c0623a}.rule-list li.bad{border-color:var(--red);background:#fdecea}.rule-list li button{width:26px;height:26px;border:0;border-radius:50%;background:#efe6cc;font:16px/1 var(--font-body);cursor:pointer;color:#5b4630}.rule-list li button:hover{background:#e0d3b0}.pane-actions{display:flex;align-items:center;gap:10px}.seg.dark input:checked+label{background:var(--leather);border-color:var(--leather)}.seg.dark label{border-color:#d9cba5}.fixed-map{--cell:40px;display:grid;justify-content:center;gap:4px;padding:10px;border-radius:10px;background:#ead8b7;overflow:auto}.fcell{width:var(--cell);height:var(--cell);border-radius:5px;padding:0;border:0;background:0 0}.fcell.seat{position:relative;background:var(--wood);box-shadow:inset 0 -5px 0 var(--wood-deep);cursor:pointer;font:700 11px/1.1 var(--font-name);color:var(--ink);overflow:hidden;display:grid;place-items:center}.fcell.seat:hover{outline:2px solid var(--leather)}.fcell.seat.sel{outline:3px solid var(--gold);outline-offset:1px}.fcell.seat.has{background:var(--leather);color:#f6e3b4;box-shadow:inset 0 -5px 0 var(--leather-deep)}.fcell.seat.num{font:15px var(--font-display)}.check-card,.signal-card{display:grid;gap:8px;padding:12px 14px;border-radius:10px;background:#fff;border:1.5px solid #e3d6b3}.signal-card h3{margin:0;font:400 18px var(--font-fun)}.signal-card ol{margin:0;padding-left:20px;display:grid;gap:5px;font-size:14px;line-height:1.5}.signal-card p{margin:0;font-size:13.5px;line-height:1.55;color:#4b3b2a;word-break:keep-all}.signal-card .muted{color:#8a7a62;font-size:12.5px}kbd{display:inline-block;min-width:22px;padding:1px 7px;border:1.5px solid #b9a77f;border-bottom-width:3px;border-radius:6px;background:#fff;font:15px var(--font-display);text-align:center}kbd.listening{background:var(--gold);animation:blink 1s steps(2) infinite}@keyframes blink{50%{opacity:.4}}.check-card{grid-template-columns:auto 1fr;align-items:center}.check-result{margin:0;font-size:13.5px;line-height:1.5;word-break:keep-all}.check-result.ok{color:#2d6b3e}.check-result.bad{color:var(--red)}.secret-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 16px;background:#efe6cc;flex:none}.secret-warn{margin:0;font-size:12px;color:#7a5a3a}.chart-card{width:min(1180px,100%)}.chart-band{background:var(--gold);color:var(--ink)}.eyebrow{margin:0 0 2px;font:15px var(--font-fun);letter-spacing:.04em;opacity:.85}.eyebrow .nm{font-family:var(--font-name);font-weight:700}.chart-body{display:grid;gap:12px;padding:14px 18px 18px;overflow:auto;min-height:0}.chart-view{justify-self:center;display:flex;border:1.5px solid var(--line-soft);border-radius:8px;overflow:hidden}.chart-view button{min-height:34px;padding:3px 14px;border:0;background:#fff;font:15px var(--font-fun);cursor:pointer}.chart-view button+button{border-left:1.5px solid var(--line-soft)}.chart-view button[aria-pressed=true]{background:var(--ink);color:#fff}.chart-wrap{display:grid;grid-template-columns:minmax(0,1fr);justify-items:stretch;gap:10px;overflow:auto;padding:4px}.chart-front{display:grid;justify-items:center;gap:6px}.chart-front .cb{box-sizing:border-box;max-width:100%;min-width:min(420px,70vw);padding:5px 20px;border-radius:5px;background:var(--board);color:var(--chalk);font:16px var(--font-fun);text-align:center;box-shadow:0 4px 0 #b07a45}.chart-front .cd{padding:2px 14px;border-radius:4px;background:var(--wood);font:13px var(--font-fun);box-shadow:0 2px 0 var(--wood-deep)}.chart-front.flip .cd{order:-1}.chart-grid{display:grid;gap:5px;justify-self:start;width:100%;box-sizing:border-box}.cc{min-width:0}.cc.seat{display:grid;place-items:center;padding:4px 3px;min-height:44px;border-radius:7px;background:#f6ecd7;border:1.5px solid #dcc79f;box-shadow:inset 0 -4px 0 #e2cfa7;text-align:center}.cc.seat b{font:700 clamp(13px,1.6vw,19px)/1.15 var(--font-name);word-break:keep-all;overflow-wrap:anywhere}.cc.seat b.num{font:400 clamp(18px,2.2vw,26px)/1 var(--font-display)}.cc.seat.empty{background:0 0;border-style:dashed;box-shadow:none}.cc.seat.empty b{color:#b3a585;font:12px var(--font-fun)}.cc.seat.m{background:#edf3fd;border-color:#b6cbf0;box-shadow:inset 0 -4px 0 #d3e0f7}.cc.seat.f{background:#fcedf2;border-color:#efbccb;box-shadow:inset 0 -4px 0 #f5d4de}.chart-actions{display:flex;justify-content:center;flex-wrap:wrap;gap:8px}.copy-btn{display:flex;align-items:center;justify-content:center;gap:7px;min-height:40px;padding:6px 14px;border:1.5px solid #9daecb;border-radius:7px;background:#f0f4fb;color:var(--blue-deep);font:17px var(--font-fun);cursor:pointer}.copy-btn svg{width:18px;height:18px;flex:none}.copy-btn:hover{background:#e3ebf8}.copy-note{margin:0;text-align:center;color:var(--blue-deep);font-size:13px}.copy-manual{display:grid;gap:8px;padding:10px;border:1px solid var(--line-soft);border-radius:6px;background:#f7f3e8;font-size:13px}.copy-manual textarea{box-sizing:border-box;width:100%;resize:vertical;border:1px solid var(--line-soft);border-radius:4px;padding:8px;font:14px/1.5 var(--font-name);color:var(--ink);background:#fff}.toast{position:absolute;z-index:20;left:50%;top:calc(70px + env(safe-area-inset-top,0px));transform:translateX(-50%);padding:9px 16px;border-radius:10px;background:var(--ink);color:#fff;font:15px var(--font-fun);box-shadow:0 8px 20px rgba(0,0,0,.25);animation:toastIn .2s ease-out both;max-width:calc(100% - 40px);text-align:center}@keyframes toastIn{from{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%,0)}}.print-area{display:none}.usage-note{margin:0;padding:0 16px 12px;text-align:center;font:12px/1.5 var(--font-name);color:var(--ink-soft);font-variant-numeric:tabular-nums}@media (max-width:1040px){.cols{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.col-rules{grid-column:1/-1;padding-left:0;border-left:0;padding-top:14px;border-top:1.5px dashed var(--line-soft);grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.col-rules .col-title,.col-rules .err,.col-rules .go{grid-column:1/-1}}@media (max-width:700px){.chart-grid{--chart-seat-min:clamp(27px,8.7vw,58px);--chart-aisle-min:8px;column-gap:4px}.cols{grid-template-columns:minmax(0,1fr)}.col-layout{padding-left:0;border-left:0;padding-top:14px;border-top:1.5px dashed var(--line-soft)}.col-rules{grid-template-columns:minmax(0,1fr)}.sheet-body{padding:14px 14px 18px}.editor-body{grid-template-columns:minmax(0,1fr)}.editor-side{grid-template-columns:1fr 1fr}.editor-side .brushes,.editor-side .preset-grid,.editor-side .side-label{grid-column:1/-1}.brushes{grid-template-columns:1fr 1fr}.done-bar{flex-wrap:wrap;justify-content:center;width:calc(100% - 32px);box-sizing:border-box}.ticker{font-size:16px;max-width:calc(100vw - 32px)}.big-stat{display:none}.check-card{grid-template-columns:1fr}}@media (max-width:420px){.scrim{padding-top:calc(76px + env(safe-area-inset-top,0px))}.badge{padding-right:12px}#count{font-size:54px}}@media (max-height:560px){.ready-bar{bottom:12px}.go-big{padding:11px 26px!important}}@media (min-width:701px) and (max-height:820px){.scrim{padding-top:calc(74px + env(safe-area-inset-top,0px));padding-bottom:10px}.sheet-band{padding:10px 40px 8px;border-bottom-width:6px}.sheet-band h1{font-size:32px}.sheet-body{padding:12px 20px 16px;gap:10px}.class-panel summary{min-height:36px}.col{gap:9px}.col-title{font-size:18px}#count{font-size:52px}.step{width:42px;height:42px;font-size:24px}.roster{max-height:178px}.rchip{min-height:31px}.preview{aspect-ratio:2/1}.preset{padding:4px 3px 3px}.preset svg{height:24px}.btn2.small{padding:6px 8px}.switch-row{padding:5px 10px}.seg label{min-height:36px;padding:4px}.go{padding:11px}}@media (prefers-reduced-motion:reduce){*,::after,::before{animation-duration:NaNs!important;transition-duration:NaNs!important}}@media print{@page{size:A4 landscape;margin:12mm}body,html{height:auto;overflow:visible;background:#fff}#app{height:auto;overflow:visible}#app>:not(#printArea){display:none!important}.print-area{display:block!important}.print-area h1{margin:0 0 4mm;font:400 22pt var(--font-display);text-align:center}.print-area h1 .nm{font-family:var(--font-name);font-weight:800}.print-area .pdate{margin:0 0 6mm;text-align:center;font-size:11pt;color:#555}.print-area .chart-grid{gap:1.5mm;width:100%;grid-template-columns:repeat(var(--print-columns),minmax(0,1fr))!important}.print-area .cc.seat{min-height:var(--print-seat-height,16mm);box-sizing:border-box;padding:1mm;box-shadow:none;border:1.2pt solid #9c8a64;background:#fff}.print-area .cc.seat.empty{border:1pt dashed #bbb}.print-area .cc.seat b{font-size:clamp(8pt,1.4vw,14pt);overflow-wrap:anywhere;word-break:break-all}.print-area .cc.seat b.num{font-size:18pt}.print-area .chart-front .cb{box-shadow:none;border:1.2pt solid #333;background:#fff;color:#000}.print-area .chart-front .cd{box-shadow:none;border:1pt solid #333;background:#fff}}