:root{
  --cream:#fff8e6; --cream2:#f6ead0; --ink:#6a4a2c; --ink2:#9a7a55;
  --mint:#6fcfae; --mintD:#3fa886; --pink:#ff9db4; --pinkD:#e8728f; --sun:#ffd65c;
  --sat: env(safe-area-inset-top,0px); --sab: env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;overflow:hidden;background:#8fd3f4;
  font-family:ui-rounded,"SF Pro Rounded","PingFang SC","HarmonyOS Sans SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  color:var(--ink);user-select:none;-webkit-user-select:none;touch-action:none}
#c{position:fixed;inset:0;width:100%;height:100%;display:block}
.hidden{display:none!important}
button{font:inherit;color:inherit;border:0;cursor:pointer}

/* ---------- HUD ---------- */
#hud{position:fixed;inset:0;pointer-events:none}
#hud>*{pointer-events:auto}
#clock{position:absolute;left:14px;top:calc(12px + var(--sat));background:var(--cream);border-radius:18px;
  padding:7px 14px 8px;display:flex;align-items:baseline;gap:7px;box-shadow:0 4px 0 rgba(106,74,44,.18);
  transform:rotate(-2deg)}
#clock b{font-size:15px;letter-spacing:.5px}
#clock span{font-size:11px;color:var(--ink2)}
#clock i{font-style:normal;font-weight:800;font-size:17px;color:var(--mintD);font-variant-numeric:tabular-nums;margin-left:2px}
#topR{position:absolute;right:12px;top:calc(12px + var(--sat));display:flex;gap:8px}
.pill{background:var(--cream);border-radius:999px;padding:8px 14px;font-size:14px;font-weight:700;
  box-shadow:0 4px 0 rgba(106,74,44,.18);display:flex;align-items:center;gap:8px}
.pill:active{transform:translateY(3px);box-shadow:0 1px 0 rgba(106,74,44,.18)}
.pill.round{width:38px;height:38px;padding:0;justify-content:center;font-size:17px}
.pill.round.off{color:#c9b89d;text-decoration:line-through}
.stampDots{display:flex;gap:3px}
.stampDots i{width:9px;height:9px;border-radius:50%;border:2px solid var(--ink2);display:block}
.stampDots i.on{background:var(--pink);border-color:var(--pinkD)}
#hint{position:absolute;left:50%;bottom:calc(22px + var(--sab));transform:translateX(-50%);max-width:62vw;
  background:rgba(106,74,44,.72);color:#fff8e6;font-size:13px;padding:7px 14px;border-radius:999px;
  text-align:center;opacity:0;transition:opacity .4s;pointer-events:none!important;white-space:nowrap}
#hint.on{opacity:1}
#act{position:absolute;right:20px;bottom:calc(86px + var(--sab));min-width:92px;height:92px;border-radius:46px;padding:0 18px;
  background:var(--sun);box-shadow:0 7px 0 #d9a92a, 0 12px 18px rgba(0,0,0,.18);font-weight:800;font-size:19px;
  color:#6a4a2c;animation:pop .25s cubic-bezier(.3,1.6,.5,1)}
#act:active{transform:translateY(5px);box-shadow:0 2px 0 #d9a92a}
@keyframes pop{from{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}
#joy{position:absolute;width:112px;height:112px;margin:-56px 0 0 -56px;border-radius:50%;
  background:rgba(255,248,230,.28);border:3px solid rgba(255,248,230,.65);display:none;pointer-events:none!important}
#joy i{position:absolute;left:50%;top:50%;width:48px;height:48px;margin:-24px 0 0 -24px;border-radius:50%;
  background:rgba(255,248,230,.92);box-shadow:0 3px 0 rgba(106,74,44,.25)}

#bang{position:fixed;left:50%;top:34%;transform:translate(-50%,-50%) scale(0);font-size:120px;font-weight:900;color:#ff5a6e;
  -webkit-text-stroke:8px #fff8e6;paint-order:stroke fill;pointer-events:none;transition:transform .12s cubic-bezier(.3,2,.5,1)}
#bang.on{transform:translate(-50%,-50%) scale(1) rotate(-8deg)}
#toast{position:fixed;left:50%;top:calc(70px + var(--sat));transform:translate(-50%,-20px);background:var(--cream);
  padding:10px 18px;border-radius:16px;font-weight:700;font-size:15px;box-shadow:0 4px 0 rgba(106,74,44,.18);
  opacity:0;transition:all .3s;pointer-events:none;max-width:84vw;text-align:center;line-height:1.45}
