.pair-surface{width:min(100%,440px);margin-inline:auto}.pair-board-note{min-height:24px;color:var(--muted);justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:12px;font-size:.875rem;display:flex}.pair-grid-size{font-variant-numeric:tabular-nums;flex:none}.pair-pencil{color:var(--ink);font-weight:600}.pair-scroll{scrollbar-color:var(--control-border) var(--paper);max-width:100%;margin:-4px;padding:4px;overflow-x:auto}.pair-grid{min-width:calc(var(--pair-size) * 44px + 4px);grid-template-columns:repeat(var(--pair-size), minmax(0, 1fr));grid-template-rows:repeat(var(--pair-size), minmax(0, 1fr));aspect-ratio:1;touch-action:none;-webkit-user-select:none;user-select:none;background:#fffdfa;border:2px solid #748477;border-radius:8px;display:grid;position:relative;overflow:hidden}.pair-cell{color:#263b32;appearance:none;cursor:crosshair;z-index:1;outline-offset:-4px;background:0 0;border:1px solid #d4d7cb;border-top:0;border-left:0;border-radius:0;place-items:center;width:100%;min-width:0;height:100%;min-height:0;padding:0;display:grid;position:relative}.pair-cell:nth-of-type(n){box-shadow:none}.pair-cell:hover:not(.is-wall){background:#17634c0d}.pair-cell:focus-visible{z-index:4;outline:3px solid #263b32}.pair-cell.is-wall{cursor:default;background:#e1e5da}.pair-cell.is-wall .pair-mark{background:#697765;border-radius:3px;width:44%;height:44%}.pair-cell.is-endpoint .pair-mark{aspect-ratio:1;background:var(--pair-color);color:#fff;border-radius:50%;place-items:center;width:62%;height:62%;font-size:clamp(1rem,2.5vw,1.25rem);font-weight:750;line-height:1;display:grid;box-shadow:0 0 0 3px #fffdfa}.pair-cell.is-connected .pair-mark{box-shadow:0 0 0 2px #fffdfa, 0 0 0 3px var(--pair-color)}.pair-cell.is-head:after{content:"";border:2px solid var(--pair-color);pointer-events:none;border-radius:5px;position:absolute;inset:9%}.pair-cell[aria-disabled=true]{cursor:default}.pair-lines{pointer-events:none;z-index:2;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.pair-route,.pair-ghost{fill:none;stroke-width:.15px;stroke-linecap:round;stroke-linejoin:round}.pair-route{opacity:.84}.pair-route.is-active{stroke-width:.19px;opacity:1}.pair-ghost{stroke-dasharray:.07 .13;stroke-width:.1px}.pair-cell.is-endpoint{z-index:3}.pair-instructions{text-align:center;color:var(--muted);margin:16px auto 0;font-size:.875rem;line-height:1.6}.pair-instructions span{margin-top:4px;display:block}.pair-tools{gap:12px;width:min(100%,520px);margin-inline:auto;display:grid}.pair-mode{border:0;flex-wrap:wrap;justify-content:center;gap:8px;margin:0;padding:0;display:flex}.pair-mode legend{text-align:center;margin-inline:auto;margin-bottom:8px;padding:0;font-size:.875rem;font-weight:650}.pair-mode label{border:1px solid var(--control-border);cursor:pointer;min-height:44px;color:var(--ink);border-radius:8px;align-items:center;gap:8px;padding:8px 12px;font-size:.875rem;display:flex}.pair-mode label:has(input:checked){background:var(--accent-soft);border-color:var(--accent)}.pair-mode input{width:16px;height:16px;accent-color:var(--accent);margin:0}.pair-mode input:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.pair-goal{text-align:center;color:var(--muted);margin:0;font-size:.875rem;line-height:1.5}.pair-key{flex-wrap:wrap;justify-content:center;gap:12px 20px;margin-block:4px;display:flex}.pair-key-item{color:var(--muted);align-items:center;gap:7px;font-size:.8125rem;display:inline-flex}.pair-key-letter{background:var(--pair-color);color:#fff;border-radius:50%;place-items:center;width:24px;height:24px;font-weight:750;display:grid}.pair-key-item.is-complete{color:var(--ink);font-weight:650}.pair-actions{flex-wrap:wrap;gap:8px;display:flex}.pair-actions button{min-height:44px}@media (width<=520px){.pair-board-note{gap:8px;font-size:.8125rem}.pair-instructions{font-size:.8125rem}.pair-mode{gap:6px}.pair-mode label{padding-inline:9px}}.pair-cell.is-hint{outline-offset:-4px;outline:3px solid #25689c}.bridge-wrap{width:100%}.bridge-instruction{color:var(--muted);text-align:center;margin:0 auto 1.1rem;font-size:.94rem;line-height:1.5}.bridge-canvas{isolation:isolate;touch-action:none;-webkit-user-select:none;user-select:none;width:100%;margin:0 auto;position:relative}.bridge-lines{width:100%;height:100%;display:block;position:absolute;inset:0;overflow:visible}.bridge-axis{fill:var(--muted);font-family:inherit;font-size:13px;font-weight:500}.bridge-guide{stroke:var(--bridge-guide,#b2c1b0);stroke-width:1.5px;stroke-dasharray:4 5;visibility:hidden}.bridge-route-nearby .bridge-guide{visibility:visible}.bridge-stroke{stroke:var(--accent);stroke-width:3.5px;stroke-linecap:round}.bridge-route-hit{stroke:#0000;stroke-width:28px;cursor:pointer}.bridge-route-existing:hover .bridge-stroke{stroke:var(--accent-active);stroke-width:4.5px}.bridge-route[data-preview=true] .bridge-stroke,.bridge-route[data-preview=true] .bridge-guide{visibility:hidden}.bridge-ghost{pointer-events:none}.bridge-ghost-stroke{stroke:var(--accent);stroke-width:3.5px;stroke-linecap:round;stroke-dasharray:6 5}.bridge-ghost[data-valid=true] .bridge-ghost-stroke{stroke-dasharray:8 3}.bridge-ghost-blocked .bridge-ghost-stroke,.bridge-ghost-remove .bridge-ghost-stroke{stroke:var(--bad)}.bridge-island{border:2px solid var(--control-border);background:var(--surface);width:54px;min-width:44px;height:54px;min-height:44px;color:var(--ink);cursor:grab;touch-action:none;font:inherit;z-index:1;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:0;padding:3px 0 2px;line-height:1;display:flex;position:absolute;transform:translate(-50%,-50%)}.bridge-number{font-size:23px;font-weight:650;line-height:1.05}.bridge-tally{font-variant-numeric:tabular-nums;color:var(--muted);margin-top:3px;font-size:10px;line-height:1.1}.bridge-island:hover{background:var(--bridge-island-hover,#edf1e8);border-color:var(--accent)}.bridge-island.bridge-neighbor{border-color:var(--accent);border-style:dashed}.bridge-island.bridge-satisfied{background:var(--accent-soft);border-color:var(--accent)}.bridge-island.bridge-selected{background:var(--accent);border:3px solid var(--accent);color:var(--accent-ink)}.bridge-island.bridge-selected:hover{background:var(--accent);color:var(--accent-ink)}.bridge-island.bridge-selected .bridge-tally{color:var(--accent-ink)}.bridge-island.bridge-drop-target,.bridge-island.bridge-drop-target:hover{background:var(--accent-soft);border:3px solid var(--accent);outline:2px solid var(--accent);outline-offset:4px}.bridge-island.bridge-drop-invalid,.bridge-island.bridge-drop-invalid:hover{background:var(--apricot);border:3px dashed var(--bad)}.bridge-dragging,.bridge-dragging .bridge-island{cursor:grabbing}.bridge-island:focus-visible{outline:3px solid var(--ink);outline-offset:4px}.bridge-selection{min-height:2.8em;color:var(--muted);text-align:center;margin:1rem auto 0;font-size:.875rem;line-height:1.5}.bridge-tools{flex-wrap:wrap;justify-content:center;align-items:center;gap:1rem;width:100%;display:flex}.bridge-modes{gap:.4rem;display:inline-flex}.bridge-modes button{min-height:44px}.bridge-modes button[aria-pressed=true]{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.bridge-keyboard{color:var(--muted);font-size:.875rem}.bridge-keyboard summary{cursor:pointer;text-underline-offset:3px;align-items:center;min-height:44px;text-decoration:underline;display:flex}.bridge-keyboard p{margin:.2rem 0 .5rem;line-height:1.5}.bridge-keyboard summary:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.bridge-wrap ::selection,.bridge-tools ::selection{background:var(--mint);color:var(--ink)}@media (width<=480px){.bridge-island{width:44px;height:44px}.bridge-number{font-size:20px}.bridge-tally{margin-top:2px;font-size:9px}.bridge-instruction{font-size:.875rem}.bridge-axis{font-size:15px}.bridge-selection{margin-top:.75rem}.bridge-tools{gap:.4rem 1rem}}:root[data-theme=dark] .bridge-wrap{--bridge-guide:var(--control-border);--bridge-island-hover:var(--accent-soft)}@media (prefers-color-scheme:dark){:root[data-theme=system] .bridge-wrap{--bridge-guide:var(--control-border);--bridge-island-hover:var(--accent-soft)}}.bridge-island.bridge-hint{outline-offset:3px;outline:3px solid #25689c}.loop-frame{overscroll-behavior-x:contain;max-width:100%;padding:3px 0;overflow-x:auto}.loop-grid{--loop-step:88px;--loop-target:44px;width:calc(var(--loop-cols) * var(--loop-step) + 44px);height:calc(var(--loop-rows) * var(--loop-step) + 44px);isolation:isolate;touch-action:none;-webkit-user-select:none;user-select:none;margin:0 auto;position:relative}.loop-grid[data-stroke]{cursor:crosshair}.loop-dot{background:var(--muted);z-index:3;pointer-events:none;border-radius:50%;width:7px;height:7px;position:absolute;transform:translate(-50%,-50%)}.loop-clue{width:34px;height:34px;color:var(--ink);pointer-events:none;border-radius:50%;place-items:center;font-size:24px;font-weight:600;line-height:1;display:grid;position:absolute;transform:translate(-50%,-50%)}.loop-clue-met{color:var(--accent)}.loop-clue-met:after{content:"";background:currentColor;width:10px;height:2px;position:absolute;bottom:0;left:12px}.loop-clue-error{outline:2px dashed var(--bad);outline-offset:2px;color:var(--bad);background:var(--loop-error-fill,#fae8df)}.loop-clue-highlight{background:var(--loop-hint-fill,#f6e7c8);outline:2px solid var(--loop-hint-line,#967026)}.loop-segment{pointer-events:none;z-index:2;background:0 0;position:absolute;transform:translate(-50%,-50%)}.loop-segment.loop-h{width:calc(var(--loop-step) - 9px);border-top:2px dotted var(--control-border);height:0}.loop-segment.loop-v{width:0;height:calc(var(--loop-step) - 9px);border-left:2px dotted var(--control-border)}.loop-segment.loop-drawn{background:var(--accent);border:0;border-radius:3px}.loop-segment.loop-h.loop-drawn{height:5px;width:calc(var(--loop-step) - 4px)}.loop-segment.loop-v.loop-drawn{width:5px;height:calc(var(--loop-step) - 4px)}.loop-segment.loop-excluded{visibility:hidden}.loop-edge{min-width:0;min-height:0;color:var(--muted);cursor:crosshair;touch-action:none;z-index:1;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:6px;place-items:center;margin:0;padding:0;display:grid;position:absolute;transform:translate(-50%,-50%)}.loop-edge.loop-h,.loop-edge.loop-v{width:var(--loop-target);height:var(--loop-target)}.loop-edge .loop-mark{pointer-events:none;display:none}.loop-edge[data-state=excluded] .loop-mark{background:0 0;width:17px;height:17px;display:block;position:relative}.loop-edge[data-state=excluded] .loop-mark:before,.loop-edge[data-state=excluded] .loop-mark:after{content:"";background:var(--loop-excluded-ink,#687062);border-radius:1px;width:19px;height:2px;position:absolute;top:7px;left:-1px;transform:rotate(45deg)}.loop-edge[data-state=excluded] .loop-mark:after{transform:rotate(-45deg)}.loop-edge:hover:not([aria-disabled=true]),.loop-edge.loop-in-stroke{background:var(--accent-soft)}.loop-edge:focus-visible{outline:3px solid var(--accent);outline-offset:2px;background:var(--accent-soft)}.loop-edge.loop-highlight{background:var(--loop-hint-fill,#f6e7c8);outline:2px solid var(--loop-hint-line,#967026);outline-offset:0}.loop-edge[aria-disabled=true]{cursor:default}.loop-edge[aria-disabled=true]:hover{background:0 0}.loop-explanation{text-align:center;color:var(--ink);margin:0 0 14px;font-size:.95rem;line-height:1.55}.loop-legend{color:var(--muted);flex-wrap:wrap;justify-content:center;align-items:center;gap:10px 22px;margin-top:12px;font-size:.82rem;display:flex}.loop-legend-item{align-items:center;gap:8px;display:inline-flex}.loop-legend-mark{flex:0 0 25px;width:25px;display:inline-block}.loop-legend-open{border-top:2px dotted var(--control-border)}.loop-legend-line{border-top:5px solid var(--accent);border-radius:2px}.loop-legend-excluded{height:17px;position:relative}.loop-legend-excluded:before,.loop-legend-excluded:after{content:"";background:var(--muted);width:18px;height:2px;position:absolute;top:7px;left:4px;transform:rotate(45deg)}.loop-legend-excluded:after{transform:rotate(-45deg)}.loop-instructions{text-align:center;color:var(--ink);margin:18px auto 6px;font-size:.95rem;line-height:1.55}.loop-keyboard{text-align:center;color:var(--muted);margin:0 auto;font-size:.8rem;line-height:1.5}.loop-tools{flex-wrap:wrap;gap:8px}.loop-tools button{min-height:44px;padding-inline:12px}.loop-tools [aria-pressed=true]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.loop-tools button[aria-pressed=true]:hover:not(:disabled){background:var(--accent-hover);color:var(--accent-ink);border-color:var(--accent-hover)}@media (width<=600px){.loop-grid{--loop-step:88px;--loop-target:44px}.loop-clue{font-size:22px}.loop-keyboard{font-size:.78rem}.loop-legend{gap:8px 14px}}@media (width<=360px){.loop-grid{--loop-step:88px;--loop-target:44px}.loop-legend{gap:8px 12px;font-size:.78rem}}@media (width<=650px){.loop-tools{grid-template-columns:repeat(3,minmax(0,1fr));max-width:340px;margin-inline:auto;display:grid}}:root[data-theme=dark] .loop-grid{--loop-error-fill:var(--error-surface);--loop-hint-fill:#44351b;--loop-hint-line:#b9a06a;--loop-excluded-ink:var(--muted)}@media (prefers-color-scheme:dark){:root[data-theme=system] .loop-grid{--loop-error-fill:var(--error-surface);--loop-hint-fill:#44351b;--loop-hint-line:#b9a06a;--loop-excluded-ink:var(--muted)}}.cover-surface{width:min(100%,460px);margin-inline:auto}.cover-board-note{color:var(--muted,#53634f);justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:12px;font-size:.875rem;display:flex}.cover-board-note>span:last-child{white-space:nowrap;font-variant-numeric:tabular-nums}.cover-next{color:var(--ink,#263b32);font-weight:600}.cover-scroll{overscroll-behavior-x:contain;padding-bottom:2px;overflow-x:auto}.cover-scroll:focus-visible{outline-offset:4px;border-radius:8px;outline:2px solid #17634c}.cover-pan-controls{color:var(--muted,#53634f);justify-content:center;align-items:center;gap:12px;margin-top:8px;font-size:.8125rem;display:flex}.cover-pan-controls[hidden]{display:none}.cover-pan-controls button{min-width:44px;min-height:44px;padding:4px 12px;font-size:1.25rem}.cover-grid{grid-template-columns:repeat(var(--cover-cols),minmax(0,1fr));grid-template-rows:repeat(var(--cover-rows),minmax(0,1fr));min-width:calc(var(--cover-cols)*44px + 4px);aspect-ratio:var(--cover-cols)/var(--cover-rows);touch-action:none;-webkit-user-select:none;user-select:none;background:#fffdfa;border:2px solid #748477;border-radius:8px;display:grid;position:relative;overflow:hidden}.cover-cell{appearance:none;cursor:crosshair;z-index:1;outline-offset:-4px;background:0 0;border:1px solid #d4d7cb;border-top:0;border-left:0;border-radius:0;place-items:center;width:100%;min-width:0;height:100%;min-height:0;padding:0;display:grid;position:relative;box-shadow:none!important}.cover-cell:hover:not(.is-wall){background:#edf2e6}.cover-cell.is-visited{background:#e5ebdd}.cover-cell.is-wall{cursor:default;background:#dce0d5}.cover-cell.is-wall .cover-mark{background:#697765;border-radius:3px;width:42%;height:42%}.cover-cell:focus-visible{z-index:4;outline:3px solid #263b32}.cover-lines{pointer-events:none;z-index:2;width:100%;height:100%;position:absolute;inset:0}.cover-route,.cover-ghost{fill:none;stroke:#17634c;stroke-width:.16px;stroke-linecap:round;stroke-linejoin:round}.cover-ghost{stroke-dasharray:.06 .13;stroke-width:.1px;opacity:.8}.cover-cell.has-label{z-index:3}.cover-cell.has-label .cover-mark{border-radius:50%;place-items:center;width:58%;height:58%;font-size:clamp(.875rem,2.7vw,1.2rem);font-weight:750;line-height:1;display:grid;box-shadow:0 0 0 3px #fffdfa}.cover-cell.is-start .cover-mark{color:#fff;background:#17634c}.cover-cell.is-end .cover-mark{color:#17634c;background:#fffdfa;border:2px solid #17634c}.cover-cell.is-checkpoint .cover-mark{color:#78500a;background:#fff8df;border:2px solid #90610b}.cover-cell.is-checkpoint.is-visited .cover-mark{color:#fff;background:#17634c;border-color:#17634c}.cover-cell.is-tip:after{content:"";pointer-events:none;border:2px solid #17634c;border-radius:6px;position:absolute;inset:10%}.cover-cell.is-highlighted{background:#fff0c4}.cover-instructions{text-align:center;color:var(--muted,#53634f);margin:16px 0 0;font-size:.875rem;line-height:1.6}.cover-keyboard{text-align:center;color:var(--muted,#53634f);margin-top:6px;font-size:.8125rem;line-height:1.6}.cover-keyboard summary{cursor:pointer;text-underline-offset:3px;align-content:center;width:fit-content;min-height:44px;margin-inline:auto;text-decoration:underline;display:list-item}.cover-keyboard summary:focus-visible{outline-offset:3px;outline:2px solid #17634c}.cover-keyboard p{margin:0 0 4px}.cover-key{color:var(--muted,#53634f);flex-wrap:wrap;justify-content:center;gap:10px 22px;font-size:.875rem;display:flex}.cover-key>span{align-items:center;gap:7px;display:inline-flex}.cover-key b{border-radius:50%;place-items:center;width:26px;height:26px;font-size:.8125rem;display:grid}.cover-key-start{color:#fff;background:#17634c}.cover-key-end{color:#17634c;background:#fffdfa;border:2px solid #17634c}.cover-key-checkpoint{color:#78500a;background:#fff8df;border:2px solid #90610b}@media (width<=520px){.cover-board-note{gap:8px;font-size:.8125rem}.cover-instructions{font-size:.8125rem}.cover-cell.has-label .cover-mark{width:62%;height:62%;box-shadow:0 0 0 2px #fffdfa}.cover-key{gap:10px 16px}}.rectangle-surface{width:100%;max-width:560px;margin-inline:auto}.rectangle-board-note{min-height:44px;color:var(--muted);font-variant-numeric:tabular-nums;justify-content:space-between;align-items:center;gap:16px;margin-bottom:12px;font-size:.9rem;display:flex}.rectangle-dimensions{color:var(--ink);text-wrap:balance;font-weight:650}.rectangle-dimensions[data-valid=true]{color:var(--accent)}.rectangle-grid{grid-template-columns:repeat(var(--rectangle-columns),minmax(0,1fr));grid-template-rows:repeat(var(--rectangle-rows),minmax(0,1fr));aspect-ratio:var(--rectangle-columns)/var(--rectangle-rows);touch-action:none;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;isolation:isolate;background:#fdfcf8;border:2px solid #718174;border-radius:8px;width:100%;display:grid;position:relative;overflow:hidden}.rectangle-grid .rectangle-cell{width:100%;min-width:0;height:100%;min-height:0;box-shadow:none;color:#263b32;z-index:1;cursor:crosshair;background:0 0;border:1px solid #d2d6c9;border-top:0;border-left:0;border-radius:0;justify-content:center;align-items:center;margin:0;padding:0;font-size:clamp(1.1rem,4.8vw,1.7rem);font-weight:650;line-height:1;display:flex;position:relative}.rectangle-cell span{pointer-events:none;z-index:2;position:relative}.rectangle-grid .rectangle-cell:hover{background:#1860470f}.rectangle-grid .rectangle-cell:focus-visible{outline-offset:-5px;z-index:3;background:#18604714;outline:3px solid #185e47}.rectangle-grid .rectangle-cell.is-filled{cursor:pointer}.rectangle-grid .rectangle-cell.is-anchor:after{content:"";pointer-events:none;border:2px dotted #185e47;border-radius:3px;position:absolute;inset:8px}.rectangle-regions{pointer-events:none;z-index:0;position:absolute;inset:0}.rectangle-region{background:var(--region-fill);box-sizing:border-box;border:3px solid #59735f;transition:background-color .1s ease-out;position:absolute}.rectangle-region.is-selected{border-width:5px;border-color:#155f48}.rectangle-region.is-draft{z-index:1;background:#b76f4d1c;border:3px dashed #985642}.rectangle-region.is-draft.is-valid{background:#18604733;border-color:#155f48}.rectangle-instructions{text-align:center;color:var(--muted);margin:16px 0 0;font-size:.9rem}.rectangle-instructions span{margin-top:8px;font-size:.85rem;display:block}.rectangle-tools{margin-inline:auto}.rectangle-tools .tool-row{gap:12px}.rectangle-selection-note{text-align:center;color:var(--muted);margin-top:12px;font-size:.85rem}.rectangle-region-details{max-width:560px;margin:16px auto 0}.rectangle-region-details summary{cursor:pointer;min-height:44px;padding-block:12px;font-size:.9rem;font-weight:600}.rectangle-region-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:8px;display:grid}.rectangle-region-list button{justify-content:space-between;align-items:center;gap:12px;min-height:44px;padding:10px 12px;font-size:.875rem;display:flex}.rectangle-region-list button span:last-child{color:var(--muted);font-size:.8rem}@media (width<=650px){.rectangle-board-note{gap:8px;margin-bottom:8px;font-size:.8rem}.rectangle-surface{max-width:440px}.rectangle-grid .rectangle-cell{font-size:clamp(1rem,5vw,1.4rem)}.rectangle-instructions{font-size:.85rem}.rectangle-instructions span{font-size:.8rem}.rectangle-tools .tool-row{gap:8px}.rectangle-tools .tool-row button{flex:130px;min-width:0;padding-inline:12px;font-size:.85rem}.rectangle-selection-note{font-size:.8rem}.rectangle-region{border-width:2px}.rectangle-region.is-selected{border-width:4px}.rectangle-grid .rectangle-cell.is-anchor:after{inset:6px}}@media (prefers-reduced-motion:reduce){.rectangle-region{transition:none}}.rectangle-scroll{overscroll-behavior-inline:contain;scrollbar-width:auto;scrollbar-color:var(--control-border) var(--paper);padding-bottom:4px;overflow:auto hidden}.rectangle-scroll::-webkit-scrollbar{height:12px}.rectangle-scroll::-webkit-scrollbar-track{background:var(--paper)}.rectangle-scroll::-webkit-scrollbar-thumb{background:var(--control-border);border:3px solid var(--paper);border-radius:6px}.rectangle-grid{min-width:var(--rectangle-min-width)}.rectangle-context-actions[hidden]{display:none}.rectangle-region.is-being-redrawn{opacity:.4;border-style:dotted}.rectangle-region.is-hint-rejected{z-index:1;background:#a8412a1a;border:3px dashed #a8412a}.rectangle-grid .rectangle-cell.is-hint-clue:before{content:"";pointer-events:none;border:3px solid #17634c;border-radius:4px;position:absolute;inset:5px}.rectangle-grid .rectangle-cell.is-hint-cell{background:#b2832829}.rectangle-grid .rectangle-cell.is-hint-cell:after{content:"";pointer-events:none;border:2px dotted #8a6021;border-radius:3px;position:absolute;inset:7px}.rectangle-tools .rectangle-context-actions{min-height:48px}.rectangle-selection-note{min-height:1.5em}.rectangle-region-list button span:last-child{color:var(--accent)}@media (width<=650px){.rectangle-context-actions button{flex:120px}.rectangle-grid .rectangle-cell.is-hint-clue:before{border-width:2px;inset:4px}.rectangle-grid .rectangle-cell.is-hint-cell:after{inset:5px}}.lights-root{text-align:center;width:100%}.lights-instruction{color:var(--muted);margin:0 0 20px}.lights-root button{-webkit-tap-highlight-color:transparent}.lights-grid-frame{overscroll-behavior-inline:contain;scrollbar-color:var(--control-border) var(--paper);scrollbar-width:thin;max-width:100%;overflow-x:auto}.lights-grid{grid-template-columns:22px repeat(var(--lights-size),minmax(44px,1fr));width:min(100%,490px);min-width:calc(22px + var(--lights-size)*46px);touch-action:manipulation;gap:2px;margin-inline:auto;display:grid}.lights-coordinate{color:var(--muted);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;min-height:20px;font-size:.75rem;display:flex}.lights-cell,.lights-wall{aspect-ratio:1;border-radius:4px;justify-content:center;align-items:center;min-width:0;display:flex;position:relative}.lights-cell{isolation:isolate;background:#f2f3ef;border:1px solid #a8b1a1;min-height:0;padding:0;transition:background-color .16s ease-out;overflow:visible}.lights-cell.is-lit{background:#fff2b8;border-color:#bdad66}.lights-cell:hover:not(:disabled){background:#e0e9d8}.lights-cell.is-lit:hover:not(:disabled){background:#f9e599}.lights-cell:before,.lights-cell:after{content:"";opacity:0;z-index:0;pointer-events:none;background:#d5b95a;position:absolute}.lights-cell:before{height:2px;top:calc(50% - 1px);left:-2px;right:-2px}.lights-cell:after{width:2px;top:-2px;bottom:-2px;left:calc(50% - 1px)}.lights-cell.ray-horizontal:before,.lights-cell.ray-vertical:after{opacity:.8}.lights-cell.is-ray{background:#ffe69a}.lights-cell.is-ray:before,.lights-cell.is-ray:after{background:#a57619}.lights-cell.is-bulb:before,.lights-cell.is-bulb:after{opacity:0}.lights-bulb{z-index:1;pointer-events:none;width:58%;height:68%;display:none;position:relative}.lights-bulb svg{fill:#ffdb63;stroke:#5a461a;stroke-width:2.1px;stroke-linejoin:round;stroke-linecap:round;width:100%;height:100%;display:block;overflow:visible}.lights-bulb svg path+path{fill:none}.lights-cell.is-bulb .lights-bulb{display:block}.lights-mark{z-index:1;pointer-events:none;width:34%;height:34%;display:none;position:relative}.lights-mark:before,.lights-mark:after{content:"";background:#465643;border-radius:2px;width:2px;height:100%;position:absolute;top:0;left:calc(50% - 1px);transform:rotate(45deg)}.lights-mark:after{transform:rotate(-45deg)}.lights-cell.is-marked .lights-mark{display:block}.lights-wall{color:#fff;font-variant-numeric:tabular-nums;background:#31483b;border:1px solid #31483b;min-height:0;padding:0;font-size:clamp(1.1rem,3.2vw,1.7rem);font-weight:700}.lights-wall:hover:not(:disabled){background:#3b5c47}.lights-wall[aria-pressed=true]{background:#31483b;border-color:#31483b;box-shadow:inset 0 0 0 3px #bee4b8}.lights-wall:focus-visible{outline-offset:-4px;z-index:3;outline:3px solid #bee4b8}.lights-wall.is-satisfied{color:#d2efd1}.lights-wall.is-satisfied:after{content:"";background:#d2efd1;border-radius:2px;width:19%;height:2px;position:absolute;bottom:12%}.lights-cell.is-stranded{outline:2px dashed var(--bad);outline-offset:-4px}.lights-cell.is-inspected{box-shadow:inset 0 0 0 2px var(--accent)}.lights-cell.is-conflict{outline:3px dashed var(--bad);outline-offset:-4px}.lights-wall.is-conflict{outline-offset:-5px;background:#8d3423;border-color:#8d3423;outline:2px dashed #fff}.lights-cell.is-hint,.lights-wall.is-hint{box-shadow:inset 0 0 0 3px #31789b}.lights-cell:focus-visible{z-index:3;outline:3px solid var(--accent);outline-offset:-3px}.lights-legend{color:var(--muted);flex-wrap:wrap;justify-content:center;gap:10px 20px;margin-top:20px;font-size:.88rem;display:flex}.lights-legend>span{align-items:center;gap:7px;display:inline-flex}.lights-swatch{background:#f2f3ef;border:1px solid #a8b1a1;border-radius:3px;width:16px;height:16px;display:inline-block}.lights-swatch-lit{background:#fff2b8;border-color:#bdad66}.lights-swatch-mark{background:#fff2b8;border-color:#bdad66;position:relative}.lights-swatch-mark:before,.lights-swatch-mark:after{content:"";background:#465643;width:2px;height:10px;position:absolute;top:2px;left:6px;transform:rotate(45deg)}.lights-swatch-mark:after{transform:rotate(-45deg)}.lights-swatch-lit,.lights-swatch-mark{background-image:linear-gradient(#d5b95a,#d5b95a);background-position:50%;background-repeat:no-repeat;background-size:100% 2px}.lights-inspection{color:var(--muted);min-height:3.1em;margin-top:14px;font-size:.9rem}.lights-scroll-note{color:var(--muted);margin-top:8px;font-size:.85rem}.lights-keyboard{color:var(--muted);text-align:center;margin-top:10px;font-size:.85rem}.lights-keyboard summary{cursor:pointer;min-height:44px;padding-block:12px;list-style-position:inside}.lights-keyboard p{margin-top:8px}.lights-tools{gap:10px}.lights-tools button{justify-content:center;align-items:center;gap:8px;min-width:108px;display:inline-flex}.lights-tool-icon{pointer-events:none;flex:none;justify-content:center;align-items:center;width:22px;height:24px;display:inline-flex;position:relative}.lights-tool-light svg{fill:none;stroke:currentColor;stroke-width:2.2px;stroke-linejoin:round;stroke-linecap:round;width:22px;height:24px}.lights-tool-mark:before,.lights-tool-mark:after{content:"";background:currentColor;width:2px;height:17px;position:absolute;transform:rotate(45deg)}.lights-tool-mark:after{transform:rotate(-45deg)}.lights-tool-erase:before{content:"";border:2px solid;border-radius:2px;width:16px;height:11px;transform:rotate(-35deg)}.line-puzzles:has(.lights-root) .hint-panel p{white-space:pre-line;line-height:1.65}.lights-root[data-complete=true] .lights-cell{cursor:default}@media (width<=650px){.lights-grid{width:min(100%,420px);min-width:calc(14px + var(--lights-size)*45px);grid-template-columns:14px repeat(var(--lights-size),minmax(44px,1fr));gap:1px}.lights-instruction{margin-bottom:16px;font-size:.95rem}.lights-tools button{flex:85px;gap:7px;min-width:0;padding-inline:10px}.lights-legend{gap:8px 14px;font-size:.8rem}.lights-coordinate{font-size:.7rem}.lights-inspection{font-size:.85rem}.lights-keyboard{font-size:.8rem}}@media (prefers-reduced-motion:reduce){.lights-cell{transition:none}}.line-puzzles{min-width:0}.line-puzzles [hidden]{display:none!important}.line-puzzles button:not(:where(.pair-cell,.bridge-island,.loop-edge,.cover-cell,.rectangle-cell,.lights-cell,.lights-wall)){border:1px solid var(--control-border);background:var(--card);min-height:48px;color:var(--ink);font:inherit;cursor:pointer;touch-action:manipulation;overflow-wrap:normal;word-break:normal;border-radius:12px;max-width:100%;padding:11px 18px;font-weight:650;line-height:1.4}.line-puzzles button:not(:where(.pair-cell,.bridge-island,.loop-edge,.cover-cell,.rectangle-cell,.lights-cell,.lights-wall)):hover:not(:disabled){background:var(--accent-soft)}.line-puzzles button.btn-primary{background:var(--accent);color:var(--accent-ink,#fff);border-color:var(--accent)}.line-puzzles button.btn-primary:hover:not(:disabled){background:var(--accent-hover,#104d3a)}.line-puzzles button.text-button{color:var(--muted);text-underline-offset:4px;background:0 0;border-color:#0000;padding-inline:8px;font-weight:500;text-decoration:underline}.line-puzzles #lp-fresh{width:100%;margin-top:4px;display:block}.line-puzzles button:disabled{cursor:default}.line-puzzles button:not(:where(.pair-cell,.bridge-island,.loop-edge,.cover-cell,.rectangle-cell,.lights-cell,.lights-wall)):disabled{color:var(--control-disabled-ink,#4f5d53);background:var(--control-disabled-bg,#f0f1eb);border-color:var(--line)}.line-puzzles button:focus-visible,.line-puzzles select:focus-visible,.line-puzzles summary:focus-visible{outline:3px solid var(--accent);outline-offset:4px}.line-puzzles .board-setup{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;display:grid}.line-puzzles .board-setup .practice-setting{align-content:start;gap:8px;min-width:0;display:grid}.line-puzzles .board-setup p{min-height:2.8em}.line-puzzles .example-layout{justify-content:center;align-items:center;gap:40px;display:flex}.line-puzzles .example-visual{flex:0 240px;min-width:180px;max-width:240px}.line-puzzles .example-visual svg{width:100%;height:auto;display:block}.line-puzzles .example-copy{flex:1;min-width:0}.line-puzzles .example-copy p{margin:0 0 16px}.line-puzzles .example-copy .example-caption{min-height:3em;color:var(--subject-ink,var(--ink));margin:12px 0 0;font-size:.9rem}.line-puzzles .demo-line{opacity:0;transition:opacity .18s ease-out}.line-puzzles .example[data-revealed=true] .demo-line{opacity:1}.line-puzzles .round-top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:12px;display:flex}.line-puzzles .round-top p{color:var(--muted);margin:0;font-size:.9rem}.line-puzzles .round-links{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;margin-inline-start:auto;display:flex}.line-puzzles .line-play-stage{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:24px 32px}.line-puzzles .board-heading{text-align:center}.line-puzzles .board-heading h2{letter-spacing:-.02em;margin:0;font-size:1.35rem;line-height:1.3}.line-puzzles .board-heading p{color:var(--muted);font-variant-numeric:tabular-nums;min-height:1.5em;margin:8px 0 0;font-size:.9rem}.line-puzzles .puzzle-board{width:100%;min-width:0;margin:24px auto 0}.line-puzzles .puzzle-tools:empty{display:none}.line-puzzles .puzzle-tools{margin-top:20px}.line-puzzles .tool-row{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;display:flex}.line-puzzles .standard-tools{align-items:stretch;margin-top:20px}.line-puzzles .standard-tools button{min-width:104px}.line-puzzles .check-row{justify-content:center;margin-top:20px;display:flex}.line-puzzles .check-row .btn-primary{min-width:220px}.line-puzzles .status{text-align:center;min-height:1.55em;color:var(--muted);margin:16px 0 0}.line-puzzles .status:is([data-tone=error],[data-tone=warning],[data-tone=bad]){color:var(--bad)}.line-puzzles .status:is([data-tone=success],[data-tone=good]){color:var(--good)}.line-puzzles .hint-panel{margin:24px 0 0;padding:0}.line-puzzles .hint-panel p{margin:8px 0 0}.line-puzzles .hint-panel button{margin-top:16px}.line-puzzles .hint-panel h3{color:var(--accent);margin:0;font-size:1.05rem}.line-puzzles .reset-confirm{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;margin-top:16px;display:flex}.line-puzzles .reset-confirm p{text-align:center;width:100%}.line-puzzles .result{border:1px solid var(--line);background:var(--card);border-radius:16px;margin-top:24px;padding:24px}.line-puzzles .result p{color:var(--muted);margin:12px 0 0}.line-puzzles .result .tool-row{justify-content:flex-start;margin-top:20px}.line-puzzles .result .btn-primary{min-width:220px}.line-puzzles .result-note,.line-puzzles [data-save-note]{font-size:.9rem}.line-puzzles .loop-example-head h2{margin:0;font-size:1.35rem}.line-puzzles .loop-example-head>p:last-child{margin-top:8px}.line-puzzles .loop-example-head .example-title{margin:0 0 12px;font-size:.9rem;font-weight:600}.line-puzzles .loop-example-layout{align-items:center;gap:40px;margin-top:24px;display:flex}.line-puzzles .loop-example-board{flex:0 0 308px;min-width:0;max-width:100%;overflow-x:auto}.line-puzzles .loop-example-grid{--loop-step:88px;--loop-target:44px}.line-puzzles .loop-example[data-step="1"] .loop-example-grid{--loop-step:144px}.line-puzzles .loop-example-copy{flex:1;min-width:0}.line-puzzles .loop-example-feedback{min-height:3em;margin:0;font-weight:600}.line-puzzles .loop-example-feedback[data-tone=success]{color:var(--accent)}.line-puzzles .loop-example-feedback[data-tone=error]{color:var(--bad)}.line-puzzles .loop-example-note{color:var(--subject-ink,var(--ink));margin-top:12px;font-size:.95rem}.line-puzzles .loop-example-actions{flex-wrap:wrap;align-items:center;gap:12px;margin-top:20px;display:flex}.line-puzzles .loop-example .loop-edge:hover:not(:disabled),.line-puzzles .loop-example .loop-edge:focus-visible{background:#c8d7c2}.line-puzzles .loop-tools{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.line-puzzles .loop-tools [aria-pressed=true]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.line-puzzles .loop-tools [aria-pressed=true]:hover:not(:disabled){background:var(--accent-hover,#104d3a);color:var(--accent-ink)}.line-puzzles .bridge-modes [aria-pressed=true]{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.line-puzzles .practice-help{margin-top:24px}.line-puzzles .practice-help li+li{margin-top:8px}@media (width<=650px){.line-puzzles .board-setup{grid-template-columns:minmax(0,1fr);gap:20px}.line-puzzles .board-setup p{min-height:0}.line-puzzles .example-layout{flex-direction:column;gap:12px}.line-puzzles .example-visual{flex-basis:auto;width:180px;min-width:0}.line-puzzles .example-copy{width:100%}.line-puzzles .example-copy .example-caption{min-height:0}.line-puzzles .line-play-stage{padding:20px 12px}.line-puzzles .puzzle-board{margin-top:20px}.line-puzzles .standard-tools{gap:8px}.line-puzzles .standard-tools button{flex:1 1 max-content;min-width:min-content;padding-inline:14px}.line-puzzles .round-top{gap:8px}.line-puzzles .round-links{gap:4px}.line-puzzles .board-heading h2{font-size:1.2rem}.line-puzzles .result{padding:20px}.line-puzzles .result .tool-row{align-items:stretch}.line-puzzles .result .btn-primary{flex:100%;min-width:0}.line-puzzles .hint-panel{padding-inline:8px}.line-puzzles .loop-example-layout{flex-direction:column;gap:16px;margin-top:20px}.line-puzzles .loop-example-board{flex-basis:auto;width:100%}.line-puzzles .loop-example-grid{--loop-step:88px;--loop-target:44px}.line-puzzles .loop-example-feedback{min-height:0}.line-puzzles .loop-example-actions{gap:8px;margin-top:16px}.line-puzzles .loop-example-actions>[data-example-next]{flex:1}.line-puzzles .loop-tools button{flex:0 auto}}@media (width<=360px){.line-puzzles .loop-example-grid{--loop-step:88px;--loop-target:44px}}@media (prefers-reduced-motion:reduce){.line-puzzles .demo-line{transition:none}}@media (forced-colors:active){.line-puzzles .pair-route,.line-puzzles .bridge-stroke{stroke:canvastext}.line-puzzles .pair-mark,.line-puzzles .pair-key-letter{forced-color-adjust:none}.line-puzzles .loop-segment.loop-drawn,.line-puzzles .loop-dot{background:canvastext}}.line-puzzles :is(.pair-cell,.bridge-island,.loop-edge,.cover-cell,.rectangle-cell,.lights-cell,.lights-wall):disabled{opacity:1}.line-puzzles button{-webkit-tap-highlight-color:transparent}.line-puzzles .example-modes{flex-wrap:wrap;justify-content:center;gap:8px;margin-bottom:24px;display:flex}.line-puzzles .example-modes [aria-pressed=true],.line-puzzles .lights-tools [aria-pressed=true]{background:var(--accent);color:var(--accent-ink,#fff);border-color:var(--accent)}.line-puzzles .example-copy h2{margin:0 0 12px;font-size:1.25rem}.line-puzzles .walk-step{color:var(--subject-ink,var(--muted));font-size:.85rem}.line-puzzles .walk-actions>button{width:auto;min-width:0}.line-puzzles .walk-actions{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.line-puzzles .hint-heading{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.line-puzzles .hint-heading button{margin:0}.line-puzzles .hint-panel p{white-space:pre-line;line-height:1.65}@media (width<=650px){.line-puzzles .walk-actions{gap:8px}.line-puzzles .walk-actions button{flex:auto}.line-puzzles .example-modes{margin-bottom:16px}.line-puzzles .example-copy h2{font-size:1.15rem}}.line-puzzles .puzzle-method-link{justify-items:start;gap:0;margin:16px 0 0;display:grid}.line-puzzles .puzzle-method-link span{color:var(--muted);font-size:.8125rem}.line-puzzles .puzzle-method-link a{min-height:44px;color:var(--accent);text-underline-offset:var(--underline-offset,4px);align-items:center;font-weight:600;display:inline-flex}.line-puzzles .puzzle-method-link a:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.line-puzzles .hint-panel{overflow-wrap:anywhere}.line-puzzles .hint-panel details{margin-top:12px}.line-puzzles .hint-panel summary{cursor:pointer;min-height:44px;color:var(--accent);padding-block:10px}.line-puzzles .hint-panel ol{padding-inline-start:24px}.line-puzzles .hint-panel li{margin-block:10px;line-height:1.6}.line-puzzles .hint-condition{color:var(--muted);font-size:.875rem}.line-puzzles .line-pan-controls{color:var(--muted);justify-content:center;align-items:center;gap:12px;margin:8px auto 0;font-size:.8125rem;display:flex}.line-puzzles .line-pan-controls[hidden]{display:none}.line-puzzles .line-pan-controls button{place-items:center;min-width:44px;min-height:44px;padding:6px;display:grid}.line-puzzles .line-pan-controls svg{pointer-events:none}.line-puzzles :is(.pair-cell,.cover-cell,.rectangle-cell,.lights-cell):focus-visible{outline-offset:-3px;outline:3px solid #263b32}.line-puzzles .lights-wall:focus-visible{outline-offset:-4px;outline:3px solid #bee4b8}.line-puzzles .loop-edge:focus-visible{outline-offset:-3px}
