:root{--ink:#1f2a44;--ink-soft:#4a5673;--radius:30px}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;background:linear-gradient(180deg,#fff6dc 0%,#f4f8ee 45%,#e6f5ff 100%);min-height:100%}
body{
  margin:0;min-height:100vh;font-family:Arial,"Helvetica Neue",Helvetica,sans-serif;color:var(--ink);
  background:radial-gradient(900px 520px at 50% -80px,rgba(255,236,150,.85),rgba(255,236,150,0) 70%);
  padding:max(12px,env(safe-area-inset-top)) max(14px,env(safe-area-inset-right)) max(30px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left));
}
body.has-strip{padding-bottom:calc(112px + env(safe-area-inset-bottom))}
.wrap{max-width:1100px;margin:0 auto}
a{color:inherit}

/* Link row to every page */
.nav{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:0 0 14px}
.nav a{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  min-height:70px;padding:8px 4px;text-decoration:none;text-align:center;
  font-weight:700;font-size:16px;line-height:1.1;color:var(--ink);
  background:#fff;border:3px solid #c9cfdc;border-radius:20px;
  -webkit-tap-highlight-color:transparent;touch-action:manipulation;
}
.nav a .em{font-size:28px;line-height:1}
.nav a[aria-current="page"]{background:var(--ink);border-color:var(--ink);color:#fff}
@media (min-width:700px){
  .nav{grid-template-columns:repeat(8,1fr);position:sticky;top:0;z-index:20;padding:10px 0 10px;margin:0 0 10px;
    background:linear-gradient(180deg,rgba(255,246,220,.97) 75%,rgba(255,246,220,0));gap:8px}
  .nav a{font-size:17px;min-height:78px}
  .nav a .em{font-size:32px}
}

/* Page heading */
.head{display:flex;align-items:center;gap:14px;margin:4px 6px 14px}
.head .em{font-size:44px;line-height:1}
.head h1{font-size:clamp(30px,5.4vw,44px);margin:0;line-height:1.1}

/* Home */
.homehead{text-align:center;margin:6px 0 20px}
.sun{width:64px;height:64px;display:block;margin:0 auto 4px}
.sun .rays{transform-origin:50% 50%;animation:spin 40s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.homehead h1{font-size:clamp(38px,7vw,60px);margin:0;line-height:1.05}
.homehead p{font-size:clamp(20px,3.6vw,28px);color:var(--ink-soft);margin:8px 0 0}
.tiles{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}
@media (min-width:900px){.tiles{grid-template-columns:repeat(4,1fr)}}
.tile{
  --c-bg:#fff;--c-edge:#8a94a8;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;
  min-height:clamp(150px,22vh,210px);padding:16px 10px;text-decoration:none;text-align:center;
  background:var(--c-bg);border:5px solid var(--c-edge);border-radius:var(--radius);
  box-shadow:0 8px 0 var(--c-edge),0 18px 26px rgba(31,42,68,.12);
  font-weight:700;font-size:clamp(24px,4.4vw,32px);line-height:1.1;color:var(--ink);
  -webkit-tap-highlight-color:transparent;touch-action:manipulation;
  transition:transform .08s ease,box-shadow .08s ease;
}
.tile .em{font-size:clamp(54px,9vw,78px);line-height:1}
.tile:active{transform:translateY(7px);box-shadow:0 1px 0 var(--c-edge),0 6px 10px rgba(31,42,68,.12)}

/* Buttons that speak */
.word{
  --c-bg:#fff;--c-edge:#8a94a8;--c-on:#e6e9f0;
  position:relative;display:flex;align-items:center;justify-content:center;width:100%;
  min-height:112px;padding:18px 20px;
  font-family:inherit;font-weight:700;font-size:clamp(26px,4.6vw,36px);line-height:1.15;color:var(--ink);text-align:center;
  background:var(--c-bg);border:5px solid var(--c-edge);border-radius:var(--radius);
  box-shadow:0 8px 0 var(--c-edge),0 18px 26px rgba(31,42,68,.12);cursor:pointer;
  -webkit-appearance:none;appearance:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none;
  transition:transform .08s ease,box-shadow .08s ease,background-color .15s ease;
}
.word:active{transform:translateY(7px);box-shadow:0 1px 0 var(--c-edge),0 6px 10px rgba(31,42,68,.12)}
.word:focus-visible,.tab:focus-visible,.nav a:focus-visible,.tile:focus-visible{outline:6px solid #1f6feb;outline-offset:4px}
.word.playing{background:var(--c-on);animation:glow 1.1s ease-in-out infinite}
@keyframes glow{0%,100%{box-shadow:0 8px 0 var(--c-edge),0 0 0 0 var(--c-edge)}50%{box-shadow:0 8px 0 var(--c-edge),0 0 0 12px rgba(255,255,255,0),0 0 34px 8px var(--c-on)}}
.word.oops{animation:shake .35s ease}
@keyframes shake{25%{transform:translateX(-8px)}75%{transform:translateX(8px)}}
.bars{position:absolute;top:12px;right:18px;display:flex;align-items:flex-end;gap:4px;height:26px;opacity:0;transition:opacity .15s}
.bars i{display:block;width:6px;height:8px;border-radius:3px;background:var(--c-edge)}
.word.playing .bars{opacity:1}
.word.playing .bars i{animation:bar .7s ease-in-out infinite}
.word.playing .bars i:nth-child(2){animation-delay:.15s}
.word.playing .bars i:nth-child(3){animation-delay:.3s}
.word.playing .bars i:nth-child(4){animation-delay:.1s}
@keyframes bar{0%,100%{height:8px}50%{height:26px}}

/* Colour families */
.t-yes{--c-bg:#ddf6e3;--c-edge:#2e9e55;--c-on:#a6e7b9}
.t-no{--c-bg:#ffe0dc;--c-edge:#e0574d;--c-on:#ffb3ab}
.t-lemon{--c-bg:#fff3c2;--c-edge:#d9a81e;--c-on:#ffe27a}
.t-peach{--c-bg:#ffe6cc;--c-edge:#ee8f2b;--c-on:#ffc78a}
.t-lav{--c-bg:#eadfff;--c-edge:#8264e0;--c-on:#cdb8ff}
.t-aqua{--c-bg:#d5f3ee;--c-edge:#22a593;--c-on:#9fe3d8}
.t-pink{--c-bg:#ffe0ee;--c-edge:#e0558f;--c-on:#ffb5d3}
.t-sky{--c-bg:#dcecff;--c-edge:#3d82d6;--c-on:#a9cdf7}

/* Sub-page tabs */
.tabs{display:grid;grid-template-columns:repeat(var(--n,2),1fr);gap:12px;margin:0 0 20px}
.tab{
  font:inherit;font-weight:700;font-size:clamp(22px,4vw,30px);padding:16px 10px;min-height:74px;
  background:#fff;border:4px solid var(--ink);border-radius:24px;color:var(--ink);cursor:pointer;
  -webkit-appearance:none;appearance:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;
}
.tab[aria-selected="true"]{background:var(--ink);color:#fff}

/* Groups and grids */
.panel[hidden]{display:none}
.group{margin:0 0 30px}
.group h2{display:flex;align-items:center;gap:12px;font-size:clamp(26px,4.4vw,34px);margin:0 0 16px 6px}
.group h2::before{content:"";width:16px;height:16px;border-radius:50%;background:var(--dot,#999);flex:none}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr));gap:22px 18px;padding-bottom:6px}
.grid.nums{grid-template-columns:repeat(5,1fr);gap:14px}
.grid.nums .word{min-height:clamp(84px,14vw,120px);font-size:clamp(40px,8vw,64px);padding:8px}
.cell{display:flex;flex-direction:column;gap:12px}

/* Yes / No */
.hero{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:0 0 34px}
.hero .word{flex-direction:column;gap:6px;min-height:clamp(170px,26vh,260px);font-size:clamp(56px,13vw,112px);letter-spacing:-1px}
.hero .mark{width:clamp(40px,8vw,70px);height:clamp(40px,8vw,70px)}
.hero .bars{top:18px;right:22px}

.strip{
  position:fixed;left:0;right:0;bottom:0;z-index:30;display:grid;grid-template-columns:1fr 1fr;gap:12px;
  padding:10px max(14px,env(safe-area-inset-right)) max(10px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left));
  background:linear-gradient(0deg,rgba(255,246,220,.98) 78%,rgba(255,246,220,0));
}
.strip .word{min-height:68px;padding:10px;font-size:30px;border-radius:24px;border-width:4px;box-shadow:0 5px 0 var(--c-edge);flex-direction:row;gap:10px}
.strip .word:active{transform:translateY(4px);box-shadow:0 1px 0 var(--c-edge)}
.strip .bars{display:none}
.strip .mark{width:30px;height:30px}

footer{text-align:center;margin-top:16px;font-size:20px;color:var(--ink-soft);line-height:1.5}
footer .heart{color:#e8576a}
#offline{display:none;margin-top:6px}
#offline.on{display:block}

/* Family review mode (add ?review to the address) */
.review-banner{background:#1f2a44;color:#fff;padding:14px 18px;border-radius:18px;font-size:20px;line-height:1.4;margin:0 0 20px;text-align:center}
.takes{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.takes button{font:inherit;font-size:22px;font-weight:700;min-width:58px;padding:8px 14px;border-radius:14px;border:3px solid var(--ink);background:#fff;color:var(--ink);cursor:pointer}

@media (max-width:520px){
  .word{min-height:88px;padding:12px 14px;border-radius:26px;font-size:26px}
  .grid{gap:16px 14px}
  .hero{gap:12px}
  .tiles{gap:14px}
}
@media (prefers-reduced-motion:reduce){
  .sun .rays,.word.playing,.word.playing .bars i{animation:none}
  .word.playing .bars i{height:20px}
}

/* Wide tablets (landscape): four buttons across so a page fits with little scrolling */
@media (min-width:1000px){
  .grid{grid-template-columns:repeat(4,1fr);gap:20px 16px}
  .word{min-height:100px;font-size:30px;padding:14px 14px}
  .grid.nums{grid-template-columns:repeat(5,1fr)}
  .grid.nums .word{font-size:56px;min-height:96px}
  .tabs{margin-bottom:16px}
  .head{margin-bottom:8px}
}
