@font-face{font-family:Fredoka;font-style:normal;font-weight:400;font-display:swap;src:url(fonts/fredoka-latin-400-normal.woff2) format('woff2')}
@font-face{font-family:Fredoka;font-style:normal;font-weight:500;font-display:swap;src:url(fonts/fredoka-latin-500-normal.woff2) format('woff2')}
@font-face{font-family:Fredoka;font-style:normal;font-weight:600;font-display:swap;src:url(fonts/fredoka-latin-600-normal.woff2) format('woff2')}
@font-face{font-family:Fredoka;font-style:normal;font-weight:700;font-display:swap;src:url(fonts/fredoka-latin-700-normal.woff2) format('woff2')}
@font-face{font-family:Nunito;font-style:normal;font-weight:500;font-display:swap;src:url(fonts/nunito-latin-500-normal.woff2) format('woff2')}
@font-face{font-family:Nunito;font-style:normal;font-weight:700;font-display:swap;src:url(fonts/nunito-latin-700-normal.woff2) format('woff2')}
@font-face{font-family:Nunito;font-style:normal;font-weight:800;font-display:swap;src:url(fonts/nunito-latin-800-normal.woff2) format('woff2')}
:root{--cream:#fbf1dc;--cream2:#f3e2c0;--brown:#5a3520;--brown2:#7a4a2a;--orange:#d9692a;--pumpkin:#e8862f;--cran:#a8322d;--gold:#e7b53c;--olive:#7d8a3a;--forest:#2f5234;--ink:#3b2416}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;overflow:hidden;background:#6f8a3c;font-family:Nunito,system-ui,sans-serif;color:var(--ink);touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;overscroll-behavior:none}
canvas{position:fixed;inset:0;width:100%;height:100%;display:block}
.hidden{display:none!important}
h1,h2,.btn,.hud-pill,.rating,#prompt,#toast,#pick-btn{font-family:Fredoka,Nunito,sans-serif}
#screens .screen{position:fixed;inset:0;display:none;align-items:center;justify-content:center;padding:16px;background:rgba(60,32,18,.35);overflow:auto;z-index:20}
#screens .screen.on{display:flex}
.card{background:var(--cream);border:4px solid var(--brown2);border-radius:22px;box-shadow:0 8px 0 var(--brown),0 18px 40px rgba(0,0,0,.25);padding:26px 26px 22px;width:min(480px,100%);display:flex;flex-direction:column;gap:12px;text-align:center;max-height:calc(100dvh - 32px);overflow:auto}
.title-card{padding-top:18px}
h1{font-size:clamp(34px,7vw,46px);margin:0;color:var(--cran);letter-spacing:.5px;text-shadow:0 3px 0 #f6d38f}
h2{margin:0;font-size:28px;color:var(--brown)}
.sub{margin:0;color:#6b4a33;font-size:16px;line-height:1.4}
.logo-apple{width:78px;height:78px;margin:0 auto;border-radius:50% 50% 46% 46%;background:radial-gradient(circle at 35% 35%,#e0655a,#a8322d 60%,#7c1f1d);position:relative}
.logo-apple:before{content:"";position:absolute;width:6px;height:18px;background:#5a3520;left:36px;top:-12px;border-radius:3px;transform:rotate(8deg)}
.logo-apple:after{content:"";position:absolute;width:26px;height:14px;background:#6d8a35;left:40px;top:-12px;border-radius:0 100% 0 100%}
.btn{font-size:21px;font-weight:600;min-height:56px;border-radius:16px;border:3px solid var(--brown2);background:var(--cream2);color:var(--brown);cursor:pointer;box-shadow:0 4px 0 var(--brown2);padding:8px 18px;transition:transform .08s}
.btn:active{transform:translateY(3px);box-shadow:0 1px 0 var(--brown2)}
.btn.primary{background:var(--orange);color:#fff8ec;border-color:#8e3d16;box-shadow:0 4px 0 #8e3d16}
.btn.ghost{background:transparent;box-shadow:none}
.btn.small{min-height:40px;font-size:16px;padding:4px 12px}
.btn:disabled{opacity:.5;cursor:default}
.btn:focus-visible,.link:focus-visible,input:focus-visible,.char:focus-visible{outline:4px solid var(--gold);outline-offset:2px}
.btn-row{display:flex;gap:10px;flex-wrap:wrap}.btn-row .btn{flex:1 1 120px}
.row-small{display:flex;justify-content:center;gap:18px;margin-top:4px}
.link{background:none;border:0;color:var(--brown2);font:700 16px Nunito,sans-serif;text-decoration:underline;cursor:pointer;padding:6px}
.field{display:flex;flex-direction:column;text-align:left;font-weight:800;gap:6px;color:var(--brown)}
.field input[type=text],.field input:not([type]),#name,#code{font:600 22px Fredoka,sans-serif;padding:10px 14px;border-radius:12px;border:3px solid var(--brown2);background:#fffaf0;color:var(--ink);text-transform:none}
#code{text-transform:uppercase;letter-spacing:4px;text-align:center}
.check{display:flex;align-items:center;gap:12px;font-weight:800;font-size:18px;text-align:left;min-height:44px}
.check input{width:26px;height:26px;accent-color:var(--orange)}
input[type=range]{accent-color:var(--orange);height:32px}
.or{color:#8a6a50;font-weight:800}
.err{color:var(--cran);font-weight:800;min-height:1.2em;margin:0}
.chars{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.char{border:3px solid var(--cream2);background:#fffaf0;border-radius:16px;padding:6px 4px 8px;cursor:pointer;font:600 16px Fredoka,sans-serif;color:var(--brown)}
.char canvas{position:static;width:72px;height:72px;display:block;margin:0 auto}
.char[aria-checked=true]{border-color:var(--orange);background:#fde6c8;box-shadow:0 0 0 3px #f6c68a}
.code-box{display:flex;align-items:center;justify-content:center;gap:12px;background:#fff6e3;border:3px dashed var(--pumpkin);border-radius:16px;padding:10px}
#lobby-code{font:700 40px Fredoka,sans-serif;letter-spacing:6px;color:var(--cran)}
.players{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}
.players li{background:#fff6e3;border-radius:12px;padding:8px 12px;font-weight:800;display:flex;align-items:center;gap:10px}
.players .dot{width:12px;height:12px;border-radius:50%;background:#6a9a3a}
.players .dot.off{background:#c99a4a}
.coop{background:#f2e3b6;border-radius:12px;padding:10px;font-weight:800;color:var(--forest)}
.rules ol{text-align:left;margin:0;padding-left:22px;display:flex;flex-direction:column;gap:6px;font-size:17px;line-height:1.35}
kbd{background:#fff;border:2px solid #c9a77e;border-bottom-width:3px;border-radius:6px;padding:0 5px;font:700 14px Nunito,sans-serif}
.apples-legend{display:grid;grid-template-columns:1fr 1fr;gap:8px;text-align:left}
.apples-legend div{background:#fff6e3;border-radius:12px;padding:8px;font-weight:800;display:grid;grid-template-columns:30px 1fr;align-items:center;column-gap:6px}
.apples-legend small{grid-column:2;font-weight:700;color:#7a5a40}
.ap{grid-row:span 2;width:24px;height:24px;border-radius:50%;display:inline-block}
.ap.red{background:radial-gradient(circle at 35% 35%,#e0655a,#b0312b)}
.ap.golden{background:radial-gradient(circle at 35% 35%,#fbe38a,#dca42a)}
.ap.green{background:radial-gradient(circle at 35% 35%,#c5dc7a,#6f9a32)}
.ap.perfect{background:radial-gradient(circle at 35% 35%,#ffd0e0,#e0457a 55%,#9a1f4a);box-shadow:0 0 0 3px #ffe79a}
.mp-only{display:none}.is-mp .mp-only{display:block}
.results .rating{font-size:30px;color:var(--orange);font-weight:700}
.stats{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}
.stats li{display:flex;justify-content:space-between;background:#fff6e3;border-radius:12px;padding:10px 14px;font-size:19px;font-weight:800}
.stats li.big{background:#fbd9a8;font-size:22px}
#hud{position:fixed;top:0;left:0;right:0;display:grid;grid-template-columns:1fr auto 1fr;align-items:start;gap:8px;padding:calc(10px + env(safe-area-inset-top)) 12px 0;z-index:10;pointer-events:none}
.hud-pill{background:rgba(251,241,220,.94);border:3px solid var(--brown2);border-radius:14px;padding:6px 14px;font-weight:600;font-size:clamp(15px,2.6vw,21px);color:var(--brown);justify-self:start;white-space:nowrap;box-shadow:0 3px 0 rgba(90,53,32,.5)}
.hud-pill.center{justify-self:center}
.hud-pill.full{background:#fbd9a8;border-color:var(--cran);color:var(--cran)}
.hud-right{justify-self:end;display:flex;flex-direction:column;align-items:flex-end;gap:6px;pointer-events:auto}
.hud-right>.hud-pill{order:0}
.hud-net{background:rgba(251,241,220,.94);border-radius:10px;padding:3px 10px;font:800 13px Nunito,sans-serif;color:var(--forest);border:2px solid var(--brown2)}
.icon-btn{width:44px;height:44px;border-radius:12px;border:3px solid var(--brown2);background:rgba(251,241,220,.94);font-size:22px;color:var(--brown);cursor:pointer}
#prompt{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));transform:translateX(-50%);background:rgba(251,241,220,.96);border:3px solid var(--brown2);border-radius:16px;padding:8px 18px;font-size:20px;font-weight:600;color:var(--brown);z-index:9;text-align:center;max-width:calc(100% - 24px)}
#prompt.warn{border-color:var(--cran);color:var(--cran)}
#toast{position:fixed;left:50%;top:calc(76px + env(safe-area-inset-top));transform:translateX(-50%);background:var(--cream);border:3px solid var(--pumpkin);border-radius:16px;padding:10px 18px;z-index:11;text-align:center;box-shadow:0 5px 0 rgba(90,53,32,.4);max-width:calc(100% - 24px);width:max-content}
#toast b{display:block;font:700 22px Fredoka,sans-serif;color:var(--orange)}
#toast span{font-weight:700}
#touch{position:fixed;inset:auto 0 0 0;height:0;z-index:12}
#stick{position:fixed;left:calc(22px + env(safe-area-inset-left));bottom:calc(22px + env(safe-area-inset-bottom));width:150px;height:150px;border-radius:50%;background:rgba(251,241,220,.45);border:4px solid rgba(90,53,32,.55);touch-action:none}
#knob{position:absolute;left:45px;top:45px;width:52px;height:52px;border-radius:50%;background:rgba(251,241,220,.95);border:4px solid var(--brown2)}
#pick-btn{position:fixed;right:calc(22px + env(safe-area-inset-right));bottom:calc(30px + env(safe-area-inset-bottom));width:118px;height:118px;border-radius:50%;border:5px solid #8e3d16;background:var(--orange);color:#fff8ec;font-size:28px;font-weight:700;box-shadow:0 6px 0 #8e3d16;touch-action:none}
#pick-btn.ready{background:#c6452a;box-shadow:0 6px 0 #8e3d16,0 0 0 8px rgba(255,220,140,.8)}
body.touch #prompt{bottom:auto;top:calc(178px + env(safe-area-inset-top));font-size:17px}
#fade{position:fixed;inset:0;background:linear-gradient(#f3a35a,#b5474a 70%,#5a2c3a);opacity:0;pointer-events:none;transition:opacity 2.5s;z-index:15}
#fade.on{opacity:.75}
@media (max-width:520px){.chars{grid-template-columns:repeat(3,1fr)}.char canvas{width:56px;height:56px}.card{padding:18px 16px}.btn{font-size:19px}#hud{grid-template-columns:1fr 1fr;}#hud-score{}}
@media (max-height:500px){#stick{width:120px;height:120px}#knob{left:34px;top:34px}#pick-btn{width:96px;height:96px}}
.reduced *{transition:none!important}

.btn.level{display:flex;flex-direction:column;gap:2px;text-align:left;padding:10px 16px}
.btn.level b{font-size:22px}.btn.level small{font:700 14px Nunito,sans-serif;opacity:.9;line-height:1.3}
.hud-mid{justify-self:center;display:flex;flex-direction:column;align-items:center;gap:6px}
.hud-event{background:rgba(251,241,220,.94);border:2px solid var(--pumpkin);border-radius:10px;padding:3px 10px;font:600 15px Fredoka,sans-serif;color:var(--brown2)}
.end-btn{background:#f6d9b8;border-color:var(--cran);color:var(--cran);box-shadow:0 4px 0 var(--cran)}
.goal{background:#fbe2c0;color:var(--brown)}
@media (max-width:520px){#hud .hud-mid{grid-column:1/3;grid-row:2;justify-self:center}}

.brand{margin:0;font:600 15px Fredoka,sans-serif;letter-spacing:1.5px;text-transform:uppercase;color:var(--brown2)}
.brand.big{font-size:18px;color:var(--orange)}
.credits .stats li{flex-direction:column;align-items:flex-start;gap:2px;font-size:17px}
.credits .stats small{font-weight:700;color:#7a5a40;font-size:14px}
.sub.small{font-size:14px}
/* Tall cards on short (landscape phone) screens: center when they fit, scroll from the top when they don't */
#screens .screen{align-items:flex-start}
#screens .screen>.card{margin:auto}
@media (max-height:500px){.card{padding:16px 20px 14px;gap:10px}.logo-apple{width:52px;height:52px}.logo-apple:before{left:23px}.logo-apple:after{left:27px}h1{font-size:34px}.btn{min-height:48px}}

input{-webkit-user-select:text;user-select:text}
@media (max-height:500px){body.touch #prompt{top:calc(62px + env(safe-area-inset-top));font-size:14px;padding:4px 12px;border-width:2px;max-width:min(360px,60vw)}}

#rotate{position:fixed;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(60,32,18,.7)}
#rotate.hidden{display:none}
.rotate-icon{width:44px;height:72px;margin:0 auto;border:5px solid var(--brown2);border-radius:10px;animation:hh-rot 2.4s ease-in-out infinite}
@keyframes hh-rot{0%,30%{transform:rotate(0)}60%,100%{transform:rotate(90deg)}}
.reduced .rotate-icon{animation:none;transform:rotate(90deg)}
