:root{--ink:#10243a;--paper:#fffaf0;--cold:#39a9db;--hot:#ef5b45;--yellow:#f8c35a}*{box-sizing:border-box}body{margin:0;background:linear-gradient(155deg,#eef6fb,#cbdce8);color:var(--ink);font-family:Inter,"Noto Sans JP",sans-serif}.head{width:min(760px,calc(100% - 16px));height:54px;margin:8px auto;display:flex;align-items:center;justify-content:space-between;padding:0 12px;background:#fff;border:2px solid var(--ink);border-radius:14px;box-shadow:0 4px 0 #10243a22}.head a{color:var(--ink);font-weight:900;text-decoration:none}.track{padding:5px 8px;background:#d9563f;color:#fff;border-radius:4px;font-size:11px;font-weight:900}.card{width:min(760px,calc(100% - 16px));margin:auto;background:var(--paper);border:3px solid var(--ink);border-radius:24px;overflow:hidden;box-shadow:0 8px 0 #10243a22}.hero{height:220px;background:#d7eff9;border-bottom:2px solid #9ab7c5}.hero img{width:100%;height:100%;object-fit:cover}.copy{padding:20px}.eyebrow{margin:0;color:#d9563f;font-size:12px;font-weight:950;letter-spacing:.1em}h1{margin:5px 0;font-size:clamp(42px,10vw,70px);line-height:1;letter-spacing:-.05em}.dek{margin:0 0 12px;color:#5b5f69;font-weight:850}.info{margin:10px 0;padding:12px 14px;background:#fff;border:1px solid #a9b8c5;border-left:5px solid #f36f45;border-radius:9px;line-height:1.65}.info b{display:block;font-size:13px}.info p{margin:3px 0 0}.rule{border-left-color:#d9563f;background:#fff9f0}.start,#replay{width:100%;min-height:56px;border:3px solid var(--ink);border-radius:11px;background:var(--yellow);box-shadow:0 5px 0 var(--ink);font:inherit;font-size:18px;font-weight:950}.start:active,.move:active,.result button:active{transform:translateY(3px);box-shadow:0 1px 0 var(--ink)}#play{display:none;padding:12px}.hud{display:flex;justify-content:space-between;gap:8px;margin-bottom:8px;font-weight:950}.arena{position:relative;height:min(58svh,500px);min-height:390px;overflow:hidden;border:2px solid #557a91;border-radius:18px;background:linear-gradient(#d9f4ff 0 68%,#f9dba6 69% 100%);touch-action:none}.skyline{position:absolute;inset:auto 0 31% 0;height:38px;background:repeating-linear-gradient(90deg,#aac6d6 0 28px,#8fb0c2 29px 50px)}.drop{position:absolute;width:34px;height:42px;transform:translate(-50%,-50%) rotate(45deg);border:3px solid var(--ink);border-radius:50% 50% 50% 12%;z-index:3}.drop.cold{background:var(--cold)}.drop.hot{background:var(--hot)}.drop::after{content:attr(data-mark);position:absolute;inset:4px;display:grid;place-items:center;transform:rotate(-45deg);color:#fff;font-weight:950}.cup{position:absolute;left:50%;bottom:7%;width:92px;height:112px;transform:translateX(-50%);border:4px solid var(--ink);border-top-width:9px;border-radius:8px 8px 28px 28px;background:linear-gradient(90deg,#fff 0 66%,#e5372f 67%);z-index:4}.cup::before{content:"COLD ONLY";position:absolute;left:7px;right:7px;top:31px;padding:4px;background:#fff;color:#176f99;font-size:11px;font-weight:950;text-align:center}.cup::after{content:"";position:absolute;left:13px;right:13px;bottom:9px;height:var(--fill,0%);max-height:42px;border-radius:4px 4px 15px 15px;background:#39a9db88;transition:height .15s}.flash{position:absolute;left:50%;top:18%;transform:translate(-50%,-50%);padding:7px 12px;border-radius:20px;background:#10243aea;color:#fff;font-weight:950;opacity:0;z-index:8;pointer-events:none;white-space:nowrap}.flash.show{animation:flash .6s}.controls{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}.move{min-height:60px;border:3px solid var(--ink);border-radius:12px;background:#fff;box-shadow:0 4px 0 var(--ink);font:inherit;font-size:22px;font-weight:950;touch-action:none}.legend{position:absolute;left:10px;top:10px;display:flex;gap:8px;padding:6px 8px;background:#ffffffdc;border-radius:8px;font-size:12px;font-weight:950}.cold-text{color:#0877a8}.hot-text{color:#c53728}.result{display:none;padding:28px 20px;text-align:center}.result h2{margin:0;font-size:35px}.score{font-size:60px;font-weight:950;color:#d9563f}.score small{font-size:18px}.result p{max-width:520px;margin:8px auto 18px}.result button{min-height:50px;margin:6px;padding:10px 16px;border:3px solid var(--ink);border-radius:11px;background:#fff;box-shadow:0 4px 0 var(--ink);font:inherit;font-weight:900}@keyframes flash{0%{opacity:0;transform:translate(-50%,-20%)}25%,75%{opacity:1;transform:translate(-50%,-50%)}100%{opacity:0}}@media(max-width:520px){.copy{padding:16px}.hero{height:180px}h1{font-size:48px}.arena{height:55svh;min-height:380px}.move{min-height:64px}.cup{width:82px;height:102px}}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important}}

/* The visible rim and collision plane are the same top edge. */
.cup{border-top-width:4px}
.cup::before{z-index:2}
.cup::after{z-index:1}
.cup-mouth{position:absolute;left:3px;right:3px;top:-14px;height:25px;border:4px solid var(--ink);border-radius:50%;background:radial-gradient(ellipse at center,#dff7ff 0 46%,#8fd7f2 48% 100%);box-shadow:inset 0 3px 0 #ffffffcc;z-index:6;pointer-events:none}
.cup-mouth::after{content:"";position:absolute;left:50%;top:50%;width:18px;height:8px;border-radius:50%;opacity:0;transform:translate(-50%,-50%);pointer-events:none}
.cup.hit-cold .cup-mouth{box-shadow:0 0 0 6px #39a9db44,inset 0 3px 0 #ffffffcc}
.cup.hit-cold .cup-mouth::after{background:#39a9db;animation:mouth-splash .28s ease-out}
.cup.hit-hot{animation:cup-hot .28s ease-out}
.cup.hit-hot .cup-mouth{background:#ffd6cf;box-shadow:0 0 0 6px #ef5b4544,inset 0 3px 0 #ffffffcc}
.cup.hit-hot .cup-mouth::after{background:#ef5b45;animation:mouth-splash .28s ease-out}
.cup.rim-hit{animation:cup-rim .24s ease-out}
.drop.rim-hit{filter:drop-shadow(0 0 7px #f8c35a) brightness(1.15)}
@keyframes mouth-splash{0%{opacity:1;transform:translate(-50%,-50%) scale(.5)}65%{opacity:1;transform:translate(-50%,-115%) scale(1.9,.8)}100%{opacity:0;transform:translate(-50%,-170%) scale(2.5,.3)}}
@keyframes cup-hot{0%,100%{transform:translateX(-50%)}35%{transform:translateX(calc(-50% - 5px))}70%{transform:translateX(calc(-50% + 5px))}}
@keyframes cup-rim{0%,100%{transform:translateX(-50%)}50%{transform:translateX(calc(-50% + 3px)) rotate(1.5deg)}}