#toast.on{opacity:1;transform:translate(-50%,0)}
#skyText{position:fixed;left:0;right:0;top:13%;text-align:center;font-size:min(9.2vw,64px);white-space:nowrap;font-weight:900;color:#fff8e6;
  letter-spacing:1px;text-shadow:0 0 18px rgba(255,190,120,.9),0 3px 0 rgba(120,60,90,.45);opacity:0;transform:scale(.7);
  transition:all .9s cubic-bezier(.2,1.4,.4,1);pointer-events:none;padding:0 12px;line-height:1.15}
#skyText.on{opacity:1;transform:scale(1)}
#skyText small{display:block;font-size:.5em;margin-top:.3em;letter-spacing:6px}
#confetti{position:fixed;inset:0;pointer-events:none;overflow:hidden}
#confetti i{position:absolute;top:-20px;width:10px;height:14px;border-radius:3px;animation:fall linear forwards}
@keyframes fall{to{transform:translate(var(--dx),110vh) rotate(var(--r))}}

/* ---------- dialog ---------- */
#dlgCatch{position:fixed;inset:0}
#dlg{position:fixed;left:50%;bottom:calc(20px + var(--sab));transform:translateX(-50%);width:min(92vw,560px);min-height:122px;
  background:var(--cream);border-radius:34px 38px 36px 40px/40px 34px 42px 36px;padding:30px 26px 26px;
  box-shadow:0 7px 0 rgba(106,74,44,.2),0 16px 30px rgba(0,0,0,.18);animation:dlgIn .28s cubic-bezier(.3,1.5,.5,1)}
@keyframes dlgIn{from{transform:translateX(-50%) scale(.85);opacity:0}}
#dlgName{position:absolute;left:22px;top:-17px;padding:6px 18px;border-radius:999px;font-weight:800;font-size:16px;
  color:#fff;transform:rotate(-4deg);box-shadow:0 3px 0 rgba(0,0,0,.14)}
#dlgName:empty{display:none}
#dlgTxt{font-size:19px;line-height:1.6;font-weight:600;white-space:pre-wrap;min-height:3.2em}
#dlgNext{position:absolute;right:26px;bottom:12px;width:0;height:0;border:9px solid transparent;border-top:12px solid var(--sun);
  border-bottom:0;opacity:0;animation:bob .7s ease-in-out infinite alternate}
#dlg.done #dlgNext{opacity:1}
@keyframes bob{to{transform:translateY(5px)}}

/* ---------- overlays ---------- */
.overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(60,40,30,.42);
  padding:20px;animation:ovIn .25s}
@keyframes ovIn{from{opacity:0}}
.sheet{width:min(90vw,400px);background:var(--cream);border-radius:30px;padding:24px 22px 20px;
  box-shadow:0 8px 0 rgba(106,74,44,.22);animation:dlgIn2 .3s cubic-bezier(.3,1.5,.5,1);
  background-image:radial-gradient(rgba(106,74,44,.06) 1.5px,transparent 1.6px);background-size:16px 16px}
@keyframes dlgIn2{from{transform:scale(.85);opacity:0}}
.sheetTitle{font-size:22px;font-weight:900;text-align:center}
.sheetSub{font-size:13px;color:var(--ink2);text-align:center;margin:4px 0 14px}
#stamps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
#stamps li{display:flex;align-items:center;gap:14px;background:#fff;border-radius:18px;padding:10px 14px}
#stamps b{display:block;font-size:16px}
#stamps span{font-size:12.5px;color:var(--ink2)}
.stamp{flex:none;width:52px;height:52px;border-radius:50%;border:3px dashed #d8c7a6;color:#d8c7a6;font-weight:900;font-size:22px;
  display:flex;align-items:center;justify-content:center}
