:root{--ink:#283544;--muted:#596579;--sea:#375c79;--land:#f8eccd;--line:#9c9bb1;--purple:#624572;font-family:"Trebuchet MS","Segoe UI",sans-serif;color:var(--ink);background:#f2eff7;line-height:1.5;color-scheme:light;font-synthesis:none}*{box-sizing:border-box}body{margin:0}a{color:inherit;text-underline-offset:4px}button,select{font:inherit;color:inherit}button,select{min-height:44px}button{cursor:pointer;border:1px solid #9597ab;border-radius:8px;background:#faf9fd;padding:9px 14px;touch-action:manipulation}button:hover:not(:disabled){background:#e9e1f0}button:disabled{opacity:.47;cursor:default}button:focus-visible,a:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #714185;outline-offset:3px}.skip{position:fixed;top:-80px;left:16px;background:white;z-index:30;padding:12px}.skip:focus{top:12px}header{max-width:1060px;margin:auto;padding:20px 30px 10px;display:flex;justify-content:space-between;align-items:center}header a{display:inline-flex;align-items:center;min-height:44px}.brand{font-family:Georgia,"Times New Roman",serif;font-size:1.55rem;letter-spacing:-.03em;text-decoration:none;font-weight:bold;gap:10px}.brand svg{width:32px;height:32px;fill:#e8d09d;stroke:#375c79;stroke-width:2;stroke-linejoin:round}.brand svg path+path{fill:none}header>a:not(.brand){font-size:.88rem}main,footer{max-width:1000px;margin:auto}.intro{display:flex;gap:25px;align-items:baseline;padding:12px 0 21px}.intro h1{font:500 clamp(2rem,4.5vw,3.1rem)/1.12 Georgia,serif;letter-spacing:-.045em;margin:0}.intro p{color:var(--muted);margin:0;font-size:.95rem}.game{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:35px;border-top:1px solid #aaa5b8;padding-top:18px}.board-column{min-width:0}.settings{display:flex;align-items:center;justify-content:space-between;gap:12px}.mode{display:flex;background:#e4deed;padding:3px;border-radius:9px}.mode button{border:0;background:transparent;padding:6px 13px}.mode button[aria-pressed=true]{background:white;box-shadow:0 1px 4px #40334e29;font-weight:bold}label{font-size:.84rem;display:flex;gap:8px;align-items:center}select{background:transparent;border:1px solid #9a98ad;border-radius:6px;padding:5px 8px}.puzzle-label{display:flex;justify-content:space-between;gap:10px;font-size:.78rem;color:var(--muted);margin:15px 0 10px}.map-frame{padding:15px;border:1px solid #a4a3b9;border-radius:13px;background:#e1e5eb;box-shadow:0 5px 0 #d1d1df}.board{display:flex;flex-direction:column;aspect-ratio:1;max-width:500px;margin:auto;border:1px solid #7f8f9c;gap:2px;background:#758496;padding:2px;border-radius:6px;overflow:hidden;outline:none}.grid-row{display:flex;flex:1;min-height:0;gap:2px}.cell{position:relative;flex:1;min-width:0;min-height:0;padding:0;border:0;border-radius:2px;background:#fbfcfd;color:var(--ink);font-family:Georgia,serif;font-size:clamp(24px,4.8vw,39px);line-height:1;display:flex;align-items:center;justify-content:center;isolation:isolate;outline-offset:-4px!important}.cell:hover:not(:disabled){background:#e8e4f4}.cell.sea{background:var(--sea);color:#d4edf5}.cell.sea:hover{background:#456e8e}.cell.land{background:var(--land);color:#594957}.cell.land:hover{background:#f6e1b4}.cell.sea::after{content:"≈";font-family:Georgia,serif;font-size:1em;transform:scaleX(1.3)}.cell.land:not(.clue)::after{content:"•";font-size:.75em}.cell.clue{font-weight:bold}.cell.selected::before{content:"";position:absolute;inset:5px;border:2px dashed currentColor;border-radius:3px;opacity:.85;pointer-events:none;z-index:2}.cell:focus-visible{outline:3px solid #81438e;outline-offset:-4px;background:#e8e4f4}.cell.sea:focus-visible{outline-color:#ffdc94;background:var(--sea)}.cell.hinted{box-shadow:inset 0 0 0 4px #a15b11}.cell.conflict{box-shadow:inset 0 0 0 3px #a43f37}.cell.conflict .flag{display:block}.flag{display:none;position:absolute;right:5px;top:4px;background:#fff8f1;color:#982f24;font:700 12px Arial,sans-serif;padding:1px 3px;border-radius:3px}.map-caption{display:flex;justify-content:space-between;font-size:.78rem;color:var(--muted);margin-top:13px}.status{min-height:1.7em;margin:17px 0 14px;font-size:.95rem}.status.complete{color:#33593f;font-weight:bold}.status.error{color:#98392f}.actions{display:flex;flex-wrap:wrap;gap:8px}.actions button{flex:1;white-space:nowrap;font-size:.9rem}.primary{background:var(--purple);color:white;border-color:var(--purple)}.primary:hover:not(:disabled){background:#785487}.daily-note{font-size:.78rem;color:var(--muted);margin:14px 0}.game aside{padding-top:3px}.game h2{font:500 1.45rem Georgia,serif;margin:0 0 9px}.cell-panel{padding-bottom:20px;border-bottom:1px solid #bbb2c9}#selected-cell{font-size:.87rem;min-height:3em;color:#4e6071;margin:0 0 13px}.mark-buttons{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.mark-buttons button{display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:.86rem;gap:2px;padding:4px 9px}.mark-buttons span{font-size:23px;line-height:25px}.navigator{display:flex;justify-content:center;gap:9px;margin-top:13px}.navigator button{min-width:48px;height:46px;padding:5px;font-size:20px}.small{font-size:.8rem;color:var(--muted);margin-bottom:0}.rule-note{margin:22px 0}.rule-note h2{font-size:1.32rem}.rule-note p{font-size:.9rem;color:#49576a}.keyboard{border-top:1px solid #c1b9cc;padding-top:10px}summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-size:.84rem}details p{font-size:.85rem;color:#49576a}.hint-box{background:#ede2f4;border-left:4px solid #846190;margin:20px 0;padding:10px 13px}.hint-box p{font-size:.88rem}.hint-box>div,.save-problem>div{display:flex;gap:8px;flex-wrap:wrap}.hint-box button,.save-problem button{font-size:.83rem;flex:1}.save-problem{background:#fae9df;border-left:4px solid #a85434;padding:11px 13px;margin:20px 0}.save-problem p{font-size:.85rem;color:#763c29}pre{font:12px/1.5 ui-monospace,monospace;overflow-wrap:anywhere;white-space:pre-wrap}footer{display:flex;gap:24px;color:var(--muted);font-size:.83rem;padding:23px 0 28px}footer a{min-height:44px;display:flex;align-items:center}dialog{width:calc(100% - 32px);max-width:480px;background:#faf8fd;color:var(--ink);border:1px solid #9f93ac;border-radius:12px;padding:25px}dialog::backdrop{background:#2f284aca}dialog h2{font:500 1.65rem Georgia,serif;margin:0 0 14px}dialog p{font-size:.94rem}dialog form>div{display:flex;gap:10px;justify-content:flex-end;margin-top:25px}dialog [data-action]{border-color:#a66b57;color:#8f3c2c}.rules{max-width:690px;padding:15px 0 35px}.rules h1{font:500 clamp(2rem,5vw,3rem)/1.14 Georgia,serif;letter-spacing:-.04em}.rules h2{font:500 1.4rem Georgia,serif;margin-top:30px}.rules li{margin:10px 0}.example{display:flex;align-items:center;gap:24px;border-block:1px solid #b7aec6;margin:28px 0;padding:22px 0}.example svg{width:200px;max-width:44%;flex-shrink:0}.example figcaption{font-size:.95rem}.play-link{display:inline-flex;min-height:46px;padding:11px 18px;border-radius:7px;background:var(--purple);color:white;text-decoration:none}.rules footer{margin-top:20px}[hidden]{display:none!important}
@media(max-width:1060px){main,footer{margin-left:30px;margin-right:30px}.game{gap:25px;grid-template-columns:minmax(0,1fr) 260px}}
@media(max-width:780px){header{padding:10px 16px 3px}.brand{font-size:1.35rem}.brand svg{width:27px}main,footer{margin-left:16px;margin-right:16px}.intro{display:block;padding:8px 0 15px}.intro h1{font-size:2rem}.intro p{font-size:.86rem;margin-top:5px}.game{display:block;padding-top:10px}.puzzle-label{margin:10px 0}.map-frame{padding:9px;max-width:530px;margin:auto}.board{max-width:500px}.cell{font-size:clamp(22px,6vw,34px)}.cell.selected::before{inset:4px}.status{font-size:.89rem;margin:15px 0 12px}.actions{gap:6px}.actions button{padding:8px;font-size:.84rem}.game aside{margin-top:24px}.cell-panel{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.cell-panel h2{grid-column:1;font-size:1.25rem}#selected-cell{grid-column:1;min-height:0;font-size:.82rem}.mark-buttons{grid-row:1/3;grid-column:2}.navigator,.cell-panel>.small{grid-column:1/-1}.navigator{margin-top:7px}.cell-panel>.small{text-align:center}.rule-note{margin:18px 0}.rule-note p{margin:8px 0;font-size:.85rem}.rule-note h2{font-size:1.2rem}.rules{padding-top:8px}.example{gap:15px}.example figcaption{font-size:.84rem}footer{padding-top:15px}.daily-note{font-size:.76rem}}
@media(max-width:390px){.cell-panel{display:block}.mark-buttons{margin-top:10px}.navigator{margin-top:12px}}
@media(prefers-reduced-motion:no-preference){button{transition:background-color .12s}}
