:root{--ink:#3a2418;--sub:#7a5d4a;--accent:#ef7d3c;--red:#e2413b;--gold:#d99a1e;--panel:rgba(255,250,243,.95);--font:"Hiragino Maru Gothic ProN","Hiragino Sans","Noto Sans JP",system-ui,sans-serif}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;overflow:hidden;background:#efe1cc;color:var(--ink);font-family:var(--font);overscroll-behavior:none;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
#view{position:fixed;inset:0;width:100%;height:100%;display:block}
#touch{position:fixed;inset:0;z-index:2;touch-action:none}
button{font:inherit;color:inherit;border:0;cursor:pointer}
[hidden]{display:none!important}

.panel{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);width:min(380px,calc(100% - 28px));max-height:calc(100% - 24px);overflow:auto;background:var(--panel);border-radius:26px;padding:22px 20px 18px;text-align:center;
  box-shadow:0 18px 50px rgba(70,40,20,.28),0 0 0 1px rgba(70,40,20,.06);z-index:10}
.kicker{margin:0;font-size:12px;letter-spacing:.25em;font-weight:900;color:var(--accent)}
h1{margin:6px 0 8px;font-size:52px;line-height:1.05;font-weight:900}h1 span{color:var(--accent)}
.lead{margin:0 0 12px;font-size:17px;line-height:1.7;color:var(--sub);font-weight:700}.lead b{color:var(--red)}
.big{display:block;width:100%;padding:14px;border-radius:999px;font-size:18px;font-weight:900;background:var(--accent);color:#fff;box-shadow:0 6px 0 #c25a20,0 10px 22px rgba(239,125,60,.3)}
.big:active{transform:translateY(3px);box-shadow:0 3px 0 #c25a20}
.big.x{background:#1d1d1f;box-shadow:0 6px 0 #000}
.alt{display:block;width:100%;padding:12px;border-radius:999px;font-size:15px;font-weight:800;background:rgba(70,40,20,.08)}
.row{display:flex;gap:8px;margin-top:10px}.row .alt{flex:1}.row .big{flex:1.6}
.how{margin:12px 0 0;padding:0 0 0 1.2em;font-size:12.5px;line-height:1.7;color:var(--sub);text-align:left}.how b{color:var(--ink)}
.best{margin:8px 0 0;font-size:13px;color:var(--sub);min-height:1em;font-weight:700}
.follow{display:inline-block;margin-top:12px;font-size:12px;color:var(--ink);opacity:.75;text-decoration:none;border:1px solid rgba(70,40,20,.15);padding:6px 12px;border-radius:999px}.follow b{color:#1d9bf0}
.coats{display:flex;flex-direction:column;align-items:center;gap:7px;margin:0 0 12px}
.coats .row{display:flex;gap:8px;justify-content:center;align-items:center}
.coats .row small{width:30px;text-align:right;font-size:11px;font-weight:900;color:var(--sub);letter-spacing:.04em}
.coats button{display:flex;flex-direction:column;align-items:center;gap:4px;padding:7px 12px;border-radius:14px;background:rgba(70,40,20,.06);font-size:12px;font-weight:800;border:2px solid transparent}
.coats button i{width:26px;height:26px;border-radius:50%}.coats button.on{border-color:var(--accent);background:#fff}
/* the real cats: bigger photos; the 3D ones: smaller, in one line */
.coats .real button{padding:7px 14px}.coats .real button i{width:40px;height:40px;box-shadow:0 0 0 2px #fff,0 1px 4px rgba(70,40,20,.25)}
.coats .d3 button{flex-direction:row;gap:5px;padding:5px 10px;font-size:11px}.coats .d3 button i{width:16px;height:16px}
.coats button.wait i{animation:wait .8s ease-in-out infinite alternate}@keyframes wait{to{opacity:.35}}

/* the clock and how many are left */
#hud{position:fixed;left:0;right:0;top:0;padding:max(10px,env(safe-area-inset-top)) 56px 0;z-index:5;pointer-events:none;display:flex;flex-direction:column;align-items:center}
.clock{background:rgba(255,250,243,.92);border-radius:20px;padding:2px 18px 4px;box-shadow:0 4px 14px rgba(70,40,20,.18);display:flex;align-items:baseline;gap:4px}
.clock b{font-size:34px;font-weight:900;font-variant-numeric:tabular-nums;letter-spacing:.02em}.clock small{font-size:13px;font-weight:900;color:var(--sub)}
.left{margin-top:6px;display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:900;text-shadow:0 1px 0 rgba(255,255,255,.8)}
.left .bar{display:block;width:110px;height:6px;border-radius:6px;background:rgba(70,40,20,.18);overflow:hidden}.left .bar i{display:block;height:100%;width:0;background:var(--accent);transition:width .08s}
.mute{position:fixed;right:max(12px,env(safe-area-inset-right));top:max(12px,env(safe-area-inset-top));width:38px;height:38px;border-radius:50%;background:rgba(255,250,243,.92);font-size:16px;font-weight:900;color:var(--accent);z-index:8;box-shadow:0 4px 14px rgba(70,40,20,.15)}
.mute.off{opacity:.45;text-decoration:line-through}

/* the combo, small under the clock; every 10 a banner */
.combo{display:inline-flex;align-items:baseline;gap:2px;min-width:64px;opacity:0;transition:opacity .15s;color:var(--accent)}
.combo.on{opacity:1}.combo b{font-size:17px;font-weight:900;font-variant-numeric:tabular-nums}.combo.hot{color:var(--red)}
.combo.bump b{animation:bump .18s ease-out}
@keyframes bump{0%{transform:scale(1.5)}100%{transform:scale(1)}}
.speed{display:block;height:24px;margin-top:2px;font-style:normal;font-size:19px;font-weight:900;color:var(--red);-webkit-text-stroke:5px #fff;paint-order:stroke fill;opacity:0}
.speed.show{animation:word .55s ease-out forwards}
@keyframes word{0%{transform:scale(.6);opacity:0}20%{transform:scale(1.15);opacity:1}70%{opacity:1}100%{transform:scale(1);opacity:0}}
.banner{position:fixed;left:50%;top:30%;transform:translate(-50%,-50%);z-index:6;pointer-events:none;white-space:nowrap;font-size:44px;font-weight:900;color:#fff;-webkit-text-stroke:8px var(--accent);paint-order:stroke fill;opacity:0}
.banner.show{animation:banner .7s ease-out forwards}.banner.hot{-webkit-text-stroke-color:var(--red)}
@keyframes banner{0%{opacity:0;transform:translate(-50%,-50%) scale(.5)}18%{opacity:1;transform:translate(-50%,-50%) scale(1.12)}70%{opacity:1;transform:translate(-50%,-50%) scale(1)}100%{opacity:0;transform:translate(-50%,-70%) scale(1)}}

/* the two halves of the screen: big buttons along the bottom (the whole half can be tapped) */
.paws{position:fixed;left:0;right:0;bottom:max(12px,env(safe-area-inset-bottom));display:flex;gap:12px;padding:0 12px;z-index:4;pointer-events:none}
.paws i{flex:1;height:100px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border-radius:28px;font-style:normal;color:var(--accent);
  background:rgba(255,250,243,.66);border:2.5px solid rgba(255,255,255,.95);box-shadow:0 6px 18px rgba(70,40,20,.2);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);transition:transform .06s,background .06s}
.paws i svg{width:40px;height:40px;fill:currentColor}
.paws i b{font-size:18px;font-weight:900;letter-spacing:.06em}
.paws i.on{background:rgba(255,255,255,.96);transform:scale(.95)}
.paws i.bad{background:var(--red);border-color:var(--red);color:#fff;transform:scale(.97)}
.paws.off{display:none}
@media (min-aspect-ratio:1/1){.paws{justify-content:space-between}.paws i{flex:0 0 min(30%,280px);height:92px}}

.hint{position:fixed;inset:0;z-index:6;pointer-events:none}
.hint p{position:absolute;left:50%;bottom:calc(max(12px,env(safe-area-inset-bottom)) + 116px);transform:translateX(-50%);margin:0;background:rgba(255,250,243,.95);border-radius:18px;padding:10px 18px;font-weight:900;font-size:16px;text-align:center;white-space:nowrap;box-shadow:0 6px 20px rgba(70,40,20,.2)}
.hint p small{font-size:12px;color:var(--sub)}
.hand{position:absolute;font-style:normal;font-size:44px;transform:translate(-50%,0);animation:tapme .8s ease-in-out infinite;filter:drop-shadow(0 3px 4px rgba(0,0,0,.25))}
@keyframes tapme{0%,100%{margin-top:0}50%{margin-top:14px}}

/* little words: "スカッ", "あと3回！" */
#pops{position:fixed;inset:0;pointer-events:none;z-index:7;overflow:hidden}
.pop{position:absolute;transform:translate(-50%,-50%);text-align:center;animation:pop 1.1s ease-out forwards;white-space:nowrap}
.pop b{display:block;font-size:20px;font-weight:900;color:var(--red);-webkit-text-stroke:5px #fff;paint-order:stroke fill}
.pop small{display:block;font-size:11px;font-weight:900;color:var(--ink);-webkit-text-stroke:3px #fff;paint-order:stroke fill}
.pop.miss b{font-size:26px;color:#6b6b74}
.pop.push b{font-size:24px;color:var(--accent)}
@keyframes pop{0%{opacity:0;transform:translate(-50%,-30%) scale(.5)}14%{opacity:1;transform:translate(-50%,-50%) scale(1.15)}28%{transform:translate(-50%,-56%) scale(1)}100%{opacity:0;transform:translate(-50%,-150%) scale(1)}}
.flashside{position:fixed;top:0;bottom:0;width:50%;z-index:3;pointer-events:none;animation:fl .25s ease-out forwards}
.flashside.l{left:0;background:linear-gradient(90deg,rgba(226,65,59,.35),rgba(226,65,59,0))}.flashside.r{right:0;background:linear-gradient(270deg,rgba(226,65,59,.35),rgba(226,65,59,0))}
@keyframes fl{to{opacity:0}}

/* the result */
.sum{margin:4px 0 0;font-size:54px;line-height:1.1;font-weight:900;color:var(--red);font-variant-numeric:tabular-nums}
.word{margin:2px 0 6px;font-size:21px;font-weight:900}
.newbest{display:inline-block;margin:0 0 8px;padding:3px 12px;border-radius:999px;background:var(--gold);color:#fff;font-size:13px;font-weight:900;animation:bump .4s ease-out}
.stats{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;margin:8px 0 10px}
.stats div{background:rgba(70,40,20,.06);border-radius:12px;padding:6px 4px}
.stats dt{font-size:11px;font-weight:900;color:var(--sub)}.stats dd{margin:0;font-size:17px;font-weight:900;font-variant-numeric:tabular-nums}
@media (min-width:760px){.panel{width:420px}}
/* the result: a card coming up from the bottom (the cat looks on from the top); on wide screens, on the right */
#result{top:auto;bottom:0;transform:translateX(-50%);border-radius:26px 26px 0 0;max-height:74%;padding:16px 18px max(14px,env(safe-area-inset-bottom));animation:sheet .35s ease-out}
@keyframes sheet{from{transform:translate(-50%,60px);opacity:0}}
#result .sum{font-size:48px}#result .row{margin-top:8px}#result .follow{margin-top:8px}
@media (min-aspect-ratio:1/1){#result{top:50%;bottom:auto;left:auto;right:max(24px,env(safe-area-inset-right));transform:translateY(-50%);border-radius:26px;max-height:calc(100% - 24px);animation:card .35s ease-out}
  @keyframes card{from{transform:translate(40px,-50%);opacity:0}}}