li.on .stamp{border:3px solid var(--pinkD);color:var(--pinkD);background:#ffe3ea;transform:rotate(-12deg);
  box-shadow:inset 0 0 0 3px #fff;animation:stampIn .4s cubic-bezier(.3,2,.5,1)}
@keyframes stampIn{from{transform:scale(2.2) rotate(10deg);opacity:0}}
#chickRow{margin:12px 2px 14px;font-size:14px;font-weight:700}
#chickRow em{font-style:normal;font-weight:500;color:var(--ink2);font-size:12px}
.btn{display:inline-flex;align-items:center;justify-content:center;background:var(--mint);color:#fff;font-weight:800;font-size:17px;
  border-radius:999px;padding:12px 26px;box-shadow:0 5px 0 var(--mintD);text-decoration:none;min-width:110px}
.btn:active{transform:translateY(4px);box-shadow:0 1px 0 var(--mintD)}
.btn.pink{background:var(--pink);box-shadow:0 5px 0 var(--pinkD)}
.btn.pink:active{box-shadow:0 1px 0 var(--pinkD)}
.sheet .btn{display:flex;margin:0 auto}

.paper{position:relative;width:min(88vw,380px);background:#fffdf5;border-radius:10px;padding:46px 30px 30px;text-align:center;
  box-shadow:0 14px 40px rgba(0,0,0,.3);transform:rotate(-1.5deg);animation:paperIn .7s cubic-bezier(.2,1.3,.4,1);
  background-image:repeating-linear-gradient(transparent 0 35px,rgba(255,157,180,.28) 35px 36px);
  border-top:10px solid var(--pink)}
@keyframes paperIn{from{transform:translateY(60vh) rotate(8deg)}}
.postmark{position:absolute;right:16px;top:14px;width:78px;height:78px;border-radius:50%;border:2px solid rgba(190,70,90,.6);
  color:rgba(190,70,90,.75);font-size:10px;font-weight:800;display:flex;align-items:center;justify-content:center;text-align:center;
  transform:rotate(14deg);letter-spacing:1px;line-height:1.3;box-shadow:inset 0 0 0 3px #fffdf5,inset 0 0 0 4px rgba(190,70,90,.45)}
.lTo{text-align:left;font-size:17px;font-weight:800;margin-bottom:14px}
.lBody{font-size:min(6vw,25px);line-height:36px;font-weight:800;white-space:pre-wrap;margin:8px 0 18px;color:#5a3c28}
.lFrom{text-align:right;font-size:16px;font-weight:700;margin-bottom:24px;color:var(--ink2)}

#video{background:rgba(20,16,30,.92)}
.vWrap{display:flex;flex-direction:column;align-items:center;gap:16px;max-height:100%}
#vid{max-width:92vw;max-height:calc(100vh - 130px);border-radius:18px;background:#000;box-shadow:0 0 0 6px var(--cream)}
.vBtns{display:flex;gap:12px}

/* ---------- title ---------- */
#title{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(ellipse at 50% 42%,rgba(255,255,255,0) 30%,rgba(60,120,160,.28) 100%);transition:opacity .6s}
#title.out{opacity:0;pointer-events:none}
.tInner{text-align:center;margin-top:-34vh}
.tStamp{display:inline-block;background:var(--pink);color:#fff;font-weight:800;font-size:14px;letter-spacing:3px;
  padding:6px 16px;border-radius:999px;transform:rotate(-5deg);box-shadow:0 3px 0 var(--pinkD);margin-bottom:6px}
#title h1{margin:0;font-size:min(24vw,128px);line-height:1.05;font-weight:900;color:var(--cream);letter-spacing:.04em;
  -webkit-text-stroke:min(3.2vw,16px) var(--ink);paint-order:stroke fill;text-shadow:0 min(1.6vw,8px) 0 rgba(106,74,44,.9)}
#title h1 span{display:inline-block;animation:wob 2.4s ease-in-out infinite}
#title h1 span:nth-child(2){animation-delay:-.8s;color:var(--sun)}
#title h1 span:nth-child(3){animation-delay:-1.6s}
@keyframes wob{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-8px) rotate(3deg)}}
#tSub{margin:10px 0 30px;font-size:18px;font-weight:800;color:#fff;text-shadow:0 2px 0 rgba(106,74,44,.55);letter-spacing:4px}
.btn.big{font-size:22px;padding:16px 44px;background:var(--sun);color:var(--ink);box-shadow:0 7px 0 #d9a92a}
.btn.big:active{box-shadow:0 2px 0 #d9a92a}
.btn.big:disabled{background:#eadfc6;box-shadow:0 7px 0 #cdbf9f;color:var(--ink2)}
#fade{position:fixed;inset:0;background:#fff8e6;opacity:0;pointer-events:none;transition:opacity .5s}
#fade.on{opacity:1}
#fade.white{background:#fff}

@media (min-width:800px){
  #act{right:40px;bottom:60px}
  #dlgTxt{font-size:21px}
}
