*{box-sizing:border-box}html{background:#f9f5e7;color:#334b43;font-family:'Yuanti SC','Hiragino Maru Gothic ProN','PingFang SC',system-ui,sans-serif;-webkit-text-size-adjust:100%}body{margin:0;background:radial-gradient(ellipse at 30% 10%,#fffdf5,transparent 60%),#f9f5e7;min-height:100dvh}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;border:0}button:disabled{opacity:.44;cursor:default}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:3px solid #477c69;outline-offset:4px}a{color:inherit;text-decoration:none}[hidden]{display:none!important}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.shell{max-width:500px;margin:auto;padding:10px 14px max(8px,env(safe-area-inset-bottom));height:100dvh;min-height:540px;display:flex;flex-direction:column}.topbar{height:44px;display:flex;align-items:center;gap:10px;flex-shrink:0;margin-bottom:5px}.round{display:grid;place-items:center;width:39px;height:39px;border:1.5px solid #cad3c5;border-radius:14px;background:linear-gradient(#fffef7,#f4f1e3);box-shadow:0 3px 0 #d9ddcc;flex-shrink:0}.round svg{width:23px;height:23px;fill:none;stroke:#3f574c;stroke-width:2.8;stroke-linecap:round;stroke-linejoin:round}.round:active{transform:translateY(2px);box-shadow:0 1px 0 #d9ddcc}.brand{flex:1;min-width:0;line-height:1.1}.brand-name{display:block;font-size:25px;letter-spacing:1px;font-weight:900}.brand-sub{display:block;font-size:8px;letter-spacing:1px;color:#889782;margin-top:5px}.board-size,.pause-button{display:none}.prepare{display:flex;flex-direction:column;min-height:0;flex:1}.cover-title{text-align:center;padding-top:16px;position:relative;flex-shrink:0}.cover-title h1{font-size:31px;line-height:1.2;letter-spacing:1px;margin:3px 0 8px;font-weight:900;text-shadow:0 2px #fff}.cover-title h1 em{font-style:normal;color:#477c64}.cover-title p{font-size:11px;color:#819079;margin:8px 0 5px}.cover-stamp{font-size:9px;letter-spacing:2px;color:#e1a237;background:#fff2cc;border:1px solid #f0d898;border-radius:20px;padding:3px 9px;display:inline-block;position:absolute;right:7px;top:10px;transform:rotate(10deg)}.hero-wrap{position:relative;flex:1;min-height:210px;overflow:hidden;container-type:size}.hero-wrap #hero{width:100%;height:100%;display:block}.season-chip{position:absolute;top:9px;left:6px;font-size:15px;font-weight:850;background:#fff6ce;border:2px solid #fffdf0;border-radius:50%;width:34px;height:34px;display:grid;place-items:center;box-shadow:0 2px 0 #dfca8e;transform:rotate(-12deg)}.theme-line{position:absolute;bottom:7px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:8px;white-space:nowrap;border-radius:20px;background:#fff9e6eb;box-shadow:0 2px 0 #dedac2;padding:7px 14px;backdrop-filter:blur(8px)}.theme-line>span{font-size:8px;color:#8c987f}.theme-line h2{font-size:11px;font-weight:800;margin:0}.theme-line .theme-dot{width:5px;height:5px;border-radius:50%;background:#93b77c}.welcome-info{flex-shrink:0}.prep-pills{display:flex;justify-content:center;gap:18px;font-size:9px;color:#8e967f;margin:8px 0 0}.prep-pills span+span:before{content:'·';margin-right:18px;color:#b7bea5}.load-state{text-align:center;font-size:9px;color:#85927c;min-height:14px;margin:8px 0 7px}.load-state:before{content:'◌';display:inline-block;margin-right:5px;animation:loading-spin 2s linear infinite}.load-state.ready:before{content:'✓';animation:none}.load-state.ready{color:#679579}.load-state.failed{color:#a45b49}.load-state.failed:before{content:'!';animation:none}.primary{display:flex;align-items:center;justify-content:center;gap:32px;min-height:58px;border:2px solid #c9a23c;border-radius:18px;background:linear-gradient(#ffdf67 0,#f8d452 70%,#eac344 100%);box-shadow:inset 0 2px 0 #fff2a2,0 5px 0 #bd9842,0 7px 10px #c6b76b25;font-size:24px;font-weight:900;letter-spacing:2px;width:100%;text-shadow:0 1px #ffe992;transition:transform .12s}.primary span{font-size:24px}.primary:active:not(:disabled){transform:translateY(3px);box-shadow:inset 0 2px 0 #fff2a2,0 2px 0 #bd9842}.primary:disabled{opacity:.55}.retry-load{width:100%;padding:11px;border-radius:12px;margin-bottom:8px;background:#e8cbaa;color:#74533d;font-weight:750}.prep-actions{display:flex;gap:12px;margin-top:14px}.prep-actions button{flex:1;min-height:39px;border:1px solid #d3d9c7;border-radius:12px;background:#f2f3e5;box-shadow:0 2px 0 #dce0ce;font-size:12px;font-weight:750}.local-note{font-size:8px;text-align:center;color:#9ba48d;margin:10px 0 1px;line-height:1.5}.playing .shell{min-height:0;overflow:hidden}.playing .brand-name{font-size:23px}.playing .brand-sub{display:none}.playing .board-size,.playing .pause-button{display:grid}.playing .topbar{margin-bottom:9px}.playing .topbar #help{display:none}.board-size[aria-pressed=true]{background:#c7dfbd;border-color:#8bab80}.board-size[aria-pressed=true] svg{transform:scale(.83)}#play{flex:1;min-height:0;display:flex;flex-direction:column}.hud{display:flex;justify-content:space-between;align-items:center;gap:7px;flex-shrink:0;min-height:42px;padding:0 4px}.hud>div{display:flex;align-items:center;position:relative;gap:5px;min-height:37px;padding:5px 9px 7px;border:1px solid #d7deca;border-radius:15px;background:linear-gradient(#fffef6,#f2f4e8);box-shadow:0 2px 0 #dfe5d3}.hud svg{width:23px;height:22px;flex-shrink:0;fill:none;stroke:#718d6f;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.catch-counter svg{fill:#97ba7e;stroke:#647f61;stroke-width:1.7}.catch-counter svg circle{fill:#3f5547;stroke:none}.hud strong{font-size:20px;line-height:1;font-variant-numeric:tabular-nums;font-weight:850;white-space:nowrap}.hud i{font-size:10px;font-style:normal;font-weight:550;color:#94a087}.hud .catch-counter small,.hud .time small{display:none}.hud .time strong{color:#3e7868;font-size:23px;letter-spacing:.6px}.hud .time svg{stroke:#79a794;width:20px}.hud .combo-counter{background:#faf2d8;border-color:#e8dbb1;gap:5px;padding-inline:8px}.combo-counter small{font-size:9px;font-weight:750;color:#9a884d}.combo-counter strong{font-size:17px;color:#a08c47}.combo-counter i{font-size:9px;color:#b7a56c}.time.low strong{color:#c56750}.progress{height:4px;margin:6px 12px 3px;background:#dce4cf;border-radius:4px;overflow:hidden;flex-shrink:0}.progress span{display:block;background:linear-gradient(90deg,#a9c578,#61a784);height:100%;width:0;transition:width .3s}.float-note{flex-shrink:0;min-height:19px;text-align:center;padding:4px 0 3px;font-size:9px;font-weight:600;color:#829574;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.board-wrap{position:relative;flex:1;min-height:0;container-type:size;display:flex;align-items:center;justify-content:center;overflow:hidden;border-radius:22px;background:transparent}#board{display:block;width:min(100cqw,calc(100cqh * 600 / 870));height:min(100cqh,calc(100cqw * 870 / 600));touch-action:manipulation;cursor:pointer}.dock{position:relative;flex-shrink:0;margin-top:4px;padding:7px 0 0;z-index:2}.dock-label{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:0 7px;margin-bottom:5px;font-size:9px;font-weight:800;color:#72836e;line-height:1.2}.dock-label small{font-size:8px;color:#a2a78f;font-weight:550}.slots{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:4px;padding:5px;background:linear-gradient(#fefefa,#dfe4dc);border:1px solid #ced4ca;border-bottom:3px solid #c7cec4;border-radius:13px;box-shadow:inset 0 2px #fff,0 3px 0 #ebeee3}.slot{height:47px;display:flex;justify-content:center;align-items:center;position:relative;overflow:hidden;min-width:0;background:linear-gradient(#b4bdb5,#c5cdc3 55%,#d3dacd);border-radius:8px;box-shadow:inset 0 3px 3px #78897b4d,inset 0 -1px #fff;border:1px solid #aebbad}.slot.filled{background:linear-gradient(#d7e1cd,#e7ecd8);box-shadow:inset 0 3px 3px #9eaf9c70,inset 0 -1px #fff;animation:slot-enter .3s cubic-bezier(.2,.8,.2,1.2)}.slot img{position:relative;width:110%;height:100%;max-width:none;object-fit:contain;filter:drop-shadow(0 3px 1px #7c8c7566);z-index:1;transform:rotate(-5deg)}.slot small{display:none}.slot-water{font-size:0}.slot-water:after{content:'';width:16px;height:5px;background:#aebaaa55;box-shadow:0 2px 2px #cad3c366;border-radius:50%;display:block}.slots.danger{border-color:#d49b6f;box-shadow:0 0 0 2px #edc58e80}.slots.danger .slot:last-child:not(.filled){animation:last-slot 1s ease-in-out infinite}.tools{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:8px 8px 0}.tools button{height:62px;position:relative;border:1.5px solid #c5a243;border-radius:15px;background:linear-gradient(#ffe06f,#f2ce54);box-shadow:inset 0 2px #fff0a2,0 4px 0 #c9a64b;display:flex;align-items:center;justify-content:center;gap:2px;transition:transform .12s;overflow:visible}.tools button:active:not(:disabled){transform:translateY(3px);box-shadow:inset 0 2px #fff0a2,0 1px 0 #c9a64b}.tools button:disabled{opacity:.4;filter:saturate(.3)}.tool-art{width:48px;height:45px;display:block;transform:rotate(-5deg)}.tool-art svg{width:100%;height:100%;stroke:#475b47;stroke-width:1.7;stroke-linejoin:round;stroke-linecap:round}.tool-art .icon-shadow{fill:#b09a5255;stroke:none}.tool-label{font-size:12px;font-weight:900;letter-spacing:1px;writing-mode:vertical-rl;line-height:1}.tools small{position:absolute;top:-5px;right:-4px;display:grid;place-items:center;border-radius:50%;width:20px;height:20px;background:linear-gradient(#fffdf2,#ebeccf);border:1.5px solid #b6b98e;font-size:11px;font-weight:850;color:#6c7757;box-shadow:0 2px 0 #a4ae8355}.dock p{font-size:8px;text-align:center;min-height:11px;line-height:1.3;color:#899a7f;margin:8px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.flying-fish{position:fixed;z-index:1000;width:90px;height:68px;pointer-events:none;filter:drop-shadow(0 10px 4px #56754f66)}.flying-fish img{width:100%;height:100%;object-fit:contain}.match-feedback{position:absolute;z-index:4;top:-22px;left:50%;transform:translateX(-50%);padding:7px 15px;border:2px solid #fff7cc;border-radius:25px;background:linear-gradient(#fff1a1,#f7d56c);color:#89702c;box-shadow:0 3px 0 #c5a653;font-size:14px;font-weight:900;white-space:nowrap;pointer-events:none;animation:match-pop 1s ease-out forwards}.dock.celebrate .slots{animation:matched .4s ease-out}.match-spark{position:fixed;width:9px;height:9px;border-radius:3px;background:#eacb53;pointer-events:none;z-index:999}.closeup .board-wrap{display:block;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#97ae8d #e9eedc;touch-action:pan-x pan-y}.closeup #board{width:max(100%,420px);height:auto;touch-action:pan-x pan-y}.closeup .float-note:before{content:'拖动鱼盆 · ';color:#5b8c71}dialog{border:2px solid #cdd7bc;border-radius:26px;background:linear-gradient(#fffdf0,#f8f5e3);color:#3c5545;padding:23px;max-width:min(420px,calc(100% - 28px));width:420px;box-shadow:0 6px 0 #b4c5a599,0 18px 60px #2e493644;max-height:85dvh;overflow:auto}dialog::backdrop{background:#29483c66;backdrop-filter:blur(4px)}dialog h2{text-align:center;font-size:27px;font-weight:900;letter-spacing:1px;margin:7px 0 13px}dialog p{font-size:12px;line-height:1.85;color:#7d8f73}dialog button{min-height:44px;border-radius:12px;background:#e8edda;padding:10px 12px;margin-top:9px;width:100%;font-weight:750;font-size:13px}dialog .primary{min-height:54px;margin:14px 0 8px;font-size:19px}dialog .eyebrow{text-align:center;color:#91a17e;font-size:10px;margin-bottom:10px}dialog .close{position:absolute;top:8px;right:8px;width:34px;min-height:34px;border-radius:50%;margin:0;padding:0;background:transparent;font-size:22px}.result-number{text-align:center;font-size:69px;font-weight:900;color:#4e8c70;line-height:1.2}.result-number small{font-size:14px;margin-left:7px}.score-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:15px 0}.score-grid div{text-align:center;background:#edf0d9;border-radius:12px;padding:11px 3px;font-size:10px}.score-grid b{display:block;font-size:20px;margin:4px}.rank-tabs{display:flex;gap:7px}.rank-tabs button{width:50%}.rank-tabs .active{background:#c8dfa9}.rank-row{display:flex;align-items:center;justify-content:space-between;padding:13px 7px;border-bottom:1px solid #e2e7d1;font-size:13px}.rank-row b{font-size:19px;color:#6f9b74}.toggle{display:flex;align-items:center;gap:9px;padding:12px 0;font-size:13px}.toggle input{width:20px;height:20px;accent-color:#79a58b}.legend{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:13px 0}.legend span{font-size:10px;text-align:center;border-radius:8px;padding:8px;background:#e9edda}.callout{border-left:3px solid #a0bc82;padding-left:10px}.confetti{text-align:center;font-size:35px;color:#d3ad43}@keyframes slot-enter{0%{transform:scale(.78)}60%{transform:scale(1.08)}100%{transform:scale(1)}}@keyframes matched{50%{filter:brightness(1.15);transform:translateY(-3px)}}@keyframes match-pop{0%{opacity:0;transform:translate(-50%,5px) scale(.65)}15%{opacity:1;transform:translate(-50%,-8px) scale(1.06)}70%{opacity:1;transform:translate(-50%,-18px) scale(1)}100%{opacity:0;transform:translate(-50%,-28px) scale(.98)}}@keyframes last-slot{50%{background:#e5be97;box-shadow:inset 0 0 0 2px #d59c67}}@keyframes loading-spin{to{transform:rotate(360deg)}}@media(min-width:601px){body{background:radial-gradient(ellipse at center,#fbfae9,#e9efdf)}.shell{padding-inline:20px;max-width:490px;max-height:1040px;min-height:640px;border-inline:1px solid #dfe5d5;background:#faf7eadd}.playing .shell{min-height:640px}.cover-title h1{font-size:35px}.board-size{display:none!important}}@media(max-width:350px){.shell{padding-inline:9px}.topbar{gap:7px}.brand-name{font-size:22px}.round{width:35px;height:35px;border-radius:12px}.round svg{width:21px;height:21px}.cover-title{padding-top:9px}.cover-title h1{font-size:27px}.cover-stamp{font-size:8px;right:0;top:5px}.cover-title p{font-size:10px}.hero-wrap{min-height:180px}.primary{min-height:50px;font-size:21px}.prep-actions button{min-height:34px}.prep-actions{margin-top:12px}.local-note{font-size:7px}.hud{gap:4px;padding:0}.hud>div{padding-inline:6px}.hud strong{font-size:18px}.hud .time strong{font-size:21px}.hud svg{width:20px}.combo-counter small{font-size:8px}.slot{height:41px}.tools{gap:9px;margin-inline:4px}.tools button{height:55px}.tool-art{width:42px;height:40px}.tool-label{font-size:11px}.dock-label{font-size:8px}.dock-label small{font-size:7px}.float-note{font-size:8px}.cover-title h1 br{display:none}}@media(max-height:740px){.cover-title{padding-top:7px}.cover-title h1{font-size:27px}.cover-title h1 br{display:none}.cover-title p{margin:5px 0 0;font-size:10px}.hero-wrap{min-height:170px}.cover-stamp{display:none}.prep-pills{margin-top:3px;font-size:8px}.load-state{margin:5px 0}.primary{min-height:48px;font-size:21px}.prep-actions{margin-top:11px}.prep-actions button{min-height:33px}.local-note{margin-top:7px}.tools button{height:53px}.slot{height:41px}.tool-art{width:42px;height:39px}.dock p{margin-top:7px;font-size:7px}.dock-label{display:none}.float-note{font-size:8px;min-height:17px;padding-top:2px}.playing .topbar{margin-bottom:5px}.hud{min-height:36px}.hud>div{min-height:33px;padding-block:4px}.hud .time strong{font-size:21px}.progress{margin-top:4px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

.match-fish{position:fixed;width:56px;height:42px;z-index:1001;pointer-events:none;opacity:0;filter:drop-shadow(0 3px 2px #6c845a55)}.match-fish img{width:100%;height:100%;object-fit:contain}
/* A composed game cover keeps the illustration's real proportions. */
.prepare{justify-content:center;gap:10px}.cover-title{padding-top:7px}.hero-wrap{flex:0 0 auto;width:calc(100% + 20px);margin-inline:-10px;min-height:0;aspect-ratio:600/460;overflow:visible}.hero-wrap #hero{width:100%;height:100%;border-radius:0}.theme-line{bottom:auto;top:3px;left:auto;right:7px;transform:none;padding:6px 11px;box-shadow:0 2px 0 #d4ddc3;background:#fffdf0e6}.season-chip{top:auto;bottom:8px;left:8px;width:30px;height:30px;font-size:13px}.welcome-info{margin-top:0}.prep-pills{margin-top:0}.load-state{margin-top:9px}.cover-title h1{font-size:34px}.cover-title p{margin-bottom:1px}.cover-stamp{top:-6px;right:3px}@media(max-height:740px){.prepare{gap:6px}.cover-title{padding-top:2px}.cover-title h1{font-size:26px}.cover-title p{font-size:9px}.cover-title h1 br{display:none}.hero-wrap{min-height:0}.welcome-info{margin-top:0}}@media(max-width:350px){.hero-wrap{width:calc(100% + 12px);margin-inline:-6px}.cover-title h1{font-size:28px}.cover-stamp{display:none}.cover-title h1 br{display:initial}}@media(max-width:350px) and (max-height:740px){.cover-title h1{font-size:24px}.cover-title h1 br{display:none}}
.tool-label{writing-mode:horizontal-tb;white-space:nowrap;letter-spacing:1px;font-size:12px}.tool-art{width:42px;height:42px;flex-shrink:0}.tools button{gap:3px}@media(max-width:350px){.tool-art{width:34px;height:36px}.tool-label{font-size:11px;letter-spacing:0}.tools button{gap:2px}}

.blocked-tip{position:fixed;z-index:1100;transform:translateX(-50%);padding:9px 13px;border-radius:14px;border:1px solid #9eaf89;background:#fff9df;color:#52634a;box-shadow:0 3px 0 #d6d9bb;font-size:12px;font-weight:750;white-space:nowrap;pointer-events:none;animation:blocked-tip-in .15s ease-out}@keyframes blocked-tip-in{from{opacity:0;transform:translate(-50%,5px)}to{opacity:1;transform:translate(-50%,0)}}
