:root{--paper: #f7f3ea;--ink: #202124;--muted: #6f6a60;--line: #d7cfc1;--grid-line: #161616;--accent: #0f766e;--accent-strong: #115e59;--danger: #b91c1c;--success: #047857;--surface: #fff;--surface-soft: #fffdfa;--surface-raised: rgba(255, 255, 255, .92);--topbar-surface: rgba(255, 253, 250, .94);--button-ink: #fff;--shadow-color: rgba(32, 33, 36, .18);--shadow-color-soft: rgba(32, 33, 36, .14);--body-grid-color: rgba(15, 118, 110, .08);--body-glow-danger: rgba(239, 68, 68, .14);--body-glow-warm: rgba(245, 158, 11, .16);--completed-surface: #dcfce7;--completed-ink: #166534;--dot-border: #fff;--topbar-height: 60px;--page-height: 810px;--cell-size: 88px;--map-board-scale: 1;--board-stage-ratio: 16 / 10;--board-stage-width-limit: 80vw;--board-stage-height-limit: 75dvh;--board-max-width: min(var(--board-stage-width-limit), calc(var(--board-stage-height-limit) * 16 / 10));--board-max-height: min(var(--board-stage-height-limit), calc(var(--board-stage-width-limit) * 10 / 16));--background-image: none;--background-opacity: 0;--background-blur: 0px;--finder-unknown-color: #8a8f98;--finder-excluded-color: #535a64}:root[data-theme=night]{--surface: #151d23;--surface-soft: #11181e;--surface-raised: rgba(17, 24, 30, .94);--topbar-surface: rgba(12, 18, 23, .94);--button-ink: #f5fbff;--shadow-color: rgba(0, 0, 0, .44);--shadow-color-soft: rgba(0, 0, 0, .28);--body-grid-color: rgba(104, 120, 132, .055);--body-glow-danger: rgba(240, 113, 120, .04);--body-glow-warm: rgba(56, 183, 164, .055);--completed-surface: #142b24;--completed-ink: #8fdcb5;--dot-border: #0b1116}*{box-sizing:border-box}body{position:relative;margin:0;min-height:100dvh;color:var(--ink);font-family:Noto Sans SC,Microsoft YaHei,PingFang SC,system-ui,sans-serif;background:#f6f8f5}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;background-image:var(--background-image);background-position:center;background-size:cover;background-repeat:no-repeat;opacity:var(--background-opacity);filter:blur(var(--background-blur));transform:scale(1.03);pointer-events:none}#app{position:relative;z-index:1;height:100dvh;min-height:0}button,input,select,textarea{font:inherit}button,.editor-form .editor-import-button{border:2px solid var(--ink);border-radius:6px;padding:10px 14px;color:var(--button-ink);background:var(--accent);box-shadow:4px 4px 0 var(--shadow-color);cursor:pointer}button:hover{background:var(--accent-strong)}button:disabled{opacity:.54;cursor:not-allowed}button:disabled:hover{background:var(--accent)}h1,h2,p{margin-top:0}h1{margin-bottom:0;font-size:clamp(2rem,6vw,4.2rem);line-height:.95}h2{margin-bottom:12px;font-size:1.2rem}.app-topbar{position:sticky;top:0;z-index:10;display:grid;grid-template-columns:max-content minmax(0,1fr) max-content;align-items:center;gap:8px 10px;min-height:var(--topbar-height);padding:6px 12px;border-bottom:2px solid var(--ink);background:var(--topbar-surface);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.topbar-left,.topbar-center,.topbar-right{position:relative;display:inline-flex;align-items:center;gap:10px;min-width:0}.topbar-left{z-index:2;justify-content:flex-start}.topbar-right{z-index:2;justify-content:flex-end}.topbar-center{z-index:1;justify-content:center;min-width:0;overflow:hidden}.brand{display:inline-flex;align-items:center;flex:0 1 auto;min-width:0;gap:9px;color:var(--ink);font:900 1.16rem/1 Trebuchet MS,Noto Sans SC,sans-serif;text-decoration:none}.brand-icon{width:30px;height:30px;object-fit:contain}.github-link{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border:2px solid var(--ink);border-radius:6px;color:var(--ink);background:var(--surface);box-shadow:2px 2px 0 var(--shadow-color-soft);font:900 .86rem/1 Trebuchet MS,Noto Sans SC,sans-serif;text-decoration:none;white-space:nowrap}.github-link svg{width:21px;height:21px;fill:currentColor}.github-link:hover{color:var(--button-ink);background:var(--accent)}.game-timer{min-width:72px;padding:4px 8px;border:2px solid var(--ink);border-radius:6px;color:var(--ink);background:var(--surface);font:900 1rem/1 Trebuchet MS,Noto Sans SC,sans-serif;text-align:center;box-shadow:2px 2px 0 var(--shadow-color-soft)}.view-tabs{display:inline-flex;flex:0 1 auto;min-width:0;gap:4px;padding:2px;border:2px solid var(--ink);border-radius:8px;background:var(--surface)}.level-picker-button{display:inline-flex;align-items:center;gap:8px}.current-level-label{max-width:140px;overflow:hidden;padding:5px 8px;border:0;color:var(--ink);background:transparent;font:900 .95rem/1 Trebuchet MS,Noto Sans SC,sans-serif;text-overflow:ellipsis;white-space:nowrap}.view-tab{min-width:0;padding-inline:10.5px;border:0;box-shadow:none;color:var(--ink);background:transparent}.app-topbar button,.developer-button,.personalize-button,.rule-button,.play-actions button{padding:6px 9px;box-shadow:2px 2px 0 var(--shadow-color);white-space:nowrap}.developer-button{position:relative;z-index:8;min-width:42px;min-height:38px;padding-inline:11px;color:var(--ink);background:#d1d5db;touch-action:manipulation}.developer-button:hover{color:var(--ink);background:#c4cbd4}.developer-button.is-unlocked,.developer-button.is-unlocked:hover{color:var(--button-ink);background:var(--success)}.close-button{min-height:0;padding:4px 8px;border-width:2px;border-radius:5px;font:900 .78rem/1 Trebuchet MS,Noto Sans SC,sans-serif;box-shadow:2px 2px 0 var(--shadow-color-soft)}.close-button:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--shadow-color-soft)}.play-toolbar{display:inline-flex;align-items:center;gap:8px;justify-content:center;width:auto;max-width:100%;min-width:0}.play-toolbar.is-hidden{visibility:hidden;pointer-events:none}.play-actions{position:relative;z-index:5;display:inline-flex;flex-wrap:nowrap;gap:6px;align-items:center;justify-content:center;padding:4px;border:2px solid var(--ink);border-radius:8px;background:var(--surface-raised);box-shadow:4px 4px 0 var(--shadow-color-soft)}.game-mode-rail{position:fixed;top:calc(var(--topbar-height) + 16px);left:10px;z-index:11;display:grid;gap:7px;width:52px;padding:7px;border:1px solid color-mix(in srgb,var(--button-ink) 42%,var(--line) 58%);border-radius:16px;background:linear-gradient(180deg,color-mix(in srgb,var(--button-ink) 18%,transparent),transparent),rgb(from var(--surface-soft) r g b / .42);box-shadow:0 18px 42px -30px var(--shadow-color),inset 0 1px color-mix(in srgb,var(--button-ink) 42%,transparent);-webkit-backdrop-filter:blur(14px) saturate(1.06);backdrop-filter:blur(14px) saturate(1.06);overflow:hidden;transition:width .18s ease,box-shadow .18s ease,background .18s ease}.game-mode-rail:hover,.game-mode-rail:focus-within{width:220px;box-shadow:0 22px 50px -32px var(--shadow-color),inset 0 1px color-mix(in srgb,var(--button-ink) 48%,transparent)}.game-mode-rail-item{display:grid;grid-template-columns:36px minmax(142px,1fr);align-items:center;gap:9px;width:204px;min-height:42px;padding:3px;border-width:0;color:var(--ink);background:transparent;box-shadow:none;text-align:left;border-radius:12px;transition:background .16s ease,color .16s ease,transform .14s ease}.game-mode-rail-item:hover{color:var(--ink);background:color-mix(in srgb,var(--surface) 46%,transparent)}.game-mode-rail-item.is-active{color:var(--ink);background:transparent;box-shadow:none}.game-mode-rail:hover .game-mode-rail-item.is-active,.game-mode-rail:focus-within .game-mode-rail-item.is-active{background:color-mix(in srgb,var(--accent) 10%,var(--surface) 90%);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 42%,transparent)}.game-mode-rail-item:disabled{color:var(--muted);background:transparent}.game-mode-rail-icon{display:grid;place-items:center;width:36px;height:36px;border:1px solid color-mix(in srgb,currentColor 55%,transparent);border-radius:999px;font:900 .82rem/1 Trebuchet MS,Noto Sans SC,sans-serif;box-shadow:inset 0 1px color-mix(in srgb,var(--button-ink) 30%,transparent)}.game-mode-rail-item.is-active .game-mode-rail-icon{color:var(--button-ink);border-color:var(--accent);background:var(--accent);box-shadow:0 8px 18px -14px color-mix(in srgb,var(--accent) 70%,var(--shadow-color) 30%)}.game-mode-rail-label{display:grid;gap:3px;min-width:0;opacity:0;transform:translate(-4px);transition:opacity .15s ease,transform .15s ease}.game-mode-rail:hover .game-mode-rail-label,.game-mode-rail:focus-within .game-mode-rail-label{opacity:1;transform:translate(0)}.game-mode-rail-label strong,.game-mode-rail-label small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.game-mode-rail-label strong{font:900 .88rem/1 Trebuchet MS,Noto Sans SC,sans-serif}.game-mode-rail-label small{color:currentColor;font:800 .72rem/1 Trebuchet MS,Noto Sans SC,sans-serif;opacity:.75}.view-tab:hover,.view-tab.is-active{color:var(--button-ink);background:var(--accent)}.view-tab:disabled{color:var(--muted);background:transparent;border-color:color-mix(in srgb,var(--line) 70%,transparent);cursor:not-allowed}.view-tab:disabled:hover{color:var(--muted);background:transparent}.view-tab:active{transform:none;box-shadow:none}.app-shell{width:100%;height:auto;min-height:calc(var(--page-height) - var(--topbar-height));margin:0 auto;padding:0;overflow:visible}.view{display:none}.view.is-active{display:grid}.app-card{border:2px solid var(--ink);border-radius:8px;background:var(--surface-soft);box-shadow:8px 8px 0 var(--shadow-color-soft)}@media (min-width: 641px) and (max-width: 1080px){.app-topbar{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"left right" "center center";height:auto}.topbar-left{grid-area:left}.topbar-center{grid-area:center;justify-content:center}.topbar-right{grid-area:right}.brand span{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.personalization-panel{position:fixed;top:calc(var(--topbar-height) + 18px);right:18px;z-index:80;display:grid;gap:12px;width:min(340px,calc(100vw - 28px));max-height:min(680px,calc(100dvh - var(--topbar-height) - 36px));padding:14px;overflow:auto}.rule-panel{position:fixed;top:calc(var(--topbar-height) + 18px);right:18px;z-index:81;display:grid;grid-template-rows:auto minmax(0,1fr);gap:12px;width:min(520px,calc(100vw - 28px));max-height:min(680px,calc(100dvh - var(--topbar-height) - 36px));padding:14px}.rule-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.rule-header h2{margin:0}.rule-content{min-height:180px;margin:0;overflow:auto;padding:12px;border:2px solid var(--ink);border-radius:6px;color:var(--ink);background:var(--surface);font:700 .9rem/1.65 Trebuchet MS,Noto Sans SC,sans-serif}.rule-content h1,.rule-content h2,.rule-content h3{margin:0 0 8px;font:900 1.08rem/1.25 Trebuchet MS,Noto Sans SC,sans-serif}.rule-content p,.rule-content ul{margin:0 0 10px}.rule-content ul{padding-left:20px}.rule-content li+li{margin-top:4px}.rule-content code{padding:1px 4px;border-radius:4px;color:var(--ink);background:color-mix(in srgb,var(--line) 55%,var(--surface) 45%);font:800 .86em/1.2 Consolas,Courier New,monospace}.personalization-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.personalization-header h2{margin:0}.personalization-panel label{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px 10px;align-items:center;color:var(--muted);font:800 .88rem/1.2 Trebuchet MS,Noto Sans SC,sans-serif}.personalization-select-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.game-controls,.style-controls{display:grid;gap:8px;padding-top:4px}.game-controls h3,.style-controls h3{margin:0;color:var(--accent-strong);font:900 .88rem/1 Trebuchet MS,Noto Sans SC,sans-serif}.personalization-panel label span,.setting-toggle-row span{color:var(--ink);font-variant-numeric:tabular-nums}.game-controls label,.setting-toggle-row,.style-controls label{display:grid;grid-template-columns:minmax(0,1fr) 72px;gap:7px 10px;align-items:center;color:var(--muted);font-family:Georgia,"Noto Serif SC",Songti SC,serif;font-weight:900}.style-controls select,.style-controls input[type=number],.setting-toggle-button{grid-column:2;width:72px;min-width:72px;max-width:72px;height:38px;min-height:38px;justify-self:end}.personalization-panel input[type=number]{padding:6px 8px}.personalization-select-row select{grid-column:1 / -1}.style-controls input[type=number]{text-align:right;font-variant-numeric:tabular-nums}.setting-toggle-button{padding:6px 8px;color:var(--ink);background:var(--surface);font:900 .88rem/1 Trebuchet MS,Noto Sans SC,sans-serif}.setting-toggle-button.is-enabled{color:var(--button-ink);background:var(--accent)}.personalization-data-actions{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-start;gap:10px;padding-top:10px;border-top:2px solid var(--line)}.personalization-clear-data-button{padding:7px 10px;background:var(--danger);font:900 .86rem/1 Trebuchet MS,Noto Sans SC,sans-serif}.personalization-clear-data-button:hover{background:#991b1b}.personalization-confirm-actions{display:inline-flex;gap:7px}.personalization-confirm-button,.personalization-cancel-button,.personalization-reset-settings-button{padding:7px 10px;font:900 .86rem/1 Trebuchet MS,Noto Sans SC,sans-serif}.personalization-confirm-button{background:var(--danger)}.personalization-confirm-button:hover{background:#991b1b}.personalization-cancel-button,.personalization-reset-settings-button{color:var(--ink);background:var(--surface)}.personalization-cancel-button:hover,.personalization-reset-settings-button:hover{color:var(--button-ink);background:var(--accent)}.personalization-data-actions span{margin-left:auto;color:var(--success);font:900 .84rem/1 Trebuchet MS,Noto Sans SC,sans-serif}:root{--radius-control: 7px;--radius-panel: 10px;--focus-ring: color-mix(in srgb, var(--accent) 30%, transparent);--surface-glass: color-mix(in srgb, var(--surface-soft) 88%, transparent);--line-soft: color-mix(in srgb, var(--line) 72%, transparent)}html{color-scheme:light}:root[data-theme=night]{color-scheme:dark;--focus-ring: color-mix(in srgb, var(--accent) 42%, transparent);--surface-glass: color-mix(in srgb, var(--surface-soft) 90%, transparent);--line-soft: color-mix(in srgb, var(--line) 66%, transparent)}.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}button,.github-link,.editor-import-button{transition:background .19s ease,color .19s ease,border-color .19s ease,box-shadow .19s ease,transform .15s ease,opacity .19s ease}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--focus-ring);outline-offset:3px}button:disabled{filter:grayscale(.18)}.app-topbar{border-bottom-width:1px;box-shadow:0 10px 28px -24px var(--shadow-color)}.brand-icon{filter:drop-shadow(1px 1px 0 var(--line-soft))}.github-link,.game-timer,.play-actions,.view-tabs,.app-card,.play-status,.victory-mark,.level-output-panel,.rule-content{border-color:var(--ink)}.brand{min-width:max-content}.app-card{border-radius:var(--radius-panel);background:var(--surface-glass);box-shadow:6px 6px 0 var(--shadow-color-soft);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}button,.github-link,input,select,textarea,.rule-content,.level-output-panel{border-radius:var(--radius-control)}.app-topbar button,.developer-button,.personalize-button,.rule-button,.game-mode-select,.play-actions button,.level-picker-button{display:inline-flex;align-items:center;justify-content:center;gap:6px}.app-topbar button span[aria-hidden=true]{display:inline-grid;place-items:center;min-width:1.45em;height:1.45em;border:1px solid color-mix(in srgb,currentColor 34%,transparent);border-radius:999px;font-size:.72em;line-height:1}.developer-button span[aria-hidden=true]{font-size:.66em}.view-tab{border-radius:calc(var(--radius-control) - 2px)}.view-tab.is-active{box-shadow:inset 0 1px color-mix(in srgb,var(--button-ink) 24%,transparent)}.current-level-label{color:color-mix(in srgb,var(--ink) 88%,var(--accent) 12%)}.game-mode-select{min-width:214px;padding-left:8px;border-left:1px solid var(--line-soft);color:var(--muted);font:900 .76rem/1 Trebuchet MS,Noto Sans SC,sans-serif}.game-mode-select span{white-space:nowrap}.game-mode-select select{min-width:154px;min-height:34px;border:1px solid color-mix(in srgb,var(--ink) 78%,transparent);padding:5px 28px 5px 8px;color:var(--ink);background:color-mix(in srgb,var(--surface) 90%,transparent);box-shadow:inset 0 1px color-mix(in srgb,var(--surface) 78%,transparent);font:900 .8rem/1 Trebuchet MS,Noto Sans SC,sans-serif}.personalization-data-actions span,.level-picker-status,.victory-status{line-height:1.35}.board-wrap.finder-workspace{display:grid;align-items:start;justify-content:center;justify-items:center;width:100%;max-width:none;padding:0 0 28px;margin-top:0;border:0;border-radius:0;background:transparent;box-shadow:none}.finder-main-panel{display:grid;grid-template-columns:max-content 318px;align-items:start;justify-content:center;gap:max(24px,calc(var(--cell-size) * .45));width:max-content;max-width:calc(100vw - 40px);overflow-x:auto;overflow-y:visible;padding:2px 2px 8px;scrollbar-width:thin}.finder-board-shell{--finder-clue-size: 2.4rem;--board-stage-width-limit: 50vw;--board-stage-height-limit: 75dvh;--board-max-width: min(var(--board-stage-width-limit), calc(var(--board-stage-height-limit) * 16 / 10));--board-max-height: min(var(--board-stage-height-limit), calc(var(--board-stage-width-limit) * 10 / 16));display:grid;grid-template-columns:var(--finder-clue-size) minmax(0,calc(var(--node-cols) * var(--cell-size)));grid-template-rows:var(--finder-clue-size) minmax(0,calc(var(--node-rows) * var(--cell-size)));align-items:start;justify-items:start;width:fit-content;max-width:100%;margin:0;padding:14px 18px 18px;border:1px solid color-mix(in srgb,var(--button-ink) 50%,var(--line) 50%);border-radius:calc(var(--radius-panel) + 6px);background:linear-gradient(145deg,color-mix(in srgb,var(--button-ink) 1%,transparent),transparent 44%),rgb(from var(--surface-soft) r g b / .01);overflow:visible;overscroll-behavior:contain;scrollbar-width:thin;box-shadow:0 28px 70px -48px var(--shadow-color),inset 0 1px color-mix(in srgb,var(--button-ink) 8%,transparent),inset 0 -1px color-mix(in srgb,var(--line) 4%,transparent);-webkit-backdrop-filter:blur(2px) saturate(1.02);backdrop-filter:blur(2px) saturate(1.02)}.finder-corner{width:100%;height:100%;border-right:1px solid color-mix(in srgb,var(--button-ink) 24%,transparent);border-bottom:1px solid color-mix(in srgb,var(--button-ink) 24%,transparent);background:color-mix(in srgb,var(--surface) 8%,transparent)}.finder-top-clues{display:grid;grid-template-columns:repeat(var(--node-cols),var(--cell-size));align-items:stretch;gap:0;width:calc(var(--node-cols) * var(--cell-size));min-width:calc(var(--node-cols) * var(--cell-size));margin-left:0}.finder-left-clues{display:grid;grid-template-rows:repeat(var(--node-rows),var(--cell-size));gap:0;width:var(--finder-clue-size);height:calc(var(--node-rows) * var(--cell-size));min-height:calc(var(--node-rows) * var(--cell-size));margin-top:0}.finder-board-shell .board{margin:calc(var(--cell-size) / 2) 0 0 calc(var(--cell-size) / 2)}.finder-clue-cell{display:grid;place-items:center;min-width:0;padding:2px 1px}.finder-clue-items{display:grid;place-items:center;width:100%}.finder-clue-item{display:grid;place-items:center;padding:0 2px;border:0;color:#111;background:none;font:900 2.1rem/1 Georgia,Times New Roman,"Noto Serif SC",serif;font-variant-numeric:tabular-nums;white-space:nowrap}.finder-total-clue{--pair-color: var(--accent)}.finder-clue-item.is-met{color:var(--success)}.finder-clue-item.is-under{color:#111}.finder-clue-item.is-over{color:var(--danger);font-weight:900}.finder-side-panel{position:sticky;top:calc(var(--topbar-height) + 12px);z-index:4;justify-self:start;display:grid;align-content:start;grid-template-rows:auto auto auto minmax(0,1fr);gap:0;width:318px;max-height:calc(100dvh - var(--topbar-height) - 30px);overflow:hidden;padding:10px;border:1px solid color-mix(in srgb,var(--line) 70%,transparent);border-radius:calc(var(--radius-panel) + 6px);background:linear-gradient(180deg,color-mix(in srgb,var(--surface-glass) 94%,var(--button-ink) 6%),var(--surface-glass)),color-mix(in srgb,var(--surface) 72%,transparent);box-shadow:0 22px 60px -38px var(--shadow-color),inset 0 1px color-mix(in srgb,var(--button-ink) 48%,transparent);-webkit-backdrop-filter:blur(16px) saturate(1.08);backdrop-filter:blur(16px) saturate(1.08);scrollbar-width:thin}.finder-panel-section{position:relative;display:grid;gap:11px;align-content:start;min-width:0;min-inline-size:0;min-height:0;margin:0;padding:14px 12px;border:0;border-radius:0;background:transparent;box-shadow:none}.finder-feedback-section{min-height:0;overflow:hidden}.finder-panel-section+.finder-panel-section{border-top:1px solid color-mix(in srgb,var(--line) 48%,transparent)}.finder-panel-section legend{padding:0;color:color-mix(in srgb,var(--accent-strong) 92%,var(--ink) 8%);font:900 .74rem/1 Trebuchet MS,Noto Sans SC,sans-serif;letter-spacing:.08em}.finder-console-title{display:flex;align-items:end;justify-content:space-between;gap:10px;min-width:0}.finder-console-title small{order:2;padding:5px 7px;border:1px solid color-mix(in srgb,var(--accent) 38%,transparent);border-radius:999px;color:color-mix(in srgb,var(--accent) 88%,var(--ink) 12%);background:color-mix(in srgb,var(--accent) 9%,transparent);font:900 .62rem/1 Trebuchet MS,Noto Sans SC,sans-serif;letter-spacing:.1em}.finder-console-title strong{min-width:0;font:900 1.2rem/1.05 Trebuchet MS,Noto Sans SC,sans-serif;text-wrap:balance}.finder-tool-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(44px,44px));justify-content:start;align-items:start;gap:10px 9px}.finder-pair-option{display:grid;justify-items:center;gap:4px;width:44px;min-width:0}.finder-tool-row-meta{margin-top:-2px;padding-top:10px;border-top:1px solid color-mix(in srgb,var(--line) 42%,transparent)}.finder-pair-chip{min-width:0;width:44px;height:44px;min-height:44px;padding:0;color:var(--ink);background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 86%,transparent),color-mix(in srgb,var(--surface) 62%,transparent));border:1px solid color-mix(in srgb,var(--pair-color) 54%,var(--line) 46%);border-radius:999px;box-shadow:inset 0 1px color-mix(in srgb,var(--button-ink) 52%,transparent),0 10px 20px -18px var(--shadow-color);font:900 .92rem/1 Trebuchet MS,Noto Sans SC,sans-serif;transition:transform .14s ease,border-color .16s ease,box-shadow .16s ease,background .16s ease}.finder-pair-chip:hover{color:var(--ink);border-color:color-mix(in srgb,var(--pair-color) 76%,var(--ink) 24%);background:linear-gradient(180deg,color-mix(in srgb,var(--pair-color) 13%,var(--surface) 87%),color-mix(in srgb,var(--surface) 70%,transparent));transform:translateY(-1px)}.finder-pair-chip.is-active{color:var(--button-ink);border-color:color-mix(in srgb,var(--pair-color) 92%,var(--ink) 8%);background:linear-gradient(180deg,color-mix(in srgb,var(--pair-color) 88%,var(--button-ink) 12%),var(--pair-color));box-shadow:0 12px 24px -18px color-mix(in srgb,var(--pair-color) 70%,var(--shadow-color) 30%),inset 0 1px color-mix(in srgb,var(--button-ink) 34%,transparent)}.finder-pair-chip.is-unknown.is-active,.finder-pair-chip.is-unknown:hover,.finder-pair-chip.is-excluded.is-active,.finder-pair-chip.is-excluded:hover{color:#fff}.finder-pair-distance{display:block;min-height:1em;color:#111;font:900 .72rem/1 Trebuchet MS,Noto Sans SC,sans-serif;font-variant-numeric:tabular-nums}.finder-pair-distance.is-empty{color:#111}.finder-pair-distance.is-met{color:var(--success)}.finder-pair-distance.is-miss{color:var(--danger)}.finder-clear-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.finder-clear-row button{min-height:32px;padding:6px 8px;border:1px solid color-mix(in srgb,var(--line) 66%,transparent);border-radius:8px;color:var(--ink);background:color-mix(in srgb,var(--surface) 58%,transparent);box-shadow:inset 0 1px color-mix(in srgb,var(--button-ink) 36%,transparent);font:900 .78rem/1 Trebuchet MS,Noto Sans SC,sans-serif}.finder-clear-row button:hover{border-color:color-mix(in srgb,var(--accent) 56%,var(--line) 44%);background:color-mix(in srgb,var(--accent) 10%,var(--surface) 90%)}.finder-submit-row{display:grid;grid-template-columns:minmax(0,1fr);align-items:center;gap:9px}.finder-submit-row button{min-height:44px;padding:9px 16px;color:var(--button-ink);border-radius:10px;background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 88%,var(--button-ink) 12%),var(--accent));box-shadow:0 16px 28px -22px color-mix(in srgb,var(--accent) 74%,var(--shadow-color) 26%),inset 0 1px color-mix(in srgb,var(--button-ink) 28%,transparent);font:900 .92rem/1 Trebuchet MS,Noto Sans SC,sans-serif}.finder-submit-row button+button{color:var(--ink);background:color-mix(in srgb,var(--surface) 72%,transparent);box-shadow:inset 0 1px color-mix(in srgb,var(--button-ink) 46%,transparent),0 12px 22px -20px var(--shadow-color)}.finder-console-stats{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:42px;padding:9px 11px;border:1px solid color-mix(in srgb,var(--line) 54%,transparent);border-radius:10px;background:color-mix(in srgb,var(--surface) 54%,transparent);color:var(--muted);font:800 .78rem/1 Trebuchet MS,Noto Sans SC,sans-serif}.finder-console-stats strong{color:var(--ink);font-variant-numeric:tabular-nums;font-size:.92rem}.finder-status-text{margin:0;color:var(--muted);font:800 .82rem/1.35 Trebuchet MS,Noto Sans SC,sans-serif}.finder-feedback{display:grid;align-content:start;gap:5px;min-height:54px;max-height:clamp(96px,calc(100dvh - var(--topbar-height) - 460px),260px);overflow-y:auto;padding-right:4px;scrollbar-width:thin}.finder-feedback strong{font:900 .9rem/1.2 Trebuchet MS,Noto Sans SC,sans-serif}.finder-feedback p{margin:0;display:flex;justify-content:space-between;gap:8px;padding:5px 0;border-bottom:1px solid color-mix(in srgb,var(--line) 28%,transparent);border-radius:0;background:transparent;font:800 .8rem/1.25 Trebuchet MS,Noto Sans SC,sans-serif}.finder-feedback p.is-correct{color:var(--success)}.finder-feedback p.is-wrong{color:var(--danger)}.dot.finder-mark-dot{background:var(--dot-color);border-color:var(--ink);border-style:dashed;color:var(--ink);box-shadow:0 0 0 clamp(1px,calc(var(--cell-size) * .025),3px) color-mix(in srgb,var(--dot-color) 28%,transparent)}.finder-mark-unknown .dot.finder-mark-dot{background:color-mix(in srgb,var(--finder-unknown-color) 26%,var(--paper) 74%);border-color:color-mix(in srgb,var(--finder-unknown-color) 72%,var(--ink) 28%);color:var(--ink)}.finder-mark-excluded .dot.finder-mark-dot{background:color-mix(in srgb,var(--finder-excluded-color) 18%,var(--paper) 82%);border-color:color-mix(in srgb,var(--finder-excluded-color) 72%,var(--ink) 28%);color:var(--ink)}@media (max-width: 1100px){.finder-main-panel{grid-template-columns:1fr;justify-items:center;width:100%;max-width:calc(100vw - 28px);overflow-x:visible}.finder-board-shell{--board-max-width: clamp(240px, calc(100vw - 56px) , 720px);--board-max-height: clamp(180px, calc(100dvh - var(--topbar-height) - 140px), 560px)}.finder-side-panel{position:static;grid-template-columns:repeat(2,minmax(0,1fr));width:min(720px,100%);max-height:none;overflow:visible}.finder-feedback-section{grid-column:1 / -1}}:root{--control-shadow: 0 10px 26px -20px var(--shadow-color), 2px 2px 0 var(--shadow-color-soft);--panel-shadow: 0 22px 54px -36px var(--shadow-color), 5px 5px 0 var(--shadow-color-soft)}body{background:linear-gradient(90deg,var(--body-grid-color) 1px,transparent 1px),linear-gradient(var(--body-grid-color) 1px,transparent 1px),radial-gradient(circle at 18% 18%,color-mix(in srgb,var(--accent) 18%,transparent),transparent 31%),radial-gradient(circle at 82% 12%,var(--body-glow-warm),transparent 28%),linear-gradient(135deg,color-mix(in srgb,var(--paper) 88%,var(--surface) 12%),var(--paper))}button,.editor-form .editor-import-button{border-width:1px;box-shadow:var(--control-shadow)}button:active,.editor-form .editor-import-button:active{transform:translateY(1px) scale(.99);box-shadow:0 8px 18px -16px var(--shadow-color),1px 1px 0 var(--shadow-color-soft)}.app-topbar{min-height:66px;padding:9px 14px;border-bottom:1px solid color-mix(in srgb,var(--ink) 72%,transparent);background:linear-gradient(180deg,color-mix(in srgb,var(--topbar-surface) 96%,var(--surface) 4%),var(--topbar-surface));box-shadow:0 18px 48px -34px var(--shadow-color),0 1px color-mix(in srgb,var(--surface) 70%,transparent) inset}.brand{padding:5px 8px 5px 5px;border:1px solid var(--line-soft);border-radius:999px;background:color-mix(in srgb,var(--surface) 72%,transparent);box-shadow:1px 1px 0 var(--shadow-color-soft)}.brand-icon{border-radius:999px;background:var(--surface)}.view-tabs,.play-actions{border-width:1px;background:color-mix(in srgb,var(--surface) 82%,transparent);box-shadow:inset 0 1px color-mix(in srgb,var(--surface) 76%,transparent),3px 3px 0 var(--shadow-color-soft)}.view-tab,.app-topbar button{min-height:34px}.view-tab.is-active,.view-tab:hover{box-shadow:inset 0 1px color-mix(in srgb,var(--button-ink) 28%,transparent),2px 2px 0 var(--shadow-color-soft)}.online-count{min-height:34px;display:inline-grid;place-items:center;padding:6px 10px;border:1px solid var(--ink);border-radius:var(--radius-control);color:var(--ink);background:color-mix(in srgb,var(--surface) 72%,transparent);box-shadow:2px 2px 0 var(--shadow-color-soft);font:900 .82rem/1 Trebuchet MS,Noto Sans SC,sans-serif;white-space:nowrap}.game-timer{border-width:1px;min-width:82px;background:color-mix(in srgb,var(--ink) 8%,var(--surface) 92%);box-shadow:inset 0 1px color-mix(in srgb,var(--surface) 80%,transparent),2px 2px 0 var(--shadow-color-soft);font-variant-numeric:tabular-nums}.current-level-label{max-width:168px;padding-inline:9px;border-left:1px solid var(--line-soft);border-right:1px solid var(--line-soft)}.app-card,.victory-mark,.play-status{box-shadow:var(--panel-shadow)}@media (min-width: 641px){.app-topbar.layout-sidebar{position:fixed;inset:0 auto 0 0;z-index:20;width:108px;height:100dvh;min-height:0;grid-template-columns:1fr;grid-template-rows:auto auto minmax(0,1fr);align-items:start;gap:10px;padding:10px;border-right:1px solid color-mix(in srgb,var(--ink) 72%,transparent);border-bottom:0;overflow-y:auto;overflow-x:hidden}.app-topbar.layout-sidebar .topbar-left,.app-topbar.layout-sidebar .topbar-center,.app-topbar.layout-sidebar .topbar-right{width:100%;display:grid;gap:8px;justify-content:stretch}.app-topbar.layout-sidebar .brand,.app-topbar.layout-sidebar .view-tabs,.app-topbar.layout-sidebar .play-toolbar,.app-topbar.layout-sidebar .play-actions{width:100%}.app-topbar.layout-sidebar .brand{justify-content:center;border-radius:var(--radius-control);padding:5px;font-size:1rem}.app-topbar.layout-sidebar .brand span{display:none}.app-topbar.layout-sidebar .view-tabs,.app-topbar.layout-sidebar .play-actions{display:grid;grid-template-columns:1fr}.app-topbar.layout-sidebar .play-toolbar{display:grid;gap:8px}.app-topbar.layout-sidebar .topbar-right{align-content:start;grid-template-columns:1fr}.app-topbar.layout-sidebar .github-link,.app-topbar.layout-sidebar .rule-button,.app-topbar.layout-sidebar .personalize-button,.app-topbar.layout-sidebar .developer-button,.app-topbar.layout-sidebar .online-count,.app-topbar.layout-sidebar .game-timer,.app-topbar.layout-sidebar .game-mode-select,.app-topbar.layout-sidebar .current-level-label,.app-topbar.layout-sidebar .play-actions button{width:100%}.app-topbar.layout-sidebar .github-link{min-height:34px}.app-topbar.layout-sidebar .rule-button,.app-topbar.layout-sidebar .personalize-button,.app-topbar.layout-sidebar .view-tab,.app-topbar.layout-sidebar .play-actions button{padding-inline:6px}.app-topbar.layout-sidebar .current-level-label{max-width:none;text-align:center}.app-topbar.layout-sidebar .game-mode-select{display:grid;justify-items:stretch;padding-left:0;border-left:0}.app-topbar.layout-sidebar .game-mode-select select{min-width:0;width:100%}.app-shell.has-sidebar-nav{width:calc(100% - 108px);margin-left:108px;min-height:var(--page-height)}.app-shell.has-sidebar-nav .personalization-panel,.app-shell.has-sidebar-nav .rule-panel{right:14px}}:root[data-theme=night] body{font-family:Trebuchet MS,Noto Sans SC,Microsoft YaHei,system-ui,sans-serif;background:linear-gradient(90deg,var(--body-grid-color) 1px,transparent 1px),linear-gradient(var(--body-grid-color) 1px,transparent 1px),radial-gradient(circle at 22% 14%,color-mix(in srgb,var(--accent) 10%,transparent),transparent 30%),radial-gradient(circle at 84% 10%,color-mix(in srgb,var(--line) 28%,transparent),transparent 25%),linear-gradient(135deg,#0c1217,var(--paper))}:root[data-theme=night] body:after{opacity:min(var(--background-opacity),.26);mix-blend-mode:soft-light}:root[data-theme=night] .app-topbar{border-bottom-color:color-mix(in srgb,var(--line) 78%,transparent);background:linear-gradient(180deg,color-mix(in srgb,var(--topbar-surface) 94%,var(--surface) 6%),var(--topbar-surface));box-shadow:0 18px 48px -34px var(--shadow-color),0 1px color-mix(in srgb,#ffffff 8%,transparent) inset}:root[data-theme=night] .brand,:root[data-theme=night] .view-tabs,:root[data-theme=night] .play-actions,:root[data-theme=night] .game-timer,:root[data-theme=night] .github-link,:root[data-theme=night] .online-count{background:color-mix(in srgb,var(--surface) 82%,transparent);box-shadow:inset 0 1px color-mix(in srgb,#ffffff 7%,transparent),2px 2px 0 var(--shadow-color-soft)}:root[data-theme=night] .developer-button{color:var(--ink);background:#26333d}:root[data-theme=night] .developer-button:hover{background:#30404b}:root[data-theme=night] .app-card,:root[data-theme=night] .victory-mark,:root[data-theme=night] .play-status,:root[data-theme=night] .level-picker-panel,:root[data-theme=night] .rule-panel,:root[data-theme=night] .personalization-panel,:root[data-theme=night] .finder-board-shell{border-color:color-mix(in srgb,var(--line) 82%,var(--ink) 18%);box-shadow:0 22px 58px -38px var(--shadow-color),4px 4px 0 var(--shadow-color-soft)}:root[data-theme=night] .app-card,:root[data-theme=night] .victory-mark,:root[data-theme=night] .play-status,:root[data-theme=night] .level-picker-panel,:root[data-theme=night] .rule-panel,:root[data-theme=night] .personalization-panel{background:var(--surface-glass)}:root[data-theme=night] .finder-board-shell{background:linear-gradient(145deg,color-mix(in srgb,#ffffff 1%,transparent),transparent 46%),rgb(from var(--surface-soft) r g b / .01);box-shadow:0 30px 76px -48px var(--shadow-color),inset 0 1px color-mix(in srgb,#ffffff 8%,transparent),inset 0 -1px color-mix(in srgb,var(--line) 12%,transparent)}:root[data-theme=night] .finder-side-panel{border-color:color-mix(in srgb,var(--line) 78%,var(--ink) 22%);background:linear-gradient(180deg,color-mix(in srgb,var(--surface-glass) 88%,#ffffff 2%),var(--surface-glass)),color-mix(in srgb,var(--surface) 78%,transparent);box-shadow:0 24px 64px -40px var(--shadow-color),inset 0 1px color-mix(in srgb,#ffffff 8%,transparent)}:root[data-theme=night] .finder-pair-chip,:root[data-theme=night] .finder-console-stats,:root[data-theme=night] .finder-submit-row button+button,:root[data-theme=night] .finder-feedback p{background:color-mix(in srgb,var(--surface) 78%,transparent)}:root[data-theme=night] .current-level-label,:root[data-theme=night] .level-directory-status,:root[data-theme=night] .level-picker-status{color:var(--muted)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{scroll-behavior:auto!important}}@media (max-width: 640px){.app-shell.has-sidebar-nav{width:100%;margin-left:0}.app-topbar{position:relative;display:grid;grid-template-columns:minmax(max-content,1fr) auto auto auto auto;grid-template-areas:"brand developer github rule settings" "online online online online online" "timer timer timer timer timer" "actions actions actions actions actions";align-items:center;gap:5px 7px;height:auto;min-height:var(--topbar-height);padding:4px 8px 7px}.topbar-left{display:contents}.brand{grid-area:brand;min-width:0;gap:6px;font-size:.9rem}.brand-icon{width:24px;height:24px}.brand span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.brand-button{width:42px;min-width:42px;padding:4px;justify-content:center}.brand-button>span:not(.brand-mark){display:none}.brand-mark{width:32px;height:32px}.view-tabs{display:none}.topbar-center,.play-toolbar,.topbar-right{display:contents}.app-topbar:not(.is-play):not(.is-finder-total):not(.is-bridge) .game-timer,.app-topbar:not(.is-play):not(.is-finder-total):not(.is-bridge) .play-actions{display:none}.online-count{grid-area:online;justify-self:end;min-height:28px;padding:4px 8px;font-size:.76rem}.game-timer{grid-area:timer;min-width:70px;padding:4px 6px;font-size:.84rem;white-space:nowrap}.developer-button{grid-area:developer;min-width:52px;padding-inline:7px;font-size:.76rem}.github-link{grid-area:github;width:32px;height:32px}.rule-button{grid-area:rule;min-width:44px}.personalize-button{grid-area:settings;min-width:44px}.personalization-panel{position:fixed;inset:50% auto auto 50%;display:grid;width:min(420px,calc(100vw - 20px));max-height:min(78svh,600px);padding:12px;transform:translate(-50%,-50%)}.rule-panel{position:fixed;inset:50% auto auto 50%;width:min(460px,calc(100vw - 20px));max-height:min(76svh,560px);padding:12px;transform:translate(-50%,-50%)}.play-actions{grid-area:actions;display:grid;grid-template-columns:minmax(78px,auto) minmax(48px,1fr) auto;gap:5px;align-items:center;justify-content:stretch;width:100%;min-width:0;padding:2px}.level-picker-button{min-width:0;justify-content:center}.current-level-label{width:100%;max-width:none;min-width:0;padding:5px 4px;text-align:center;font-size:.8rem}.app-topbar button{min-height:32px;padding:4px 7px;font-size:.8rem}.game-mode-rail{position:relative;top:auto;left:auto;z-index:9;grid-template-columns:repeat(2,minmax(0,1fr));width:calc(100% - 16px);margin:7px 8px 0;padding:5px;border-radius:14px;overflow:visible;transition:none}.game-mode-rail:hover,.game-mode-rail:focus-within{width:calc(100% - 16px);box-shadow:0 16px 36px -28px var(--shadow-color),inset 0 1px color-mix(in srgb,var(--button-ink) 42%,transparent)}.game-mode-rail-item{grid-template-columns:30px minmax(0,1fr);width:100%;min-width:0;min-height:38px;border-radius:11px}.game-mode-rail-item.is-active{background:color-mix(in srgb,var(--accent) 10%,var(--surface) 90%);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 42%,transparent)}.game-mode-rail-icon{width:30px;height:30px;border-radius:999px;font-size:.74rem}.game-mode-rail-label{opacity:1;transform:none}.game-mode-rail-label strong{font-size:.74rem}.game-mode-rail-label small{display:none}.app-shell{width:100%;padding:0}.game-local-toolbar{position:static;justify-self:start;max-width:calc(100vw - 16px);margin:0 0 1px;padding:4px;background:#ffffffad}.game-local-toolbar .toolbar-game-title,.game-local-toolbar .toolbar-level-title{max-width:38vw}.close-button{padding:4px 7px;font-size:.74rem}.view-editor{height:100%;min-height:0;overflow:auto}.editor-panel{min-height:100%;height:auto;padding:12px;overflow:visible}.editor-workspace{grid-template-columns:1fr}.editor-form{grid-template-columns:1fr;gap:7px}.editor-form-group,.editor-form-group-main,.editor-form-group-grid{grid-template-columns:1fr}.editor-form-group-grid .editor-grid-type-field,.editor-form-group-grid .editor-size-field,.editor-form-group-grid .editor-pair-count-field,.editor-form-group-grid .editor-difficulty-field,.editor-form-group-grid .editor-mode-field{grid-column:1;grid-row:auto}.editor-form-actions{grid-column:1;grid-template-columns:1fr;gap:7px}.editor-generator-panel{grid-column:1;grid-row:auto;grid-template-columns:1fr}.preview-panel{grid-template-columns:1fr;gap:8px}.pair-picker{grid-auto-flow:column;grid-auto-columns:max-content;grid-column:1;grid-row:1;justify-content:start;max-width:calc(100vw - 24px);max-height:none;overflow-x:auto;overflow-y:hidden;padding-top:0;padding-bottom:6px}.preview-board-wrap{--preview-width-limit: min(100vw - 24px, 640px);--preview-height-limit: min(58svh, 520px);grid-column:1;grid-row:2;width:var(--preview-width-limit);height:var(--preview-height-limit);padding:18px}.preview-board{max-width:100%}.level-output-panel{margin-top:8px}.level-output-textarea{min-height:150px;max-height:42svh}.preview-hint{font-size:.9rem;line-height:1.45}}@media (max-width: 560px){.game-panel{padding:14px;transform:none}}@media (max-width: 640px) and (orientation: portrait){:root{--topbar-height: 88px;--page-height: 100svh}html,body,#app{width:100%;min-height:100svh;overflow-x:hidden;overflow-y:auto}body{position:relative;inset:auto}.app-shell{height:auto;min-height:calc(100svh - var(--topbar-height));overflow:visible}.game-panel{width:100%;height:auto;min-height:calc(100svh - var(--topbar-height));padding:1px 0 max(12px,env(safe-area-inset-bottom));transform:none}.level-picker-panel{position:fixed;inset:calc(var(--topbar-height) + 20px) auto auto 50%;width:min(460px,calc(100vw - 20px));height:auto;max-height:min(calc(100svh - var(--topbar-height) - 30px),560px);padding:12px;transform:translate(-50%)}.level-picker-header,.level-picker-filters{align-items:stretch}.level-picker-filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.level-picker-filters label{grid-template-columns:1fr}.level-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.level-card{min-height:74px;padding:9px}.victory-mark{top:50%;left:50%;right:auto;max-width:calc(100vw - 28px);min-width:min(340px,calc(100vw - 28px));padding:14px;white-space:normal;transform:translate(-50%,-50%)}.victory-actions{justify-content:stretch}.victory-actions button{flex:1 1 0}.victory-mark svg{width:38px;height:38px}.victory-mark span,.victory-mark strong,.victory-share-button{font-size:.82rem}.victory-main{gap:9px}}.collection-shell{display:grid;grid-template-rows:auto minmax(0,1fr);height:100dvh;min-height:0;overflow:hidden;color:#18201f;background:transparent;font-family:Georgia,Times New Roman,"Noto Serif SC",Songti SC,serif}.collection-nav{position:sticky;top:0;z-index:30;display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;gap:12px;min-height:52px;padding:6px 18px;border-bottom:1px solid rgba(24,32,31,.12);background:color-mix(in srgb,var(--topbar-surface) 88%,transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:0 14px 34px -30px var(--shadow-color)}.brand-button,.collection-nav nav,.collection-nav-actions,.collection-status-strip,.collection-global-actions{display:inline-flex;align-items:center}.brand-button{gap:8px;flex:0 0 auto;min-height:34px;padding:3px 11px 3px 5px;border:1px solid rgba(24,32,31,.12);border-radius:999px;color:#f8fffb;background:var(--accent, #0f766e);box-shadow:none;font-family:Georgia,Times New Roman,"Noto Serif SC",Songti SC,serif;font-weight:800}.collection-nav .brand-button{color:#f8fffb;background:var(--accent, #0f766e)}.collection-nav .brand-button:hover{color:#f8fffb;background:var(--accent-strong, var(--accent, #0f766e))}.brand-mark{display:grid;place-items:center;width:28px;height:28px;min-width:28px;flex:0 0 28px;aspect-ratio:1;overflow:hidden;border-radius:50%;color:var(--accent, #0f766e);background:#f8fffb;font-family:Trebuchet MS,Noto Sans SC,Microsoft YaHei,system-ui,sans-serif;font-size:.72rem;font-weight:900}.brand-mark img{display:block;width:100%;height:100%;object-fit:cover}.collection-nav nav{flex:0 0 auto;gap:3px;padding:3px;border:1px solid rgba(24,32,31,.12);border-radius:999px;background:#ffffffb3}.collection-nav button,.collection-nav a,.game-local-toolbar button,.home-primary-action{min-height:32px;border:0;border-radius:999px;padding:6px 12px;color:#18201f;background:transparent;box-shadow:none;font-family:Trebuchet MS,Noto Sans SC,Microsoft YaHei,system-ui,sans-serif;font-size:.86rem;font-weight:800;text-decoration:none;transition:background .18s ease,color .18s ease,transform .14s ease,border-color .18s ease}.collection-nav button:hover,.collection-nav button.is-active,.collection-nav a:hover,.game-local-toolbar button:hover,.home-primary-action{color:#f8fffb;background:var(--accent, #0f766e)}.collection-nav button:active,.collection-nav a:active,.game-local-toolbar button:active,.home-primary-action:active{transform:translateY(1px) scale(.99)}.collection-nav button:disabled,.collection-nav button[aria-disabled=true]{cursor:not-allowed;color:#18201f6b;background:transparent}.collection-nav button:disabled:hover,.collection-nav button[aria-disabled=true]:hover{color:#18201f6b;background:transparent}.collection-nav-actions{display:contents}.collection-status-strip{grid-column:3;justify-self:center;gap:4px;max-width:min(48vw,620px);min-width:0;padding:3px;border:1px solid rgba(24,32,31,.1);border-radius:999px;background:#ffffff85}.collection-status-strip .toolbar-level-title{max-width:min(240px,18vw)}.collection-global-actions{grid-column:4;justify-self:end;gap:4px;padding-left:10px;border-left:1px solid rgba(24,32,31,.14)}.collection-nav .github-link{display:inline-grid;place-items:center;width:32px;min-width:32px;height:32px;padding:0;color:#18201f;background:#ffffff94;border:1px solid rgba(24,32,31,.12)}.collection-nav .github-link:hover{color:#f8fffb;background:#24292f;border-color:#24292f;transform:translateY(-1px)}.github-mark{display:block;width:17px;height:17px}.collection-main{width:min(1180px,calc(100% - 32px));height:100%;min-height:0;margin:0 auto;padding:34px 0 56px;overflow:auto}.collection-main.is-playing{width:min(1420px,calc(100% - 20px));padding:1px 0 0;overflow:hidden}.home-view,.library-view{display:grid;gap:28px}.home-view{min-height:calc(100dvh - 154px);align-content:center}.home-wrap,.library-view{width:100%}.home-heading,.library-heading{display:grid;gap:12px;max-width:760px}.home-heading>span,.library-heading>span{color:#0f766e;font-family:Trebuchet MS,Noto Sans SC,Microsoft YaHei,system-ui,sans-serif;font-size:.82rem;font-weight:900;letter-spacing:.06em;text-transform:uppercase}.home-heading h1,.library-heading h1{margin:0;max-width:760px;font-size:clamp(2.5rem,7vw,5.8rem);line-height:.95;font-family:Georgia,Times New Roman,"Noto Serif SC",Songti SC,serif;font-weight:900}.home-heading p,.library-heading p{max-width:620px;margin:0;color:#5f6b68;font-size:1.05rem;line-height:1.7;font-family:Georgia,Times New Roman,"Noto Serif SC",Songti SC,serif}.home-primary-action{justify-self:start;margin-top:8px}.home-game-grid,.library-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:28px}.home-game-card,.library-card{display:grid;grid-template-columns:auto minmax(0,1fr);gap:16px;min-height:176px;padding:18px;border:1px solid rgba(24,32,31,.14);border-radius:8px;color:#18201f;background:#ffffffc2;box-shadow:none;text-align:left;transition:background .18s ease,border-color .18s ease,transform .14s ease,box-shadow .18s ease}.home-game-card:hover,.library-card:hover,.library-card.is-active{border-color:#0f766e61;background:#fff;transform:translateY(-1px);box-shadow:0 18px 38px -34px var(--shadow-color)}.home-game-card:disabled,.home-game-card[aria-disabled=true]{cursor:not-allowed;opacity:.58;transform:none}.home-game-card:disabled:hover,.home-game-card[aria-disabled=true]:hover{border-color:#18201f24;background:#ffffffc2}.home-game-mark,.library-card-mark{display:grid;place-items:center;width:54px;height:54px;border-radius:16px;color:#f8fffb;background:var(--accent, #0f766e);font-size:1.2rem;font-weight:900}.home-game-copy,.library-card-body{display:grid;gap:8px}.home-game-copy small,.library-card-body small{color:var(--accent, #0f766e);font-family:Trebuchet MS,Noto Sans SC,Microsoft YaHei,system-ui,sans-serif;font-weight:900}.home-game-copy strong,.library-card-body strong{font-size:1.45rem;line-height:1.05}.home-game-copy span,.library-card-body span{color:#5f6b68;line-height:1.55}.game-host{position:relative;display:grid;justify-items:stretch;gap:0;container-type:size;height:100%;min-height:0;overflow:hidden}.game-local-toolbar{display:inline-flex;justify-self:start;align-items:center;gap:8px;width:auto;max-width:100%;min-height:20px;padding:5px;border:1px solid rgba(24,32,31,.12);border-radius:8px;background:#ffffffc2}.game-local-toolbar strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.game-local-toolbar{position:absolute;top:0;left:0;z-index:20;margin-bottom:0}.game-local-toolbar .game-back-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:8px 13px 8px 10px;border:1px solid color-mix(in srgb,var(--accent) 28%,var(--line));border-radius:6px;color:var(--ink);background:color-mix(in srgb,var(--surface) 92%,var(--accent) 8%);box-shadow:0 8px 20px -18px var(--shadow-color);transition:transform .16s ease,color .16s ease,background .16s ease,border-color .16s ease,box-shadow .16s ease}.game-local-toolbar .game-back-button:hover{border-color:var(--accent);color:var(--button-ink);background:var(--accent);box-shadow:0 12px 24px -18px var(--accent);transform:translate(-1px)}.game-local-toolbar .game-back-button:active{transform:translate(-1px) scale(.98)}.game-local-toolbar .game-back-button:focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 38%,transparent);outline-offset:2px}.game-back-icon{display:grid;place-items:center;width:18px;height:18px;color:currentColor;font-family:Trebuchet MS,Noto Sans SC,Microsoft YaHei,system-ui,sans-serif;font-size:1.15rem;line-height:1}.toolbar-game-title{max-width:min(260px,52vw)}.toolbar-level-title{max-width:min(220px,22vw)}.toolbar-clock{min-width:76px;padding:6px 10px;border-radius:999px;color:#0f2f2b;background:#0f766e1a;font-variant-numeric:tabular-nums;font-weight:900;text-align:center}.linker-game,.finder-game,.bridge-game{position:relative;display:flex;flex-direction:column;width:100%;height:100%;min-height:0;background:transparent;overflow:hidden}.linker-game>.view,.finder-game>.view,.bridge-game>.view{flex:1 1 auto;min-height:0}@media (max-width: 820px){.collection-nav{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"brand nav global" "status status status";gap:5px 7px;min-height:0;padding:5px 8px 6px}.brand-button{grid-area:brand;width:38px;min-width:38px;min-height:38px;padding:3px;justify-content:center}.brand-button>span:not(.brand-mark){display:none}.brand-mark{width:30px;height:30px;min-width:30px;flex-basis:30px}.collection-nav nav{grid-area:nav;min-width:0;justify-self:stretch;padding:2px}.collection-nav nav button:nth-child(3),.collection-nav nav button[aria-disabled=true],.collection-nav nav button:disabled{display:none}.collection-nav nav button{flex:1;min-width:0;min-height:30px;padding:4px 8px}.collection-nav-actions{display:contents}.collection-status-strip{grid-area:status;justify-self:stretch;justify-content:center;max-width:none;width:100%;min-width:0;flex:none;min-height:34px;padding:2px}.collection-status-strip .toolbar-level-title{max-width:min(34vw,220px)}.collection-global-actions{grid-area:global;display:inline-flex;justify-content:flex-end;gap:4px;max-width:100%;overflow:visible;padding-left:0;border-left:0}.collection-global-actions .developer-toggle-button{display:none}.collection-nav .github-link{width:30px;min-width:30px;height:30px}.collection-global-actions>button{min-height:30px;padding:4px 8px}.collection-main{width:min(100% - 20px,680px);padding-top:14px}.collection-main.is-playing{width:min(100% - 12px,680px);padding-top:1px}.home-game-grid,.library-grid{grid-template-columns:1fr}.game-local-toolbar{flex-wrap:wrap;position:static;margin-bottom:1px}}.view-play,.view-finder{height:100%;min-height:0;align-items:start;justify-items:center;align-content:start;padding:0 28px 16px;overflow:hidden}@media (min-width: 641px){.view-play,.view-finder{padding-left:76px}}.view-finder{padding-top:0}.game-panel{position:relative;display:grid;grid-template-rows:1fr;justify-items:center;align-items:start;align-content:start;gap:0;width:100%;min-height:0;height:100%;padding:0;transform:none;margin-block:0}.level-picker-panel{position:absolute;top:14px;left:50%;z-index:8;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;gap:10px;width:min(460px,calc(100vw - 56px));max-height:min(620px,calc(var(--page-height) - var(--topbar-height) - 44px));padding:14px;overflow:hidden;transform:translate(-50%)}.level-picker-header,.level-picker-filters{display:flex;align-items:center;justify-content:space-between;gap:10px}.level-picker-header strong{font:900 1rem/1 Trebuchet MS,Noto Sans SC,sans-serif}.level-directory-status{color:var(--muted);font:800 .78rem/1.2 Trebuchet MS,Noto Sans SC,sans-serif;white-space:nowrap}.level-picker-filters label{display:inline-grid;grid-template-columns:auto minmax(92px,1fr);align-items:center;gap:6px;color:var(--muted);font:700 .86rem/1 Trebuchet MS,Noto Sans SC,sans-serif}.level-picker-filters select{min-width:92px;border:2px solid var(--ink);border-radius:6px;padding:5px 8px;color:var(--ink);background:var(--paper)}.level-group-list{display:grid;align-content:start;gap:12px;min-height:0;overflow:auto;overscroll-behavior:contain;padding-right:4px;scrollbar-width:none;-webkit-overflow-scrolling:touch}.level-group-list::-webkit-scrollbar{display:none}.level-group h2{margin:0 0 6px;color:var(--accent-strong);font-size:.95rem}.level-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:8px}.level-card{display:grid;gap:4px;min-height:82px;padding:0;border:2px solid var(--ink);border-radius:6px;color:var(--ink);background:var(--surface);text-align:left;box-shadow:4px 4px 0 var(--shadow-color);overflow:hidden}.level-card-main{display:grid;gap:4px;min-height:82px;width:100%;padding:10px;border:0;border-radius:0;color:inherit;background:transparent;box-shadow:none;text-align:left}.level-card strong,.level-card span,.level-card small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.level-card span,.level-card small{color:var(--muted);font-size:.78rem}.level-card.is-active,.level-card:hover{color:var(--button-ink);background:var(--accent)}.level-card-main:hover{background:transparent}.level-card.is-active span,.level-card.is-active small,.level-card:hover span,.level-card:hover small{color:color-mix(in srgb,var(--button-ink) 86%,transparent)}.level-card.is-completed{border-color:var(--success);background:var(--completed-surface)}.level-card.is-completed:hover,.level-card.is-completed.is-active{color:var(--button-ink);background:var(--accent)}.level-card.is-completed span,.level-card.is-completed small{color:var(--completed-ink)}.level-card.is-completed:hover span,.level-card.is-completed:hover small,.level-card.is-completed.is-active span,.level-card.is-completed.is-active small{color:color-mix(in srgb,var(--button-ink) 86%,transparent)}.level-review-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:0 8px 8px}.level-review-actions button{padding:5px 6px;font:900 .74rem/1 Trebuchet MS,Noto Sans SC,sans-serif;box-shadow:2px 2px 0 var(--shadow-color-soft)}.level-picker-status{margin:0;color:var(--muted);font:800 .82rem/1.3 Trebuchet MS,Noto Sans SC,sans-serif}.board-wrap{display:grid;place-items:center;width:fit-content;max-width:var(--board-max-width);max-height:none;overflow:visible;padding:0}.play-status{display:grid;place-items:center;min-width:min(360px,calc(100vw - 56px));min-height:160px;border:2px solid var(--ink);border-radius:8px;color:var(--ink);background:var(--surface-raised);box-shadow:6px 6px 0 var(--shadow-color-soft);font:900 1.1rem/1 Trebuchet MS,Noto Sans SC,sans-serif}.board{position:relative;width:calc(var(--cols) * var(--cell-size));height:calc(var(--rows) * var(--cell-size));background:transparent;border:0;border-radius:6px;touch-action:none;-webkit-user-select:none;user-select:none;overflow:visible}.game-watermark{position:fixed;right:max(14px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));z-index:9;color:var(--ink);font:900 1.2rem/1 Trebuchet MS,Noto Sans SC,sans-serif;opacity:.22;pointer-events:none;-webkit-user-select:none;user-select:none;white-space:nowrap}.board-wrap.is-loading .board{background:linear-gradient(90deg,var(--grid-line) 0 2px,transparent 2px) 0 0 / 25% 25%,linear-gradient(0deg,var(--grid-line) 0 2px,transparent 2px) 0 0 / 25% 25%;opacity:.32}.edge-grid{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;width:100%;height:100%;overflow:visible;pointer-events:none}.edge-grid path{stroke:var(--grid-line);stroke-linecap:square;stroke-width:max(1px,calc(var(--cell-size) * var(--map-grid-line-scale)));vector-effect:non-scaling-stroke}.edge-lines{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;width:100%;height:100%;overflow:visible;pointer-events:none}.edge-lines path{stroke-linecap:round;stroke-linejoin:round;stroke-width:max(1px,calc(var(--cell-size) * var(--map-line-scale)));vector-effect:non-scaling-stroke;opacity:1;transition:opacity 80ms ease}.edge-lines .preview-line{stroke-width:max(1px,calc(var(--cell-size) * var(--map-line-scale)));opacity:.55;transition:none}.edge-lines .is-hint-correct{opacity:1}.edge-lines .hint-chain-link{fill:none;stroke:var(--ink);stroke-width:5px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:14px 10px;stroke-dashoffset:5px;vector-effect:non-scaling-stroke;opacity:.95;pointer-events:none}.victory-mark{position:absolute;top:50%;left:50%;z-index:5;display:grid;grid-template-columns:1fr;align-items:center;gap:12px;min-width:min(360px,calc(100vw - 40px));padding:18px 20px;border:4px solid var(--ink);border-radius:8px;color:var(--ink);background:var(--surface);box-shadow:10px 10px 0 var(--shadow-color);font:900 1rem/1 Trebuchet MS,Noto Sans SC,sans-serif;transform:translate(-50%,-50%)}.app-dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;background:#0000006b}.app-dialog{position:fixed;z-index:21}.app-dialog-form{display:grid;gap:10px}.app-dialog-form input{width:100%;min-height:38px;border:2px solid var(--ink);border-radius:6px;padding:7px 9px;color:var(--ink);background:var(--paper);font:800 .92rem/1 Trebuchet MS,Noto Sans SC,sans-serif}.captcha-field{display:grid;gap:6px;color:var(--ink);font:900 .86rem/1 Trebuchet MS,Noto Sans SC,sans-serif}.captcha-field span{color:var(--accent-strong)}.victory-main{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px}.victory-mark svg{width:46px;height:46px;fill:var(--success)}.victory-copy{display:grid;gap:6px}.victory-copy span{font-size:1.28rem}.victory-copy strong{color:var(--accent-strong);font-size:1rem}.victory-pb{padding:3px 8px;border:2px solid var(--success);border-radius:999px;color:var(--success);font:900 .9rem/1 Trebuchet MS,Noto Sans SC,sans-serif}.victory-actions{display:flex;justify-content:flex-end;gap:8px}.victory-share-button{padding:5px 9px;border-width:2px;color:var(--button-ink);font:900 .85rem/1 Trebuchet MS,Noto Sans SC,sans-serif;box-shadow:2px 2px 0 var(--shadow-color)}.victory-status{margin:0;color:var(--accent-strong);font:900 .86rem/1.2 Trebuchet MS,Noto Sans SC,sans-serif;text-align:right}.node{position:absolute;z-index:1;left:calc((100% / var(--cols)) * var(--node-x));top:calc((100% / var(--rows)) * var(--node-y));width:max(18px,calc(var(--cell-size) * max(var(--map-dot-scale),var(--map-node-scale),.18)));height:max(18px,calc(var(--cell-size) * max(var(--map-dot-scale),var(--map-node-scale),.18)));display:grid;place-items:center;padding:0;border:0;border-radius:999px;color:inherit;background:transparent;box-shadow:none;cursor:pointer;transform:translate3d(-50%,-50%,0);transition:background .14s ease,outline-color .14s ease,transform .14s ease}.node.endpoint-node{z-index:4}.node:hover{background:color-mix(in srgb,var(--accent) 14%,transparent)}.node:active{transform:translate3d(-50%,-50%,0) scale(.98);box-shadow:none}.node:before{content:"";position:absolute;z-index:1;width:max(3px,calc(var(--cell-size) * var(--map-node-scale)));height:max(3px,calc(var(--cell-size) * var(--map-node-scale)));border-radius:999px;background:var(--grid-line);opacity:1;transition:transform .14s ease,opacity .14s ease}.node.path-node:before{width:max(3px,calc(var(--cell-size) * var(--map-node-scale)));height:max(3px,calc(var(--cell-size) * var(--map-node-scale)));opacity:1;transform:none}.dot{position:relative;z-index:3;width:max(16px,calc(var(--cell-size) * var(--map-dot-scale)));height:max(16px,calc(var(--cell-size) * var(--map-dot-scale)));min-width:max(16px,calc(var(--cell-size) * var(--map-dot-scale)));min-height:max(16px,calc(var(--cell-size) * var(--map-dot-scale)));flex:0 0 auto;box-sizing:border-box;display:grid;place-items:center;border:clamp(2px,calc(var(--cell-size) * .04),5px) solid var(--dot-border);border-radius:999px;color:var(--button-ink);background:var(--dot-color);box-shadow:0 0 0 clamp(1px,calc(var(--cell-size) * .03),4px) var(--ink),0 clamp(3px,calc(var(--cell-size) * .06),8px) 0 #0000002e;font:900 max(10px,calc(var(--cell-size) * var(--map-dot-scale) * .8))/1 "Trebuchet MS","Noto Sans SC",sans-serif;white-space:nowrap;transition:transform .16s ease,box-shadow .16s ease,outline-color .16s ease}.node.target .dot{animation:target-pulse 1.2s cubic-bezier(.16,1,.3,1) infinite;box-shadow:0 0 0 clamp(2px,calc(var(--cell-size) * .035),5px) var(--ink),0 0 0 clamp(9px,calc(var(--cell-size) * .15),20px) color-mix(in srgb,var(--dot-color) 52%,transparent),0 0 clamp(16px,calc(var(--cell-size) * .24),34px) color-mix(in srgb,var(--dot-color) 44%,transparent),0 clamp(4px,calc(var(--cell-size) * .07),9px) 0 #0003}.node.target .dot:after{content:"";position:absolute;inset:clamp(-10px,calc(var(--cell-size) * -.16),-4px);z-index:0;border:clamp(2px,calc(var(--cell-size) * .035),5px) solid color-mix(in srgb,var(--dot-color) 70%,var(--button-ink) 30%);border-radius:inherit;opacity:.78;pointer-events:none;animation:target-ring 1.2s cubic-bezier(.16,1,.3,1) infinite}.dot.has-texture{overflow:hidden;background:var(--dot-color)}.dot-texture{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;width:100%;height:100%;object-fit:cover;border-radius:inherit;pointer-events:none;-webkit-user-select:none;user-select:none}.dot-label{position:absolute;left:50%;top:50%;z-index:2;display:grid;place-items:center;max-width:80%;max-height:80%;overflow:hidden;text-align:center;text-overflow:clip;line-height:.85;transform:translate(-50%,-45%);pointer-events:none}.dot-label.is-wide{font-size:.78em;letter-spacing:-.04em}.dot.has-texture .dot-label{opacity:0}@keyframes target-pulse{0%,to{filter:brightness(1) saturate(1);transform:scale(1)}50%{filter:brightness(1.22) saturate(1.18);transform:scale(1.18)}}@keyframes target-ring{0%,to{opacity:.3;transform:scale(.86)}50%{opacity:.95;transform:scale(1.12)}}.level-picker-panel{gap:12px}.level-picker-header{padding-bottom:10px;border-bottom:1px solid var(--line-soft)}.level-picker-filters{padding:10px;border:1px solid var(--line-soft);border-radius:var(--radius-control);background:color-mix(in srgb,var(--surface) 62%,transparent)}.level-picker-filters label{align-items:start}.level-card-grid{gap:10px}.level-card{border-width:1px;border-radius:var(--radius-control);box-shadow:3px 3px 0 var(--shadow-color-soft);transition:background .16s ease,border-color .16s ease,box-shadow .16s ease,transform .12s ease}.level-card:hover{transform:translateY(-1px);box-shadow:4px 5px 0 var(--shadow-color-soft)}.level-card-main{gap:5px}.victory-mark{border-width:2px;border-radius:var(--radius-panel);box-shadow:8px 8px 0 var(--shadow-color-soft)}.victory-actions{flex-wrap:wrap}.board-wrap{position:relative;padding:calc(var(--cell-size) / 2);border:1px solid color-mix(in srgb,var(--button-ink) 46%,var(--line) 54%);border-radius:calc(var(--radius-panel) + 8px);background:linear-gradient(145deg,color-mix(in srgb,var(--button-ink) 1%,transparent),transparent 42%),rgb(from var(--surface-soft) r g b / .01);box-shadow:0 28px 72px -50px var(--shadow-color),inset 0 1px color-mix(in srgb,var(--button-ink) 8%,transparent),inset 0 -1px color-mix(in srgb,var(--line) 4%,transparent);-webkit-backdrop-filter:blur(2px) saturate(1.01);backdrop-filter:blur(2px) saturate(1.01)}.board-wrap.finder-workspace{border:0;border-radius:0;background:transparent;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;padding:0}.board{filter:drop-shadow(0 14px 18px color-mix(in srgb,var(--shadow-color) 42%,transparent))}.edge-grid path{opacity:.88}.dot{box-shadow:0 0 0 clamp(1px,calc(var(--cell-size) * .03),4px) var(--ink),0 clamp(4px,calc(var(--cell-size) * .07),9px) clamp(1px,calc(var(--cell-size) * .025),4px) color-mix(in srgb,var(--dot-color) 22%,transparent),0 clamp(3px,calc(var(--cell-size) * .055),7px) 0 #00000029}.level-picker-panel{border-width:1px}.level-card.is-active,.level-card:hover{border-color:color-mix(in srgb,var(--ink) 80%,var(--accent) 20%)}@media (prefers-reduced-motion: reduce){.edge-lines path,.edge-grid path,.node,.dot{animation:none;transition:none}}.view-editor{grid-template-columns:minmax(0,1280px);justify-content:center;align-content:start;height:100%;min-height:0;padding-top:28px;padding-bottom:56px;overflow:auto}.app-shell:has(.view-editor.is-active){height:100%;min-height:0;overflow:hidden}.editor-panel{min-height:100%;padding:18px 22px 22px;overflow:visible;transform:none}.editor-workspace{display:grid;grid-template-columns:1fr;gap:10px;align-items:start}.editor-form{display:grid;grid-template-columns:minmax(280px,.8fr) minmax(520px,1.4fr) minmax(230px,.72fr);gap:12px;align-items:stretch;margin-bottom:12px}.editor-form-group{display:grid;gap:10px;align-content:start;min-width:0;min-inline-size:0;margin:0;padding:12px;border:1px solid var(--line-soft);border-radius:var(--radius-control);background:color-mix(in srgb,var(--surface) 70%,transparent)}.editor-form-group legend,.editor-generator-panel legend{padding:0 8px;color:var(--accent-strong);font:900 .82rem/1 Trebuchet MS,Noto Sans SC,sans-serif}.editor-form-group-main{grid-template-columns:minmax(180px,1fr)}.editor-form-group-main .editor-level-select{grid-column:1 / -1}.editor-form-group-main .editor-name-field{min-width:0}.editor-form-group-grid{grid-template-columns:repeat(6,minmax(0,1fr));grid-auto-flow:dense;gap:11px 10px}.editor-form-group-grid .editor-grid-type-field{grid-column:1 / span 3;grid-row:2}.editor-form-group-grid .editor-size-field,.editor-form-group-grid .editor-pair-count-field,.editor-form-group-grid .editor-difficulty-field{grid-column:span 2;grid-row:1}.editor-form-group-grid .editor-mode-field{grid-column:4 / span 3;grid-row:2}.editor-form-group-grid .editor-grid-type-field,.editor-form-group-grid .editor-mode-field{padding-top:9px;border-top:1px solid color-mix(in srgb,var(--line-soft) 72%,transparent)}.editor-form label{display:grid;gap:6px;color:var(--muted);font-size:.95rem;min-width:0}.editor-level-select{display:grid;gap:6px}.editor-level-select label{min-width:0}.editor-form button,.editor-form .editor-import-button{width:100%;min-height:40px;align-self:end;justify-self:stretch;padding:8px 12px}.editor-form .editor-import-button{display:grid;place-items:center;border:1px solid var(--ink);border-radius:var(--radius-control);color:var(--button-ink);background:var(--accent);box-shadow:var(--control-shadow);cursor:pointer}.editor-form .editor-import-button:hover{background:var(--accent-strong)}.editor-form .editor-import-button input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.editor-form-actions{grid-column:1 / 3;display:grid;grid-template-columns:repeat(5,minmax(104px,1fr));gap:10px;justify-content:start;align-items:end;padding:12px;border:1px solid var(--line-soft);border-radius:var(--radius-control);background:color-mix(in srgb,var(--surface) 66%,transparent)}.editor-form:not(:has(.editor-generator-panel)) .editor-form-actions{grid-column:1 / -1}.editor-form:not(:has(.editor-generator-panel)){grid-template-columns:minmax(280px,.8fr) minmax(520px,1.4fr)}.editor-generator-panel{grid-column:3;grid-row:1 / span 2;display:grid;grid-template-columns:repeat(2,minmax(70px,1fr));gap:8px;align-items:end;align-self:stretch;justify-content:stretch;margin:0;border:1px solid var(--line-soft);border-radius:var(--radius-control);padding:12px;background:color-mix(in srgb,var(--surface) 70%,transparent)}.editor-generator-panel button{grid-column:1 / -1;align-self:end}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:var(--radius-control);padding:8px 10px;color:var(--ink);background:var(--surface);box-shadow:inset 0 1px color-mix(in srgb,var(--surface) 82%,transparent);transition:border-color .18s ease,box-shadow .18s ease,outline-color .18s ease,background .18s ease}input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:3px solid var(--focus-ring);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 10%,transparent),inset 0 1px color-mix(in srgb,var(--surface) 82%,transparent)}.preview-panel{display:grid;grid-template-columns:54px minmax(0,1fr);gap:14px;align-items:start;justify-content:center;position:relative;z-index:2;margin-top:14px;min-width:0}.level-output-panel{margin-top:10px;border:1px solid var(--ink);border-radius:8px;background:var(--surface-raised);overflow:hidden}.level-output-header{display:flex;justify-content:space-between;gap:12px;padding:6px 10px;border-bottom:2px solid var(--ink);color:var(--muted);font:700 .78rem/1.2 Trebuchet MS,Noto Sans SC,sans-serif}.level-output-header strong{color:var(--ink)}.level-output-header button{min-height:28px;padding:4px 10px;font-size:.78rem;line-height:1}.level-output-textarea{display:block;min-height:168px;max-height:280px;margin:0;padding:10px;font:700 .78rem/1.35 Consolas,Courier New,monospace;resize:vertical;border:0;border-radius:0;background:var(--surface);white-space:pre;overflow:auto}.level-output-textarea:focus{border-color:transparent;outline-offset:-3px}.pair-picker{display:grid;gap:8px;align-content:start;justify-items:center;max-height:min(570px,calc(var(--page-height) - var(--topbar-height) - 214px));padding:16px 6px 8px;grid-column:1;grid-row:1;overflow:auto;scrollbar-width:thin}.preview-board-wrap{grid-column:2;grid-row:1}.pair-chip{width:42px;min-width:42px;height:42px;min-height:42px;display:inline-grid;place-items:center;border:1px solid var(--ink);border-radius:999px;color:var(--button-ink);background:var(--pair-color);box-shadow:3px 3px 0 var(--shadow-color);font:900 clamp(.72rem,2.8vw,1rem)/1 "Trebuchet MS","Noto Sans SC",sans-serif;white-space:nowrap;transition:transform .15s ease,box-shadow .18s ease,outline-color .18s ease}.pair-chip:hover{transform:translateY(-1px);box-shadow:2px 5px 12px -8px var(--shadow-color),2px 2px 0 var(--shadow-color-soft)}.pair-chip:active{transform:translateY(1px) scale(.98);box-shadow:1px 1px 0 var(--shadow-color-soft)}.pair-chip.is-active{outline:4px solid color-mix(in srgb,var(--accent) 36%,transparent);outline-offset:2px}.preview-board-wrap{--preview-width-limit: 100%;--preview-height-limit: min(590px, calc(var(--page-height) - var(--topbar-height) - 214px));display:grid;justify-items:center;align-items:start;width:min(100%,var(--preview-width-limit));height:var(--preview-height-limit);max-width:1200px;max-height:600px;overflow:visible;padding:24px;container-type:inline-size}.preview-board{position:relative;width:calc(var(--cols) * var(--cell-size));height:calc(var(--rows) * var(--cell-size));margin:0 auto;border:0;background:transparent;filter:drop-shadow(0 14px 18px color-mix(in srgb,var(--shadow-color) 42%,transparent));touch-action:none;overflow:visible}.preview-grid{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;width:100%;height:100%;pointer-events:none;overflow:visible}.preview-grid path{stroke:var(--grid-line);stroke-linecap:square;stroke-width:max(1px,calc(var(--cell-size) * var(--map-grid-line-scale)));vector-effect:non-scaling-stroke;opacity:.88}.preview-blocked-layer,.preview-answer-layer,.preview-hit-layer{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:visible;pointer-events:none}.preview-blocked-layer{z-index:1}.preview-answer-layer{z-index:2}.preview-hit-layer{z-index:3;pointer-events:auto}.preview-blocked-layer path{stroke:var(--danger);stroke-linecap:round;stroke-width:clamp(8px,calc(var(--cell-size) * .16),16px);vector-effect:non-scaling-stroke;opacity:.99}.preview-answer-layer path{stroke:var(--answer-color);stroke-linecap:round;stroke-width:max(1px,calc(var(--cell-size) * var(--map-line-scale)));vector-effect:non-scaling-stroke;opacity:.99}.preview-answer-layer .preview-drag-line{opacity:.62}.preview-hit-layer line{stroke:transparent;stroke-linecap:round;stroke-width:clamp(30px,calc(var(--cell-size) * .62),62px);vector-effect:non-scaling-stroke;cursor:pointer;pointer-events:stroke;transition:stroke .16s ease}.preview-hit-layer line:hover{stroke:color-mix(in srgb,var(--accent) 26%,transparent)}.preview-node{z-index:4}.preview-dot{animation:pop-dot .15s ease-out}@keyframes pop-dot{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}.editor-panel{border-width:1px}.editor-panel h2{margin-bottom:16px;font-size:1.35rem}.editor-form{padding:12px;border:1px solid var(--line-soft);border-radius:var(--radius-panel);background:color-mix(in srgb,var(--surface) 58%,transparent)}.editor-form label,.editor-level-select label{min-width:0}.editor-form input,.editor-form select{min-height:38px}.preview-hint{max-width:78ch;padding-left:2px}.preview-board-wrap{border:1px solid var(--line-soft);border-radius:var(--radius-panel);background:color-mix(in srgb,var(--surface) 48%,transparent)}@media (max-width: 1120px){.editor-form,.editor-form:not(:has(.editor-generator-panel)){grid-template-columns:1fr}.editor-generator-panel,.editor-form-actions{grid-column:1;grid-row:auto}.editor-form-actions{grid-template-columns:repeat(auto-fit,minmax(132px,1fr))}.editor-form-group-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.editor-form-group-grid .editor-size-field,.editor-form-group-grid .editor-pair-count-field,.editor-form-group-grid .editor-difficulty-field{grid-column:span 2}.editor-form-group-grid .editor-grid-type-field,.editor-form-group-grid .editor-mode-field{grid-column:span 2;grid-row:auto}}.pair-chip{border-width:1px;box-shadow:2px 2px 0 var(--shadow-color-soft)}.level-output-panel{border-width:1px}.level-output-header{border-bottom-width:1px;background:color-mix(in srgb,var(--surface) 70%,transparent)}@media (prefers-reduced-motion: reduce){.preview-node,.preview-dot{animation:none;transition:none}}.preview-hint{margin:0 0 8px;color:var(--muted);line-height:1.6;text-align:left}@media (max-width: 640px) and (orientation: portrait){:root{--board-stage-ratio: 10 / 16;--board-stage-width-limit: calc(100vw - 78px) ;--board-stage-height-limit: calc(100svh - var(--topbar-height) - 112px);--board-max-width: min(var(--board-stage-width-limit), calc(var(--board-stage-height-limit) * 10 / 16));--board-max-height: min(var(--board-stage-height-limit), calc(var(--board-stage-width-limit) * 16 / 10))}.view-play:not(.view-finder){height:100%;min-height:0;align-items:start;align-content:start;justify-items:center;padding:1px 8px max(12px,env(safe-area-inset-bottom));overflow:hidden}.view-play:not(.view-finder) .board-wrap{--mobile-board-pad: max(14px, calc(var(--cell-size) * var(--map-dot-scale) * .55));align-self:start;justify-self:center;width:fit-content;max-width:calc(100vw - 10px);max-height:min(var(--board-max-height),calc(100cqh - 18px));padding:var(--mobile-board-pad);overflow:visible}.view-play:not(.view-finder) .board{margin:auto}.view-play:not(.view-finder) .dot{border-width:clamp(1px,calc(var(--cell-size) * .022),3px);box-shadow:0 0 0 clamp(1px,calc(var(--cell-size) * .018),2px) var(--ink),0 clamp(2px,calc(var(--cell-size) * .04),5px) 0 #00000029}.view-play:not(.view-finder) .node.target .dot{box-shadow:0 0 0 clamp(1px,calc(var(--cell-size) * .02),3px) var(--ink),0 0 0 clamp(6px,calc(var(--cell-size) * .1),14px) color-mix(in srgb,var(--dot-color) 44%,transparent),0 0 clamp(10px,calc(var(--cell-size) * .18),24px) color-mix(in srgb,var(--dot-color) 36%,transparent)}.view-play:not(.view-finder) .node.target .dot:after{inset:clamp(-7px,calc(var(--cell-size) * -.11),-3px);border-width:clamp(1px,calc(var(--cell-size) * .022),3px)}.view-play:not(.view-finder) .edge-grid path{stroke-width:max(1px,calc(var(--cell-size) * var(--map-grid-line-scale)))}.view-play:not(.view-finder) .edge-lines path,.view-play:not(.view-finder) .edge-lines .preview-line{stroke-width:max(1px,calc(var(--cell-size) * var(--map-line-scale)))}}.finder-game .finder-main-panel{grid-template-columns:max-content minmax(286px,318px);gap:clamp(18px,2vw,30px)}.finder-game .finder-board-shell{--board-stage-width-limit: 50vw}.finder-game .finder-side-panel{width:min(318px,24vw);min-width:286px}@media (max-width: 1100px){.finder-game .finder-board-shell{--board-max-width: clamp(240px, calc(100vw - 56px) , 720px)}.finder-game .finder-side-panel{width:min(720px,100%);min-width:0}}@media (max-width: 640px){.board-wrap.finder-workspace{width:calc(100vw - 18px);max-width:calc(100vw - 18px);max-height:none;padding:1px 0 max(12px,env(safe-area-inset-bottom));overflow:visible}.finder-game .finder-main-panel{position:absolute;top:0;right:0;bottom:0;left:0;grid-template-columns:1fr;justify-items:center;width:100%;max-width:calc(100vw - 18px);grid-template-rows:minmax(0,2fr) minmax(112px,1fr);height:100%;min-height:0;gap:8px;overflow:hidden;padding:0}.finder-game .finder-side-panel{position:static;grid-template-columns:1fr;grid-row:2;width:100%;max-width:min(100%,calc(100vw - 18px));max-height:100%;overflow:auto;gap:0;padding:8px;border-radius:14px}.finder-console-title{gap:3px}.finder-console-title strong{font-size:.9rem}.finder-panel-section{gap:8px;padding:12px 10px}.finder-tool-row{grid-template-columns:repeat(5,40px);gap:7px}.finder-tool-row-meta{grid-template-columns:repeat(2,40px);padding-top:8px}.finder-pair-chip{width:40px;height:40px;min-height:40px;border-radius:999px}.finder-submit-row button,.finder-console-stats{min-height:40px}.finder-submit-row{grid-template-columns:minmax(0,1fr)}.finder-game .finder-board-shell{--finder-clue-size: 2rem;--board-stage-ratio: 10 / 16;--board-stage-width-limit: calc(100vw - 69px) ;--board-stage-height-limit: min(52cqh, calc(75svh - 96px) );--board-max-width: min(var(--board-stage-width-limit), calc(var(--board-stage-height-limit) * 10 / 16));--board-max-height: min(var(--board-stage-height-limit), calc(var(--board-stage-width-limit) * 16 / 10));--finder-node-width: calc(var(--node-cols) * var(--cell-size));--finder-node-height: calc(var(--node-rows) * var(--cell-size));grid-template-columns:var(--finder-clue-size) var(--finder-node-width);grid-template-rows:var(--finder-clue-size) var(--finder-node-height);width:fit-content;max-width:100%;max-height:none;padding:12px;overflow:visible}.finder-game .finder-board-shell .board{margin:calc(var(--cell-size) / 2) 0 0 calc(var(--cell-size) / 2)}.finder-left-clues{width:var(--finder-clue-size)}.finder-clue-cell{padding:3px 2px;overflow:visible}.finder-clue-item{font:900 1.55rem/1 Georgia,Times New Roman,"Noto Serif SC",serif}}@media (max-width: 640px) and (orientation: portrait){body.is-finder-active{overflow:hidden}body.is-finder-active #app{height:100svh;min-height:0;overflow:hidden}.app-shell.is-finder-active{height:100%;min-height:0;overflow:hidden}.view-finder{height:100%;min-height:0;grid-template-rows:minmax(0,1fr);align-items:stretch;align-content:stretch;justify-items:center;padding:1px 9px max(12px,env(safe-area-inset-bottom));overflow:hidden}.view-finder .game-panel{height:100%;min-height:0;align-items:stretch;padding:0}.board-wrap.finder-workspace{height:100%;max-height:100%;padding:1px 0 max(12px,env(safe-area-inset-bottom));overflow:hidden}.finder-board-shell .board{margin:calc(var(--cell-size) / 2) 0 0 calc(var(--cell-size) / 2)}.finder-board-shell .edge-grid path{stroke-width:max(1px,calc(var(--cell-size) * var(--map-grid-line-scale)))}.finder-board-shell .edge-lines path,.finder-board-shell .edge-lines .preview-line{stroke-width:max(1px,calc(var(--cell-size) * var(--map-line-scale)))}}.bridge-game{align-items:stretch;justify-items:center;width:100%}.bridge-panel{position:relative;display:grid;grid-template-columns:minmax(0,1fr);gap:0;width:100%;height:100%;min-height:0;margin:0 auto}.bridge-stage{position:relative;display:grid;place-items:center;width:100%;height:100%;min-height:0;padding:0 28px 20px;border:0;border-radius:0;background:transparent;box-shadow:none}.bridge-stage.is-loading .bridge-board{pointer-events:none;opacity:.42}.bridge-stage.is-loading .bridge-board .edge-grid path{opacity:.3}.bridge-stage.is-loading .bridge-board:before{opacity:0}.bridge-loading{position:fixed;top:50%;left:50%;z-index:40;display:grid;place-items:center;width:min(180px,calc(100vw - 56px));min-height:48px;padding:12px 16px;border:2px solid var(--ink);border-radius:8px;color:var(--ink);background:var(--surface-raised);box-shadow:4px 4px 0 var(--shadow-color-soft);font:900 1rem/1 Trebuchet MS,Noto Sans SC,sans-serif;transform:translate(-50%,-50%)}.bridge-board{--bridge-ink: #073b66;--board-stage-width-limit: 80vw;--board-stage-height-limit: min(75svh, calc(100cqh - 72px) );--board-max-width: min(var(--board-stage-width-limit), calc(var(--board-stage-height-limit) * 16 / 10));--board-max-height: min(var(--board-stage-height-limit), calc(var(--board-stage-width-limit) * 10 / 16));--bridge-line-width: max(2px, calc(var(--cell-size) * var(--map-line-scale) * .2));--bridge-double-gap: max(calc(var(--bridge-line-width) * 2.4), calc(var(--cell-size) * .12));width:calc(var(--bridge-cols) * var(--cell-size));height:calc(var(--bridge-rows) * var(--cell-size));min-width:0;min-height:0;margin-top:calc(var(--cell-size) / 2)}.bridge-board:before{content:"";position:absolute;inset:calc(var(--cell-size) / -2);z-index:-1;border:1px solid color-mix(in srgb,var(--button-ink) 46%,var(--line) 54%);border-radius:calc(var(--radius-panel) + 8px);background:linear-gradient(145deg,color-mix(in srgb,var(--button-ink) 1%,transparent),transparent 42%),rgb(from var(--surface-soft) r g b / .01);box-shadow:0 28px 72px -50px var(--shadow-color),inset 0 1px color-mix(in srgb,var(--button-ink) 8%,transparent),inset 0 -1px color-mix(in srgb,var(--line) 4%,transparent);-webkit-backdrop-filter:blur(2px) saturate(1.01);backdrop-filter:blur(2px) saturate(1.01);pointer-events:none}.bridge-board .edge-grid path{stroke-width:max(1px,calc(var(--cell-size) * var(--map-grid-line-scale) * .2))}.bridge-lines,.bridge-visual-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;width:100%;height:100%;pointer-events:none}.bridge-segment line{stroke:var(--bridge-ink);stroke-width:var(--bridge-line-width);stroke-linecap:round;vector-effect:non-scaling-stroke;pointer-events:none}.bridge-segment.is-2 line{stroke-width:var(--bridge-line-width)}.bridge-segment.is-horizontal .bridge-line-a{transform:translateY(calc(var(--bridge-double-gap) * -.5))}.bridge-segment.is-horizontal .bridge-line-b{transform:translateY(calc(var(--bridge-double-gap) * .5))}.bridge-segment.is-vertical .bridge-line-a{transform:translate(calc(var(--bridge-double-gap) * -.5))}.bridge-segment.is-vertical .bridge-line-b{transform:translate(calc(var(--bridge-double-gap) * .5))}.bridge-visual-line{position:absolute;z-index:3;display:block;border-radius:999px;background:var(--bridge-ink);pointer-events:none}.bridge-visual-line.is-horizontal{height:var(--bridge-line-width);transform:translateY(-50%)}.bridge-visual-line.is-vertical{width:var(--bridge-line-width);transform:translate(-50%)}.bridge-visual-line.is-horizontal.bridge-line-a{transform:translateY(calc(-50% - (var(--bridge-double-gap) * .5)))}.bridge-visual-line.is-horizontal.bridge-line-b{transform:translateY(calc(-50% + (var(--bridge-double-gap) * .5)))}.bridge-visual-line.is-vertical.bridge-line-a{transform:translate(calc(-50% - (var(--bridge-double-gap) * .5)))}.bridge-visual-line.is-vertical.bridge-line-b{transform:translate(calc(-50% + (var(--bridge-double-gap) * .5)))}.bridge-node.endpoint-node.is-selected .dot{animation:target-pulse 1.2s cubic-bezier(.16,1,.3,1) infinite}.bridge-node.endpoint-node .dot,.bridge-editor-island .dot{border:max(2px,calc(var(--cell-size) * .025)) solid var(--bridge-ink);color:var(--bridge-ink);background:#fff;box-shadow:0 0 0 max(1px,calc(var(--cell-size) * .012)) var(--bridge-ink),0 clamp(3px,calc(var(--cell-size) * .05),7px) 0 #073b6633}.bridge-node{z-index:6;background:transparent;box-shadow:none;outline:none;pointer-events:none}.bridge-board .bridge-node.endpoint-node{z-index:6}.bridge-board .bridge-node:not(.endpoint-node),.bridge-board .bridge-node:not(.endpoint-node):before,.bridge-board .bridge-node:not(.endpoint-node):after{display:none}button.bridge-node.endpoint-node{pointer-events:auto}.bridge-node.endpoint-node.is-hovered .dot,.bridge-node.endpoint-node.is-reachable .dot{box-shadow:0 0 0 clamp(2px,calc(var(--cell-size) * .035),5px) color-mix(in srgb,var(--bridge-ink) 60%,white),0 clamp(4px,calc(var(--cell-size) * .07),9px) clamp(1px,calc(var(--cell-size) * .025),4px) #073b662e,0 clamp(3px,calc(var(--cell-size) * .06),8px) 0 #073b6633}.bridge-node.endpoint-node.is-over .dot{box-shadow:0 0 0 clamp(2px,calc(var(--cell-size) * .035),5px) var(--danger),0 clamp(4px,calc(var(--cell-size) * .07),9px) clamp(1px,calc(var(--cell-size) * .025),4px) color-mix(in srgb,var(--danger) 22%,transparent),0 clamp(3px,calc(var(--cell-size) * .06),8px) 0 #0000002e}.bridge-dot .dot-label{transform:translate(-50%,-47%);color:var(--bridge-ink)}.bridge-node.endpoint-node.is-under .dot-label{color:var(--bridge-ink)}.bridge-node.endpoint-node.is-met .dot-label{color:#2f6;text-shadow:0 0 1px color-mix(in srgb,#22ff66 65%,transparent),0 1px 0 rgba(255,255,255,.42)}.bridge-node.endpoint-node.is-over .dot-label{color:var(--danger)}.bridge-slot{position:absolute;z-index:5;display:grid;place-items:center;-moz-appearance:none;appearance:none;-webkit-appearance:none;border:0;border-radius:999px;padding:0;color:var(--bridge-ink);background:transparent;box-shadow:none;outline:none;outline-offset:2px;-webkit-tap-highlight-color:transparent}.bridge-slot:hover,.bridge-slot:focus,.bridge-slot:focus-visible,.bridge-slot:active{background:transparent;box-shadow:none;outline:none}.bridge-slot.is-horizontal{height:max(34px,calc(var(--cell-size) * .46));transform:translateY(-50%)}.bridge-slot.is-vertical{width:max(34px,calc(var(--cell-size) * .46));transform:translate(-50%)}.bridge-slot.is-active{background:transparent}.bridge-slot:after{content:"";position:absolute;border-radius:999px;background:color-mix(in srgb,var(--accent) 72%,var(--bridge-ink) 28%);box-shadow:0 0 0 max(2px,calc(var(--bridge-line-width) * .8)) color-mix(in srgb,var(--accent) 16%,transparent);opacity:0;transition:opacity .12s ease}.bridge-slot.is-horizontal:after{width:100%;height:max(3px,var(--bridge-line-width))}.bridge-slot.is-vertical:after{width:max(3px,var(--bridge-line-width));height:100%}.bridge-slot.is-hover-reachable:after{opacity:.72}.bridge-cell.has-both{z-index:7}.bridge-cell{position:absolute;left:calc((100% / var(--bridge-cols)) * var(--cell-x));top:calc((100% / var(--bridge-rows)) * var(--cell-y));z-index:3;display:grid;place-items:center;-moz-appearance:none;appearance:none;-webkit-appearance:none;width:max(26px,calc(var(--cell-size) * .5));height:max(26px,calc(var(--cell-size) * .5));border:0;border-radius:999px;padding:0;background:transparent;box-shadow:none;outline:none;transform:translate(-50%,-50%);pointer-events:none;-webkit-tap-highlight-color:transparent}.bridge-cell.has-both{pointer-events:auto}.bridge-cell:hover,.bridge-cell:focus,.bridge-cell:focus-visible,.bridge-cell:active{background:transparent;box-shadow:none;outline:none}.bridge-victory{z-index:8}.bridge-editor-view{display:grid;width:100%}.bridge-editor-panel{width:min(1120px,calc(100vw - 56px));justify-self:center}.bridge-editor-form{grid-template-columns:minmax(220px,1fr) minmax(260px,1fr) minmax(220px,.8fr) auto}.bridge-island-edit-group,.bridge-editor-selected{display:grid;gap:8px}.bridge-editor-selected>span{color:var(--muted);font-weight:900}.bridge-editor-board{--board-max-width: min(680px, calc(100vw - 360px) );--board-max-height: min(520px, calc(100svh - var(--topbar-height) - 260px));width:calc(var(--bridge-cols) * var(--cell-size));height:calc(var(--bridge-rows) * var(--cell-size));justify-self:center}.bridge-editor-island{z-index:4}.bridge-editor-side{display:grid;align-content:start;gap:10px;min-width:210px}.bridge-editor-stepper{display:grid;grid-template-columns:38px 1fr 38px;gap:8px;align-items:center}.bridge-editor-stepper strong{display:grid;place-items:center;min-height:36px;border:2px solid var(--ink);border-radius:6px;background:var(--surface);text-align:center;font:900 1.5rem/1 Trebuchet MS,Noto Sans SC,sans-serif}.bridge-island-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;min-height:38px;border:2px solid color-mix(in srgb,var(--ink) 24%,transparent);border-radius:6px;padding:7px 10px;color:var(--ink);background:var(--surface);font-weight:900;text-align:left}.bridge-island-row.is-active,.bridge-island-row:hover{border-color:var(--accent);color:var(--button-ink);background:var(--accent)}@media (max-width: 820px){.bridge-panel{grid-template-columns:1fr}.bridge-stage{--board-stage-ratio: 10 / 16;height:100%;min-height:0;align-items:center;width:100%;padding:32px 10px max(12px,env(safe-area-inset-bottom))}.bridge-board{--board-stage-width-limit: calc(100vw - 42px) ;--board-stage-height-limit: min( calc(100cqh - 48px) , calc(100svh - 180px) );--board-max-width: min(var(--board-stage-width-limit), calc(var(--board-stage-height-limit) * 10 / 16));--board-max-height: min(var(--board-stage-height-limit), calc(var(--board-stage-width-limit) * 16 / 10))}.bridge-editor-form,.bridge-editor-workspace{grid-template-columns:1fr}.bridge-editor-board{--board-max-width: calc(100vw - 72px) }.bridge-editor-panel{width:min(100%,calc(100vw - 24px))}}
