@layer reset,base,components;
@layer reset{*{box-sizing:border-box}body,h1,h2,h3,p{margin:0}button,a,input,select{-webkit-tap-highlight-color:transparent}button,select,input{font:inherit}button{cursor:pointer}button:disabled{cursor:default}a{color:inherit}img,svg{display:block}button:focus-visible,a:focus-visible,select:focus-visible{outline:3px solid var(--ink);outline-offset:4px}[hidden]{display:none!important}}
@layer base{:root{color-scheme:light;--bg:#f4f6fb;--paper:#fff;--ink:#202a42;--muted:#65708a;--line:#dfe4ef;--accent:#2e66da;--shade:#e6edfc;--shadow:#24365d18;--danger:#ed607b;--board:#bac7df}html[data-theme=dark]{color-scheme:dark;--bg:#131a2a;--paper:#202b41;--ink:#eff3ff;--muted:#a5b3d0;--line:#394660;--shade:#263f65;--shadow:#0005;--board:#778ba9}body{background:var(--bg);color:var(--ink);font:17px/1.5 ui-rounded,'Avenir Next',system-ui,sans-serif;min-height:100dvh}button{color:inherit;border:0}button,a,select{touch-action:manipulation}a{text-decoration:none}button:active,.puzzle-card:active{transform:translateY(3px);box-shadow:none!important}button:disabled{opacity:.4}h1{font-size:clamp(32px,5vw,52px);font-weight:850;line-height:1.1;letter-spacing:-1.8px}h2{font-size:30px;line-height:1.2;letter-spacing:-.8px}.site-header{max-width:1160px;padding:22px 24px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:16px}.brand{font-size:23px;font-weight:900;letter-spacing:-.7px;display:flex;align-items:center;gap:9px}.brand svg{width:35px;height:35px}.header-actions{display:flex;gap:8px;align-items:center}.icon-button{width:44px;height:44px;border-radius:50%;background:var(--paper);box-shadow:0 3px 0 var(--shadow);font-size:21px;display:grid;place-items:center}.icon-button svg{width:22px;height:22px}.streak-chip{display:flex;align-items:center;gap:6px;font-weight:800;background:var(--paper);border-radius:30px;padding:8px 14px;white-space:nowrap}.wrap{max-width:1040px;margin:auto;padding:20px 24px 0}.muted{color:var(--muted)}.button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:46px;padding:11px 20px;border-radius:14px;background:var(--paper);box-shadow:0 4px 0 var(--shadow);font-weight:800;border:1px solid var(--line)}.button.primary{background:var(--accent);color:#fff;border:0;box-shadow:0 5px 0 color-mix(in srgb,var(--accent),#17284b 24%)}.button.soft{background:var(--shade);border:0}.site-footer{max-width:1040px;margin:20px auto;padding:22px 24px;display:flex;gap:24px;justify-content:center;color:var(--muted);font-size:14px}.ad-slot{height:90px;max-width:728px;margin:24px auto 0;contain:layout size}.home-heading{display:flex;justify-content:space-between;align-items:end;margin:8px 0 28px;gap:20px}.home-heading p{margin-top:12px}.date-chip{font-weight:800;color:var(--muted);white-space:nowrap}.puzzle-cards{display:grid;grid-template-columns:1fr 1fr;gap:24px}.puzzle-card{position:relative;display:grid;grid-template-columns:1fr 154px;align-items:center;gap:20px;padding:28px;border-radius:28px;background:var(--paper);box-shadow:0 7px 0 var(--shadow);border:2px solid transparent;min-height:236px;transition:transform .15s,border-color .15s;overflow:hidden}.puzzle-card:hover{border-color:var(--card-color)}.puzzle-card h2{font-size:35px;color:var(--card-color)}.puzzle-card p{font-size:15px;margin:9px 0 18px;color:var(--muted);max-width:220px}.puzzle-card .play-label{display:inline-flex;border-radius:12px;padding:9px 14px;color:white;background:var(--card-color);font-weight:800;font-size:15px;gap:8px}.puzzle-card[data-ready=false]{opacity:.62}.puzzle-card[data-ready=false] .play-label{background:var(--line);color:var(--muted)}.mini-board{display:grid;grid-template-columns:repeat(var(--n),1fr);gap:3px;padding:8px;border-radius:15px;background:color-mix(in srgb,var(--card-color),transparent 87%);transform:rotate(5deg);box-shadow:0 5px 0 color-mix(in srgb,var(--card-color),transparent 85%);aspect-ratio:1}.mini-cell{display:grid;place-items:center;border-radius:4px;background:#fff9;color:#293548;font-size:14px;font-weight:900;aspect-ratio:1}.mini-cell svg{width:78%;height:78%}.mini-cell.filled{background:var(--card-color);color:#fff}.card-streak{position:absolute;right:18px;top:12px;font-size:13px;color:var(--muted)}
.puzzle-main{overflow-anchor:none;max-width:920px;margin:auto;padding:2px 24px 0}.puzzle-top{display:flex;align-items:center;justify-content:space-between;max-width:740px;margin:8px auto 14px;gap:16px}.puzzle-title{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap}.puzzle-title h1{font-size:32px;letter-spacing:-1px;color:var(--accent)}.puzzle-title span{font-size:14px;color:var(--muted)}.timer{font-size:25px;font-weight:850;font-variant-numeric:tabular-nums;letter-spacing:-.6px}.modes{display:flex;gap:5px;justify-content:center;flex-wrap:wrap;margin:0 auto 16px}.modes button,.modes select{background:transparent;color:var(--muted);padding:8px 12px;border-radius:10px;border:0;font-size:14px;font-weight:750}.modes button.active{background:var(--shade);color:var(--accent)}.board-wrap{width:min(100%,740px,68dvh,calc(100dvh - 300px));margin:auto;position:relative}.board{display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));grid-template-rows:repeat(var(--n),minmax(0,1fr));aspect-ratio:1;border:4px solid var(--board);border-radius:17px;overflow:hidden;background:var(--board);box-shadow:0 7px 0 var(--shadow);isolation:isolate;touch-action:manipulation}.cell{aspect-ratio:1;min-width:0;min-height:0;position:relative;display:grid;place-items:center;line-height:1;padding:0;font-weight:900;font-size:clamp(18px,3vw,32px);background:var(--cell-bg,var(--paper));border:1px solid #ffffff60;color:#26314c;border-radius:0;transition:filter .1s,transform .12s;user-select:none;touch-action:manipulation}.cell:hover{filter:brightness(1.07)}.cell:active{transform:scale(.89)!important;border-radius:8px}.cell:focus-visible{outline:3px solid var(--ink);outline-offset:-4px;z-index:3}.cell svg{width:68%;height:68%;pointer-events:none;filter:drop-shadow(0 2px 0 #0002)}.cell .region-number{position:absolute;left:4px;top:4px;font-size:8px;opacity:.6;font-weight:600}.cell.cross::after{content:'×';color:#303d5a77;font-size:25px;font-weight:600}.cell.given{background:color-mix(in srgb,var(--accent),var(--paper) 91%)}.cell.given:after{content:'';position:absolute;right:4px;bottom:4px;width:4px;height:4px;background:var(--muted);border-radius:50%}.cell.error{box-shadow:inset 0 0 0 3px var(--danger);z-index:1;animation:nudge .25s}.cell.solved{animation:solve-pop .6s both;animation-delay:calc(var(--wave)*25ms)}.cell.pulse{animation:tap-pop .19s}.board[data-type=pairs]{gap:4px;padding:5px;background:var(--line);border-color:var(--line)}.board[data-type=pairs] .cell{border-radius:9px;border:0;box-shadow:0 3px 0 var(--shadow)}.puzzle-tools{display:flex;align-items:center;gap:9px;justify-content:center;margin:20px auto 0;flex-wrap:wrap}.puzzle-tools .button{font-size:14px;padding:9px 15px;min-height:44px}.status{min-height:27px;text-align:center;color:var(--muted);font-size:14px;margin:10px auto 0}.status.error-text{color:var(--danger)}.empty-state{text-align:center;padding:70px 24px}.empty-state p{margin:14px 0 24px}.game-footer{margin-top:5px}.game-footer .ad-slot{margin-top:0}
dialog{border:0;padding:30px;border-radius:28px;background:var(--paper);color:var(--ink);width:min(460px,92vw);max-height:90dvh;overflow:auto;box-shadow:0 20px 90px #17213d50;margin:auto}dialog::backdrop{background:#1524487a;backdrop-filter:blur(4px)}.dialog-close{position:absolute;right:14px;top:14px;box-shadow:none;background:transparent}.dialog-copy{margin:15px 0 22px;color:var(--muted)}.dialog-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.result-dialog{text-align:center;padding:38px 28px 30px;overflow:hidden}.result-burst{width:90px;height:90px;margin:0 auto 14px;color:var(--accent);animation:badge-in .5s cubic-bezier(.2,1.6,.5,1)}.result-time{font-size:72px;font-weight:900;letter-spacing:-4px;line-height:1.1;margin:17px 0}.result-streak{display:inline-block;border-radius:22px;padding:7px 16px;background:var(--shade);font-weight:850;margin-bottom:22px}.result-dialog .primary{width:100%;font-size:17px}.result-dialog .secondary{background:transparent;padding:14px;margin-top:4px;font-weight:750;color:var(--muted)}.share-text{width:100%;resize:vertical;min-height:90px;margin-top:14px;background:var(--bg);border:1px solid var(--line);border-radius:12px;color:var(--ink);padding:12px;font:14px/1.5 inherit}.lesson-board{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;width:190px;height:190px;margin:22px auto;background:var(--shade);padding:10px;border-radius:20px}.lesson-board span{display:grid;place-items:center;border-radius:9px;background:var(--paper);font-size:25px;animation:lesson-pop 1.8s infinite alternate;animation-delay:calc(var(--i)*90ms)}.lesson-dots{display:flex;gap:7px;justify-content:center;margin:20px}.lesson-dots i{width:8px;height:8px;border-radius:50%;background:var(--line)}.lesson-dots i.active{background:var(--accent)}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:24px 0}.stats-grid strong{display:block;font-size:35px}.stats-grid span{font-size:14px;color:var(--muted)}.archive-days{display:grid;grid-template-columns:repeat(7,1fr);gap:7px;margin:20px 0}.archive-days a{display:grid;place-items:center;border-radius:9px;min-height:43px;background:var(--shade);font-weight:750;font-size:14px}.archive-days a.solved{background:var(--accent);color:white}.archive-month{margin-top:20px;color:var(--muted);font-size:16px}.article{max-width:760px;margin:30px auto;padding:0 24px}.article h1{margin-bottom:22px}.article h2{margin:30px 0 12px;font-size:25px}.article p,.article li{margin:10px 0;line-height:1.75;color:var(--muted)}.article .rule-picture{max-width:270px;margin:28px auto}.article a{text-decoration:underline;text-underline-offset:3px}.article .button{text-decoration:none}.article nav{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:20px}
html[data-theme=dark] .puzzle-title h1,html[data-theme=dark] .modes button.active{color:color-mix(in srgb,var(--accent),white 45%)}html[data-theme=dark] .puzzle-card h2{color:color-mix(in srgb,var(--card-color),white 45%)}
@keyframes nudge{25%{transform:translateX(-3px)}75%{transform:translateX(3px)}}@keyframes solve-pop{25%{transform:scale(.85);filter:brightness(1.3)}60%{transform:scale(1.04)}100%{transform:scale(1)}}@keyframes tap-pop{50%{transform:scale(.8)}100%{transform:scale(1)}}@keyframes badge-in{from{transform:scale(.2) rotate(-40deg)}to{transform:scale(1) rotate(0)}}@keyframes lesson-pop{to{transform:translateY(-4px);background:color-mix(in srgb,var(--accent),var(--paper) 75%)}}
@media(max-width:700px){.site-header{padding:16px}.wrap{padding:16px}.home-heading{display:block;margin-bottom:22px}.date-chip{display:none}.puzzle-cards{gap:16px;grid-template-columns:1fr}.puzzle-card{min-height:194px;padding:24px;grid-template-columns:1fr 130px}.puzzle-card h2{font-size:30px}.puzzle-card p{font-size:14px}.puzzle-main{padding:0 15px}.puzzle-top{margin-top:0}.puzzle-title h1{font-size:29px}.modes{margin-bottom:12px}.board-wrap{width:min(100%,580px,calc(100dvh - 310px))}.puzzle-tools{gap:7px;margin-top:17px}.puzzle-tools .button{padding:9px 12px}.cell .region-number{font-size:7px;left:3px;top:3px}.site-footer{font-size:13px;gap:18px;padding:16px}.streak-chip{padding:7px 10px;font-size:14px}.brand{font-size:21px}.header-actions{gap:6px}.header-actions .icon-button{width:39px;height:39px}.home-heading h1{font-size:38px}.timer{font-size:23px}}
@media(max-width:370px){.puzzle-card{grid-template-columns:1fr 110px;padding:20px}.puzzle-card h2{font-size:27px}.header-actions .streak-chip{display:none}.puzzle-tools .button{padding:8px 10px;font-size:12px}.board-wrap{width:min(100%,calc(100dvh - 285px))}.puzzle-top{margin-bottom:8px}.modes{margin-bottom:8px}.status{font-size:12px}.brand svg{width:28px;height:28px}}
@media(max-height:580px) and (min-width:650px){body[data-page=puzzle] .site-header{padding:10px 22px}body[data-page=puzzle] .brand{font-size:18px}body[data-page=puzzle] .puzzle-main{display:grid;grid-template-columns:minmax(240px,1fr) 220px;grid-template-rows:auto auto 1fr;column-gap:24px;max-width:800px;padding-top:6px}.puzzle-top{grid-column:2;grid-row:1;display:block;margin:0}.puzzle-title h1{font-size:27px}.timer{margin-top:12px}.modes{grid-column:2;grid-row:2;justify-content:start;margin:6px 0}.board-wrap{grid-column:1;grid-row:1/5;width:min(100%,calc(100dvh - 85px))}.puzzle-tools{grid-column:2;grid-row:3;align-content:start;align-self:start;justify-content:start;margin-top:12px}.status{grid-column:2;grid-row:4;text-align:left}.game-footer{display:none}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
}
@layer components{
.board[data-type=path]{position:relative;touch-action:none;overflow:hidden;background:var(--line)}
.board[data-type=path] .cell{touch-action:none;background:var(--paper);border:1px solid var(--line)}
.board[data-type=path] .cell.path-used{background:color-mix(in srgb,var(--accent),var(--paper) 91%)}
.path-art{position:absolute;inset:4px;width:calc(100% - 8px);height:calc(100% - 8px);pointer-events:none;color:var(--accent);z-index:2;overflow:visible}
body[data-type=skyline] .board-wrap{padding:28px;width:min(100%,740px,68dvh,calc(100dvh - 358px))}
.board[data-type=skyline]{gap:4px;padding:5px;background:var(--line);border-color:var(--line)}
.board[data-type=skyline] .cell{border:0;border-radius:9px;background:var(--paper);box-shadow:0 3px 0 var(--shadow);color:var(--ink)}
.board[data-type=skyline] .cell.selected{outline:3px solid var(--accent);outline-offset:-3px}
.tower{position:absolute;inset:5px;display:grid;place-items:center;pointer-events:none}
.tower i{position:absolute;bottom:0;width:82%;height:calc(var(--height)*15% + 8%);border-radius:6px;background:color-mix(in srgb,var(--accent),var(--paper) 75%);box-shadow:inset 0 3px 0 #ffffff80}
.tower b{position:relative;z-index:1;font-size:clamp(20px,4vw,34px)}
.edge-clues{position:absolute;display:grid;align-items:center;justify-items:center;font-weight:850;color:var(--ink);font-size:19px;pointer-events:none}
.edge-clues.top,.edge-clues.bottom{grid-template-columns:repeat(5,1fr);left:37px;right:37px;height:24px}
.edge-clues.top{top:0}.edge-clues.bottom{bottom:0}
.edge-clues.left,.edge-clues.right{grid-template-rows:repeat(5,1fr);top:37px;bottom:37px;width:24px}
.edge-clues.left{left:0}.edge-clues.right{right:0}
.number-pad{display:flex;gap:8px;justify-content:center;margin:12px auto 0}
.number-choice{width:44px;height:44px;border-radius:12px;background:var(--paper);box-shadow:0 4px 0 var(--shadow);font-size:20px;font-weight:850;border:2px solid transparent}
.number-choice[aria-pressed=true]{background:var(--accent);color:white}
body[data-type=skyline] .puzzle-tools{margin-top:14px}
@media(max-width:370px){body[data-type=skyline] .board-wrap{width:min(100%,calc(100dvh - 344px));padding:23px}.edge-clues{font-size:15px}.edge-clues.top,.edge-clues.bottom{left:32px;right:32px;height:20px}.edge-clues.left,.edge-clues.right{top:32px;bottom:32px;width:20px}.number-choice{width:36px;height:36px}.number-pad{gap:7px;margin-top:8px}.tower{inset:2px}.tower b{font-size:18px}body[data-type=skyline] .puzzle-tools{margin-top:10px}}
@media(max-height:580px) and (min-width:650px){body[data-type=skyline] .board-wrap{width:min(100%,calc(100dvh - 85px))}body[data-type=skyline] .puzzle-main{grid-template-rows:auto auto auto 1fr}.number-pad{grid-column:2;grid-row:3;justify-content:start;gap:5px;margin-top:8px}.number-choice{width:32px;height:38px;font-size:17px}body[data-type=skyline] .puzzle-tools{grid-row:4}body[data-type=skyline] .status{grid-row:5}}
}

@layer components{.result-best{font-size:16px;color:var(--muted);margin:-7px 0 15px;font-weight:750}.result-flawless{font-weight:850;margin-bottom:12px;color:var(--ink)}.result-dialog h2{font-size:27px}.result-time{margin:12px 0 17px}}

@layer components{.lesson-board.extra-lesson{display:block;width:240px;height:220px;background:var(--shade)}.extra-lesson svg{width:100%;height:100%}}

@layer components{
@media(min-width:701px) and (min-height:581px){body[data-page=puzzle] .site-header{padding-top:14px;padding-bottom:14px}.puzzle-top{margin:0 auto 8px}.modes{margin-bottom:10px}body[data-type=skyline] .board-wrap{width:min(100%,740px,68dvh,calc(100dvh - 300px))}}
}
@layer components{
.result-dialog{overflow:auto}.result-dialog #share-status:empty{display:none}
@media(max-height:700px){.result-dialog{padding:22px}.result-burst{width:48px;height:48px;margin-bottom:8px}.result-dialog h2{font-size:22px}.result-time{font-size:52px;margin:8px 0}.result-best{font-size:14px;margin:0 0 8px}.result-flawless{font-size:14px;margin-bottom:8px}.result-streak{font-size:14px;margin-bottom:12px;padding:5px 12px}.result-dialog .primary{font-size:15px;min-height:44px;padding:9px 14px}.result-dialog .secondary{padding:9px;margin-top:5px;font-size:14px}}
}
