:root{--ink:#071323;--paper:#fffaf0;--blue:#55b7e8;--deep:#174d70;--sea:#1e7891;--coral:#f36f45;--gold:#f8c35a;--mint:#b9f3ee}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;color:var(--ink);background:#dbe6ef;font-family:Inter,"Noto Sans JP",system-ui,sans-serif}
button,a{-webkit-tap-highlight-color:transparent}
.game-shell{width:min(100%,1020px);margin:0 auto 48px}
.hero-stage{margin:0;border-width:0 0 4px!important;border-radius:0!important;box-shadow:none!important;background:var(--deep)!important}
.hero-stage img{display:block;width:100%;aspect-ratio:1200/630;object-fit:cover}
.hero-tag{position:absolute;left:18px;bottom:16px;padding:7px 10px;background:var(--paper);border:3px solid var(--ink);border-radius:8px;font-size:.75rem;font-weight:950;letter-spacing:.08em}
.intro-copy{text-align:center}.eyebrow{margin:0 0 6px;font-size:.78rem;font-weight:950;letter-spacing:.09em}
h1{max-width:850px;margin:0 auto 8px;font-size:clamp(2.25rem,6vw,5.2rem);line-height:.9;letter-spacing:-.055em}
.dek{margin:0 auto 14px;font-size:clamp(1rem,2.3vw,1.35rem);font-weight:850}
.rule-flow{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;margin-top:10px}
.rule-flow span{padding:9px!important;background:#fff;border:2px solid var(--ink);font-weight:950}.rule-flow i{font-style:normal;font-size:1.4rem;font-weight:950}
#start{margin-top:4px}.fine{margin:14px 0 0;color:#526477;font-size:.78rem}
.play{padding:16px 14px 0}.hud{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:10px}
.hud>div{min-width:0;padding:8px 9px;background:#fff;border:1px solid #a9b8c5;border-radius:8px;text-align:center}
.hud span{display:block;color:#526477;font-size:.67rem;font-weight:850;letter-spacing:.05em}.hud b{display:block;font-size:1.15rem;line-height:1.15}
.game-stage{position:relative;min-height:500px;overflow:hidden;border:4px solid var(--ink);border-radius:24px;background:var(--sea);isolation:isolate;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:none}
.world{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;pointer-events:none}
.actor,.fish,.target-line,.fragment-stack,.speed-streaks{position:absolute;z-index:4;pointer-events:none}
.holder{left:var(--fish-x);top:49%;width:31%;transform:translate(-72%,-50%);filter:drop-shadow(7px 7px 0 #07132333)}
.fish{left:var(--fish-x);top:49%;width:14%;transform:translate(-8%,-48%);transition:transform .18s,opacity .18s}
.rammer{left:var(--ram-x);top:48%;width:30%;transform:translate(-50%,-50%) scaleX(-1);filter:drop-shadow(8px 7px 0 #07132333)}
.game-stage[data-side="left"] .rammer{transform:translate(-50%,-50%)}
.juvenile{left:10%;bottom:7%;width:20%;transform:scale(.68) rotate(-6deg)}
.target-line{left:50%;top:20%;height:58%;width:8%;transform:translateX(-50%);border-left:5px dashed var(--gold);border-right:5px dashed var(--gold);opacity:.88}
.target-line:after{content:"";position:absolute;left:50%;top:50%;width:76px;height:76px;transform:translate(-50%,-50%);border:8px solid var(--gold);border-radius:50%;box-shadow:0 0 0 5px #fffaf077}
.speed-streaks{left:var(--ram-x);top:33%;width:17%;height:26%;transform:translateX(-105%);opacity:.3;background:repeating-linear-gradient(0deg,transparent 0 14px,var(--mint) 15px 20px);clip-path:polygon(0 10%,100% 0,100% 100%,15% 82%)}
.game-stage[data-side="left"] .speed-streaks{transform:translateX(5%) scaleX(-1)}
.game-stage[data-pace="rush"] .speed-streaks{opacity:.95;width:25%}.game-stage[data-pace="creep"] .speed-streaks{opacity:.12}
.fragment-stack{left:20%;bottom:2%;width:30%;height:25%}.fragment-stack img{position:absolute;width:70%;left:calc(var(--pile)*6%);bottom:calc(var(--pile)*3%);filter:drop-shadow(3px 4px 0 #07132344)}
.game-stage[data-result="perfect"] .fish,.game-stage[data-result="hit"] .fish{opacity:0;transform:translate(-8%,-48%) scale(.15)}
.game-stage[data-result="early"] .fish{transform:translate(55%,-78%) rotate(-18deg)}
.game-stage[data-result="late"] .holder{animation:clip .25s ease-out 2 alternate}
@keyframes clip{to{transform:translate(-68%,-50%) rotate(-7deg)}}
.feedback{position:absolute;left:50%;top:12px;z-index:8;width:max-content;max-width:calc(100% - 24px);margin:0;padding:8px 12px;transform:translateX(-50%);background:var(--paper);border:3px solid var(--ink);border-radius:9px;font-size:.84rem;font-weight:950;text-align:center}
.approach{position:absolute;right:12px;bottom:12px;z-index:8;display:flex;gap:7px}.approach b{padding:6px 9px;background:#d8ffff;border:2px solid var(--ink);border-radius:6px;font-size:.72rem;font-weight:950}
.hold-wrap{display:grid;place-items:center;margin-top:12px;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
#hold{width:min(100%,620px);min-height:72px;border:4px solid var(--ink);border-radius:16px;background:var(--coral);color:#fff;box-shadow:0 7px 0 var(--ink);font:inherit;font-size:1.15rem;font-weight:950;cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
#hold:active{transform:translateY(5px);box-shadow:0 2px 0 var(--ink);background:#c94736}
#hold:focus-visible{outline:5px solid var(--gold);outline-offset:3px}.tap-hint{text-align:center;color:#526477;font-size:.78rem;font-weight:850}
.result{width:min(960px,calc(100% - 20px));margin:16px auto 40px;padding:22px;display:grid;grid-template-columns:minmax(250px,1fr) minmax(280px,1fr);gap:24px;align-items:center;background:var(--paper);border:4px solid var(--ink);border-radius:28px;box-shadow:0 10px 0 #07132322}
.result-art img{display:block;width:100%;border:4px solid var(--ink);border-radius:18px}.result h2{margin:0;font-size:clamp(1.7rem,4vw,3.2rem);line-height:1}
.score-line{display:flex;align-items:baseline;gap:5px;margin:14px 0 4px}.score-line strong{font-size:4rem;line-height:.8}.score-line span{font-weight:900}
.result-detail,.next-target{font-weight:800}.actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}.actions>*{text-decoration:none;text-align:center}.news-links{display:flex;flex-wrap:wrap;gap:12px;margin-top:18px;font-size:.85rem}
@media(max-width:680px){
  .hero-tag{left:10px;bottom:10px}h1{font-size:2.55rem}.play{padding:8px 6px 0}.hud{grid-template-columns:repeat(2,1fr)}
  .game-stage{min-height:440px;border-width:3px;border-radius:18px}.holder{width:38%}.rammer{width:37%}.fish{width:18%}.juvenile{width:27%}.target-line{height:54%}
  .feedback{font-size:.74rem}.approach{right:7px;bottom:7px}.approach b{font-size:.62rem;padding:5px}
  #hold{min-height:66px;font-size:1rem}.result{grid-template-columns:1fr;padding:15px}.result-art{max-width:360px;margin:auto}
}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
