@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap');
:root{color-scheme:dark;--bg:#201e20;--surface:#292629;--inset:#19191d;--line:#454044;--ink:#ede4d4;--muted:#aaa0a0;--accent:#dba578;--red:#be716e;--yellow:#c7a869;--green:#779c87;--blue:#6d93aa;--radius:12px;font-family:'DM Sans',sans-serif;font-size:16px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);min-height:100vh}button,input,select{font:inherit}button{cursor:pointer;color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:4px}button{border:1px solid var(--line);background:transparent;border-radius:7px;padding:10px 14px;transition:background .15s,border-color .15s}button:hover{background:#ffffff09;border-color:#766361}button:disabled{opacity:.4;cursor:not-allowed}a{color:inherit}.topbar{height:88px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 4vw;gap:30px}.wordmark{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:40px;letter-spacing:-3px;text-decoration:none}.brand-dot{color:var(--accent)}nav{display:flex;gap:32px;height:100%;align-items:center}.nav-button{border:0;border-radius:0;color:var(--muted);height:100%;padding:4px 0;position:relative;font-size:14px;font-weight:600}.nav-button.active{color:var(--ink)}.nav-button.active:after{content:'';position:absolute;bottom:-1px;height:3px;left:0;right:0;background:var(--accent)}.icon-button{width:40px;height:40px;padding:0;font-size:20px}main{max-width:1440px;margin:auto;padding:34px 4vw 24px}.room-heading{display:flex;align-items:end;justify-content:space-between;gap:24px;margin-bottom:28px}.eyebrow{font:600 12px 'Space Grotesk',sans-serif;letter-spacing:2px;color:var(--accent);margin:0 0 13px}h1,h2,h3{font-family:'Space Grotesk',sans-serif;letter-spacing:-1px}h1{font-size:32px;margin:0;font-weight:500}h2{font-size:27px;margin:0 0 16px;font-weight:500}h3{font-size:20px;margin:0 0 8px}.local-label{font:500 12px 'Space Grotesk',sans-serif;letter-spacing:1px;color:var(--muted);padding-bottom:7px}.local-label span{color:var(--accent);padding:0 12px}.room-grid{display:grid;grid-template-columns:230px minmax(450px,1fr) 210px;gap:22px;align-items:start}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:24px}.muted{color:var(--muted);font-size:14px;line-height:1.65}.divider{height:1px;background:var(--line);margin:24px 0}.primary{background:var(--accent);border-color:var(--accent);color:#251e1d;font-weight:700;display:flex;justify-content:space-between;align-items:center;gap:18px;width:100%;margin-top:24px;padding:14px 16px}.primary:hover{background:#e8b78f;border-color:#e8b78f}.tag{display:inline-block;font-size:11px;letter-spacing:1px;border:1px solid var(--line);color:var(--muted);padding:3px 6px;border-radius:4px;vertical-align:middle}.table-surface{background:radial-gradient(ellipse at 50% 0,#3d3336,transparent 65%),#272327;border:1px solid #4e4245;border-radius:16px;padding:24px 26px 16px;box-shadow:0 15px 35px #0002}.table-label{display:flex;justify-content:space-between;font:500 12px 'Space Grotesk',sans-serif;letter-spacing:1.5px;color:#c3b2a7;margin-bottom:20px}.preview-boards{display:flex;align-items:center;justify-content:center;gap:18px}.empty-board{width:42%;aspect-ratio:6/13;background-color:#19191d;background-image:linear-gradient(#ffffff06 1px,transparent 1px),linear-gradient(90deg,#ffffff06 1px,transparent 1px);background-size:16.666% 7.692%;border:5px solid #514545;outline:1px solid #756060;box-shadow:0 0 0 5px #211e22;border-radius:3px;position:relative}.spawn-marker{position:absolute;left:53%;top:6px;color:var(--accent)}.versus{font:italic 22px Georgia,serif;color:#9c837e}.table-foot{text-align:center;color:var(--muted);font-size:13px;margin:22px 0 0}.field-notes{background:transparent;border:0;padding:18px 8px}.field-notes h2{font-size:29px;line-height:1.22}.footer{padding:18px 4vw 24px;display:flex;justify-content:space-between;gap:15px;color:#8f8486;font:500 11px 'Space Grotesk',sans-serif;letter-spacing:1px}.pattern-preview{display:grid;grid-template-columns:repeat(6,1fr);gap:3px}.pattern-cell{aspect-ratio:1;border-radius:2px;background:var(--red);box-shadow:inset 0 2px #ffffff18,inset 0 -2px #0002}dialog{background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:16px;padding:28px;max-width:560px;width:calc(100% - 32px);max-height:90vh}dialog::backdrop{background:#0a080bbd;backdrop-filter:blur(5px)}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:12px 20px;border-radius:7px;font-size:14px;opacity:0;pointer-events:none;z-index:20}#toast.visible{opacity:1}@media(min-width:1450px){main{padding-top:45px}.room-grid{grid-template-columns:250px minmax(450px,1fr) 230px}}@media(max-width:1050px){.room-grid{grid-template-columns:210px 1fr}.field-notes{display:none}}@media(max-width:720px){.topbar{height:74px;gap:16px;padding:0 20px}.wordmark{font-size:32px}nav{gap:17px}.nav-button{font-size:12px}main{padding:25px 18px}.room-heading{align-items:start}.room-heading h1{font-size:25px}.local-label{display:none}.room-grid{grid-template-columns:1fr}.loadout{order:2}.table-surface{padding:20px}.footer{font-size:10px}.footer>span:last-child{display:none}.room-heading{margin-bottom:24px}}
/* The table, pieces and controls share the same restrained cabinet palette. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}input,select{color:var(--ink);background:#211f23;border:1px solid var(--line);border-radius:6px;padding:10px;min-width:0}input[type=checkbox]{accent-color:var(--accent);width:16px;height:16px;margin:0}input[type=range]{accent-color:var(--accent);padding:0}.title-select{width:100%;font:500 25px 'Space Grotesk',sans-serif;margin:-2px 0 18px;padding:4px 16px 6px 0;border:0;background:transparent;letter-spacing:-1px}.title-select option{background:#292629}.text-button{border:0;color:var(--accent);padding:7px 0;font-size:13px;display:block;text-align:left}.secondary{background:#ffffff03;border-color:#655451}.full{width:100%;margin-top:10px}.pattern-preview.small{max-width:154px}.loadout{padding:20px}.loadout .divider{margin:17px 0}.loadout .muted{margin:12px 0 3px;font-size:13px}.loadout .primary{margin-top:17px}.opponents{display:grid;gap:6px}.opponent{display:flex;align-items:center;gap:9px;width:100%;padding:9px 8px;text-align:left;border-color:transparent}.opponent.selected{background:#dba5780c;border-color:#80614e}.opponent-initial{border:1px solid #635053;background:#3d3237;border-radius:7px;width:29px;height:32px;display:grid;place-items:center;font:500 15px 'Space Grotesk',sans-serif;color:var(--accent)}.opponent strong{font-size:14px;font-weight:500}.opponent small{display:block;font-size:11px;color:var(--muted);margin-top:2px}.opponent .record{margin-left:auto;color:var(--muted);font-size:11px;font-variant-numeric:tabular-nums}.boards{display:flex;align-items:start;justify-content:space-between;gap:30px}.board-wrap{width:calc(50% - 15px);max-width:260px;min-width:0}.board-header{display:flex;justify-content:space-between;align-items:center;margin:0 0 12px;gap:6px}.board-header strong{font:600 19px 'Space Grotesk',sans-serif;letter-spacing:-.5px}.board-header>div>span{display:block;font-size:10px;line-height:1.5;color:var(--muted);margin-top:3px}.next-piece{width:56px;flex-shrink:0}.next-piece span{font:500 9px 'Space Grotesk',sans-serif;letter-spacing:1px}.next-piece canvas{display:block;width:56px;height:30px}.board-frame{border:4px solid #5c494b;outline:1px solid #816766;box-shadow:0 0 0 5px #211e22,0 8px 20px #0003;border-radius:3px;position:relative;background:#19191e;overflow:hidden}.board{display:block;width:100%;height:auto;aspect-ratio:6/13}.board-bottom{display:flex;justify-content:space-between;gap:6px;color:var(--muted);font-size:10px;margin-top:13px;font-variant-numeric:tabular-nums}.incoming.hot{color:var(--accent)}.table-surface{position:relative;padding:21px 25px 16px}.table-label{font-size:10px;letter-spacing:1.3px;align-items:center}.switch{display:flex;align-items:center;gap:8px;font:400 12px 'DM Sans',sans-serif;letter-spacing:0;color:var(--muted)}.boards.single{justify-content:center}.boards.single #wrap-1{display:none}.boards.single #wrap-0{width:min(100%,260px)}.record-numbers{display:grid;grid-template-columns:1fr 1fr;gap:19px}.record-numbers div:last-child{grid-column:1/-1}.record-numbers b{display:block;font:500 30px 'Space Grotesk',sans-serif}.record-numbers span{display:block;color:var(--muted);font:500 10px 'Space Grotesk',sans-serif;letter-spacing:1px;margin-top:4px}.fine-print{color:var(--muted);font-size:12px;line-height:1.6}.control-guide{display:flex;justify-content:center;gap:28px;margin:24px auto 0;color:var(--muted);font-size:12px}.control-guide>span{display:flex;align-items:center;gap:5px}kbd{background:#2b282d;border:1px solid #544b51;border-bottom:3px solid #544b51;border-radius:4px;color:#d5c7ba;min-width:25px;height:25px;padding:2px 5px;font:12px 'DM Sans',sans-serif;text-align:center;display:inline-grid;place-items:center}.board-banner{position:absolute;top:38%;left:0;right:0;opacity:0;background:#30272ddf;padding:12px 4px;color:var(--accent);font:600 21px 'Space Grotesk',sans-serif;text-align:center;pointer-events:none;transition:opacity .15s}.board-banner.active{opacity:1}.board-banner.preview-note{font:italic 18px Georgia,serif;color:#ad9286;opacity:1;background:none;padding:8px 14px;top:27%}.match-tools{display:flex;align-items:center;gap:12px}.match-tools button{font-size:13px;padding:8px 12px}.match-tools>span{font:400 25px 'Space Grotesk',sans-serif;font-variant-numeric:tabular-nums;margin-right:12px}.stat-list{display:grid;gap:17px;font-size:13px}.stat-list>div{display:flex;justify-content:space-between;gap:8px}.stat-list span{color:var(--muted)}.stat-list strong{font-family:'Space Grotesk',sans-serif}.match-loadout h2{font-size:25px}.match-loadout .text-button{margin-top:12px}.exchange-entry{border-bottom:1px solid #ffffff08;padding:10px 0}.exchange-entry:first-child{padding-top:0}.exchange-entry>span{font:600 10px 'Space Grotesk',sans-serif;letter-spacing:1px;color:#c4a28a}.exchange-entry p{font-size:12px;line-height:1.5;margin:5px 0 0;color:var(--muted)}.match-notes{padding-top:12px}.match-notes .divider{margin:19px 0}.game-overlay{display:none;position:absolute;inset:49px 14px 40px;background:#1e1a20b8;backdrop-filter:blur(3px);z-index:3;border-radius:8px;place-items:center}.game-overlay.shown{display:grid}.pause-card{width:min(310px,90%);padding:26px;background:#2d282d;border:1px solid #786052;border-radius:12px;box-shadow:0 16px 50px #0006}.pause-card h2{font-size:27px;line-height:1.15}.pause-card .eyebrow{font-size:10px}.pause-card .muted{font-size:13px}.count-in{font:600 80px 'Space Grotesk',sans-serif;color:var(--accent)}.touch-controls{display:none;gap:8px;justify-content:center;margin:18px auto 0;touch-action:none}.touch-controls button{min-height:46px;min-width:45px;background:#302b30;font-size:20px}.touch-controls button:last-child{font-size:14px;background:var(--accent);color:var(--bg);font-weight:700}.impact{animation:impact .23s ease-out}@keyframes impact{20%{transform:translateY(5px)}50%{transform:translateY(-2px)}80%{transform:translateY(1px)}}.button-row{display:flex;gap:10px;align-items:center}.button-row .primary{margin-top:0;width:auto;flex:1}.button-row .secondary{flex:1}.danger{background:#5a3234}.modal-close{position:absolute;top:16px;right:16px;border:0}.key-bindings{display:grid;gap:10px}.key-bindings>div{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:14px}.key-button{min-width:70px;padding:8px 12px;color:var(--accent)}.setting-row{display:flex;justify-content:space-between;align-items:center;gap:15px;font-size:14px;margin:17px 0}.settings-tabs,.segmented{display:flex;gap:5px}.settings-tabs{margin:18px 0}.selected{border-color:var(--accent);color:var(--ink);background:#dba5780a}.field-label{display:flex;flex-direction:column;gap:9px;font-size:13px;color:var(--muted);margin-bottom:18px}.field-label input,.field-label select{width:100%}.range-row{display:flex;align-items:center;gap:15px}.range-row input{flex:1}.range-row output{min-width:63px;text-align:right;font:13px 'Space Grotesk',sans-serif}.help-list{padding-left:20px}.help-list li{padding:5px 0 9px;font-size:14px;line-height:1.6}.help-list p{color:var(--muted);margin:5px 0}.source-links{display:grid;gap:12px;font-size:13px;color:var(--accent);margin-top:20px}.replay-list{display:grid;gap:13px;margin-top:28px}.replay-card{display:flex;align-items:center;gap:23px;padding:22px;background:var(--surface);border:1px solid var(--line);border-radius:12px}.replay-card h3{font-size:20px}.replay-card p{margin:6px 0 0;font-size:13px}.replay-card .button-row{margin-left:auto}.replay-result{width:46px;height:46px;background:#6c414233;color:#c28d88;display:grid;place-items:center;border:1px solid #775455;font:600 20px 'Space Grotesk',sans-serif;border-radius:8px}.replay-result.won{background:#7b9d8620;color:#a2b9a6;border-color:#607a69}.empty-state{max-width:540px;text-align:center;padding:80px 28px;margin:auto}.empty-state .primary{width:auto;display:inline-flex}.work-grid{display:grid;grid-template-columns:240px minmax(260px,390px) 260px;justify-content:center;gap:40px;align-items:start}.work-table{max-width:350px;margin:auto;width:100%}.editor-board{display:grid;grid-template-columns:repeat(6,1fr);gap:2px;padding:8px;background:#19191e;border:4px solid #5b484d;border-radius:5px;max-width:285px;margin:0 auto 20px}.editor-cell{aspect-ratio:1;border-radius:2px;border:1px solid #ffffff0c;background:var(--cell);padding:0;font-size:23px;color:#f5e5cf}.editor-cell:hover{background:var(--cell);border-color:#fff9}.editor-cell.breaker{box-shadow:inset 0 0 0 2px #f6e6cf}.palette{display:flex;gap:7px;flex-wrap:wrap;margin:10px 0 20px}.swatch{background:var(--swatch);color:#221c26;width:34px;height:34px;padding:0;border:2px solid transparent;font-size:22px}.swatch:hover{background:var(--swatch)}.swatch.selected{outline:2px solid var(--ink);outline-offset:3px}.swatch.eraser{background:#383238;color:var(--muted)}.input-pair{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.experiment-step{border-bottom:1px solid var(--line);padding:10px 0;font-size:14px}.experiment-step p{font-size:13px;color:var(--muted);line-height:1.7}.pattern-work-grid{display:grid;grid-template-columns:240px minmax(330px,480px) 210px;gap:35px;justify-content:center;align-items:start}.pattern-preset{display:block;width:100%;text-align:left;border-color:transparent;padding:12px 0}.pattern-preset strong{display:block;font:500 19px 'Space Grotesk',sans-serif}.pattern-preset small{display:block;font-size:12px;color:var(--muted);line-height:1.5;margin-top:5px}.pattern-tools{display:flex;align-items:center;justify-content:space-between;gap:20px}.pattern-tools .field-label{width:75px}.pattern-editor{display:grid;grid-template-columns:repeat(6,1fr);gap:5px;padding:12px;background:var(--inset);border:1px solid var(--line);border-radius:6px}.pattern-editor button{aspect-ratio:1;padding:0;border:0;border-radius:3px;font-size:25px;color:#28213099}.pattern-row-labels{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin:12px 0 27px}.pattern-editor-panel .button-row{margin-top:12px}.pattern-editor-panel{padding:28px}
@media(min-width:1400px){.room-grid{grid-template-columns:240px minmax(480px,640px) 200px}.boards{gap:38px}.board-wrap{width:calc(50% - 19px)}.table-surface{padding-left:29px;padding-right:29px}}@media(max-width:1150px){.room-grid{grid-template-columns:210px 1fr}.field-notes{display:none}.board-wrap{max-width:250px}.boards{justify-content:center}.work-grid{grid-template-columns:200px minmax(250px,1fr) 230px;gap:22px}.pattern-work-grid{grid-template-columns:210px minmax(330px,480px)}}@media(max-width:830px){.room-grid{grid-template-columns:180px 1fr;gap:18px}.panel{padding:17px}.boards{gap:20px}.board-wrap{width:calc(50% - 10px)}.board-header>div>span{display:none}.next-piece{width:40px}.next-piece canvas{width:40px;height:23px}.next-piece span{display:block!important}.table-surface{padding:19px 17px}.board-bottom{font-size:9px}.work-grid{grid-template-columns:180px 1fr}.work-grid>aside:last-child{grid-column:1/-1;max-width:100%;display:block}.work-table{max-width:320px}.pattern-work-grid{gap:20px}.control-guide{gap:16px}}@media(max-width:640px){.topbar{padding:0 17px;gap:12px}.wordmark{font-size:29px}nav{gap:14px}.nav-button{font-size:11px}.icon-button{width:30px;height:34px}.room-grid{display:flex;flex-direction:column}.room-grid>section{width:100%;order:0}.loadout,.match-loadout{width:100%;order:1}.lobby-table .boards{gap:25px}.board-wrap{max-width:220px;width:calc(50% - 13px)}.match-grid .table-surface{padding:17px 20px 12px}.board-header strong{font-size:16px}.board-bottom{font-size:10px;flex-wrap:wrap}.match-heading{gap:10px}.game-heading h1{font-size:23px}.match-tools{gap:7px}.match-tools>span{font-size:20px;margin:0}.match-tools button{padding:7px 9px;font-size:12px}.table-label{font-size:9px;letter-spacing:.8px}.control-guide{flex-wrap:wrap;font-size:11px;gap:10px;margin-top:18px}.touch-controls{display:flex}.match-loadout{display:none}.opponents{grid-template-columns:repeat(3,1fr)}.opponent{padding:7px 6px;gap:5px}.opponent small,.opponent .record{display:none}.opponent-initial{width:26px}.loadout .pattern-preview{max-width:190px}.loadout .primary{margin-top:18px}.work-grid{grid-template-columns:1fr;gap:25px}.work-grid>aside{order:1}.work-grid>section{order:0}.work-grid>aside:last-child{grid-column:auto;order:2}.work-table{max-width:320px}.pattern-work-grid{grid-template-columns:1fr}.pattern-work-grid>aside{order:1}.pattern-editor-panel{order:0}.room-heading{flex-wrap:wrap;gap:18px}.segmented{width:100%}.segmented button{flex:1;font-size:13px}.replay-card{gap:12px;padding:15px;flex-wrap:wrap}.replay-card .button-row{margin-left:auto}.replay-card h3{font-size:18px}.replay-result{width:36px;height:36px}.replay-card p{font-size:11px}.pattern-row-labels{font-size:10px}.pause-card{padding:21px;max-width:275px}.footer{margin-top:0}.match-notes{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* Reference-calibrated playfield: 6 x 13 cells, each two-thirds as wide as tall. */
.board{aspect-ratio:4/13}
.boards{justify-content:center;gap:42px}
.board-wrap{width:min(calc(50% - 21px),calc((100dvh - 300px)*4/13));max-width:224px;min-width:108px}
.boards.single #wrap-0{width:min(100%,calc((100dvh - 300px)*4/13));max-width:224px}
.board-header{min-height:58px;align-items:center}.board-header strong{font-size:17px}
.next-piece{width:22px;flex-shrink:0}.next-piece span{font-size:8px!important}
.next-piece canvas{width:20px;height:60px;display:block}
.board-frame{border-color:#8c7554;outline-color:#b49c6c;background:#252b2e}
.board-banner{background:none;text-shadow:0 2px 2px #000,1px 0 #211c22,-1px 0 #211c22;font:600 25px Georgia,serif;color:#f0e2c7;padding:4px 0;top:39%}
.game-heading{margin-bottom:16px}.game-heading h1{font-size:25px}
.match-grid .table-surface{background:radial-gradient(ellipse at top,#4c4235,transparent 80%),#302d29}
.editor-cell,.pattern-cell,.pattern-editor button{aspect-ratio:2/3}
@media(max-width:640px){.boards,.lobby-table .boards{gap:28px}.board-wrap{width:calc(50% - 14px);min-width:0;max-width:165px}.boards.single #wrap-0{width:min(65%,180px)}.next-piece,.next-piece canvas{width:18px}.next-piece canvas{height:54px}.board-header strong{font-size:15px}.match-grid .table-surface{padding:12px 14px}.board-banner{font-size:20px}.game-heading h1{font-size:20px}}
/* Reserve space for the entire board, status and controls at laptop heights. */
.board-wrap{width:min(calc(50% - 21px),calc((100dvh - 440px)*4/13))}
.boards.single #wrap-0{width:min(100%,calc((100dvh - 440px)*4/13))}
.game-heading h1{font-size:20px}.game-heading .eyebrow{margin-bottom:7px}
@media(max-width:640px){.game-heading{flex-wrap:nowrap;gap:10px;align-items:center}.game-heading h1{font-size:17px}.game-heading .eyebrow{font-size:9px;letter-spacing:1px}.game-heading .match-tools{flex-shrink:0}.game-heading .match-tools>span{font-size:18px}.board-wrap{width:min(calc(50% - 14px),calc((100dvh - 390px)*4/13));max-width:165px}.boards.single #wrap-0{width:min(65%,calc((100dvh - 390px)*4/13))}.board-bottom{font-size:9px}}
@media(max-width:640px){.board-wrap{width:min(calc(50% - 14px),calc((100dvh - 440px)*4/13))}.boards.single #wrap-0{width:min(65%,calc((100dvh - 440px)*4/13))}}
:root{--sword-highlight:#d8a578}
.sword-icon{width:48px;height:96px;flex-shrink:0;filter:drop-shadow(0 3px 2px #0004)}
.equipped-blade{display:flex;align-items:center;gap:8px;width:100%;padding:0 0 14px;text-align:left;border:0;background:transparent}
.equipped-blade:hover{background:transparent;color:var(--accent)}
.equipped-blade strong{display:block;font:500 23px/1.2 'Space Grotesk',sans-serif;overflow-wrap:anywhere}
.equipped-blade small{display:block;color:var(--sword-highlight);font-size:12px;margin-top:10px}
.enamel-controls{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0 0 18px}
.enamel-controls .field-label{font-size:11px;margin:0}.enamel-controls select{padding:8px 5px;width:100%;font-size:12px}
dialog:has(.sword-picker){width:760px;max-width:calc(100vw - 28px)}
.sword-rack{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-top:22px}
.sword-choice{display:flex;flex-direction:column;align-items:center;justify-content:start;gap:5px;min-width:0;padding:8px 4px 12px;background:#232126;border:1px solid var(--line);border-radius:7px}
.sword-choice.selected{border-color:var(--sword-highlight);background:#3b302a;box-shadow:inset 0 0 0 1px var(--sword-highlight)}
.sword-choice:hover{background:#393137}.sword-choice strong{font-size:12px;line-height:1.3;font-weight:500}.sword-choice small{font-size:10px;color:var(--muted);max-width:100%;overflow-wrap:anywhere}
.sword-choice .sword-icon{height:83px;width:42px}
.match-blade{display:flex;align-items:center;gap:9px;margin-bottom:18px}.match-blade h2{margin:0;font-size:24px}.match-blade .sword-icon{width:38px;height:76px}
.preset-rack{max-height:650px;overflow:auto;scrollbar-width:thin}.pattern-preset{display:flex;align-items:center;gap:9px}.pattern-preset .sword-icon{height:66px;width:33px}.pattern-preset strong{font-size:16px}.pattern-preset small{font-size:10px}
@media(max-width:540px){.sword-rack{grid-template-columns:repeat(3,minmax(0,1fr))}.sword-picker h2{font-size:25px}.equipped-blade{max-width:300px}.enamel-controls{max-width:300px}}
.library-workshop{grid-template-columns:250px minmax(320px,460px) 200px;gap:24px}.library-heading{display:flex;justify-content:space-between;align-items:center}.library-heading .eyebrow{margin:0}.library-heading>span{color:var(--muted);font-size:12px}.pattern-library .primary{margin:16px 0}.pattern-library .preset-rack{max-height:620px}.pattern-library .pattern-preset{border:1px solid transparent;border-radius:7px;padding:6px 8px}.pattern-library .pattern-preset.selected{border-color:var(--accent);background:#dba5780b}.pattern-library .pattern-preset .sword-icon{width:24px;height:48px}.pattern-library .pattern-preset strong{font-size:14px}.pattern-library .fine-print{line-height:1.6}.editor-heading{display:flex;align-items:center;gap:15px;margin-bottom:22px}.editor-heading .sword-icon{width:35px;height:70px}.editor-heading .eyebrow{margin-bottom:7px}.editor-heading p:last-child{font-size:12px;color:var(--muted);line-height:1.6;margin:0}.pattern-meta{display:grid;grid-template-columns:1fr 85px;gap:14px}.pattern-meta select{width:100%}.pattern-palette{display:flex;align-items:center;gap:10px;margin:12px 0 22px}.pattern-palette span{font-size:12px;color:var(--muted);margin-left:auto}.editor-tools{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.editor-tools button{font-size:12px;padding:9px 12px}.editor-actions{display:flex;gap:10px;align-items:stretch;margin-top:18px}.editor-actions .primary{margin:0;font-size:13px;flex:1}.editor-actions>button:last-child{font-size:13px}.new-sword-choice{border-style:dashed}.pattern-editor button{touch-action:manipulation}.library-workshop .pattern-editor-panel{min-width:0}
@media(max-width:1150px){.library-workshop{grid-template-columns:230px minmax(300px,480px)}}
@media(max-width:640px){.library-workshop{grid-template-columns:minmax(0,1fr)}.library-workshop .pattern-library{order:0}.library-workshop .pattern-editor-panel{order:1}.pattern-library .preset-rack{max-height:170px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}.pattern-library .pattern-preset strong{font-size:12px}.pattern-library .pattern-preset .sword-icon{width:20px;height:40px}.pattern-editor-panel{padding:20px}.pattern-meta{grid-template-columns:minmax(0,1fr) 75px}.pattern-palette{gap:9px}.pattern-palette .swatch{width:34px;height:34px}.pattern-palette span{font-size:10px}}
.challenge-setup{display:grid;grid-template-columns:minmax(340px,1.15fr) minmax(280px,1fr);gap:24px;max-width:1040px;margin:auto}.challenge-options,.challenge-rules{padding:30px}.challenge-modes{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:25px}.challenge-modes button{text-align:left;padding:20px 16px;display:flex;flex-direction:column;gap:12px}.challenge-modes button.selected{border-color:var(--accent);background:#dba5780c}.challenge-modes strong{font:500 20px 'Space Grotesk',sans-serif}.challenge-modes span{color:var(--muted);font-size:13px;line-height:1.5}.challenge-modes b{font:500 28px 'Space Grotesk',sans-serif;color:var(--accent);margin-top:auto}.challenge-rules>p{line-height:1.75;font-size:14px}.scoring-example{display:flex;flex-direction:column;gap:8px;padding:20px;background:var(--inset);border-radius:8px;font-size:14px}.scoring-example span{color:var(--muted)}.scoring-example b{color:var(--accent)}.challenge-best{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:18px;color:var(--muted)}.challenge-best strong{color:var(--ink);font-size:24px}.challenge-history{max-width:1040px;margin:32px auto}.challenge-history-list{display:grid;gap:8px}.challenge-history-list>div{display:flex;align-items:center;gap:24px;border-bottom:1px solid var(--line);padding:12px 0}.challenge-history-list strong{min-width:70px;font-size:21px}.challenge-history-list span{font-size:13px}.challenge-history-list small{margin-left:auto;color:var(--muted)}.challenge-arena{display:grid;grid-template-columns:minmax(350px,560px) minmax(300px,1fr);gap:24px;max-width:1160px;margin:auto;align-items:start}.challenge-hud{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid var(--line);padding-bottom:18px;margin-bottom:20px}.challenge-hud>div{display:flex;flex-direction:column;gap:8px}.challenge-hud span{font-size:10px;letter-spacing:1px;color:var(--muted)}.challenge-hud strong{font:500 25px 'Space Grotesk',sans-serif}.challenge-playfield{position:relative;display:flex;justify-content:center}.challenge-board{width:min(230px,calc((100dvh - 380px)*4/13));min-width:150px;max-width:100%}.challenge-board .board-frame canvas{display:block;width:100%;aspect-ratio:4/13}.challenge-board-foot{display:flex;justify-content:space-between;gap:4px;align-items:center;margin-top:12px;font-size:11px;color:var(--muted)}.challenge-board-foot strong{color:var(--ink);font-size:18px}.challenge-board.eliminated .board-frame{opacity:.48}.challenge-board .board-header>div>span{font-size:10px}.challenge-feedback{text-align:center;min-height:40px;font-size:12px;color:var(--accent);padding-top:18px;line-height:1.5}.challenge-sidebar{display:flex;flex-direction:column;gap:22px}.challenge-rank{display:grid;grid-template-columns:20px 1fr auto 65px;align-items:center;gap:10px;padding:12px 6px;border-bottom:1px solid var(--line);font-size:14px}.challenge-rank>span,.challenge-rank small{font-size:10px;color:var(--muted)}.challenge-rank b{text-align:right}.challenge-rank.is-you{color:var(--accent)}.challenge-run-details{display:flex;flex-direction:column;gap:12px;font-size:12px;color:var(--muted)}.challenge-run-details>span{display:flex;justify-content:space-between}.challenge-run-details b{font-weight:500;color:var(--ink)}.challenge-opponents{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:17px;padding:0 8px}.challenge-board.mini{width:100%;min-width:0}.challenge-board.mini .board-header strong{font-size:13px}.challenge-board.mini .next-piece{width:26px}.challenge-board.mini .next-piece canvas{width:26px;height:39px}.challenge-board.mini .next-piece>span{font-size:7px}.challenge-board.mini .board-header{gap:4px}.challenge-board.mini .board-frame{border-width:3px;box-shadow:0 0 0 2px #211e22}.challenge-board.mini .board-board-foot strong{font-size:13px}.challenge-board.mini .board-header>div>span{display:block}.challenge-control-note{text-align:center;margin-top:22px}.challenge-result-card{display:flex;justify-content:space-between;align-items:center;gap:22px;max-width:1160px;margin:24px auto}.challenge-result-card .primary{margin:0;width:auto;white-space:nowrap}.challenge-result-card h2{margin:0}.challenge-result-card p:last-child{margin-bottom:0}.challenge-touch{justify-content:center}.challenge-main .game-overlay{inset:0}.challenge-main .game-overlay .pause-card{max-width:290px}
@media(max-width:900px){.challenge-opponents{gap:12px}.challenge-arena{grid-template-columns:minmax(290px,1fr) minmax(240px,.85fr)}.challenge-board.mini .next-piece{display:none}.challenge-rank{grid-template-columns:14px 1fr auto 45px;font-size:12px;gap:5px}.challenge-sidebar .panel{padding:18px}.challenge-result-card{flex-direction:column;align-items:start}}
@media(max-width:640px){.topbar{height:auto;min-height:90px;flex-wrap:wrap;gap:6px 12px;padding-top:8px;padding-bottom:0}.topbar nav{order:3;width:100%;height:39px;justify-content:space-between;gap:10px}.topbar .nav-button{font-size:12px}.challenge-setup,.challenge-arena{grid-template-columns:minmax(0,1fr)}.challenge-options,.challenge-rules{padding:20px}.challenge-modes{gap:9px}.challenge-modes button{padding:14px 12px}.challenge-modes strong{font-size:17px}.challenge-board{width:min(205px,calc((100dvh - 390px)*4/13));min-width:135px}.challenge-opponents{max-width:480px;width:100%;margin:auto;gap:22px;padding:0 6px}.challenge-board.mini{width:100%;min-width:0}.challenge-board.mini .next-piece{display:block}.challenge-history-list>div{flex-wrap:wrap;gap:8px 15px}.challenge-history-list small{width:100%;margin:0}.challenge-result-card .button-row{flex-wrap:wrap}.challenge-rank{font-size:14px;grid-template-columns:20px 1fr auto 65px}.challenge-sidebar{gap:24px}.challenge-hud strong{font-size:22px}}
.challenge-board{width:min(215px,calc((100dvh - 490px)*4/13));min-width:145px}.challenge-opponents{max-width:420px;margin:0 auto;width:100%}.challenge-board.mini .board-header strong{font-size:12px}.challenge-board.mini .challenge-board-foot{flex-wrap:wrap}.challenge-board.mini .challenge-board-foot strong{font-size:14px}.challenge-board .board-header>div>span{display:block}.challenge-board .next-piece{width:34px}.challenge-board .next-piece canvas{width:34px;height:51px}
@media(max-width:640px){.challenge-board{width:min(185px,calc((100dvh - 445px)*4/13));min-width:110px}.challenge-board.mini{min-width:0;width:100%}.challenge-board .next-piece{width:26px}.challenge-board .next-piece canvas{width:26px;height:39px}.challenge-opponents{max-width:380px}}
.handling-presets{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0}.handling-presets button.selected{border-color:var(--accent);color:var(--accent)}.handling-editor{display:grid;grid-template-columns:minmax(0,1fr) 150px;gap:24px}.handling-editor .range-row{gap:8px}.handling-editor .range-row input[type=range]{min-width:50px;flex:1}.handling-editor .timing-number{width:76px;flex:none;padding:8px}.handling-editor .field-label{margin-bottom:16px}.handling-preview canvas{display:block;width:110px;max-width:100%;margin:auto;image-rendering:auto;border:2px solid var(--line);border-radius:4px;cursor:pointer}.handling-preview canvas:focus{outline:2px solid var(--accent);outline-offset:4px}.handling-preview .fine-print{font-size:12px;line-height:1.6}.handling-preview button{font-size:12px;width:100%;padding:10px}.paired-setup{max-width:650px;margin:0 auto}.paired-setup p{line-height:1.65}.paired-setup .button-row{margin-top:22px}.paired-setup .primary{width:auto;margin:0}.paired-standing{display:flex;align-items:center;gap:14px;font-size:13px;padding:10px 0;border-bottom:1px solid var(--line)}.paired-standing span{margin-left:auto;color:var(--muted)}.paired-standing b{font-size:12px;font-weight:400}.paired-matchup{font-size:14px}.matched-opponent .board-frame{outline:2px solid var(--accent);outline-offset:3px}.matched-opponent .board-header strong{color:var(--accent)}
@media(max-width:600px){.handling-editor{grid-template-columns:minmax(0,1fr)}.handling-preview{display:grid;grid-template-columns:80px 1fr;gap:12px;align-items:start}.handling-preview canvas{width:72px;grid-row:span 2}.handling-preview .fine-print{margin:0}.handling-preview button{width:auto}.paired-setup{padding:20px}.paired-setup .button-row{flex-wrap:wrap}.paired-standing{gap:8px}.game-heading .match-tools{flex-wrap:wrap}}
.paired-sidebar .panel{padding:18px 22px}.paired-sidebar .panel .eyebrow{margin:0 0 12px}.paired-sidebar .divider{margin:12px 0}.paired-sidebar .paired-matchup{margin:8px 0}.paired-sidebar .paired-standing{padding:7px 0}.paired-sidebar .fine-print{margin:12px 0 0}.paired-sidebar .challenge-opponents{max-width:360px}
.paired-sidebar .panel{padding:18px 22px}.paired-sidebar .panel .eyebrow{margin:0 0 12px}.paired-sidebar .divider{margin:12px 0}.paired-sidebar .paired-matchup{margin:8px 0}.paired-sidebar .paired-standing{padding:7px 0}.paired-sidebar .fine-print{margin:12px 0 0}.paired-sidebar .challenge-opponents{max-width:360px}
[hidden]{display:none!important}.pool-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:20px}.pool-choice{display:flex;align-items:center;gap:10px;padding:12px;border:1px solid var(--line);border-radius:6px;font-size:14px}.pool-choice:has(input:checked){border-color:var(--accent);background:#dba5780c}.pool-choice input{accent-color:var(--accent);width:18px;height:18px}dialog:has(#progression-content){max-width:1100px;width:94vw}.progression-globals{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:14px;margin:20px 0}.progression-globals input{max-width:100%}.progression-table-wrap{overflow-x:auto;margin:20px 0}.progression-table{border-collapse:collapse;width:100%;min-width:760px}.progression-table th{font-size:12px;text-align:left;font-weight:500;color:var(--muted);padding:8px}.progression-table td{padding:6px}.progression-table td:first-child{min-width:140px}.progression-table input{width:100%;min-width:60px;padding:9px}.progression-table td:last-child{width:48px}.progression-table button{padding:7px 12px}#progress-json{width:100%;margin:14px 0;font:13px monospace}.progression-live{border-top:1px solid var(--line);padding-top:16px;margin-top:16px;font-size:12px}.progression-live strong{color:var(--accent);font-size:16px}.progression-live p{line-height:1.6;margin:8px 0}.attack-warning{color:#f0b680;text-shadow:0 0 12px #dba57855}.workshop-heading .segmented{flex-wrap:wrap}.challenge-board{min-width:130px}.paired-sidebar .challenge-opponents{max-width:320px}.board-frame canvas{height:auto}
@media(max-width:600px){.pool-options{grid-template-columns:minmax(0,1fr)}.progression-globals{grid-template-columns:repeat(2,minmax(0,1fr))}.room-heading:has([data-work]){flex-wrap:wrap}.room-heading:has([data-work]) .segmented{flex-wrap:wrap}.challenge-board{min-width:105px}}
.challenge-stage-caption{font-size:13px;line-height:1.5;color:var(--accent);margin:-5px 0 18px;text-align:center}.challenge-sidebar .panel:has(.progression-live){padding:18px 22px}.challenge-sidebar .panel:has(.progression-live) .challenge-rank{padding:8px 4px}.challenge-sidebar .panel:has(.progression-live) .divider{margin:14px 0}.challenge-sidebar .panel:has(.progression-live) .challenge-run-details{display:none}
.challenge-options .field-label[hidden]{display:none}
.challenge-board .next-piece canvas,.challenge-board.mini .next-piece canvas{width:17px;height:51px;margin-left:auto}
@media(max-width:640px){.challenge-board .next-piece canvas,.challenge-board.mini .next-piece canvas{width:13px;height:39px}}
/* No accidental text highlighting: the game is not a document. Text you'd want to copy stays selectable:
   anything you type into, and room codes. */
html,body{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}
img,canvas,svg{-webkit-user-drag:none}
input,textarea,select,[contenteditable],[contenteditable] *,.ol-code strong,.selectable,.selectable *{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}
