:root{
    --bg:#e9e9e9; --fg:#222; --sub:#666; --panel:rgba(255,255,255,.96); --line:#ddd0bb;
    --new-best:#d4380d;
    --floor:#bfa98a; --skin:#e2b892; --vendor:#f6f6f6; --customer:#8193a8;
    --pants:#555; --hair:#333; --shoe:#3d3d3d; --rod:#8a8a8a;
    --stall-wood:#b07a4f; --stall-wood-dark:#8d5d3a; --stall-roof:#c8434f; --stall-flap:#a8323d;
    --vest:#b3212b; --fez:#c4232c; --gold:#d8a630; --tassel:#222;
    --wall:#efe4cf; --wall-pattern:#e3d4b8; --tile:#f7f5ef; --tile-pattern:#b9cce4;
    --ice:#fbfbf4; --trail:#ffffff;
    --ice-gold:#ffc83a;
    --ice-1:#fbfbf4; --ice-2:#f6b8c8; --ice-3:#bfe8d2; --ice-4:#8a5a3c; --ice-5:#ffd27a; --ice-6:#b9b4e8; --ice-7:#a9c98a;
  }
  *{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
  html{scroll-behavior:smooth}
  body{margin:0;background:#f7f0e5;color:#39291f;font-family:"Hiragino Sans","Hiragino Kaku Gothic ProN","Yu Gothic","Noto Sans JP",system-ui,sans-serif}
  button{font:inherit;cursor:pointer;touch-action:manipulation}
  :focus-visible{outline:3px solid #c92e2e;outline-offset:3px}
  .page{max-width:1600px;margin:auto;overflow:clip}
  #play-stage{position:relative;height:clamp(560px,58vw,740px);overflow:hidden;border-radius:0 0 50% 50% / 0 0 5% 5%;background:#e6d7c0;transition:height .3s ease-out,border-radius .3s ease-out}
  #play-stage.is-playing{height:clamp(740px,82vh,900px);border-radius:0 0 26px 26px}
  .cover,#game{position:absolute;inset:0}
  .cover{isolation:isolate;transition:opacity .25s ease-out}
  .cover picture,.cover img{display:block;width:100%;height:100%}
  .cover img{object-fit:cover;object-position:center}
  .cover::after{content:"";position:absolute;inset:0;z-index:0;background:linear-gradient(90deg,transparent 42%,rgba(45,28,23,.15) 62%,rgba(40,24,20,.81) 100%);pointer-events:none}
  .cover-copy{position:absolute;z-index:1;top:12%;right:3%;width:min(41%,560px);color:#fff;text-shadow:0 2px 12px rgba(28,15,11,.5)}
  h1{margin:0 0 18px;font-size:clamp(44px,5.5vw,78px);line-height:1.02;letter-spacing:-.045em;font-weight:850;text-wrap:balance}
  .cover-copy p{max-width:35ch;margin:0 0 30px;font-size:clamp(16px,1.45vw,21px);line-height:1.8;font-weight:650}
  .play-button{min-height:62px;padding:0 34px;border:2px solid #fff;border-radius:999px;background:#cd3036;color:#fff;font-size:20px;font-weight:800;box-shadow:0 8px 24px #40251c55;transition:background .2s,transform .2s}
  .play-button:hover{background:#ad2229;transform:translateY(-2px)}
  .play-button:active{transform:translateY(0)}
  .play-button:disabled{cursor:default}
  #play-stage.is-playing .cover{opacity:0;pointer-events:none}
  #game[hidden]{display:none}
  #game{background:var(--bg);touch-action:none}
  #game canvas{display:block;width:100%;height:100%;touch-action:none}
  .hidden{display:none !important}
  #hud{position:absolute;top:0;left:0;right:0;padding:14px;text-align:center;pointer-events:none}
  #hud .num{display:inline-block;padding:8px 20px;border-radius:999px;background:#fffdf4d9;color:#30251e;font-size:clamp(25px,3vw,38px);font-weight:800;line-height:1.1;box-shadow:0 2px 14px #39291f29}
  #result{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.35);touch-action:none}
  #result .panel{width:min(86%,340px);padding:25px 20px;border-radius:18px;background:var(--panel);text-align:center;display:flex;flex-direction:column;gap:12px;box-shadow:0 16px 40px #24180e45}
  #res-title{font-size:25px;font-weight:800;color:#9e2024}
  #res-count{font-size:25px;font-weight:800}
  #res-best{font-size:15px;color:var(--sub)}
  #res-new{font-size:20px;font-weight:700;color:var(--new-best)}
  #res-new.show{animation:newPop .5s cubic-bezier(.2,1.6,.4,1) both,newPulse 1.2s ease-in-out .5s infinite}
  #res-count.new{animation:newPop .5s cubic-bezier(.2,1.6,.4,1) .15s both}
  @keyframes newPop{0%{transform:scale(0) rotate(-12deg);opacity:0}100%{transform:scale(1) rotate(0);opacity:1}}
  @keyframes newPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.12)}}
  #game button{min-height:48px;padding:0 22px;border:1px solid #cbbbaa;border-radius:10px;background:#fff;color:#39291f;font-size:17px;font-weight:700}
  #game button.primary{background:#c93236;border-color:#c93236;color:#fff}
  #share-view{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.5);z-index:5}
  #share-view .panel{width:min(90%,340px);max-height:94%;overflow:auto;touch-action:pan-y;background:var(--panel);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:10px}
  #share-img{display:block;width:100%;height:auto;border-radius:8px}
  #share-text{margin:0;font-size:14px;white-space:pre-wrap;word-break:break-all;-webkit-user-select:text;user-select:text}
  .content{width:min(100% - 44px,980px);margin:50px auto 90px}
  .section-title{text-align:center;margin:0;color:#aa2829;font-size:clamp(27px,3vw,38px);font-weight:850;letter-spacing:.02em}
  .section-intro{text-align:center;margin:12px 0 28px;font-size:16px;line-height:1.7;color:#695a4b}
  .controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
  .control-card,.rule-card,.faq{border:1px solid #f0e5d5;background:#fffaf4e8;box-shadow:0 10px 30px #7a563318}
  .control-card{min-height:138px;border-radius:23px;padding:22px 26px;display:flex;align-items:center;gap:22px}
  .control-icon{width:80px;height:80px;flex:none;border-radius:50%;background:#f4eadc;display:grid;place-items:center;color:#44382f}
  .control-icon svg{width:46px;height:46px;fill:none;stroke:currentColor;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
  .control-card h3{margin:0 0 7px;color:#ae282c;font-size:22px}
  .control-card p{margin:0;color:#5f5047;font-size:15px;line-height:1.5}
  .rule-card{display:flex;align-items:center;gap:24px;margin-top:22px;padding:22px 32px;border-radius:24px}
  .rule-icon{font-size:52px;line-height:1}
  .rule-card h2{margin:0 0 8px;font-size:25px}
  .rule-card p{margin:4px 0;line-height:1.7;color:#55463d}
  .faq{margin-top:30px;padding:28px 30px;border-radius:26px}
  .faq h2{margin:0 0 20px;font-size:26px}
  .faq details{margin-top:8px;border:1px solid #eee0d0;border-radius:14px;background:#fffdf9}
  .faq summary{position:relative;list-style:none;cursor:pointer;padding:15px 46px 15px 18px;font-weight:650}
  .faq summary::-webkit-details-marker{display:none}
  .faq summary::after{content:'⌄';position:absolute;right:18px;top:10px;color:#b53a37;font-size:24px;transition:transform .2s}
  .faq details[open] summary::after{transform:rotate(180deg)}
  .faq details p{margin:0;padding:0 18px 18px;color:#5f5047;line-height:1.7}
  @media(max-width:700px){
    #play-stage{height:clamp(570px,82svh,690px);border-radius:0 0 50% 50% / 0 0 3% 3%}
    #play-stage.is-playing{height:clamp(680px,92svh,820px);border-radius:0 0 20px 20px}
    .cover img{object-position:center}
    .cover::after{background:linear-gradient(180deg,rgba(41,26,20,.82) 0%,rgba(41,26,20,.65) 25%,transparent 51%)}
    .cover-copy{top:6%;right:5%;width:90%;text-align:right}
    h1{font-size:clamp(38px,10vw,54px);line-height:1.04;margin-bottom:12px}
    .cover-copy p{margin:0 0 18px auto;font-size:clamp(14px,3.7vw,17px);line-height:1.55;max-width:31ch}
    .play-button{min-height:54px;padding:0 24px;font-size:17px}
    .content{width:min(100% - 30px,520px);margin-top:30px}
    .controls{gap:10px}
    .control-card{min-height:120px;padding:14px 12px;gap:10px;flex-direction:column;text-align:center}
    .control-icon{width:56px;height:56px}
    .control-icon svg{width:32px;height:32px}
    .control-card h3{font-size:18px;margin-bottom:4px}
    .control-card p{font-size:12px}
    .rule-card{padding:18px;gap:12px}
    .rule-icon{font-size:36px}
    .rule-card h2{font-size:22px}
    .rule-card p{font-size:14px}
    .faq{padding:22px 16px}
  }
  @media(max-width:360px){.controls{grid-template-columns:1fr}.control-card{flex-direction:row;text-align:left;min-height:94px}}
  @media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}#play-stage,.cover,.play-button,.faq summary::after{transition:none}#res-new.show,#res-count.new{animation:none}}

/* Persistent language switch, available before and during play. */
.locale-nav{display:flex;justify-content:flex-end;gap:16px;padding:10px 26px;background:#f7f0e5;font-size:14px;line-height:1.4}
.locale-nav a{color:#745341;text-decoration:underline;text-underline-offset:3px}
.locale-nav a[aria-current="page"]{color:#39291f;font-weight:800;text-decoration:none}

/* T03: readable gameplay explanations */
.game-guide{margin-top:24px;padding:26px 30px;border:1px solid #f0e5d5;border-radius:24px;background:#fffaf4e8;box-shadow:0 10px 30px #7a563318}
.game-guide h2{margin:0 0 14px;font-size:25px;line-height:1.3}
.game-guide p{margin:10px 0 0;color:#55463d;line-height:1.8}
.game-guide ul{margin:12px 0 0;padding-left:1.45em;color:#55463d;line-height:1.8}
.game-guide li+li{margin-top:10px}
.control-hint{margin:14px 0 0;text-align:center;color:#695a4b;font-size:14px;line-height:1.6}
@media(max-width:700px){.game-guide{padding:22px 18px}.game-guide h2{font-size:22px}}
