@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Outfit:wght@400;500;600;700;800&display=swap');
:root{--paper:#f6f3ec;--ink:#29283b;--muted:#6e6b78;--purple:#6250bd;--line:#dedbd4}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',sans-serif}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #a470e0;outline-offset:4px}header{max-width:1440px;margin:auto;padding:26px 5%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{font-family:Outfit,sans-serif;font-size:25px;font-weight:600;letter-spacing:-1px;color:var(--ink);text-decoration:none;display:flex;align-items:center;gap:8px}.brand-icon{font-size:38px;color:var(--purple)}.brand-dot{color:#ef9673;font-size:10px;align-self:flex-start;margin-top:10px}.quiet{background:none;border:0;color:var(--ink);font-size:13px;font-weight:600;padding:12px}.quiet span{margin-left:12px}.eyebrow{font-size:11px;letter-spacing:2px;font-weight:700;color:var(--purple);text-transform:uppercase}.pill{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:99px;padding:9px 14px;font-size:11px;letter-spacing:1px;font-weight:700}.pill i{width:7px;height:7px;background:#739d7f;border-radius:50%}h1,h2,h3{font-family:Outfit,sans-serif;letter-spacing:-1.5px;margin:18px 0}h1{font-size:clamp(44px,5.3vw,76px);line-height:1.05;font-weight:500}h1 em{color:var(--purple);font-style:normal}p{line-height:1.65;color:var(--muted)}.landing{max-width:1300px;margin:auto;padding:62px 5% 45px;display:grid;grid-template-columns:1fr 1.12fr;gap:7%;align-items:center}.intro>p{max-width:400px;font-size:16px}.setup{margin-top:28px;max-width:400px}.fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}label{display:block;font-size:12px;font-weight:600;margin:0 0 8px}input{width:100%;min-width:0;background:#fffdf8;border:1px solid #d7d3cd;padding:13px;border-radius:10px;color:var(--ink)}.primary{border:0;border-radius:12px;padding:16px 22px;background:var(--purple);color:white;font-weight:600;box-shadow:0 4px 0 #473890;transition:transform .15s}.primary:hover{background:#5542b0;transform:translateY(-1px)}.primary:active{transform:translateY(2px);box-shadow:none}.primary:disabled{opacity:.45;cursor:default;transform:none}.setup .primary{width:100%;margin:17px 0}.tiny{font-size:12px;color:var(--muted)}.setup>.tiny{text-align:center;margin-top:8px}.showcase{position:relative;padding-top:20px}.palette-card{background:#fffdf8;border:1px solid #e2ded5;padding:22px;border-radius:22px;box-shadow:0 16px 40px #3830220b;transform:rotate(-3deg)}.card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;font-size:11px;letter-spacing:1px;font-weight:700}.mini-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:4px}.mini-grid div{aspect-ratio:1;border-radius:4px}.sticker{position:absolute;background:#f8d984;border:1px solid #e4c774;right:-8px;bottom:-10px;transform:rotate(7deg);padding:17px 25px;border-radius:12px;font-family:Outfit;font-size:19px;box-shadow:0 6px 16px #30271810}.sticker small{display:block;font-family:'DM Sans';font-size:10px;letter-spacing:1px;margin-bottom:5px}.spark{position:absolute;right:-6px;top:-18px;color:var(--purple);font-size:58px}.steps{max-width:1170px;margin:30px auto 55px;padding:28px 0;border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(3,1fr);gap:25px}.step{display:flex;gap:15px;font-size:13px}.step b{font-family:Outfit;font-size:23px;font-weight:500}.step strong{display:block;margin:2px 0 7px}.step p{font-size:12px;margin:0}.step-num{color:var(--purple)}footer{max-width:1440px;margin:auto;padding:23px 5%;display:flex;justify-content:space-between;border-top:1px solid var(--line);font-size:10px;letter-spacing:1px;color:var(--muted)}.game{max-width:1280px;padding:30px 4% 45px;margin:auto}.game-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;gap:15px}.progress{display:flex;gap:6px;margin-top:10px}.progress i{display:block;height:5px;width:30px;background:#dfdbd2;border-radius:4px}.progress i.done{background:var(--purple)}.score{font-family:Outfit;font-size:26px}.score small{font:11px 'DM Sans';color:var(--muted)}.play-layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:28px}.board-card{background:#fffdf8;padding:20px;border:1px solid var(--line);border-radius:20px;min-width:0}.board-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;font-size:11px;letter-spacing:1px}.board-shell{position:relative}.grid{display:grid;grid-template-columns:repeat(16,minmax(0,1fr));gap:3px;touch-action:manipulation}.tile{border:0;padding:0;border-radius:3px;aspect-ratio:1;position:relative;min-width:0}.tile:hover{z-index:1;outline:2px solid var(--ink);outline-offset:1px}.tile.chosen{outline:3px solid white;outline-offset:-4px;box-shadow:0 0 0 3px #29283b;z-index:2}.tile .marker{display:grid;place-items:center;position:absolute;inset:15%;border-radius:50%;background:white;color:#29283b;font-size:clamp(9px,1.1vw,14px);font-weight:700;box-shadow:0 1px 4px #0004}.tile.target .marker{background:#29283b;color:white}.board-note{font-size:11px;color:var(--muted);margin:15px 0 0;line-height:1.5}.side{display:flex;flex-direction:column;justify-content:center;align-items:flex-start}.side h2{font-size:34px;line-height:1.1;margin:13px 0}.side p{font-size:14px}.side .primary{width:100%;margin-top:12px}.selection{width:100%;display:flex;align-items:center;gap:12px;padding:12px;border:1px solid var(--line);border-radius:12px;margin:12px 0;min-height:69px}.swatch{display:block;width:44px;height:44px;flex-shrink:0;border-radius:8px;border:1px solid #0001}.selection small{display:block;color:var(--muted);font-size:11px;margin-bottom:5px}.cover{min-height:350px;background:#ede8f5;border-radius:12px;display:flex;align-items:center;justify-content:center;text-align:center;padding:28px}.cover h2{font-size:35px;margin:10px 0}.cover p{max-width:340px}.cover .symbol{font-size:64px;color:var(--purple)}.secret-swatch{width:150px;height:150px;border-radius:22px;box-shadow:0 8px 15px #0001;margin:20px auto 12px;border:6px solid white}.secret-code{font-size:13px;letter-spacing:2px;color:var(--muted)}.center-screen{max-width:620px;margin:50px auto 65px;text-align:center;padding:0 24px}.center-screen h1{font-size:55px}.center-screen .symbol{font-size:65px;color:var(--purple)}.big-score{font:600 88px Outfit;letter-spacing:-5px;color:var(--purple);margin:25px}.big-score small{font:22px 'DM Sans';letter-spacing:0;color:var(--muted)}.result-tags{display:flex;gap:12px;flex-wrap:wrap;margin:14px 0}.tag{padding:8px 12px;border-radius:8px;background:#eae5f3;font-size:12px}dialog{background:var(--paper);color:var(--ink);border:1px solid var(--line);border-radius:22px;padding:32px;max-width:510px;width:calc(100% - 32px);max-height:85dvh}dialog::backdrop{background:#29283b77;backdrop-filter:blur(4px)}dialog h2{font-size:35px}dialog p,dialog li{font-size:14px;line-height:1.65}dialog li{margin-bottom:12px}dialog ol{padding-left:21px}.close.quiet{float:right}.note{background:#ece7f3;padding:15px;border-radius:12px}.resume{padding:12px 0;font-size:12px;color:var(--purple);text-decoration:underline;background:none;border:0}.result-key{display:flex;gap:18px;margin-top:14px;font-size:11px;color:var(--muted)}
@media(min-width:1600px){.game{max-width:1450px}.play-layout{grid-template-columns:minmax(0,1fr) 340px}}
@media(max-width:950px){.landing{gap:5%;padding-top:42px}.steps{margin:25px 5% 35px}.play-layout{grid-template-columns:minmax(0,1fr) 230px;gap:20px}.side h2{font-size:29px}.board-card{padding:14px}.cover{min-height:320px}.sticker{right:0}}
@media(max-width:680px){header{padding:14px 5%}.brand{font-size:22px}.brand-icon{font-size:31px}.quiet{font-size:12px;padding:10px}.landing{grid-template-columns:1fr;padding-top:30px;gap:40px}.intro h1{font-size:53px}.intro>p{max-width:100%;font-size:15px}.setup{max-width:100%}.showcase{max-width:430px;width:100%;margin:0 auto 20px;padding:5px 8px}.palette-card{padding:17px}.steps{grid-template-columns:1fr;gap:20px}.step p{font-size:13px}footer{gap:12px;line-height:1.5}footer span:last-child{max-width:145px;text-align:right}.game{padding:22px 4% 30px}.play-layout{grid-template-columns:1fr;gap:20px}.side{align-items:stretch}.side h2{font-size:30px;margin:10px 0}.side p{margin:5px 0 10px}.board-card{padding:12px}.grid{gap:2px}.tile{border-radius:2px}.tile .marker{inset:7%;font-size:10px}.board-heading{font-size:10px}.cover{min-height:280px}.game-bar{margin-bottom:18px}.center-screen{margin-top:35px}.center-screen h1{font-size:43px}.selection{margin:6px 0}.side .primary{margin-top:6px;min-height:51px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
.nudge{display:flex;align-items:center;gap:5px;width:100%;margin:0 0 9px}.nudge span{font-size:11px;color:var(--muted);margin-right:auto}.nudge button{width:44px;height:44px;border:1px solid var(--line);background:#fffdf8;border-radius:9px;font-size:19px;color:var(--ink)}.nudge button:disabled{opacity:.35;cursor:default}.nudge button:not(:disabled):hover{background:#eae5f3}
.mode-picker{padding:0;border:0;margin:0 0 20px;display:grid;grid-template-columns:1fr 1fr;gap:10px}.mode-picker legend{font-size:12px;font-weight:600;margin-bottom:9px}.mode-picker label{display:flex;align-items:center;gap:9px;padding:12px 10px;margin:0;border:1px solid var(--line);border-radius:12px;background:#fffdf8;cursor:pointer}.mode-picker label:has(input:checked){border-color:var(--purple);background:#ece7f7;box-shadow:0 0 0 1px var(--purple)}.mode-picker input{width:16px;accent-color:var(--purple);margin:0}.mode-picker b{display:block;font-size:13px}.mode-picker small{display:block;font-size:10px;font-weight:400;color:var(--muted);margin-top:5px}.indexed-board{display:grid;grid-template-columns:18px minmax(0,1fr);grid-template-rows:22px auto;gap:4px}.column-labels{display:grid;grid-template-columns:repeat(var(--cols),minmax(0,1fr));gap:3px}.row-labels{display:grid;grid-template-rows:repeat(var(--rows),1fr);gap:3px}.column-labels span,.row-labels span{display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:#625d70}.secret-location{font-size:13px;line-height:1.7;background:#ece7f5;padding:12px;border-radius:10px}.tile.target{outline:3px solid #29283b;outline-offset:1px;box-shadow:inset 0 0 0 4px white;z-index:1}.tile:disabled{opacity:1;cursor:default}.little-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;padding:5px}.little-grid .tile{border:2px solid #29283b24;border-radius:10px;min-height:0}.little-grid .marker{font-size:clamp(14px,2vw,28px);inset:20%}.little-indexed .column-labels{gap:8px;padding:0 5px}.little-game .side h2{font-size:36px}.little-game .board-card{padding:22px}.little-game .selection .swatch{width:60px;height:60px}.little-game .primary{min-height:56px}.little-game .row-labels span,.little-game .column-labels span{font-size:13px}@media(max-width:680px){.column-labels{gap:2px}.column-labels span,.row-labels span{font-size:9px}.indexed-board{grid-template-columns:14px minmax(0,1fr);gap:3px}.little-game .board-card{padding:14px}.little-grid{gap:4px}.little-grid .tile{border-radius:6px}.little-indexed .column-labels{gap:4px}.little-game .side h2{font-size:31px}.mode-picker small{font-size:10px}.game-bar .score{font-size:21px}}

.room-doors{display:grid;grid-template-columns:1fr 1fr;gap:10px;max-width:400px;margin-top:24px}.room-doors a{display:block;text-decoration:none;border:1px solid #cbc4dc;background:#ece7f5;color:var(--purple);border-radius:12px;padding:14px 11px}.room-doors b{display:block;font-size:12px}.room-doors small{display:block;font-size:10px;line-height:1.5;margin-top:6px}@media(max-width:680px){.room-doors{max-width:100%}}
