: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-max-width: 1200px;--board-max-height: 600px;--background-image: none;--background-opacity: 0;--background-blur: 0px}: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:var(--page-height);color:var(--ink);font-family:Georgia,Times New Roman,"Noto Serif SC",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 15% 20%,var(--body-glow-danger),transparent 28%),radial-gradient(circle at 80% 16%,var(--body-glow-warm),transparent 26%),var(--paper);background-size:34px 34px,34px 34px,auto,auto}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;min-height:var(--page-height)}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)}button:active,.editor-form .editor-import-button:active{transform:translate(2px,2px);box-shadow:2px 2px 0 var(--shadow-color)}button:disabled:active{transform:none;box-shadow:4px 4px 0 var(--shadow-color)}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:minmax(0,1fr) minmax(260px,560px) minmax(0,1fr);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{display:inline-flex;align-items:center;gap:10px;min-width:0}.topbar-left{justify-content:flex-start}.topbar-right{justify-content:flex-end}.topbar-center{justify-content:center;min-width:0}.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:1;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{color:var(--ink);background:#d1d5db}.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: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)}.view-tab:hover,.view-tab.is-active{color:var(--button-ink);background:var(--accent)}.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:absolute;top:14px;right:14px;z-index:12;display:grid;gap:12px;width:min(340px,calc(100vw - 28px));max-height:min(680px,calc(var(--page-height) - var(--topbar-height) - 28px));padding:14px;overflow:auto}.rule-panel{position:absolute;top:14px;right:14px;z-index:13;display:grid;grid-template-rows:auto minmax(0,1fr);gap:12px;width:min(520px,calc(100vw - 28px));max-height:min(680px,calc(var(--page-height) - var(--topbar-height) - 28px));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{color:var(--ink);font-variant-numeric:tabular-nums}.game-controls label,.style-controls label{grid-template-columns:minmax(0,1fr) 72px;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 .16s ease,color .16s ease,border-color .16s ease,box-shadow .16s ease,transform .12s 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)}.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,.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%)}.personalization-data-actions span,.level-picker-status,.victory-status{line-height:1.35}: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:translate(1px,1px);box-shadow: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 .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-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{border-color:color-mix(in srgb,var(--line) 82%,var(--ink) 18%);background:var(--surface-glass);box-shadow:0 22px 58px -38px var(--shadow-color),4px 4px 0 var(--shadow-color-soft)}: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}}.view-play{height:auto;min-height:calc(var(--page-height) - var(--topbar-height));align-items:start;justify-items:center;align-content:start;padding:43px 28px 56px;overflow:visible}.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:auto;height:auto;padding:0 0 18px;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:100%;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}.board-loading{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:var(--ink);font:900 1rem/1 Trebuchet MS,Noto Sans SC,sans-serif}.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}.board-loading{padding:10px 14px;border:2px solid var(--ink);border-radius:var(--radius-control);background:var(--surface-raised);box-shadow:4px 4px 0 var(--shadow-color-soft)}.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:clamp(12px,2.5vw,28px)}.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:auto;min-height:calc(var(--page-height) - var(--topbar-height));padding-top:28px;padding-bottom:56px;overflow:visible}.app-shell:has(.view-editor.is-active){height:auto;min-height:calc(var(--page-height) - var(--topbar-height));overflow:visible}.editor-panel{min-height:calc(var(--page-height) - var(--topbar-height) - 20px);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(300px,.95fr) minmax(420px,1.25fr) minmax(230px,.72fr);gap:12px;align-items:stretch;margin-bottom:12px}.editor-form-group{display:grid;gap:10px;align-content:start;min-width: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-title{grid-column:1 / -1;color:var(--accent-strong);font:900 .78rem/1 Trebuchet MS,Noto Sans SC,sans-serif}.editor-form-group-main{grid-template-columns:minmax(180px,1fr) minmax(150px,.8fr)}.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(auto-fit,minmax(96px,1fr))}.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:6px;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:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--shadow-color-soft)}.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(300px,.95fr) minmax(420px,1.25fr)}.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 legend{padding:0 6px;color:var(--accent-strong);font:900 .82rem/1 Trebuchet MS,Noto Sans SC,sans-serif}.editor-generator-panel button{grid-column:1 / -1;align-self:end}input,select,textarea{width:100%;border:2px solid var(--line);border-radius:6px;padding:8px 10px;color:var(--ink);background:var(--surface)}input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:3px solid rgba(15,118,110,.18)}.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}.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:auto;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-hit-layer line{stroke:transparent;stroke-linecap:round;stroke-width:clamp(26px,calc(var(--cell-size) * .58),58px);vector-effect:non-scaling-stroke;cursor:pointer;pointer-events:stroke}.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))}}.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){.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{grid-area:brand;justify-content:flex-start;min-width:0}.brand{min-width:0;gap:6px;font-size:.9rem}.brand-icon{width:24px;height:24px}.brand span{overflow:visible;text-overflow:clip;white-space:nowrap}.view-tabs{display:none}.topbar-center,.play-toolbar,.topbar-right{display:contents}.app-topbar:not(.is-play) .game-timer,.app-topbar:not(.is-play) .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(78dvh,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(76dvh,560px);padding:12px;transform:translate(-50%,-50%)}.play-actions{grid-area:actions;display:grid;grid-template-columns:auto minmax(48px,78px) 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:78px;min-width:0;padding:5px 4px;text-align:center;font-size:.8rem}.app-topbar button{min-height:32px;padding:4px 7px;font-size:.8rem}.app-shell{width:100%;padding:0}.close-button{padding:4px 7px;font-size:.74rem}.view-editor{height:calc(100dvh - var(--topbar-height));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-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(58dvh, 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:42dvh}.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: 100dvh;--board-max-width: calc(100vw - 78px) ;--board-max-height: calc(100dvh - var(--topbar-height) - 112px)}html,body,#app{width:100%;min-height:100dvh;overflow:hidden}body{position:fixed;top:0;right:0;bottom:0;left:0}.app-shell{height:calc(100dvh - var(--topbar-height));min-height:calc(100dvh - var(--topbar-height));overflow:hidden}.view-play{height:calc(100dvh - var(--topbar-height));min-height:calc(100dvh - var(--topbar-height));align-items:center;justify-items:center;padding:0 14px max(12px,env(safe-area-inset-bottom));overflow:hidden}.game-panel{width:100%;height:100%;padding:34px 0 17px;transform:none}.board-wrap{align-self:start;width:calc(100vw - 78px);max-width:var(--board-max-width);max-height:var(--board-max-height);padding:0}.board{margin:auto}.edge-grid path{stroke-width:max(1px,calc(var(--cell-size) * var(--map-grid-line-scale)))}.edge-lines path{stroke-width:max(1px,calc(var(--cell-size) * var(--map-line-scale)))}.edge-lines .preview-line{stroke-width:max(1px,calc(var(--cell-size) * var(--map-line-scale)))}.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(100dvh - 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}}
