/* Hen Pecks page styles. Shared tokens, top bar, menu and footer are in site.css. */
:root{
  --tile:#FFFFFF; --tile-line:#B9C5BD; --hit:#F3D9A4; --hit-ink:#5A3F0B; --good:#6E9E6A; --bad:#C0584A; --miss:#DCE2DD; --bar:#3A68AE; --bar-today:#C07E14; --track:#E8EDE9; --title-accent:#C07E14; --ground-a:#C9E0AE; --ground-b:#B5D493;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --tile:#26312E; --tile-line:#4A5853; --hit:#6B5222; --hit-ink:#FBE7BD; --good:#86B882; --bad:#E07B6C; --miss:#2B3532; --bar:#6A92D8; --bar-today:#B37A1E; --track:#2A3431; --title-accent:var(--ochre); --ground-a:#34482F; --ground-b:#3F5A38;
  }
}
:root[data-theme="dark"]{
  --tile:#26312E; --tile-line:#4A5853; --hit:#6B5222; --hit-ink:#FBE7BD; --good:#86B882; --bad:#E07B6C; --miss:#2B3532; --bar:#6A92D8; --bar-today:#B37A1E; --track:#2A3431; --title-accent:var(--ochre); --ground-a:#34482F; --ground-b:#3F5A38;
}
.wrap>main{max-width:760px;width:100%;justify-self:center}
/* Tagline: lined up with the right edge of the game sheet, clear of the hen peeking over its left side */
.wrap>.tag{max-width:760px;width:100%;justify-self:center;text-align:right}
/* On phones the tagline runs the full width, so the hen (24px above the sheet) needs the full gap */
@media (max-width:560px){.wrap>.tag{margin-bottom:0}}

