*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
[hidden]{display:none!important}
:root{--base:#14100E;--card:#1c1613;--ink:#F4EDE1;--read:#C9BBA8;--dim:#8A7E6E;--accent:#E5A66B;--gold:#F2C572;--line:rgba(244,237,225,.13);--mx:16px;
  --correct:#4f8f4a;--present:#c99a2b;--absent:#3a322d;--key:#5a4d43;--keyink:#F4EDE1;
  --tile:min(calc((100vw - 2*var(--mx) - 24px)/5),clamp(40px,calc((100svh - 500px)/6),62px))}
body.hc{--correct:#e8742c;--present:#5aa4e6}
html{scroll-behavior:smooth}
body{background:radial-gradient(ellipse at 50% -10%,#2a1d14 0%,var(--base) 55%) fixed,var(--base);color:var(--ink);font-family:'Spline Sans Mono',ui-monospace,monospace;-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:inherit}
#fx{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:80}
.eyebrow{font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--accent)}
.folio{display:flex;align-items:center;gap:14px;padding:max(14px,env(safe-area-inset-top)) var(--mx) 10px;font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--dim)}
.folio .mark{color:var(--ink);text-decoration:none}
.folio .rule{flex:1;height:1px;background:var(--line)}
.folio nav{display:flex;gap:14px}
.folio nav a{color:var(--read);text-decoration:none}
main{max-width:640px;margin:0 auto;padding:0 var(--mx) 40px}

/* title */
.top{text-align:center;padding:8px 0 8px}
.top h1{font-family:'Fraunces',Georgia,serif;font-variation-settings:'opsz'144,'wght'540,'SOFT'30;font-size:clamp(32px,8vw,50px);line-height:1;margin:6px 0 6px;letter-spacing:-.01em}
.sub{font-family:'Fraunces',Georgia,serif;font-size:16px;line-height:1.4;color:var(--read)}
.modes{display:inline-flex;margin-top:10px;padding:3px;border-radius:999px;background:rgba(255,255,255,.05);border:1px solid var(--line)}
.mode{font:600 13px/1 'Spline Sans Mono',monospace;color:var(--read);background:none;border:0;border-radius:999px;padding:10px 16px;cursor:pointer;min-height:38px}
.mode[aria-selected="true"]{color:#1d1408;background:linear-gradient(180deg,#F7D58E,#DDA24E)}

/* bar */
.game{max-width:420px;margin:0 auto}
.bar{display:flex;align-items:center;gap:8px;margin:10px 0 8px;min-height:40px}
.label{flex:1;min-width:0;font-size:12px;letter-spacing:.08em;color:var(--read);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tools{display:flex;gap:6px;flex:none}
.tool{font:600 12px/1 'Spline Sans Mono',monospace;color:var(--ink);background:rgba(255,255,255,.04);border:1px solid rgba(244,237,225,.22);border-radius:999px;padding:0 12px;min-height:38px;cursor:pointer;white-space:nowrap}
.tool.icon{padding:0;width:38px;font-size:15px}
.tool:hover{border-color:var(--accent)}
.tool[aria-pressed="true"]{border-color:var(--gold);background:rgba(242,197,114,.14)}
.tool:disabled{opacity:.4;cursor:default}
@media (max-width:400px){.tool span{display:none}.tool{width:38px;padding:0;font-size:15px}}

/* board */
.board{display:grid;grid-template-rows:repeat(6,var(--tile));gap:6px;justify-content:center;margin:0 auto}
.brow{display:grid;grid-template-columns:repeat(5,var(--tile));gap:6px}
.tile{width:var(--tile);height:var(--tile);display:grid;place-items:center;font:700 calc(var(--tile)*.52)/1 'Fraunces',Georgia,serif;text-transform:uppercase;color:var(--ink);
  border:2px solid rgba(244,237,225,.16);border-radius:8px;user-select:none;-webkit-user-select:none}
.tile.filled{border-color:rgba(244,237,225,.5);animation:pop .12s ease}
.tile.correct,.tile.present,.tile.absent{border-color:transparent;color:#fff}
.tile.correct{background:var(--correct)}
.tile.present{background:var(--present);color:#1d1408}
.tile.absent{background:var(--absent);color:#d9cfc2}
.tile.flip{animation:flip .5s ease both}
.tile.win{animation:bounce .6s ease both}
.brow.shake{animation:shake .45s}
@keyframes pop{50%{transform:scale(1.1)}}
@keyframes flip{0%{transform:rotateX(0)}50%{transform:rotateX(90deg)}100%{transform:rotateX(0)}}
@keyframes bounce{0%,100%{transform:translateY(0)}35%{transform:translateY(-18px)}60%{transform:translateY(3px)}}
@keyframes shake{15%,55%{transform:translateX(-8px)}35%,75%{transform:translateX(8px)}}

.hintline{margin:10px auto 0;text-align:center;font-family:'Fraunces',Georgia,serif;font-size:16px;color:var(--gold)}
.legend{margin:10px auto 0;text-align:center;font-size:11px;color:var(--dim);display:flex;gap:6px 8px;align-items:center;justify-content:center;flex-wrap:wrap}
.sq{display:inline-block;width:12px;height:12px;border-radius:3px;vertical-align:-1px;margin-left:6px}
.sq.correct{background:var(--correct)}.sq.present{background:var(--present)}.sq.absent{background:var(--absent);box-shadow:inset 0 0 0 1px rgba(244,237,225,.25)}
.after{margin:12px auto 0;text-align:center}
.after p{font-family:'Fraunces',Georgia,serif;font-size:17px;color:var(--gold);margin-bottom:10px}

/* keyboard */
.keys{margin:12px auto 0;display:flex;flex-direction:column;gap:7px;user-select:none;-webkit-user-select:none;touch-action:manipulation}
.krow{display:flex;gap:5px;justify-content:center}
.key{flex:1 1 0;max-width:44px;height:54px;border:0;border-radius:8px;background:var(--key);color:var(--keyink);font:600 16px/1 'Spline Sans Mono',monospace;text-transform:uppercase;cursor:pointer;touch-action:manipulation;padding:0;transition:background .2s}
.key.wide{flex:1.55 1 0;max-width:68px;font-size:11px;letter-spacing:.04em}
.key:active{filter:brightness(1.25)}
.key.correct{background:var(--correct);color:#fff}
.key.present{background:var(--present);color:#1d1408}
.key.absent{background:#2a2420;color:#7d7166}
.krow .spacer{flex:.5 1 0;max-width:20px}
.keys.off .key{opacity:.55}
.past{margin-top:16px;text-align:center;font-size:12px;color:var(--dim)}
.past a{color:var(--read);margin:0 6px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* buttons */
.row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.go{font:600 15px/1 'Spline Sans Mono',monospace;letter-spacing:.08em;text-transform:uppercase;color:#1d1408;cursor:pointer;background:linear-gradient(180deg,#F7D58E,#DDA24E);border:0;border-radius:999px;padding:16px 26px;box-shadow:0 4px 0 #8f5f22}
.go:active{transform:translateY(2px);box-shadow:0 2px 0 #8f5f22}
.go.small{padding:13px 20px;font-size:13px}
.ghost{font:600 13px/1 'Spline Sans Mono',monospace;letter-spacing:.06em;color:var(--ink);background:rgba(255,255,255,.04);border:1px solid rgba(244,237,225,.3);border-radius:999px;padding:14px 20px;cursor:pointer;min-height:44px}
.ghost:hover{border-color:var(--accent)}

/* result sheet */
.sheet:focus{outline:none}
.sheet{margin:auto;width:min(94vw,460px);max-height:min(92svh,860px);overflow:auto;color:var(--ink);background:linear-gradient(180deg,#241b15,var(--card));border:1px solid rgba(242,197,114,.35);border-radius:22px;padding:22px 20px 18px;box-shadow:0 30px 80px rgba(0,0,0,.6);text-align:center}
.sheet::backdrop{background:rgba(10,8,7,.72);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
.sheet[open]{animation:rise .35s cubic-bezier(.2,.9,.3,1)}
@keyframes rise{from{opacity:0;transform:translateY(18px)}}
.close{position:absolute;top:10px;right:10px;width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:rgba(255,255,255,.04);color:var(--read);font-size:15px;cursor:pointer}
.sheet .word{display:flex;gap:5px;justify-content:center;margin:12px 0 10px}
.sheet .word span{width:44px;height:44px;display:grid;place-items:center;border-radius:7px;font:700 24px/1 'Fraunces',Georgia,serif;color:#fff;background:var(--correct)}
.sheet .word.lost span{background:#5b4c40}
.sheet h2{font-family:'Fraunces',Georgia,serif;font-variation-settings:'opsz'96,'wght'560;font-size:clamp(24px,6.4vw,30px);line-height:1.1}
.kind{margin-top:6px;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.note{margin:12px 0 0;font-family:'Fraunces',Georgia,serif;font-size:17px;line-height:1.5;color:var(--read)}
.verse{margin:14px 0 4px;padding:12px 14px;text-align:left;border-left:2px solid var(--accent);background:rgba(0,0,0,.18);border-radius:0 12px 12px 0}
.verse p{font-family:'Fraunces',Georgia,serif;font-style:italic;font-size:17px;line-height:1.5;color:var(--ink)}
.verse p b{font-style:normal;font-weight:700;color:var(--gold)}
.verse cite{display:block;margin-top:8px;font-style:normal;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}
.stats{margin:18px 0 14px;padding-top:16px;border-top:1px solid var(--line)}
.stats.solo{margin-top:6px;padding-top:0;border-top:0}
.nums{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:10px 0 12px}
.nums b{display:block;font:600 26px/1 'Fraunces',Georgia,serif}
.nums span{display:block;margin-top:4px;font-size:10px;letter-spacing:.06em;color:var(--dim)}
.dist{display:grid;gap:4px;text-align:left;max-width:320px;margin:0 auto}
.dist div{display:grid;grid-template-columns:14px 1fr;gap:8px;align-items:center;font-size:12px;color:var(--read)}
.dist i{display:block;min-width:24px;padding:3px 8px;border-radius:4px;background:#3e352f;color:var(--ink);font-style:normal;text-align:right;font-size:12px}
.dist i.me{background:var(--correct);color:#fff}
.next{margin-top:12px;font-size:12px;color:var(--dim)}
.more{margin-top:14px;font-size:12px;color:var(--dim)}
.more a{color:var(--read)}

/* about */
.about{max-width:640px;margin:46px auto 0;padding:0 2px}
.about h2{font-family:'Fraunces',Georgia,serif;font-size:26px;font-weight:540;margin:30px 0 10px}
.about p{font-family:'Fraunces',Georgia,serif;font-size:17px;line-height:1.6;color:var(--read)}
.about p+p{margin-top:12px}
.about p b{color:var(--ink)}
.example{display:flex;gap:5px;margin:14px 0 12px}
.example .t{width:44px;height:44px;display:grid;place-items:center;border-radius:7px;font:700 23px/1 'Fraunces',Georgia,serif;color:#fff}
.t.correct{background:var(--correct)}.t.present{background:var(--present);color:#1d1408}.t.absent{background:var(--absent);color:#d9cfc2}
.keylist{list-style:none;margin:0 0 12px;font-family:'Fraunces',Georgia,serif;font-size:17px;line-height:1.6;color:var(--read)}
.c-correct{color:#7fc477}.c-present{color:var(--gold)}.c-absent{color:#b0a496}
body.hc .c-correct{color:#f0935a}body.hc .c-present{color:#8cc3f2}
details{border-top:1px solid var(--line);padding:14px 0}
details:last-of-type{border-bottom:1px solid var(--line)}
summary{cursor:pointer;font-size:14px}
details p{margin-top:8px}
.back{margin-top:22px}
.foot{max-width:640px;margin:40px auto 0;padding:24px var(--mx) 46px;font-size:11px;line-height:1.7;color:var(--dim);border-top:1px solid var(--line)}
.toast{position:fixed;z-index:90;left:50%;top:22%;transform:translate(-50%,-8px);opacity:0;background:var(--ink);color:#14100E;border-radius:10px;padding:12px 18px;font:600 14px/1.2 'Spline Sans Mono',monospace;transition:opacity .25s,transform .25s;pointer-events:none;max-width:90vw;text-align:center}
.toast.on{opacity:1;transform:translate(-50%,0)}
@media (max-width:520px){.top .eyebrow{display:none}.top h1{margin-top:2px}}
@media (min-width:700px){
  .game{max-width:460px}
  .key{height:58px;max-width:48px}
  .key.wide{max-width:72px}
}
@media (min-width:960px){
  :root{--tile:clamp(40px,calc((100svh - 330px)/6),64px)}
  main{max-width:1040px}
  .play{display:grid;grid-template-columns:minmax(0,1fr) 470px;gap:64px;align-items:center;min-height:calc(100svh - 60px);padding-bottom:16px}
  .top{text-align:left;padding:0}
  .top h1{font-size:clamp(52px,5.4vw,76px);margin:14px 0 14px}
  .sub{font-size:20px;max-width:24ch}
  .modes{margin-top:22px}
  .game{max-width:470px;margin:0}
  .about{margin-top:30px}
}
html.embedded{--tile:min(calc((100vw - 2*var(--mx) - 24px)/5),clamp(34px,calc((100svh - 432px)/6),62px))}
html.embedded .sub,html.embedded .top .eyebrow,html.embedded .legend{display:none!important}
html.embedded .top h1{font-size:28px;margin:4px 0 0}
html.embedded .modes{margin-top:6px}
.perks{display:none}
@media (min-width:960px){
  html.embedded{--tile:clamp(34px,calc((100svh - 322px)/6),64px)}
  html.embedded .sub,html.embedded .top .eyebrow{display:block!important}
  html.embedded .top h1{font-size:clamp(44px,5vw,64px);margin:12px 0}
  .perks{display:block;margin-top:26px;font-size:12px;line-height:2;letter-spacing:.06em;color:var(--dim)}
  .perks b{color:var(--gold);font-weight:600}
}
@media (prefers-reduced-motion:reduce){.tile.flip,.tile.win,.tile.filled,.brow.shake,.sheet[open]{animation:none}}
