:root{color:#1e2523;--surface:#fffdf8;--surface-strong:#fff;--line:#d9dfd5;--muted:#62706b;--text:#1e2523;--accent:#18856f;--accent-strong:#116c5a;--blue:#2686d9;--danger:#b42318;--shadow:0 18px 50px #28362d1f;--ease-out:cubic-bezier(.23, 1, .32, 1);--ease-in-out:cubic-bezier(.77, 0, .175, 1);background:#f5f7f2;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}[hidden]{display:none!important}body{min-width:320px;margin:0}button,input,select{font:inherit}button{background:var(--accent);color:#fff;cursor:pointer;min-height:44px;transition:transform .14s var(--ease-out), background .16s ease, box-shadow .16s ease;border:0;border-radius:8px;padding:0 16px;font-weight:760}button:hover{background:var(--accent-strong)}button:active{transform:scale(.97)}button.icon{place-items:center;width:44px;padding:0;display:grid}main{width:min(1080px,100%);padding:env(safe-area-inset-top) 14px calc(92px + env(safe-area-inset-bottom));margin:0 auto}header{justify-content:space-between;align-items:center;gap:16px;padding:18px 0 12px;display:flex}h1,h2,h3,p{margin:0}h1{letter-spacing:0;font-size:28px}h2,h3{align-items:center;gap:8px;display:flex}header p{color:var(--muted);margin-top:4px;font-size:14px}.bottom-tabs{z-index:12;width:min(1080px,100% - 20px);padding:8px 10px calc(8px + env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#fffdf8f0;border:1px solid #d9dfd5eb;border-bottom:0;border-radius:18px 18px 0 0;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:4px;display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%);box-shadow:0 -10px 24px #14221d1a}.bottom-tabs button{min-width:0;min-height:56px;color:var(--muted);box-shadow:none;transition:transform .14s var(--ease-out), background .18s ease, color .18s ease;background:0 0;border-radius:14px;align-content:center;justify-items:center;gap:3px;padding:6px 4px;font-size:12px;font-weight:720;line-height:1.1;display:grid}.bottom-tabs button:hover{color:var(--accent-strong);background:#18856f14}.bottom-tabs button.active{color:var(--accent-strong);background:#116c5a1f}.bottom-tabs button.active svg{stroke-width:2.5px}.bottom-tabs button span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;gap:14px;margin-top:12px;padding:16px;display:grid;box-shadow:0 1px 2px #0f23200f}.section-title{justify-content:space-between;align-items:center;gap:12px;display:flex}.grid{gap:12px;display:grid}.grid.two{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}label{gap:6px;display:grid}label span{color:var(--muted);font-size:13px}input,select{background:var(--surface-strong);width:100%;min-height:44px;color:var(--text);border:1px solid #c8d1ca;border-radius:8px;padding:0 12px;transition:border-color .15s,box-shadow .15s}input:focus,select:focus{border-color:var(--accent);outline:0;box-shadow:0 0 0 3px #18856f29}.switch{align-items:center;gap:10px;display:flex}.switch input{width:20px;min-height:20px}.mode-segment{border:1px solid var(--line);background:#f7faf6;border-radius:8px;grid-template-columns:1fr 1fr;min-width:116px;padding:3px;display:grid}.mode-segment button{min-height:34px;color:var(--text);box-shadow:none;background:0 0;border-radius:6px;padding:0 14px}.mode-segment button.active{background:var(--accent);color:#fff}.record-actions{align-items:center;gap:8px;display:flex}.dahu-toggle{min-height:42px;color:var(--text);box-shadow:none;background:#e4ebe4;padding:0 14px}.dahu-toggle.active{color:#fff;background:#c83f2d;box-shadow:0 8px 22px #c83f2d33}.toggles{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.record-shell{gap:12px;display:grid}.record-controls{margin-top:12px}.record-meta{grid-template-columns:minmax(0,1fr) minmax(84px,.7fr) minmax(0,1fr) auto;align-items:end}.load-table-button{min-height:44px;color:var(--text);box-shadow:none;background:#e4ebe4;padding:0 12px}.load-table-button:hover{background:#d5ded5}.load-table-button:disabled{cursor:wait;opacity:.66}.mahjong-table{min-height:430px;box-shadow:var(--shadow);background:linear-gradient(#ffffffb8,#f6f9f3eb),radial-gradient(circle at 50% 48%,#18856f24,#0000 34%);border:1px solid #d7dfd4;border-radius:8px;grid-template:".top.""left center right"".bottom."/minmax(152px,1fr) 112px minmax(152px,1fr);align-items:center;gap:14px;padding:18px;display:grid;position:relative}.rocket-save-button{z-index:3;isolation:isolate;color:#07120a;transform-origin:50%;width:62px;height:62px;min-height:62px;transition:transform .13s var(--ease-out), box-shadow .13s var(--ease-out), background .16s ease, filter .16s ease;background:radial-gradient(circle at 34% 24%,#ffffffeb,#fff3 21%,#0000 38%),linear-gradient(145deg,#9dff4e 0%,#44ed22 44%,#18aa10 100%);border:1px solid #fffc;border-radius:999px;place-items:center;padding:0;font-size:30px;line-height:1;display:grid;position:absolute;top:12px;right:12px;transform:translateY(0);box-shadow:0 12px 18px #09640c57,0 5px 8px #0c7d0838,inset 0 2px 3px #ffffffd1,inset 0 -7px 10px #075d0a57}.rocket-save-button:hover{filter:saturate(1.05);background:radial-gradient(circle at 34% 24%,#fffffff5,#ffffff3d 21%,#0000 38%),linear-gradient(145deg,#aaff5f 0%,#4ef52b 44%,#1aba12 100%);transform:translateY(-1px)}.rocket-save-button:before{content:"";z-index:-1;border-radius:inherit;pointer-events:none;background:linear-gradient(#ffffff4d,#0000 58%);position:absolute;inset:5px 7px 12px}.rocket-save-button:active{transform:translateY(7px)scale(.98);box-shadow:0 7px 12px #09640c47,0 3px 5px #0c7d0833,inset 0 3px 8px #04480861}.rocket-save-button:focus-visible{outline-offset:5px;outline:3px solid #28b4ffb8}.rocket-save-button:disabled{cursor:default;filter:saturate(1.08);opacity:1;pointer-events:none}.rocket-save-button span{transition:transform .13s var(--ease-out);display:block;transform:translateY(-2px)rotate(-7deg)}.rocket-save-button:active span{transform:translateY(1px)rotate(-7deg)scale(.96)}.record-shell-launching .rocket-save-button{animation:rocket-button-press .42s var(--ease-out) both}.record-shell-launching .rocket-save-button span{opacity:0;animation:none}.rocket-launch-stage{z-index:4;border-radius:inherit;pointer-events:none;position:absolute;inset:0;overflow:visible}.rocket-trail{transform-origin:50%;place-items:center;width:42px;height:42px;font-size:32px;animation:2.7s cubic-bezier(.16,.8,.3,1) both rocket-liftoff;display:grid;position:absolute;top:23px;right:23px}.rocket-trail:before,.rocket-trail:after{content:"";filter:blur(.2px);transform-origin:top;background:linear-gradient(#fffffff2,#ffbe31e6 44%,#f5482200);border-radius:999px;width:16px;height:54px;animation:.16s ease-in-out infinite alternate rocket-flame;position:absolute;top:78%;left:50%;transform:translate(-50%)rotate(8deg)}.rocket-trail:after{filter:blur(7px);opacity:.78;background:linear-gradient(#fff4a6b8,#ff792270 42%,#fff0);width:28px;height:88px;animation-duration:.22s}.launch-cloud{background:#ffffffe0;border-radius:999px;width:20px;height:20px;animation:1.76s ease-out both launch-cloud-puff;position:absolute;top:62px;right:20px;box-shadow:14px 2px #e2ece2d6,-12px 8px #eef4edd1,4px 14px #ffffffb8}.launch-cloud-two{animation-delay:80ms;top:66px;right:44px;scale:.82}.launch-cloud-three{animation-delay:.15s;top:84px;right:12px;scale:.7}@keyframes rocket-button-press{0%{transform:translateY(0)}36%{transform:translateY(7px)scale(.98);box-shadow:0 7px 12px #09640c47,0 3px 5px #0c7d0833,inset 0 3px 8px #04480861}to{transform:translateY(0)scale(1.02)}}@keyframes rocket-button-ignite{0%{transform:translateY(1px)rotate(-7deg)scale(.96)}60%,to{transform:translateY(-2px)rotate(-7deg)scale(1)}}@keyframes rocket-liftoff{0%{opacity:0;transform:translateY(12px)rotate(-7deg)scale(.7)}12%{opacity:1;transform:translate(0)rotate(-7deg)scale(.92)}42%{opacity:1;transform:translate(-78px,-118px)rotate(-18deg)scale(1.16)}to{opacity:0;transform:translate(-156px,-420px)rotate(-23deg)scale(1.26)}}@keyframes rocket-flame{0%{transform:translate(-50%)rotate(4deg)scaleY(.86)}to{transform:translate(-50%)rotate(12deg)scaleY(1.12)}}@keyframes launch-cloud-puff{0%{opacity:0;transform:translate(0)scale(.54)}18%{opacity:1}to{opacity:0;transform:translate(-24px,26px)scale(1.7)}}.seat-card{width:max-content;max-width:100%;min-height:0;box-shadow:none;background:0 0;border:0;border-radius:0;grid-template-columns:auto auto auto;justify-content:center;align-items:center;gap:10px;padding:0;display:grid}.seat-card:hover{box-shadow:none;transform:none}.seat-top{grid-area:top;justify-self:center}.seat-right{grid-area:right;justify-self:end}.seat-bottom{grid-area:bottom;justify-self:center}.seat-left{grid-area:left;justify-self:start}.seat-heading{justify-content:space-between;align-items:center;gap:10px;display:flex}.seat-row{align-items:center;gap:8px;display:flex}.player-pill{background:var(--blue);color:#fff;white-space:nowrap;border-radius:8px;place-items:center;width:auto;min-width:56px;height:44px;min-height:44px;padding:0 12px;font-size:18px;line-height:1;display:grid;box-shadow:0 8px 20px #2686d93d}.player-pill:hover{background:#1976c4}.score-line{align-items:end;gap:8px;display:flex}.score-line input{text-align:center;width:60px;height:32px;min-height:32px;box-shadow:none;background:0 0;border:0;border-bottom:2px solid #b9c4bd;border-radius:0;padding:0 2px}.score-line input::placeholder{color:var(--muted);opacity:1}.score-line input:focus{border-color:var(--accent);box-shadow:none}.seat-flags{align-items:center;gap:10px;display:flex}.seat-flags label{background:0 0;border:0;border-radius:0;justify-content:center;align-items:center;gap:4px;min-height:0;display:flex}.seat-flags input{width:18px;min-height:18px}.rotate-button{color:#07120a;background:#45af53;grid-area:center;place-self:center;place-items:center;width:96px;height:96px;min-height:96px;padding:0;display:grid;box-shadow:0 16px 32px #45af534d}.rotate-button:hover{background:#3da64b}.rotate-button:active svg{transform:rotate(42deg)}.rotate-button svg{transition:transform .18s var(--ease-out)}.picker-backdrop{z-index:20;background:#1119165c;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.player-picker{border:1px solid var(--line);background:var(--surface-strong);width:min(420px,100%);max-height:min(620px,86vh);box-shadow:var(--shadow);border-radius:8px;gap:12px;padding:14px;display:grid;overflow:auto}.picker-title{color:var(--text);font-weight:760}.player-picker-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.player-picker-grid button{min-height:40px;color:var(--text);box-shadow:none;background:#eef4ed;padding:0 8px}.player-picker-grid button.active{background:var(--blue);color:#fff}.player-picker-grid button.danger.active{color:#fff;background:#c83f2d}.picker-cancel{color:var(--text);box-shadow:none;background:#e4ebe4}.celebration-overlay{z-index:80;cursor:pointer;animation:celebration-fade-in .22s var(--ease-out) both;touch-action:manipulation;background:radial-gradient(circle at 50% 42%,#ffeca638,#0000 34%),linear-gradient(#130c0ba8,#360c0ab8);place-items:center;display:grid;position:fixed;inset:0;overflow:hidden}.celebration-canvas,.celebration-glow{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.celebration-glow{opacity:.9;animation:celebration-glow-pulse .9s var(--ease-in-out) infinite alternate;background:radial-gradient(circle at 50% 47%,#ffd85747,#0000 18%),radial-gradient(circle at 18% 22%,#ff563047,#0000 22%),radial-gradient(circle at 82% 24%,#38bdf833,#0000 23%)}.celebration-copy{z-index:2;padding:max(18px, env(safe-area-inset-top)) 18px max(28px, env(safe-area-inset-bottom));text-align:center;transform-origin:50%;justify-items:center;gap:8px;animation:.76s cubic-bezier(.18,1.3,.24,1) both celebration-copy-pop;display:grid;position:relative}.celebration-kicker{color:#fff7c2;text-shadow:0 2px 8px #500000b8;background:#6a110c7a;border:1px solid #ffe6979e;border-radius:999px;min-width:86px;padding:6px 14px;font-size:15px;font-weight:860;line-height:1;box-shadow:0 10px 22px #5a0f0c47,inset 0 1px #ffffff47}.celebration-title-frame{width:100vw;padding-inline:max(18px, env(safe-area-inset-left)) max(18px, env(safe-area-inset-right));place-items:center;display:grid;overflow:visible}.celebration-title{color:#ffe36c;width:max-content;max-width:calc(100vw - 36px);font-family:STKaiti,Kaiti SC,KaiTi,Songti SC,SimSun,serif;font-size:var(--celebration-title-size);letter-spacing:0;white-space:nowrap;-webkit-text-stroke:clamp(2px, .75vw, 7px) #a7120c;paint-order:stroke fill;text-shadow:0 3px #7d0c09,0 8px #520807,0 0 18px #ffdb53db,0 0 48px #ff5022b8,0 22px 34px #2b06049e;flex-wrap:nowrap;justify-content:center;align-items:center;gap:0 .015em;font-weight:900;line-height:.98;display:flex}.celebration-title-char{transform-origin:50% 62%;display:inline-block}.celebration-title-char-1{transform:translateY(-.05em)rotate(-4deg)scale(1.08)}.celebration-title-char-2{transform:translateY(.04em)rotate(3deg)scale(.92)}.celebration-title-char-3{transform:translateY(-.1em)rotate(2deg)scale(1.14)}.celebration-title-char-4{transform:translateY(.07em)rotate(-3deg)scale(.98)}.celebration-title-char-5{transform:translateY(-.03em)rotate(4deg)scale(1.06)}.celebration-title-char-6{transform:translateY(.09em)rotate(-2deg)scale(.9)}.celebration-detail{color:#fff7c2;overflow-wrap:anywhere;text-shadow:0 2px #530605b8,0 0 18px #ffd55d7a;background:#540c0985;border:1px solid #ffe6977a;border-radius:999px;max-width:min(88vw,720px);padding:7px 15px;font-family:STKaiti,Kaiti SC,KaiTi,Songti SC,SimSun,serif;font-size:clamp(18px,5.6vw,34px);font-weight:850;line-height:1.15;box-shadow:0 12px 28px #3707053d}.celebration-goldTop{background:radial-gradient(circle at 50% 38%,#ffec9457,#0000 34%),linear-gradient(#180b08b3,#5a1208c7)}.celebration-goldTop .celebration-copy{animation:celebration-copy-pop .76s cubic-bezier(.18, 1.3, .24, 1) both, gold-title-breathe .78s var(--ease-in-out) .76s 3 alternate}.celebration-goldTop .celebration-kicker{color:#fff9d6;background:linear-gradient(135deg,#7c160ab8,#be5c0f8a);border-color:#fff3a6c7}.celebration-goldTop .celebration-title{color:#fff5a4;-webkit-text-stroke-color:#bd130d;text-shadow:0 3px #9c120c,0 9px #650907,0 0 16px #ffffffeb,0 0 34px #ffe04ff2,0 0 74px #ff681fd6,0 26px 40px #2b0604a8}.celebration-goldTop .celebration-detail{color:#fff9d6;background:#7a1f088f;border-color:#fff3a69e}@keyframes celebration-fade-in{0%{opacity:0}to{opacity:1}}@keyframes celebration-copy-pop{0%{opacity:0;transform:translateY(18px)scale(.88)rotate(-2deg)}62%{opacity:1;transform:translateY(0)scale(1.05)rotate(1deg)}to{opacity:1;transform:translateY(0)scale(1)rotate(0)}}@keyframes celebration-glow-pulse{0%{opacity:.64;transform:scale(.98)}to{opacity:1;transform:scale(1.04)}}@keyframes gold-title-breathe{0%{filter:brightness()saturate()}to{filter:brightness(1.18)saturate(1.18)}}.record-status{gap:4px;min-height:22px;padding:0 4px;display:grid}.score-stack{gap:10px;display:grid}.score-card{border-bottom:1px solid var(--line);gap:6px;padding:4px 0 12px;display:grid}.score-card:last-child{border-bottom:0;padding-bottom:0}.score-card-title{justify-content:space-between;align-items:center;gap:12px;display:flex}.score-card-meta{text-align:right;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:4px 10px;display:flex}.score-card-meta span{color:var(--muted);font-size:13px}.score-table{width:100%;margin-top:-6px;padding-top:16px;overflow-x:auto}table{border-collapse:collapse;width:100%;min-width:520px}th,td{text-align:right;border-bottom:1px solid #e3e9e6;padding:10px 8px}.score-name{vertical-align:baseline;min-width:24px;display:inline-block;position:relative}.score-badge{filter:drop-shadow(0 1px 1px #28362d2e);pointer-events:none;font-size:15px;line-height:1;position:absolute;top:-17px;left:50%;transform:translate(-50%)}.score-badge-loss{top:-16px}th:first-child,td:first-child{text-align:left}.summary-row td{font-weight:760}.login{text-align:center;place-content:center;gap:24px;min-height:100vh;padding:24px;display:grid}.login h1{font-size:38px}.login p{color:var(--muted);margin-top:8px}.google-signin{justify-content:center;min-height:44px;display:flex}.dev-login{background:#2f3c37;justify-self:center}.dev-login:hover{background:#22302b}.success{color:var(--accent)}.error{color:var(--danger);padding:10px 0}.list{color:#31413e;gap:8px;max-height:220px;font-size:14px;display:grid;overflow:auto}@media (width<=760px){main{padding-left:10px;padding-right:10px}.grid.two,.grid.three{grid-template-columns:1fr}.section-title{align-items:start}.record-actions{flex-shrink:0}.grid.three.record-meta{grid-template-columns:minmax(0,.9fr) minmax(52px,.56fr) minmax(0,1fr) 52px;gap:6px}.record-meta label{gap:4px}.record-meta label span{font-size:12px}.record-meta input,.record-meta select{min-height:38px;padding:0 7px;font-size:14px}.load-table-button{min-height:38px;padding:0 6px;font-size:13px}.bottom-tabs button{min-height:52px;padding:0 6px}.mahjong-table{grid-template:".top.""left center right"88px".bottom."/minmax(116px,1fr) 72px minmax(116px,1fr);gap:10px 6px;min-height:360px;padding:10px 6px;overflow:visible}.rocket-save-button{width:52px;height:52px;min-height:52px;font-size:25px;top:8px;right:8px;box-shadow:0 10px 15px #09640c4d,0 4px 7px #0c7d0833,inset 0 2px 3px #ffffffd1,inset 0 -6px 9px #075d0a57}.rocket-save-button:active{transform:translateY(6px)scale(.98);box-shadow:0 6px 10px #09640c42,0 2px 4px #0c7d082e,inset 0 3px 8px #04480861}.rocket-trail{font-size:28px;top:15px;right:13px}.launch-cloud{top:50px;right:12px}.seat-card{grid-template-columns:1fr;justify-items:center;gap:6px;width:116px}.seat-top,.seat-bottom{width:158px}.seat-row{gap:6px}.player-pill{min-width:52px;height:40px;min-height:40px;padding:0 10px;font-size:17px}.score-line{gap:6px}.score-line input{width:56px;font-size:14px}.seat-flags{gap:8px}.seat-flags label span{font-size:13px}.rotate-button{width:68px;height:68px;min-height:68px}.rotate-button svg{width:30px;height:30px}.picker-backdrop{align-items:end;padding:10px}.player-picker{max-height:72vh}.player-picker-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.player-picker-grid button{min-height:38px;padding:0 4px;font-size:14px}.celebration-overlay{place-items:start center;padding-top:17vh}.celebration-copy{width:min(100%,420px);padding-left:8px;padding-right:8px}.celebration-copy-with-detail{gap:10px}.score-card-title h3{font-size:16px}.score-table{overflow-x:visible}.score-table table{table-layout:fixed;min-width:0}.score-table th,.score-table td{padding:8px 4px;font-size:14px}.score-table th:first-child,.score-table td:first-child{width:42px}.score-name{max-width:100%}.score-name span:last-child{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}}@media (prefers-reduced-motion:reduce){.record-shell-launching .rocket-save-button,.record-shell-launching .rocket-save-button span,.rocket-trail,.rocket-trail:before,.rocket-trail:after,.launch-cloud,.celebration-overlay,.celebration-copy,.celebration-glow,.celebration-goldTop .celebration-copy{animation-duration:1ms;animation-iteration-count:1}.celebration-overlay{background:linear-gradient(#4a110cdb,#180c0ad1)}}
