:root{font-family:Arial,Helvetica,sans-serif;color:#102b31;background:#f8f4ea}*{box-sizing:border-box}html,body{height:100%;margin:0;overflow:hidden}body{display:flex;flex-direction:column}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer;border:1px solid #b7c6c0;background:#fffdf8;color:#102b31;border-radius:9px;padding:8px 11px;min-height:36px}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #f5b62c;outline-offset:2px}.top{flex:none;height:62px;background:#fffdf7;border-bottom:1px solid #dfddd2;display:flex;align-items:center;justify-content:space-between;padding:0 24px}.brand,.side-brand{font-size:28px;font-weight:900;letter-spacing:-.07em}.brand sup{font-size:9px;letter-spacing:0}.brand span{font-size:23px}.top nav{display:flex;gap:20px;font-weight:700;font-size:14px}.top nav a[aria-current]{color:#176b51}.game-frame{flex:1;min-height:0;width:min(1450px,100%);margin:auto;display:grid;grid-template-columns:175px minmax(0,1fr);background:#fffefa;border:7px solid #253d3e;border-radius:20px;overflow:hidden}.sidebar{background:#fefcf6;border-right:1px solid #e1dfd5;padding:18px 12px;display:flex;flex-direction:column;gap:5px}.sidebar p{font-size:12px;color:#607270;font-weight:800;text-transform:uppercase;letter-spacing:.1em;margin:18px 8px 6px}.sidebar>a:not(.side-brand){padding:10px;border-radius:8px}.sidebar>a.on,.sidebar>a:hover{background:#e4f2e8;color:#14583c}.side-bottom{margin-top:auto;font:italic 18px Georgia,serif}.side-bottom img{height:105px;max-width:100%;object-fit:contain;display:block}.game-content{padding:12px 18px;display:flex;flex-direction:column;min-height:0}.intro{flex:none;display:flex;justify-content:space-between;align-items:center;gap:12px}.eyebrow{color:#d64430;text-transform:uppercase;letter-spacing:.14em;font-size:10px;font-weight:800;margin:0 0 4px}.intro h1{font-size:27px;letter-spacing:-.05em;margin:0}.picker{display:flex;gap:5px;overflow:auto;max-width:55%;scrollbar-width:thin}.picker button{white-space:nowrap;font-size:11px;padding:6px 9px;min-height:30px}.picker button[aria-current=true]{background:#176b51;color:#fff;border-color:#176b51}#game{flex:1;min-height:0;display:flex;flex-direction:column}.status{flex:none;display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 0;font-size:12px}.status>*{border:1px solid #e1dfd5;background:white;border-radius:20px;padding:6px 9px}.status strong{border:0;background:transparent;padding-left:0}.play{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(250px,.72fr);gap:13px}.board,.clues{min-height:0;background:#fffdf8;border:1px solid #dddacf;border-radius:12px;padding:9px}.board{display:flex;flex-direction:column;align-items:center}.grid{flex:none;display:grid;aspect-ratio:1;width:min(100%,calc(100dvh - 310px),610px);border:2px solid #18332d;background:#18332d;gap:1px;touch-action:manipulation;user-select:none}.cell{padding:0;border:0;border-radius:0;position:relative;min-width:0;min-height:0;background:#fffefb;font-weight:700;font-size:clamp(12px,2vw,24px);color:#174a7e}.cell.block{background:#172c30;pointer-events:none}.cell.word{background:#d7e9e2}.cell.selected{background:#f8d466;outline:2px solid #955c10;outline-offset:-2px;z-index:1}.cell.solved{color:#126545}.cell small{position:absolute;top:1px;left:2px;font-size:clamp(6px,.8vw,10px);font-weight:600}.toolbar{width:100%;display:flex;gap:5px;overflow-x:auto;margin-top:8px;padding-bottom:3px;scrollbar-width:thin}.toolbar button{font-size:11px;white-space:nowrap;min-height:32px;padding:6px 8px}.toolbar button:first-child{background:#176b51;color:white}.clues{display:flex;flex-direction:column;overflow:hidden}.clues #active{font:700 16px Georgia,serif;line-height:1.3;background:#e6f0f4;padding:10px;border-radius:8px;flex:none}.tabs{display:flex;gap:7px;margin:8px 0;flex:none}.tabs button{flex:1}.tabs button[aria-pressed=true]{background:#164f8d;border-color:#164f8d;color:white}#clueList{min-height:0;overflow:auto;flex:1}.clue-item{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid #e9e5da;border-radius:0;padding:8px 5px;background:transparent;min-height:0;font-size:13px}.clue-item.active{background:#e4efe6}.clue-item.solved{text-decoration:line-through;color:#68766d}.clue-item span{font-weight:700;margin-right:9px}.clue-item em{float:right;font-style:normal;color:#6a766f}.solvedbox{flex:none;border-top:1px solid #d8dfd9;max-height:23%;overflow:auto;font-size:12px;padding:7px 4px}.solvedbox button{display:block;font-size:12px;width:100%;text-align:left;border:0;min-height:0;padding:4px;background:none;text-decoration:line-through}#feedback{font-size:12px;font-weight:700;margin:6px 0 0;min-height:15px;align-self:stretch}.keypad{display:none;grid-template-columns:repeat(9,1fr);gap:2px;width:100%;margin-top:5px}.keypad button{padding:3px 0;min-height:25px;border-radius:4px;font-weight:700;font-size:12px}@media(max-width:950px){.game-frame{grid-template-columns:1fr;border:0;border-radius:0}.sidebar{display:none}.game-content{padding:8px}.play{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr)}.grid{width:min(100%,calc(100dvh - 430px),560px)}.board{padding:4px}.clues{min-height:0}.clues #active{padding:6px;font-size:13px}.tabs{margin:3px 0}.clue-item{padding:5px;font-size:12px}.keypad{display:grid;grid-template-columns:repeat(14,minmax(0,1fr))}.keypad button{min-height:25px}.toolbar{margin-top:4px}.status{padding:3px 0;font-size:10px}.status>*{padding:4px 6px}.intro h1{font-size:19px}.top{height:46px;padding:0 8px}.brand{font-size:22px}.brand span{font-size:16px}.top nav{gap:8px;font-size:11px}.top nav a:last-child{display:none}.picker{max-width:55%}.picker button{font-size:10px}.cell{font-size:clamp(10px,3vw,20px)}}@media(max-height:650px) and (min-width:951px){.intro h1{font-size:20px}.grid{width:min(100%,calc(100dvh - 215px),500px)}.status{padding:3px 0}}

/* The game has one outer frame. Its controls and clues remain reachable as the page grows. */
html,body{height:auto;min-height:100%;overflow-x:hidden;overflow-y:auto}
body{display:block;padding:12px;background:#f8f4ea}
.game-frame{display:block;min-height:calc(100dvh - 24px);width:min(1450px,100%);margin:0 auto;border:1px solid #cbd8d3;border-radius:16px;overflow:visible;box-shadow:0 12px 32px #18323112}
.top{height:64px;border-radius:16px 16px 0 0;padding:0 24px}
.game-content{display:block;min-height:0;padding:22px 28px 32px}
.intro{align-items:flex-start}
.picker{max-width:62%;flex-wrap:wrap;justify-content:flex-end;overflow:visible}
#game{display:block;min-height:0}
#game[hidden]{display:none}
.status{padding:14px 0}
.play{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(300px,.75fr);align-items:start;gap:28px;min-height:0}
.board,.clues{border:0;border-radius:0;background:transparent;padding:0;overflow:visible;min-height:0}
.board{display:flex;flex-direction:column;align-items:stretch}
.grid{width:min(100%,620px);align-self:center}
.toolbar{flex-wrap:wrap;overflow:visible;gap:7px}
.toolbar button{white-space:normal}
.clues #active{font-size:18px}
#clueList{overflow:visible;min-height:0}
.solvedbox{max-height:none;overflow:visible;margin-top:12px}
.keypad{display:none}
@media(max-width:950px){
  body{padding:0}
  .game-frame{min-height:100dvh;border:0;border-radius:0;box-shadow:none}
  .top{height:auto;min-height:54px;border-radius:0;gap:12px;flex-wrap:wrap;padding:10px 14px}
  .top nav{gap:14px;flex-wrap:wrap;font-size:13px}
  .top nav a:last-child{display:inline}
  .game-content{padding:18px 14px 30px}
  .intro{display:block}
  .intro h1{font-size:28px}
  .picker{max-width:100%;justify-content:flex-start;margin-top:14px}
  .status{padding:12px 0;gap:6px;font-size:12px}
  .status>*{padding:6px 9px}
  .play{grid-template-columns:1fr;gap:24px}
  .grid{width:min(100%,520px)}
  .keypad{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));margin-top:12px}
  .keypad button{min-height:38px;font-size:14px}
  .toolbar{margin-top:12px}
  .toolbar button{font-size:13px;min-height:40px}
  .clues #active{font-size:17px;padding:12px}
  .tabs{margin:12px 0}
  .clue-item{font-size:14px;padding:10px 6px}
}
/* The board fits a desktop viewport. The game strip owns horizontal scrolling. */
@media(min-width:951px){html,body{height:100%;overflow:hidden}body{padding:0}.game-frame{height:100dvh;min-height:0;border:0;border-radius:0;box-shadow:none}.game-content{height:calc(100dvh - 64px);padding:10px 22px;display:flex;flex-direction:column}.intro{align-items:center}.picker{flex-wrap:nowrap;overflow-x:auto}.leeroline{flex:none}#game{display:flex;flex:1;min-height:0}.status{padding:5px 0}.play{flex:1;min-height:0;grid-template-columns:minmax(0,1fr) minmax(290px,.7fr);gap:18px}.board,.clues{min-height:0;overflow:hidden}.grid{width:min(100%,calc(100dvh - 225px),620px)}#clueList{overflow-y:auto}.solvedbox{max-height:18%;overflow-y:auto}.toolbar{flex-wrap:nowrap;overflow-x:auto}.toolbar button{flex:0 0 auto}}
@media(max-width:950px){.keypad{display:none}.leeroline{margin:0 -14px;padding-left:14px;padding-right:14px}.intro{display:flex;align-items:center;gap:8px}.picker{flex-wrap:nowrap;overflow-x:auto;max-width:60%;margin:0}.grid{width:min(100%,calc(100dvh - 300px),520px)}.clues{padding-bottom:16px}}
.cell.solved{background:#d9f0e8;color:#087c6e}
