/* Goose Chase: phone + board styles (TV page layout lives in tv.html) */
.timer{font-family:var(--head);font-size:22px;letter-spacing:1px;background:var(--ink);color:var(--accent);padding:2px 10px;display:inline-block}
.phase-h{font-family:var(--head);font-size:30px;letter-spacing:1px;color:var(--primary);margin:4px 0}
.rules{padding-left:0;list-style:none;margin:6px 0}.rules li{margin:6px 0}
.waitbox{text-align:center;padding:14px 6px}.waitbox .e{font-size:64px;line-height:1.1}
.me-pawn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;border:3px solid;background:#fbf5e4;font-size:20px;vertical-align:middle;margin-right:6px}
.hand{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:8px 0}
.gcard{border:3px solid var(--ink);background:#fbf5e4;padding:8px 4px;text-align:center;cursor:pointer;font-family:var(--font);font-size:13px;line-height:1.15;min-height:118px;touch-action:manipulation;color:var(--ink);box-shadow:3px 3px 0 var(--ink)}
.gcard .e{font-size:34px;display:block;margin-bottom:3px}.gcard b{display:block;font-family:var(--head);font-weight:400;font-size:18px;letter-spacing:.5px}.gcard .v{display:block;margin-top:3px;opacity:.85}
.gcard.sel{background:var(--accent);transform:rotate(-2deg) translateY(-3px);box-shadow:0 0 0 3px var(--primary),4px 4px 0 var(--ink)}
.gcard[disabled]{cursor:default;opacity:.75}
.targets{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:6px 0 10px}
.tbtn{border:3px solid var(--ink);background:var(--paper);color:var(--ink);font-family:var(--head);font-size:20px;letter-spacing:.5px;padding:8px 4px;cursor:pointer;touch-action:manipulation;box-shadow:3px 3px 0 var(--ink);min-height:52px}
.tbtn small{display:block;font-family:var(--font);font-size:12px;opacity:.8}
.tbtn.sel{background:var(--primary);color:var(--primary-ink)}
.rollbtn{font-size:40px!important;min-height:84px!important;margin-top:6px}
.rollbtn .dice{display:inline-block;animation:wob 1.2s infinite ease-in-out}
@keyframes wob{0%,100%{transform:rotate(-12deg)}50%{transform:rotate(12deg) scale(1.15)}}
.heckles{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:8px 0}
.hbtn{font-size:38px;border:3px solid var(--ink);background:var(--paper);min-height:64px;cursor:pointer;box-shadow:3px 3px 0 var(--ink);touch-action:manipulation}
.hbtn[disabled]{opacity:.4;cursor:default}
.evlines{list-style:none;padding:0;margin:8px 0;font-size:16px}.evlines li{padding:4px 0;border-bottom:2px dashed rgba(31,26,21,.3)}
.minimap{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.minimap span{border:2px solid var(--ink);padding:2px 8px;font-size:15px;background:var(--paper)}
.minimap span.me{background:var(--accent)}

/* ---------- board (TV) ---------- */
.board{position:relative;display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(4,1fr);gap:clamp(4px,.55vw,10px);padding:clamp(6px,.8vw,14px);flex:1;min-height:0}
.tile{position:relative;border:3px solid var(--ink);background:#fbf5e4;box-shadow:3px 3px 0 var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:0;overflow:visible}
.tile .n{position:absolute;left:5px;top:2px;font-family:var(--head);font-size:clamp(12px,1.1vw,24px);opacity:.65}
.tile .te{font-size:clamp(24px,3vw,62px);line-height:1;opacity:.95}
.tile .tn{font-family:var(--head);font-size:clamp(10px,.85vw,18px);letter-spacing:.5px;text-align:center;line-height:1;margin-top:2px;opacity:.85}
.tile.fwd{background:#f4dc9c}.tile.back{background:#efc1b4}.tile.nap{background:#d9d2ec}.tile.gift{background:#f7e7b9}
.tile.start{background:var(--ink);color:var(--paper)}.tile.start .n{opacity:.9}
.tile.pizza{background:radial-gradient(circle at 50% 45%,#ffe68a,#e2a72e 70%);box-shadow:0 0 0 3px var(--primary),5px 5px 0 var(--ink)}
.tile .peel{position:absolute;right:3px;top:1px;font-size:clamp(16px,1.6vw,34px);animation:pop .4s}
.tile.hot{animation:tilepulse .6s 2}
@keyframes tilepulse{50%{transform:scale(1.08)}}
.pawn{position:absolute;z-index:3;width:clamp(30px,3.4vw,68px);height:clamp(30px,3.4vw,68px);margin:calc(clamp(30px,3.4vw,68px)/-2) 0 0 calc(clamp(30px,3.4vw,68px)/-2);border-radius:50%;border:4px solid;background:#fbf5e4;display:flex;align-items:center;justify-content:center;font-size:clamp(20px,2.3vw,46px);box-shadow:2px 3px 0 rgba(31,26,21,.8);transition:left .24s ease-out,top .24s ease-out}
.pawn.slow{transition:left .9s cubic-bezier(.4,-0.4,.6,1.4),top .9s cubic-bezier(.4,-0.4,.6,1.4)}
.pawn.hop{animation:hop .26s}
@keyframes hop{50%{transform:translateY(-38%) scale(1.1)}}
.pawn.turn{z-index:4;box-shadow:0 0 0 4px var(--accent),2px 3px 0 rgba(31,26,21,.8)}
.pawn.hurt{animation:shake .45s}
.pawn.fly{animation:fly .9s}
@keyframes fly{50%{transform:translateY(-120%) scale(1.5) rotate(20deg)}}
.pawn.spin{animation:spin .9s}
@keyframes spin{to{transform:rotate(720deg) scale(.6)}}
.pawn .zz{position:absolute;right:-30%;top:-40%;font-size:55%}
.goose{position:absolute;z-index:5;font-size:clamp(34px,3.8vw,80px);line-height:1;margin:-1.1em 0 0 -.2em;transition:left .7s ease-in-out,top .7s ease-in-out;pointer-events:none;filter:drop-shadow(2px 3px 0 rgba(31,26,21,.6))}
.goose.bite{animation:bite .5s 3}
@keyframes bite{50%{transform:scale(1.35) rotate(-18deg)}}
.goose .honk{position:absolute;left:70%;top:-40%;font-family:var(--head);font-size:40%;letter-spacing:1px;background:var(--primary);color:var(--primary-ink);border:2px solid var(--ink);padding:0 6px;white-space:nowrap;animation:pop .3s}
@keyframes shake{20%{transform:translateX(-8px) rotate(-8deg)}40%{transform:translateX(8px) rotate(8deg)}60%{transform:translateX(-6px)}80%{transform:translateX(6px)}}
/* ---------- dice (TV tray + roller's phone) ---------- */
/* die face: pips are absolutely placed and sized from the die itself (never from the parent box),
   so every value, state and container gets the same real-dice pips (~21% of the face) */
.die{--dz:var(--ds,90px);position:relative;display:inline-block;flex:none;width:var(--dz);height:var(--dz);min-width:var(--dz);padding:0;box-sizing:border-box;background:#fbf5e4;border:calc(var(--dz)*.045) solid var(--ink);border-radius:18%;box-shadow:4px 5px 0 var(--ink);vertical-align:middle}
.die i{position:absolute;display:block;width:23%;height:23%;margin:-11.5% 0 0 -11.5%;border-radius:50%;left:50%;top:50%}.die i.p{background:var(--ink)}
.die i:nth-child(3n+1){left:25%}.die i:nth-child(3n){left:75%}.die i:nth-child(-n+3){top:25%}.die i:nth-child(n+7){top:75%}
.die[data-n="1"] i.p{background:var(--primary)}
.die.rolling{animation:tumble .42s linear infinite}
@keyframes tumble{0%{transform:translateY(0) rotate(0)}25%{transform:translateY(-22%) rotate(90deg) scale(1.08)}50%{transform:translateY(0) rotate(180deg)}75%{transform:translateY(-12%) rotate(270deg) scale(.95)}100%{transform:translateY(0) rotate(360deg)}}
.die.landed{animation:land .45s cubic-bezier(.3,1.8,.5,1)}
@keyframes land{0%{transform:scale(1.5) rotate(-20deg)}100%{transform:none}}
.die.drop{opacity:.35;filter:grayscale(1)}
.die.keep{box-shadow:0 0 0 4px var(--accent),4px 5px 0 var(--ink)}
.pdice{text-align:center;margin:6px 0 4px;--ds:110px}
.pdice .tot{font-family:var(--head);font-size:44px;color:var(--primary);margin-left:10px;vertical-align:middle}
@media (prefers-reduced-motion: reduce){.die.rolling{animation-duration:1.2s}.die.landed{animation:none}.rollbtn .dice{animation:none}.pawn.fly,.pawn.spin,.goose.bite{animation-duration:.3s}}

/* our own goose drawing (gc.js GC.gooseSvg): same size as the old emoji; .left = walking left (mirrored) */
.goose .gs{display:block;width:1.22em;height:1.16em;overflow:visible;transition:transform .25s}
.goose.left .gs{transform:scaleX(-1)}
.sfe-svg svg.gs{width:1.2em;height:1.15em}