.sheet{background:var(--sheet);border-radius:6px;box-shadow:0 1px 0 var(--rule),0 18px 40px -22px var(--shadow);padding:28px;display:grid;gap:22px}
@media (max-width:560px){.sheet{padding:18px 14px;gap:18px}}
.titlebar{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 16px}
.titlebar h2{font:400 clamp(24px,3.4vw,30px)/1.15 "Young Serif",Georgia,serif;margin:0}
.titlebar small{color:var(--ink-soft);font-size:14px}
.titlebar .pk{color:var(--title-accent)}
/* Title hens: one peeks over the top of the card (drawn behind it), one pecks at the "s". */
main.sheet{position:relative}
.title-peek{position:absolute;z-index:-1;top:-24px;left:40px;width:56px}
.title-peek svg,.title-pecker svg{display:block;overflow:visible}
.title-wrap{position:relative;display:inline-flex;align-items:flex-end;padding-right:6px}
.title-pecker{position:relative;display:block;width:clamp(42px,5.6vw,52px);margin-bottom:-2px}
.title-pecker .hen-bird{width:100%;height:auto}
.title-pecker .bob{transform-box:view-box;transform-origin:0 0;animation:peck 2.6s ease-in-out infinite}
@keyframes peck{0%,58%,100%{transform:rotate(0)}64%{transform:rotate(-24deg)}70%{transform:rotate(-4deg)}76%{transform:rotate(-24deg)}84%{transform:rotate(0)}}
.title-pecker .seeds{position:absolute;left:-12px;bottom:1px;width:18px}
details.how{font-size:15px;color:var(--ink-soft);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:8px 0}
details.how summary{cursor:pointer;color:var(--ink);font-weight:700;list-style:none}
details.how summary::-webkit-details-marker{display:none}
details.how summary::before{content:"+ ";color:var(--ochre)}
details.how[open] summary::before{content:"– "}
details.how ol{margin:8px 0 4px;padding-left:20px}
details.how li{margin:2px 0}
/* How-to-play pop-up pictures (the layout is in site.css) */
.hz-t{width:20px;height:24px;display:grid;place-items:center;border:1.5px solid var(--tile-line);border-radius:4px;background:var(--tile);color:var(--ink);font:400 13px/1 "Young Serif",Georgia,serif;font-style:normal}
.hz-t.shown{background:var(--hit);border-color:var(--ochre);color:var(--hit-ink)}
.hz-t.locked{background:var(--good);border-color:var(--good);color:#fff}
.hz-t.slot{border-style:dashed;color:var(--cobalt)}
.hz-t.pecked{border-color:var(--ochre)}
.hz-hen{width:54px;height:48px;margin:0 -6px -10px 0;align-self:flex-end;transform:rotate(22deg);transform-origin:50% 90%;overflow:visible}
.hz-phrase{display:flex;gap:10px}
.hz-phrase .hz-row{gap:3px}
.hz-key{min-width:30px;padding:6px;border-radius:6px;border:1.5px solid var(--ochre);background:var(--hit);color:var(--hit-ink);font:400 13px/1 "Young Serif",Georgia,serif;letter-spacing:.06em;text-align:center}
.hz-eggs{display:flex;gap:4px}
.hz-eggs i{width:11px;height:14px;border-radius:50% 50% 50% 50%/60% 60% 40% 40%;border:1.5px solid var(--tile-line);background:var(--tile)}
.hz-eggs i.used{background:var(--hit);border-color:var(--ochre)}
.hz-note{max-width:120px;padding:3px 7px;border-radius:3px;background:var(--plate);color:#3F4A44;font:700 13px/1.15 Caveat,cursive;transform:rotate(-1.5deg);box-shadow:0 1px 4px var(--shadow)}
.hz-note b{display:block;font:700 8px/1 Karla,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:#9A6A12}

/* Ground strip along the bottom of the card */
.ground{margin:0 -28px -28px;border-radius:0 0 6px 6px;overflow:hidden;line-height:0}
.ground svg{display:block;width:100%;height:auto}
.ground .g1{fill:var(--ground-a)}
.ground .g2{fill:var(--ground-b)}
@media (max-width:560px){.ground{margin:0 -14px -18px}}

/* Board */
.board{display:flex;flex-wrap:wrap;justify-content:center;gap:12px 22px;padding:6px 0}
.word{display:flex;gap:5px}
.tile{--s:clamp(26px,7.4vw,42px);width:var(--s);height:calc(var(--s)*1.15);border:2px solid var(--tile-line);border-radius:6px;background:var(--tile);display:grid;place-items:center;font:400 calc(var(--s)*.58)/1 "Young Serif",Georgia,serif;color:var(--ink);text-transform:uppercase;user-select:none;position:relative}
.tile.punct{border-color:transparent;background:transparent;width:auto;min-width:10px}
.tile.shown{background:var(--hit);border-color:var(--ochre);color:var(--hit-ink)}
.tile.locked{background:var(--good);border-color:var(--good);color:#fff}
.tile.slot{cursor:pointer;border-style:dashed}
.tile.slot.filled{border-style:solid;color:var(--cobalt)}
.tile.slot.active{border-color:var(--cobalt);box-shadow:0 0 0 3px color-mix(in srgb,var(--cobalt) 30%,transparent)}
.tile.pop{animation:pop .5s cubic-bezier(.3,1.6,.5,1) both}
.tile.shake{animation:shake .45s ease both;border-color:var(--bad)}
.tile.dance{animation:dance .9s ease both}
@keyframes pop{0%{transform:rotateX(90deg)}100%{transform:none}}
@keyframes shake{20%,60%{transform:translateX(-5px)}40%,80%{transform:translateX(5px)}}
@keyframes dance{0%{transform:none}30%{transform:translateY(-16px) rotate(-6deg)}55%{transform:translateY(2px)}75%{transform:translateY(-5px) rotate(3deg)}100%{transform:none}}

/* Pecks tracker */
.status{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 18px}
.pecks{display:flex;gap:8px;align-items:center}
/* The hen by the peck counter: her mood follows the game, and she pecks with each peck. */
.status-left{display:flex;align-items:flex-end;gap:10px}
.status-hen{display:block;width:50px;flex:none}
.status-hen svg{display:block;width:100%;height:auto;overflow:visible}
.status-hen .bob{transform-box:view-box;transform-origin:0 0}
.status-hen.pecking .bob{animation:henpeck .5s ease-in-out}
@keyframes henpeck{0%,100%{transform:rotate(0)}45%{transform:rotate(28deg)}}
.pecks .lbl{font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin-right:4px}
.egg{width:22px;height:28px;border-radius:50% 50% 50% 50%/60% 60% 40% 40%;border:2px solid var(--tile-line);background:var(--tile);display:grid;place-items:center;font:700 10px/1 Karla,sans-serif;color:var(--hit-ink)}
.egg.hit{background:var(--hit);border-color:var(--ochre)}
.egg.miss{background:var(--miss);border-color:var(--tile-line);color:var(--ink-soft)}
/* Hen + label + 7 eggs is ~317px, wider than the card on phones under ~362px; tighten it there */
@media (max-width:400px){.status-left{gap:6px}.status-hen{width:36px}.pecks{gap:4px}.pecks .lbl{letter-spacing:.04em;margin-right:2px}.egg{width:19px;height:24px}}
/* Sits on the eggs' line (not the hen's middle): bottom-aligned and as tall as an egg, text centered */
.msg{font-size:15px;color:var(--ink-soft);min-height:28px;text-align:right;flex:1 1 200px;align-self:flex-end;display:flex;align-items:center;justify-content:flex-end}
.msg.warn{color:var(--bad)}

/* Focus moves here so screen readers read it; it isn't a control, so no ring. */
.hint:focus,.verdict:focus{outline:none}
.hint{background:var(--plate);color:#3F4A44;border-radius:4px;padding:12px 16px;transform:rotate(-.4deg);box-shadow:0 2px 10px var(--shadow)}
.hint b{font:700 13px/1 Karla,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:#9A6A12;display:block;margin-bottom:4px}
.hint span{font:700 22px/1.25 Caveat,cursive}
.hint .peek{font:700 14px/1 Karla,sans-serif;color:#3A68AE;background:transparent;border:1.5px solid #3A68AE;border-radius:999px;padding:8px 14px;cursor:pointer;margin-top:4px}
.hint .peek:focus-visible{outline:3px solid var(--ochre);outline-offset:2px}
.hint .hidden-note{font:500 15px/1.4 Karla,sans-serif;color:#5B6A63;display:block;margin-bottom:8px}
.modes{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px 16px;margin-top:-10px}
.switch-hard{display:inline-flex;align-items:center;gap:10px;cursor:pointer;font:700 14px/1.2 Karla,sans-serif;color:var(--ink)}
.switch-hard small{font-weight:400;color:var(--ink-soft)}
.switch-hard input{appearance:none;-webkit-appearance:none;width:40px;height:22px;border-radius:999px;background:var(--tile-line);position:relative;cursor:pointer;margin:0;transition:background .2s;flex:none}
.switch-hard input::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .2s;box-shadow:0 1px 2px rgba(0,0,0,.25)}
.switch-hard input:checked{background:var(--bad)}
.switch-hard input:checked::after{transform:translateX(18px)}
.switch-hard input:focus-visible{outline:3px solid var(--ochre);outline-offset:2px}
.switch-hard input:disabled{opacity:.55;cursor:default}
.badge{display:inline-block;font:700 12px/1 Karla,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:#fff;background:var(--bad);border-radius:999px;padding:6px 10px;margin:0 0 10px}
@media (max-width:560px){.modes{justify-content:flex-start;margin-top:-4px}}

/* Keys */
.pad{display:grid;gap:14px}
.pad h3{font:700 12px/1 Karla,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);margin:0 0 8px}
.row{display:grid;gap:8px}
.vowels{grid-template-columns:repeat(6,1fr)}
/* Consonant pairs laid out like the alphabet: B C D F across the top, then
   G H J K / L M N P and Q R S T / V W X Z, each pair read top to bottom. */
.pairs{grid-template-columns:repeat(4,1fr)}
.pairs .key{display:flex;align-items:center;justify-content:center;gap:0}
.pairs .key.across{grid-column:span 2;gap:26px;padding:12px 0}
.pairs .key.down{flex-direction:column;gap:6px;padding:10px 0}
.pairs .key span{display:block;line-height:1}
.key{font:400 20px/1 "Young Serif",Georgia,serif;letter-spacing:.06em;padding:13px 0;border-radius:8px;border:1.5px solid var(--tile-line);background:var(--tile);color:var(--ink);cursor:pointer;touch-action:manipulation}
.key:hover:not([disabled]){border-color:var(--cobalt);color:var(--cobalt)}
.key:focus-visible{outline:3px solid var(--ochre);outline-offset:2px}
.key.hit{background:var(--hit);border-color:var(--ochre);color:var(--hit-ink)}
.key.miss{background:var(--miss);color:var(--ink-soft);text-decoration:line-through;text-decoration-thickness:2px}
.key[disabled]{cursor:default}
.kb{display:grid;gap:7px}
.kb .krow{display:flex;justify-content:center;gap:5px}
.kb .key{flex:1 1 0;max-width:46px;font-size:17px;padding:14px 0;min-width:0}
.kb .key.wide{max-width:76px;flex:1.6 1 0;font:700 13px/1 Karla,sans-serif;letter-spacing:.04em}
/* Letters already pecked are revealed everywhere, so they can't be in a blank: crossed out on the keyboard. */
.kb .key.used{background:var(--miss);border-color:var(--miss);color:var(--ink-soft);text-decoration:line-through;text-decoration-thickness:2px;opacity:.75}
.kb .key.used:hover{border-color:var(--miss);color:var(--ink-soft)}
.kb .key.enter{background:var(--cobalt);border-color:var(--cobalt);color:var(--sheet)}
.kb .key.enter:hover{color:var(--sheet);filter:brightness(1.08)}
/* The big "Check answer" button under the keyboard. Outlined while blanks are empty, solid once they're all filled. */
.check{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;width:100%;max-width:440px;min-height:58px;margin:16px auto 0;padding:10px 20px;border-radius:999px;border:2px solid var(--cobalt);background:transparent;color:var(--cobalt);font:700 18px/1.1 Karla,sans-serif;cursor:pointer;touch-action:manipulation;transition:background-color .18s,color .18s,box-shadow .18s,transform .1s}
.check small{font:500 13px/1 Karla,sans-serif;opacity:.85}
.check.ready{background:var(--cobalt);color:var(--sheet);box-shadow:0 10px 24px -12px var(--cobalt)}
.check.ready.pulse{animation:checkPulse .5s ease}
.check:hover{filter:brightness(1.06)}
.check:active{transform:scale(.98)}
.check:focus-visible{outline:3px solid var(--ochre);outline-offset:3px}
@keyframes checkPulse{0%{transform:scale(1)}40%{transform:scale(1.04)}100%{transform:scale(1)}}
@media (prefers-reduced-motion:reduce){.check.ready.pulse{animation:none}}
.actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}
.btn{font:700 15px/1 Karla,sans-serif;padding:11px 18px;border-radius:999px;border:1.5px solid var(--cobalt);color:var(--cobalt);background:transparent;text-decoration:none;cursor:pointer;display:inline-flex;gap:8px;align-items:center}

/* Result */
.result{display:grid;grid-template-columns:190px 1fr;gap:22px;align-items:start;border-top:1px solid var(--rule);padding-top:22px}
@media (max-width:560px){.result{grid-template-columns:1fr;justify-items:center;text-align:center}}
.result .hen{width:190px;background:var(--plate);border-radius:4px;padding:8px;box-shadow:0 2px 10px var(--shadow);transform:rotate(-1.2deg)}
.result .hen svg{display:block;width:100%;height:auto}
.result .artnote{font:700 17px/1.2 Caveat,cursive;color:#5A5048;text-align:center;margin:6px 2px 2px;text-wrap:balance}
.result.won .hen svg{animation:popin .8s cubic-bezier(.3,1.6,.5,1) both}
.result.lost .hen svg{animation:droop 1.4s ease both}
@keyframes popin{0%{transform:scale(.4) rotate(-8deg);opacity:0}100%{transform:none;opacity:1}}
@keyframes droop{0%{opacity:0;transform:translateY(-10px)}60%{opacity:1;transform:translateY(3px)}100%{transform:none}}
.result h3{font:400 26px/1.15 "Young Serif",Georgia,serif;margin:0 0 4px}
.result .verdict{font:700 24px/1.1 Caveat,cursive;color:var(--ochre);margin:0 0 10px}
.result p{margin:0 0 10px;max-width:60ch}
.result .meaning{font-weight:700}
.stats{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:14px;color:var(--ink-soft);margin:6px 0 14px}
@media (max-width:560px){.stats,.result .actions{justify-content:center}}
.dist{margin:0 0 14px;padding:0;list-style:none;display:grid;gap:6px;max-width:380px}
.dist-title{font:700 12px/1 Karla,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);margin:4px 0 8px}
.dist li{display:grid;grid-template-columns:92px 1fr;align-items:center;gap:10px;font-size:14px;color:var(--ink-soft)}
.dist .track{background:var(--track);border-radius:4px;height:22px;position:relative}
.dist .bar{height:100%;min-width:2px;border-radius:0 4px 4px 0;background:var(--bar);transition:width .6s cubic-bezier(.3,1,.5,1)}
.dist li.today .bar{background:var(--bar-today)}
.dist li.today .lbl{color:var(--ink);font-weight:700}
.dist .val{position:absolute;top:50%;transform:translateY(-50%);font:700 13px/1 Karla,sans-serif;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
.dist .dtag{font-weight:400;color:var(--ink-soft)}
@media (max-width:560px){.dist,.dist-title{margin-inline:auto;text-align:left}.dist-title{text-align:center}}
@media (prefers-reduced-motion:reduce){.dist .bar{transition:none}}
.stats b{color:var(--ink);font-size:18px;font-family:"Young Serif",Georgia,serif;font-weight:400;margin-right:1px}
.result .actions{justify-content:flex-start}
@media (max-width:560px){.result .actions{justify-content:center}}
.next{font-size:14px;color:var(--ink-soft);margin-top:12px}
.both-done{margin:12px 0 0;font-weight:700;color:var(--ok)}

/* Account: the "Sign in to save stats" link and note. The sign-in dialog itself is in site.css. */
.acct-btn{margin-right:auto;display:inline-flex;align-items:center;gap:7px;font:700 14px/1.2 Karla,sans-serif;color:var(--cobalt);background:none;border:0;padding:4px 0;cursor:pointer}
.acct-btn svg{width:18px;height:18px;flex:none}
.acct-btn:hover{text-decoration:underline}
.acct-btn:focus-visible,.linkish:focus-visible{outline:3px solid var(--ochre);outline-offset:2px}
.acct-note{font-size:14px;color:var(--ink-soft);margin:-4px 0 14px !important}
.linkish{font:inherit;color:var(--cobalt);background:none;border:0;padding:0;cursor:pointer;text-decoration:underline;text-underline-offset:2px}

canvas#confetti{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:10}
@media (prefers-reduced-motion:reduce){.title-pecker .bob,.status-hen.pecking .bob,.tile.pop,.tile.dance,.tile.shake,.result.won .hen svg,.result.lost .hen svg{animation:none}.hint,.result .hen{transform:none}}
