:root{--jade:#123d35;--jade-light:#246652;--accent:#d3ad69;--bg:#f5f5ee;--card:#fff;--text:#253830;--muted:#68766b;--line:#e5e9e1;--positive:#237651;--negative:#b45147;--radius:18px;font-family:Inter,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:var(--text);background:var(--bg);font-synthesis:none}*{box-sizing:border-box}body{margin:0;font-size:15px;line-height:1.6}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button,a{transition:background .16s,color .16s,transform .16s}button{cursor:pointer;min-height:44px;border:0;border-radius:9px;padding:10px 18px;font-weight:600;white-space:nowrap}a{color:inherit;text-decoration:none}button:disabled{opacity:.55;cursor:wait}button:hover:not(:disabled){filter:brightness(.95)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #c69951;outline-offset:3px}[hidden]{display:none!important}.primary{background:var(--jade);color:#fff}.secondary{border:1px solid var(--line);background:#fff;color:var(--text)}.danger{background:#9f443d;color:#fff}.text-button{background:transparent;color:var(--jade-light);padding:8px 10px}.icon-button{background:transparent;padding:8px 10px;font-size:22px;min-width:44px}.wide{width:100%}.muted,small{color:var(--muted)}small{display:block;font-size:12px}p{margin:8px 0 18px}h1,h2,h3{margin:0;font-weight:650;letter-spacing:-.025em}h1{font-size:30px}h2{font-size:21px}h3{font-size:18px}.eyebrow{font-size:11px;letter-spacing:.16em;font-weight:700;color:var(--jade-light);margin:0 0 8px}.brand{display:flex;align-items:center;gap:12px;font-weight:700;font-size:21px}.brand small{font-size:8px;letter-spacing:.19em;margin-top:2px;color:inherit;opacity:.55}.brand-mark{display:inline-grid;place-items:center;width:41px;height:48px;border-radius:7px;background:#f6f1df;color:var(--jade);font:700 29px "SimSun",serif;border-bottom:5px solid #ccb989;box-shadow:0 2px 3px #0002}.app-shell{display:grid;grid-template-columns:238px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--jade);color:#e7eee4;padding:31px 23px;position:fixed;inset:0 auto 0 0;width:238px;display:flex;flex-direction:column;z-index:10}.sidebar-label{color:#a9bbb0;font-size:11px;letter-spacing:.12em;margin:50px 14px 12px}.sidebar nav{display:grid;gap:7px}.sidebar nav a{display:flex;align-items:center;gap:13px;padding:13px 14px;border-radius:10px;color:#bed0c3;font-size:14px;min-height:48px}.sidebar nav a span{font-size:21px;width:23px}.sidebar nav a.active{background:#e6efdc14;color:#f3f2df;box-shadow:inset 3px 0 var(--accent)}.sidebar nav a:hover{background:#ffffff0d}.sidebar-bottom{margin-top:auto}.sidebar-note{border:1px solid #ffffff13;border-radius:12px;padding:14px 12px;font-size:12px;color:#d5dfd3}.sidebar-note small{padding-left:15px;color:#94ad9d;margin-top:4px}.dot{display:inline-block;width:6px;height:6px;background:#c3b580;border-radius:50%;margin-right:5px}.user-card{display:flex;align-items:center;gap:10px;margin-top:23px}.user-card strong{font-size:13px}.user-card small{color:#9eb4a5}.user-card .icon-button{margin-left:auto;color:#cedccc}.avatar{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:#e0e9d6;color:var(--jade);font-weight:700}.main{grid-column:2;padding:32px 42px 20px;min-width:0;max-width:1800px;width:100%;margin:auto}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.topbar .eyebrow{color:var(--muted);font-size:10px;letter-spacing:.08em}.topbar .primary{padding:11px 23px}.filter-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:23px;font-size:12px}.filter-label{font-weight:650;margin-right:5px}.filter-bar input{width:145px;min-height:38px;font-size:12px;background:#fff}.filter-bar button{min-height:38px;font-size:12px;padding:7px 13px}.filter-caption{margin-left:auto}.overview-banner{background:#e9ede0;border:1px solid #e0e6d8;border-radius:var(--radius);min-height:160px;padding:29px 32px;display:flex;justify-content:space-between;align-items:center;overflow:hidden;margin-bottom:20px}.overview-banner .eyebrow{font-size:10px;color:#77836c}.overview-banner h2{font-family:"Noto Serif SC","SimSun",serif;font-size:30px;color:var(--jade);letter-spacing:.04em}.overview-banner p:last-child{font-size:12px;color:#7d8774;margin:12px 0 0}.banner-tile{font:700 56px "SimSun",serif;width:80px;height:105px;display:grid;place-items:center;background:#faf8ef;color:#347059;border-radius:9px;border-bottom:10px solid #acb98f;transform:rotate(12deg);box-shadow:8px 10px 0 #163d3510;margin-right:23px}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:20px}.metric{background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px 23px}.metric p{font-size:12px;color:var(--muted);margin:0 0 9px}.metric strong{display:block;font-size:28px;line-height:1.3;letter-spacing:-.05em}.metric small{margin-top:8px;font-size:10px}.metric.featured{background:var(--jade);color:#f8f6e8;border-color:var(--jade)}.metric.featured p,.metric.featured small{color:#b3c4b5}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(280px,1fr);gap:20px;margin-bottom:20px}.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:25px;min-width:0;margin-bottom:20px}.dashboard-grid .panel{margin-bottom:0}.section-head{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:23px}.section-head h2{font-size:18px}.section-head p{font-size:11px;margin:5px 0 0}.badge{display:inline-block;font-size:10px;border-radius:5px;padding:4px 8px;white-space:nowrap}.badge.neutral{color:#778470;background:#f1f3ec}.badge.positive{color:var(--positive);background:#edf4ee}.badge.negative{color:var(--negative);background:#faf0ed}.positive{color:var(--positive)}.negative{color:var(--negative)}.chart-svg{display:block;width:100%;height:240px;overflow:visible}.chart-legend{display:flex;flex-wrap:wrap;gap:10px 18px;font-size:11px;margin:8px 0 0}.chart-legend span{display:flex;align-items:center;gap:6px}.chart-key{width:18px;height:3px;border-radius:2px}.rank-row{display:grid;grid-template-columns:24px 36px minmax(0,1fr) auto;gap:9px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line)}.rank-row:last-child{border:0}.rank-number{font-size:11px;color:#9da699}.rank-row .avatar{width:31px;height:31px;font-size:13px}.rank-row h3{font-size:13px;overflow-wrap:anywhere}.rank-row small{font-size:10px}.rank-amount{font-size:16px;font-weight:650}.table-wrap{overflow:auto;width:100%}table{width:100%;border-collapse:collapse;white-space:nowrap;font-size:12px}th{text-align:left;color:#8a9486;font-size:10px;font-weight:500;padding:12px 13px;border-bottom:1px solid var(--line);background:#fafbf8}td{padding:17px 13px;border-bottom:1px solid #edf0e9}tr:last-child td{border-bottom:0}td.amount{text-align:right;font-variant-numeric:tabular-nums}th.amount{text-align:right}.record-player{display:inline-flex;gap:8px;margin-right:17px}.table-wrap button{font-size:11px;min-height:36px;padding:5px 9px}.row-actions{display:flex;gap:4px}.voided-row{opacity:.6}.note-cell{max-width:180px;overflow:hidden;text-overflow:ellipsis}.button-row{display:flex;flex-wrap:wrap;gap:8px}.text-link{color:var(--jade-light);font-size:12px}.pagination{display:flex;align-items:center;justify-content:space-between;margin-top:22px;font-size:12px}.pagination button{font-size:12px}.footer{display:flex;justify-content:space-between;color:#94a18d;font-size:10px;padding:15px 0 2px}.footer span:first-child{font-weight:700;color:#657b69}.empty-state{text-align:center;padding:45px 15px;color:var(--muted);font-size:13px}.ai-layout{display:grid;grid-template-columns:minmax(270px,.85fr) minmax(0,1.4fr);gap:20px}.ai-layout h2{margin-bottom:12px}.ai-layout>.panel>p{font-size:13px}.privacy-note{font-size:11px;color:#85907d;background:#f5f7f0;padding:12px;border-radius:9px;margin-top:22px}.ai-empty{text-align:center;padding:75px 15px}.empty-symbol{font-size:50px;color:#b7c5ae}.ai-empty h3{font-size:17px;margin:12px 0}.ai-empty p{font-size:12px}.ai-output-panel{min-height:430px}.ai-text{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;line-height:1.9}.evidence{display:flex;gap:7px;flex-wrap:wrap;margin-top:20px}.evidence a{font-size:11px;background:#f0f4eb;padding:5px 9px;border-radius:5px}.ai-meta{font-size:11px;color:var(--muted);margin-bottom:18px;border-bottom:1px solid var(--line);padding-bottom:14px}.player-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.player-card{border:1px solid var(--line);border-radius:12px;padding:21px;display:flex;align-items:center;gap:13px}.player-card h3{font-size:15px;overflow-wrap:anywhere}.player-card .text-button{margin-left:auto;font-size:12px}.settings-grid{display:grid;grid-template-columns:1fr 1.3fr;gap:20px}.settings-grid>.panel{margin-bottom:20px}.panel>h2{margin-bottom:10px}label{display:block;font-size:12px;font-weight:600;margin-bottom:18px}input,select,textarea{display:block;width:100%;border:1px solid #dce3d7;border-radius:8px;min-height:45px;padding:10px 12px;margin-top:7px;color:var(--text);background:#fdfefb;outline-offset:2px}input:disabled{background:#f0f2ec}textarea{resize:vertical}label small{font-weight:400;margin-top:6px;font-size:10px}.checkbox{display:flex;align-items:center;gap:8px}.checkbox input{width:17px;height:17px;min-height:0;margin:0;accent-color:var(--jade)}.form-error,.field-error{color:var(--negative);font-size:12px;white-space:pre-wrap}.form-error:empty,.field-error:empty{display:none}.toast{position:fixed;top:20px;left:50%;transform:translateX(-50%);background:var(--jade);color:#fff;box-shadow:0 6px 24px #0002;padding:12px 22px;border-radius:10px;max-width:90vw;z-index:1000;font-size:13px}.toast.error{background:#98463e}dialog{border:1px solid var(--line);border-radius:20px;padding:28px;width:min(590px,calc(100% - 24px));max-height:90vh;color:var(--text);box-shadow:0 25px 100px #0003}dialog::backdrop{background:#14271f88;backdrop-filter:blur(3px)}dialog .section-head{margin-bottom:22px}dialog form{margin:0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.entry-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:start}.entry-row label{margin-bottom:12px}.entry-row select{font-size:13px}.balance-preview{padding:13px;background:#f0f4e9;border-radius:9px;font-size:12px;margin:0 0 20px}.balance-preview.invalid{background:#fbefeb;color:var(--negative)}.dialog-footer{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.login-screen{min-height:100vh;display:grid;grid-template-columns:1.15fr 1fr;background:#fbfcf8}.login-story{background:var(--jade);color:#eff2e4;padding:55px 70px;position:relative;overflow:hidden}.login-story .eyebrow{margin-top:95px;color:#b7bd93;font-size:11px}.login-story h1{font-family:"Noto Serif SC","SimSun",serif;font-size:47px;line-height:1.55;letter-spacing:.08em}.login-copy{color:#aabca9;font-size:14px;line-height:2;margin-top:25px}.tile-scene{display:flex;gap:15px;justify-content:center;margin-top:50px;transform:rotate(-8deg)}.mahjong-tile{background:#f8f5e8;color:var(--jade-light);width:100px;height:135px;border-radius:11px;border-bottom:14px solid #bac299;display:grid;place-items:center;font:700 65px "SimSun",serif;box-shadow:0 12px 25px #0002}.mahjong-tile.tilted{color:#ba6956;transform:translateY(-15px) rotate(15deg)}.story-foot{font-size:11px;color:#9cb29f;margin-top:65px;letter-spacing:.15em}.login-panel{width:100%;max-width:440px;padding:50px 35px;align-self:center;justify-self:center}.login-panel h2{font-size:30px;margin:9px 0 15px}.login-panel>p.muted{font-size:13px;margin-bottom:38px}.login-panel input{background:white}.login-panel .primary{margin-top:15px}.login-note{font-size:10px;text-align:center;color:#939f8d;margin-top:25px}.center-screen{display:grid;place-items:center;min-height:100vh;padding:20px}.password-panel{max-width:450px;width:100%;padding:32px}.password-panel h1{font-size:24px;margin-top:23px}.password-panel>p{font-size:12px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(min-width:1600px){.main{padding:40px 60px}}@media(max-width:1150px){.main{padding:25px}.dashboard-grid{grid-template-columns:minmax(0,1.2fr) minmax(250px,1fr)}.metrics{gap:10px}.metric{padding:17px}.metric strong{font-size:24px}.player-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:850px){.app-shell{grid-template-columns:190px minmax(0,1fr)}.sidebar{width:190px;padding:25px 15px}.brand{font-size:18px}.main{padding:23px 20px}.dashboard-grid,.settings-grid,.ai-layout{grid-template-columns:1fr}.metrics{grid-template-columns:repeat(2,1fr)}.login-story{padding:40px}.login-story h1{font-size:36px}.mahjong-tile{width:76px;height:110px;font-size:45px}.login-panel{padding:35px 25px}}@media(max-width:600px){body{font-size:14px}.app-shell{display:block}.sidebar{inset:auto 0 0;width:100%;height:74px;padding:0 4px 5px;background:var(--jade);border-top:1px solid #fff2;display:block}.sidebar>.brand,.sidebar-label,.sidebar-bottom{display:none}.sidebar nav{display:flex;justify-content:space-around;gap:0;height:100%}.sidebar nav a{display:flex;flex-direction:column;gap:0;padding:8px 6px;justify-content:center;font-size:10px;border-radius:0;min-width:60px}.sidebar nav a span{font-size:22px;text-align:center}.sidebar nav a.active{box-shadow:inset 0 3px var(--accent);background:#ffffff08}.main{padding:23px 16px 90px}.topbar{margin-bottom:20px}.topbar h1{font-size:25px}.topbar .primary{padding:10px 15px;font-size:12px}.filter-bar{gap:7px}.filter-label{width:100%}.filter-bar input{width:calc((100% - 29px)/2);min-height:42px;font-size:13px}.filter-caption{font-size:11px}.overview-banner{padding:23px 20px;min-height:141px}.overview-banner h2{font-size:23px}.overview-banner .eyebrow{font-size:8px}.overview-banner p:last-child{font-size:10px}.banner-tile{width:52px;height:76px;font-size:35px;border-bottom-width:7px;margin-right:3px}.metrics{gap:10px}.metric{padding:17px 16px}.metric p{font-size:10px}.metric strong{font-size:25px}.metric small{font-size:9px}.panel{padding:20px 16px;border-radius:15px}.section-head{gap:10px;align-items:flex-start;margin-bottom:18px;flex-wrap:wrap}.section-head h2{font-size:17px}.chart-svg{height:225px}.player-grid{grid-template-columns:1fr}.footer{font-size:9px}.login-screen{grid-template-columns:1fr}.login-story{padding:27px 29px 30px;min-height:320px}.login-story .brand{font-size:20px}.login-story .eyebrow{margin-top:40px;font-size:9px}.login-story h1{font-size:32px}.login-copy{font-size:11px;margin:13px 0 0}.tile-scene{position:absolute;right:23px;bottom:36px;gap:7px;opacity:.75}.mahjong-tile{width:36px;height:56px;font-size:26px;border-bottom-width:6px;border-radius:4px}.story-foot{display:none}.login-panel{padding:35px 28px 40px;max-width:460px}.login-panel h2{font-size:25px}.login-panel>p.muted{margin-bottom:25px}.button-row button{font-size:11px;padding:8px 10px}.pagination{gap:10px;align-items:flex-start;flex-wrap:wrap}dialog{padding:22px 18px}.ai-empty{padding:45px 10px}.ai-output-panel{min-height:300px}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
.color-0{background:#246b50}.color-1{background:#bf765c}.color-2{background:#7c839b}.color-3{background:#b49648}.color-4{background:#53899b}.color-5{background:#a06e9f}
.login-story::before{content:"";position:absolute;inset:0;background:url("/mahjong-pattern.svg") center/cover;opacity:.075;pointer-events:none}.login-story>*{position:relative}.login-panel{position:relative;z-index:1}.login-screen{position:relative}.login-screen::after{content:"";position:absolute;inset:0 0 0 55%;background:url("/mahjong-pattern.svg") center/cover;opacity:.08;pointer-events:none}.login-panel form{background:#fbfcf8ee;padding:5px 0}.sidebar nav a span{font-family:Arial,sans-serif}@media(max-width:600px){.login-screen::after{inset:330px 0 0}.tile-scene{position:absolute}.sidebar{padding-bottom:env(safe-area-inset-bottom);height:calc(74px + env(safe-area-inset-bottom))}}

.sidebar nav svg{width:21px;height:21px;display:block}.rank-row{padding:13px 0}.rank-row small{font-size:10px}.rank-amount{white-space:nowrap}

.record-history{margin-top:24px;border-top:1px solid var(--line);padding-top:18px}.record-history h3{font-size:15px}.history-item{padding:14px 0;border-bottom:1px solid var(--line);font-size:12px}.history-item p{font-size:11px;overflow-wrap:anywhere;margin:8px 0}.history-item small{font-size:10px}.ai-text{margin-top:15px}.ai-output-panel h3{margin-top:18px;font-size:16px}
.review-status{background:var(--bg);border-radius:10px;padding:12px 16px;display:flex;align-items:center;gap:14px;justify-content:space-between;margin-bottom:22px}.review-status p{margin:0;font-size:13px;overflow-wrap:anywhere}.review-status button{flex-shrink:0}.review-overview{border-left:3px solid var(--accent);padding:4px 0 4px 20px;margin:24px 0 32px}.review-players{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:24px}.review-player{padding:22px;border:1px solid var(--line);border-radius:12px;background:#fdfefb}.review-player h4{margin:0;font-size:17px;color:var(--jade);overflow-wrap:anywhere}.review-player .ai-text{font-size:14px}.ai-extra>summary{cursor:pointer;padding:14px 4px;min-height:48px;color:var(--jade-light);font-weight:600}.ai-extra>summary:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.ai-extra[open]>summary{margin-bottom:14px}@media(max-width:600px){.review-players{grid-template-columns:1fr}.review-player{padding:18px}.review-status{align-items:flex-start;flex-direction:column}.review-overview{padding-left:15px}}
