:root{font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC",sans-serif;color:#dfe9ed;background:#0b1014;font-synthesis:none;font-size:13px;--muted:#81949f;--line:#26343d;--mint:#78e2c1;--amber:#edbd73;--red:#ff909a;--panel:#121b22}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,select{cursor:pointer}button{border:1px solid #35454f;border-radius:7px;padding:9px 13px;background:#1a262e;color:#dfe9ed;white-space:nowrap}button:hover{background:#253840}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--mint);outline-offset:3px}button:disabled{opacity:.45;cursor:default}.primary{color:#06291f;background:var(--mint);border-color:var(--mint);font-weight:650}.primary:hover{background:#a0f5d9}input[type=search],input[type=password],select{color:#cad7df;background:#0e161c;border:1px solid var(--line);border-radius:7px;padding:9px;min-width:0}input[type=checkbox]{accent-color:var(--mint);vertical-align:middle;margin:0 4px 1px 0}.topbar{height:81px;padding:0 30px;border-bottom:1px solid var(--line);display:flex;gap:30px;align-items:center;background:#0e161c}.brand{display:flex;gap:12px;align-items:center;text-decoration:none;color:#edf6f4;font-size:16px;font-weight:650;white-space:nowrap}.brand-mark{display:grid;place-items:center;border:1px solid #406f63;width:42px;height:42px;background:#1e3934;border-radius:11px;color:var(--mint);letter-spacing:-2px;padding-right:2px;font-size:22px}.brand small{display:block;margin-top:5px;font-size:9px;letter-spacing:1.5px;color:var(--muted);font-weight:500}.connection{display:flex;gap:9px;align-items:center;font-size:12px}.dot{display:inline-block;width:7px;height:7px;background:var(--mint);border-radius:50%;flex-shrink:0}.dot.live{box-shadow:0 0 0 4px #78e2c110}.dot.neutral{background:#70818b}.dot.stale,.dot.error{background:var(--amber)}.top-actions{margin-left:auto;display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px;min-width:0}.top-actions select{max-width:250px;font-size:12px}.muted{color:var(--muted)}.small{font-size:11px}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.notice{padding:11px 30px;background:#3e2d19;color:#f6ca89;border-bottom:1px solid #665030}.notice.error{background:#3b2029;color:#ffc2c6}.hidden{display:none!important}.auth{display:flex;gap:14px;align-items:center;margin:20px 30px;padding:18px 22px;border:1px solid #41605c;border-radius:10px;background:#132922}.auth div{margin-right:auto}.auth p{margin:6px 0 0;color:#aec3ba}.auth input{width:270px}main{max-width:1880px;margin:auto;padding:29px 30px 18px}.page-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:27px}.eyebrow{font-size:10px;letter-spacing:1.5px;color:#99b3b6;font-weight:650}h1{font-size:26px;letter-spacing:-.65px;line-height:1.35;margin:8px 0 7px;font-weight:600}.page-heading p{margin:0;color:var(--muted);font-size:12px}.session-meta{text-align:right}.session-meta>span{font-size:22px;color:#b2c5cd;letter-spacing:1px}.session-meta small{display:block;color:var(--muted);margin-top:7px;font-size:10px}.workspace{display:grid;grid-template-columns:minmax(280px,1fr) minmax(330px,1.15fr) minmax(340px,1.1fr);gap:20px;align-items:start}.column{min-width:0;display:flex;flex-direction:column;gap:14px}.column-heading{height:27px;display:flex;justify-content:space-between;align-items:center;margin-bottom:1px}.column-heading h2{font-size:14px;font-weight:600;margin:0}.section-number{font-family:ui-monospace,monospace;color:#6d818c;font-size:11px;margin-right:8px}.badge{display:inline-block;border:1px solid #2d414a;border-radius:5px;padding:3px 7px;color:#a5bcc4;background:#1b2b32;font-size:10px;line-height:1.25}.badge.good{background:#18352c;border-color:#2f5b47;color:var(--mint)}.badge.warn{background:#382f20;border-color:#554b32;color:var(--amber)}.badge.bad{background:#3b252c;border-color:#68404b;color:var(--red)}.panel{border:1px solid var(--line);border-radius:11px;padding:17px;background:var(--panel);min-width:0;overflow:hidden}.panel-top{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:15px}.panel h3{font-size:12px;font-weight:600;margin:0;color:#c5d8dd}.panel-top>.muted{flex-shrink:0}.table-panel{background:radial-gradient(ellipse at 40% 20%,#15362e66,transparent 90%),var(--panel)}.table-panel .panel-top{margin-bottom:22px}.board-label{color:#8aa99f;font-size:10px;margin-bottom:9px}.cards{display:flex;gap:7px;min-height:49px;align-items:center;flex-wrap:wrap}.card{width:38px;height:51px;border-radius:6px;display:flex;flex-direction:column;justify-content:space-between;padding:5px 6px 4px;background:#e6efea;color:#162a27;box-shadow:0 3px 0 #030a073d;font-family:ui-monospace,monospace;font-size:19px;line-height:1;font-weight:700}.card .suit{font-size:16px;align-self:flex-end}.card.red{color:#b34449}.card.unknown{color:#738981;background:#d0ddd4}.empty-cards{color:#6d8d82;font-size:12px}.hand-row{display:flex;align-items:center;justify-content:space-between;margin:24px 0 21px}.hero-stack{text-align:right}.hero-stack span{display:block;font-size:10px;color:var(--muted);margin-bottom:9px}.hero-stack strong{font-size:27px;font-family:ui-monospace,monospace;font-weight:500;letter-spacing:-1px}.table-metrics{display:grid;grid-template-columns:1fr .75fr 1.2fr;border-top:1px solid #2c413f;padding:16px 0 0;gap:8px}.table-metrics span{display:block;font-size:10px;color:var(--muted);margin-bottom:7px}.table-metrics strong{font-family:ui-monospace,monospace;font-size:17px;font-weight:500}.table-metrics>div:last-child strong{font-size:13px}.turn-status{border-top:1px solid #2c413f;padding-top:13px;margin-top:17px;font-size:11px;color:#98b5ab}.turn-status.active{color:var(--mint)}.turn-status.active:before{content:"● ";font-size:9px}.advice-panel{border-left:3px solid #60b49b}.hud-text{font-size:19px;color:#c8f5e6;font-weight:550;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere}.advice-panel #hud-state{margin-top:7px;line-height:1.6}.table-scroll{overflow-x:auto}.seats-table{width:100%;border-collapse:collapse;font-size:11px}.seats-table th{color:#708995;text-align:right;font-size:9px;font-weight:500;padding:0 0 10px}.seats-table th:first-child{text-align:left}.seats-table td{text-align:right;border-top:1px solid #24313a;padding:10px 0;color:#a8c0ca;font-family:ui-monospace,monospace}.seats-table td:first-child{text-align:left;font-family:inherit;color:#d2e0e5;max-width:120px;overflow-wrap:anywhere}.seat-nick{display:block;font-size:9px;color:#6f8894;margin-top:3px}.seats-table tr.hero td:first-child{color:var(--mint)}.seats-table tr.folded{opacity:.6}.seats-table .empty{text-align:center;font-family:inherit}.seat-state{font-size:9px}.timeline{display:flex;flex-direction:column;gap:12px}.street-line{display:grid;grid-template-columns:37px 1fr;gap:9px;font-size:11px;align-items:start}.street-name{color:#86a99e;font-family:ui-monospace,monospace;font-size:10px;padding-top:4px}.action-chips{display:flex;gap:5px;flex-wrap:wrap}.action-chip{padding:4px 6px;border:1px solid #304249;border-radius:4px;background:#192a30;color:#b9cfd5;font-size:10px}.action-chip.aggressive{border-color:#795b36;background:#352c1e;color:#efc790}.action-chip.fold{color:#778b97;border-color:#2c3841;background:#172129}.action-chip.hero{box-shadow:inset 0 -2px #65c8aa}.timeline-text{white-space:pre-wrap;line-height:1.8;color:#aec3cd;font-size:12px}.panel summary{cursor:pointer;font-size:12px;color:#b6cdd5;display:flex;justify-content:space-between;gap:9px}.panel summary:before{content:"›";color:#84a29f}.panel[open] summary:before{transform:rotate(90deg)}.panel summary>span{margin-left:auto}.details-body{margin-top:15px}.activity-panel{border-color:#354950}.logs-column .activity-panel{flex:none;height:236px;overflow:auto;scrollbar-color:#334b56 transparent;scrollbar-width:thin}.activity-panel h3{font-size:20px;color:#e5efef;line-height:1.5;overflow-wrap:anywhere}.activity-panel p{font-size:11px;color:var(--muted);line-height:1.75;margin:9px 0 15px;overflow-wrap:anywhere}.freshness{display:flex;gap:20px;border-top:1px solid #293a42;padding-top:13px}.freshness div{display:flex;flex-direction:column;gap:6px}.freshness span{font-size:10px;color:var(--muted)}.freshness b{font-family:ui-monospace,monospace;font-weight:500;font-size:12px}.issues:empty{display:none}.issue{margin-top:11px;background:#372d1f;border:1px solid #5c4a2d;color:#ecc588;border-radius:6px;padding:10px 11px;font-size:11px;line-height:1.65;overflow-wrap:anywhere}.issue.error{background:#35212a;border-color:#593641;color:#f0acb7}.issue span{color:#9c876d;font-size:10px;display:block;margin-top:3px}.inline-controls{display:flex;gap:10px;align-items:center;font-size:10px;color:var(--muted)}.preview-panel{padding-bottom:12px}.preview-wrap{aspect-ratio:4/3;max-height:70vh;max-height:70dvh;min-width:0;border-radius:6px;background:#080e12;border:1px solid #233039;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden}.preview-wrap canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;display:none}.preview-empty{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;color:#56707c;font-size:10px}.preview-empty b{color:#8ba5b0;font-size:12px;font-weight:500}.viewfinder{font-size:39px;line-height:1.25;color:#405964}.preview-footer{display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px 10px;margin-top:10px;color:#6f8b98;font-size:9px}.performance-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin:20px 0 22px}.performance-grid span{display:block;color:#93a8b1;font-size:10px}.performance-grid strong{display:block;font-size:26px;font-family:ui-monospace,monospace;font-weight:500;color:#d6eeea;margin:7px 0}.performance-grid small{font-size:8px;color:#5f7a87}.stage-bars{display:grid;gap:9px}.stage-bar{display:grid;grid-template-columns:65px 1fr 45px;gap:8px;align-items:center;font-size:9px;color:#92a9b4}.stage-bar svg{height:5px;width:100%;background:#22333e;border-radius:3px}.stage-bar rect{fill:#69b9a3}.stage-bar b{font-family:ui-monospace,monospace;text-align:right;font-weight:400;color:#b1c8cf}.sparkline-heading{display:flex;justify-content:space-between;font-size:9px;color:#657f8b;margin-top:19px}#sparkline{display:block;width:100%;height:48px;margin-top:8px}.transport-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px 14px;border-top:1px solid #263740;padding-top:13px;margin-top:12px}.transport-grid>div{display:flex;justify-content:space-between;gap:5px;font-size:9px;color:#819ba7}.transport-grid b{color:#c0d5dc;font-family:ui-monospace,monospace;font-weight:400;overflow-wrap:anywhere}.metadata{display:grid;grid-template-columns:60px 1fr;gap:10px;margin:0;font-size:10px;line-height:1.55}.metadata dt{color:#718d98}.metadata dd{margin:0;color:#aabfc9;overflow-wrap:anywhere}.raw{font-size:10px;line-height:1.6;color:#93b6c1;max-height:370px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere}.log-panel{padding:0}.log-toolbar{padding:14px 13px 10px;display:flex;gap:7px}.log-toolbar input{width:100%;font-size:11px}.log-toolbar select{font-size:10px;max-width:99px}.log-subbar{display:flex;justify-content:space-between;align-items:center;padding:0 14px 11px;border-bottom:1px solid var(--line);font-size:10px;color:#8fa6b2}.text-button{border:0;padding:3px;background:none;color:#839fae;font-size:10px}.text-button:hover{color:#bdd6e0;background:none}.log-list{height:680px;overflow:auto;scrollbar-color:#334b56 transparent;scrollbar-width:thin}.logs-column .activity-panel~.log-panel .log-list{height:430px}.log-row{padding:11px 13px;border-bottom:1px solid #1d2b34;line-height:1.75;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px;overflow-wrap:anywhere}.log-row.warn,.log-row.warning{background:#2c251933}.log-row.error,.log-row.fatal{background:#35212a66}.log-header{display:flex;gap:7px;align-items:center;margin-bottom:3px;line-height:1.4}.log-time{color:#547785;font-size:9px}.log-level{color:#8eb7c6;font-size:8px;min-width:31px;font-weight:650}.log-row.warn .log-level,.log-row.warning .log-level{color:var(--amber)}.log-row.error .log-level,.log-row.fatal .log-level{color:var(--red)}.log-row.trace .log-level,.log-row.debug .log-level{color:#708b98}.log-category{color:#77919f;font-size:9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.log-message{color:#adbec9;white-space:pre-wrap}.log-row.warn .log-message,.log-row.warning .log-message{color:#d0b691}.log-row.error .log-message,.log-row.fatal .log-message{color:#e4acb4}.log-footnote{padding:11px 14px;font-size:9px;color:#617e8e;border-top:1px solid var(--line)}.empty{text-align:center;color:#607d8a;font-size:11px;line-height:1.8;padding:13px 0}.log-empty{padding:75px 20px}.log-empty span{font-size:10px;color:#506876}.events{max-height:260px;overflow:auto;display:flex;flex-direction:column;gap:12px}.event-row{border-left:2px solid #3d675c;padding-left:10px;font-size:10px;color:#9db7c3;line-height:1.6;overflow-wrap:anywhere}.event-row time{display:block;color:#617e8e;font-family:ui-monospace,monospace;font-size:9px;margin-bottom:3px}footer{display:flex;justify-content:space-between;gap:15px;margin-top:23px;padding-top:16px;border-top:1px solid #213039;color:#5f7c88;font-size:9px}footer .dot{width:5px;height:5px;margin-right:4px;background:#5c9984}@media(min-width:1600px){.log-list{height:765px}.logs-column .activity-panel~.log-panel .log-list{height:515px}}@media(max-width:1170px){.topbar{gap:18px;padding:0 20px}.connection-age{display:none}.connection{font-size:11px}.top-actions select{max-width:160px}main{padding:24px 20px}.workspace{gap:14px;grid-template-columns:minmax(260px,1fr) minmax(300px,1.1fr)}.logs-column{grid-column:1/-1;display:grid;grid-template-columns:1.5fr 1fr}.logs-column>.column-heading,.logs-column>.activity-panel{grid-column:1/-1}.log-list,.logs-column .activity-panel~.log-panel .log-list{height:390px}.events{max-height:400px}.events-panel{align-self:start}}@media(max-width:760px){.topbar{height:auto;min-height:77px;padding:15px;gap:14px;flex-wrap:wrap}.brand{font-size:14px}.brand-mark{width:37px;height:37px}.connection{margin-left:auto}.top-actions{width:100%;margin:0}.top-actions select{margin-right:auto;max-width:none;flex:1 1 100%}.top-actions button{font-size:11px}main{padding:23px 15px}.page-heading{margin-bottom:23px}.page-heading h1{font-size:21px}.page-heading p{font-size:10px;max-width:250px;line-height:1.7}.session-meta{display:none}.workspace{grid-template-columns:1fr;gap:26px}.logs-column{display:flex;grid-column:auto}.log-list,.logs-column .activity-panel~.log-panel .log-list{height:470px}.auth{margin:15px;flex-wrap:wrap;padding:15px}.auth div{width:100%;font-size:12px}.auth input{width:auto;flex:1}.notice{padding:12px 15px;font-size:12px}footer{flex-direction:column;line-height:1.8}.events{max-height:260px}}
.subnav{display:flex;gap:6px;align-items:center}.subnav a{display:flex;gap:7px;align-items:center;padding:7px 11px;border:1px solid var(--line);border-radius:8px;color:#a5bcc4;background:#111b21;text-decoration:none;font-size:12px;white-space:nowrap}.subnav a:hover{background:#18252c}.subnav a:focus-visible{outline:2px solid var(--mint);outline-offset:3px}.subnav a.active{border-color:#406f63;background:#1e3934;color:#edf6f4}.subnav a b{font-weight:650;letter-spacing:.5px}.subnav small{color:var(--muted);font-size:10px}.subnav-count{font-size:10px;color:var(--muted);margin-left:2px}.subnav a.active .subnav-count{color:#b7d6cc}.hub{max-width:1000px;margin:0 auto;padding:40px 30px}.hub-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;margin-top:26px}.hub-card{display:block;padding:22px;border:1px solid var(--line);border-radius:14px;background:var(--panel);color:inherit;text-decoration:none}.hub-card:hover{border-color:#406f63;background:#15232a}.hub-card:focus-visible{outline:2px solid var(--mint);outline-offset:3px}.hub-card .brand-mark{width:46px;height:46px}.hub-card h2{margin:14px 0 6px;font-size:20px;font-weight:600}.hub-card p{margin:0;color:var(--muted);font-size:12px;line-height:1.7}.hub-status{display:flex;gap:8px;align-items:center;margin-top:16px;font-size:12px;color:#a5bcc4}.hub-note{margin-top:26px;color:var(--muted);font-size:12px;line-height:1.8}.hub-note code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:#cad7df;background:#0e161c;border:1px solid var(--line);border-radius:5px;padding:1px 5px}@media(max-width:1170px){.subnav small{display:none}}@media(max-width:760px){.subnav{order:3;width:100%}.subnav a{flex:1;justify-content:center}.hub{padding:26px 15px}}.street-row{grid-template-columns:40px 1fr;padding:2px 0}.street-row .street-name{font-family:inherit;font-size:11px;font-weight:650}.street-row.active .street-name{color:var(--mint)}.street-row.past .street-name{color:#7f93a0}.street-row.future .street-name{color:#4d5c65}.street-row.past .action-chip{opacity:.72}.street-row.future .street-empty{color:#4d5c65}.street-actions{align-items:center}.street-arrow{color:#5f7480;font-size:10px}.street-empty{color:#7f93a0;font-size:11px;padding-top:3px}.action-chip.pending{border-style:dashed;border-color:#3f6f62;color:var(--mint);background:transparent}
.street-timeline{gap:7px}.hud-advice{border-top:1px solid #2c413f;margin-top:17px;padding:14px 0 0 12px;border-left:3px solid #60b49b;margin-left:-2px}.hud-advice-top,.hud-section-title{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.hud-advice-top .board-label,.hud-section-title .board-label{margin-bottom:0}.advice-text{font-size:21px;color:#c8f5e6;font-weight:600;line-height:1.5;margin:6px 0 8px;overflow-wrap:anywhere}.advice-text.pending{font-size:14px;color:#7f93a0;font-weight:500}.advice-text.stale{opacity:.55}.hud-mirror{display:flex;gap:8px;align-items:baseline;font-size:11px;color:var(--muted);flex-wrap:wrap}.hud-mirror b{color:#b9d4da;font-weight:550;overflow-wrap:anywhere}.hud-mirror>span:last-child{margin-left:auto;font-size:10px}.hud-advice #hud-state{margin-top:5px;line-height:1.6;font-size:10px}.latency-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:8px;border-top:1px solid #2c413f;margin-top:16px;padding-top:14px}.latency-strip span{display:block;font-size:10px;color:var(--muted);margin-bottom:6px}.latency-strip strong{display:block;font-family:ui-monospace,monospace;font-size:18px;font-weight:500;color:#d6eeea}.latency-strip strong.warn{color:var(--amber)}.latency-strip strong.bad{color:var(--red)}.latency-strip small{display:block;overflow-wrap:anywhere}.latency-strip small{display:block;margin-top:5px;font-size:9px;color:#5f7a87;line-height:1.5;overflow-wrap:anywhere}.hud-section-title{border-top:1px solid #2c413f;margin:16px 0 10px;padding-top:14px}.archive{margin-top:26px}.archive-grid{display:grid;grid-template-columns:minmax(300px,.8fr) minmax(0,1.6fr);gap:20px;align-items:start;margin-top:14px}.archive-list{max-height:720px;overflow:auto;display:flex;flex-direction:column;gap:6px;scrollbar-width:thin}.hand-row-item{display:block;width:100%;text-align:left;white-space:normal;border:1px solid var(--line);border-radius:8px;padding:10px 11px;background:#0f171d;color:inherit}.hand-row-item:hover{background:#15222a}.hand-row-item.selected{border-color:#406f63;background:#16302a}.hand-row-item.live{opacity:.75;border-style:dashed}.hand-row-item[role=button],.outcome-chip[role=button]{cursor:pointer}.hand-row-item[role=button]:focus-visible,.outcome-chip[role=button]:focus-visible{outline:2px solid var(--mint);outline-offset:1px}.hand-row-top{display:flex;gap:8px;align-items:center}.hand-row-top .badge{margin-left:auto;flex-shrink:0}.hand-row-cards{color:#c8dde2;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hand-row-meta{margin-top:5px;font-size:10px;color:var(--muted)}.hand-row-summary{margin-top:5px;font-size:11px;color:#aec3cd;line-height:1.55;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.hand-row-summary.error{color:var(--red)}.archive-detail{max-height:900px;overflow:auto;scrollbar-width:thin}.hand-detail-head{display:flex;justify-content:space-between;gap:10px;align-items:center;flex-wrap:wrap}.hand-detail-head h3{font-size:15px!important}.hand-key{margin-top:6px;overflow-wrap:anywhere}.hand-section{border-top:1px solid #2c413f;margin-top:16px;padding-top:13px}.hand-section-title{display:flex;justify-content:space-between;gap:8px;align-items:baseline;margin-bottom:10px}.hand-section-title .board-label{margin-bottom:0}.ai-verdict{display:flex;gap:10px;align-items:baseline}.ai-verdict b{font-size:14px;font-weight:600;color:#dcebee;line-height:1.55}.ai-story{font-size:12px;color:#aec3cd;line-height:1.75;margin:9px 0 4px}.ai-issue{border:1px solid #2d3f47;border-left:3px solid #6f8894;border-radius:6px;padding:9px 11px;margin-top:9px;background:#10191f}.ai-issue.sev-高{border-left-color:var(--red)}.ai-issue.sev-中{border-left-color:var(--amber)}.ai-issue-top{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}.ai-issue-top b{font-size:12px;color:#dcebee}.ai-issue-top .muted{margin-left:auto}.ai-evidence{font-size:11px;color:#a8bec7;line-height:1.65;margin-top:6px;white-space:pre-wrap;overflow-wrap:anywhere}.ai-next{font-size:11px;color:var(--mint);margin-top:5px;line-height:1.6}.frame-strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.frame-thumb{margin:0}.frame-thumb img{width:100%;border-radius:5px;border:1px solid #233039;background:#080e12;min-height:60px;display:block}.frame-thumb figcaption{font-size:9px;color:#6f8b98;margin-top:5px}.hand-fold{border-top:1px solid #2c413f;margin-top:14px;padding-top:11px}.hand-fold summary{cursor:pointer;font-size:11px;color:#b6cdd5}.hand-fold-body{max-height:360px;overflow:auto;margin-top:9px}.hand-line{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px;color:#9fb6c0;line-height:1.7;white-space:pre-wrap;overflow-wrap:anywhere;border-bottom:1px solid #1a262e}.hand-line.warn,.hand-line.warning{color:#d0b691}.hand-line.error,.hand-line.fatal{color:#e4acb4}@media(max-width:1170px){.archive-grid{grid-template-columns:1fr}.archive-list{max-height:420px}}
.ai-verdict .badge,.hand-row-top .badge{flex-shrink:0;white-space:nowrap}
/* 每手结果队列:显著的 成功/失败 标签 */
.outcome-bar{margin-top:12px;padding:10px 13px;border:1px solid var(--line);border-radius:8px;background:#0f171d}.outcome-bar-head{display:flex;gap:12px;align-items:baseline;flex-wrap:wrap}.outcome-bar-head .board-label{margin-bottom:0}.outcome-legend{margin-left:auto;text-align:right;max-width:640px;line-height:1.5}.outcome-queue{display:flex;gap:8px;overflow-x:auto;padding:10px 0 4px;scrollbar-width:thin}.outcome-queue .empty{width:100%}.outcome-chip{display:flex;flex-direction:column;gap:5px;align-items:flex-start;min-width:118px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#121b22;color:inherit;text-align:left;white-space:nowrap;flex-shrink:0}.outcome-chip:hover{background:#18262e}.outcome-chip.selected{border-color:#406f63}.outcome-chip small{font-size:10px;color:var(--muted)}.outcome-chip .outcome-titles{font-size:10px;color:#e4acb4;max-width:220px;overflow:hidden;text-overflow:ellipsis}.outcome-tag{display:inline-block;padding:4px 9px;border-radius:6px;font-size:12px;font-weight:700;letter-spacing:1px;line-height:1.2;border:1px solid transparent;background:#1b2b32;color:#a5bcc4}.outcome-tag.ok{background:#1d5a45;border-color:#2f8a67;color:#dffbee}.outcome-tag.fail{background:#7a2431;border-color:#b8404f;color:#ffe3e6}.outcome-tag.live{background:#1f3d59;border-color:#3b6b96;color:#d9ecff}.outcome-tag.unknown{background:#5a4416;border-color:#9a7a2c;color:#ffe9b3}.outcome-section.unknown{border-left-color:#c99a3a}
/* 问题手的「AI 分析」按钮:chip / 列表行里小号,详情「结果」区大号 */
.ai-go{padding:3px 8px;font-size:10px;font-weight:650;color:#06291f;background:var(--mint);border-color:var(--mint);border-radius:6px;white-space:nowrap}.ai-go:hover:not(:disabled){filter:brightness(1.08)}.ai-go.big{font-size:12px;padding:7px 14px;margin-left:auto}.outcome-chip .ai-go{margin-top:2px}.hand-row-top .ai-go{flex-shrink:0;margin-left:auto}.outcome-bar-head #outcome-analyze-all{margin-left:8px}.outcome-tag.big{font-size:18px;padding:8px 16px;letter-spacing:2px}.hand-row-top .outcome-tag{flex-shrink:0}.outcome-section{border-left:3px solid #6f8894;padding-left:12px}.outcome-section.fail{border-left-color:var(--red)}.outcome-section.ok{border-left-color:var(--mint)}.outcome-head{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.outcome-head b{font-size:13px;color:#dcebee}.outcome-notes{font-size:11px;color:var(--muted);margin-top:6px;line-height:1.6}.outcome-reason{border:1px solid #3b252c;border-left:3px solid var(--red);border-radius:6px;padding:9px 11px;margin-top:9px;background:#150f13}.outcome-reason-top{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}.outcome-reason-top b{font-size:12px;color:#f3d6da}.outcome-reason-top .muted{margin-left:auto}.outcome-detail{font-size:11px;color:#d8c2c6;margin-top:5px;line-height:1.6;overflow-wrap:anywhere}.outcome-evidence{margin-top:5px}.outcome-logs{margin-top:7px}.outcome-logs summary{cursor:pointer;font-size:10px;color:#b6cdd5}
.hand-title{display:flex;gap:10px;align-items:center;min-width:0}.hand-title #hand-room{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:260px;color:#9fb6c0}.record-bar{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-top:12px;padding:10px 13px;border:1px solid var(--line);border-radius:8px;background:#0f171d;font-size:11px;color:#b6cdd5}.record-bar label{display:flex;gap:6px;align-items:center;white-space:nowrap}.record-toggle{font-weight:600;color:#dcebee}.record-bar select,.record-bar input[type=number]{color:#cad7df;background:#0e161c;border:1px solid var(--line);border-radius:7px;padding:5px 7px;font-size:11px}.record-bar input[type=number]{width:66px}.record-bar .badge{flex-shrink:0}.hand-group-title{position:sticky;top:0;z-index:1;display:flex;justify-content:space-between;gap:8px;padding:7px 3px 5px;background:var(--panel);font-size:10px;letter-spacing:.5px;color:#8aa99f;border-bottom:1px solid var(--line)}.hand-group-title+.hand-group-title{margin-top:8px}.hand-group-label{display:flex;gap:4px;align-items:baseline;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hand-group-label b{color:#c9e3dc;font-weight:650;letter-spacing:0}.version-pick{display:flex;gap:6px;align-items:center;font-size:11px;color:#b6cdd5;white-space:nowrap}.version-pick select{padding:4px 7px;font-size:11px;max-width:230px}.hand-version{font-size:11px;font-weight:400}.badge.rec{background:#2a2438;border-color:#4a3f66;color:#c9b7f2}.recording-table td{white-space:nowrap}.recording-actions{display:flex;gap:6px;justify-content:flex-end}.recording-actions button{padding:4px 9px;font-size:10px}.recording-player{width:100%;max-height:440px;margin-top:10px;background:#000;border:1px solid #233039;border-radius:6px}
.archive-list-panel .panel-top h3{white-space:nowrap}#archive-root{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;direction:rtl;text-align:right}
.tag-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.bomb-tag{display:inline-block;padding:4px 8px;border-radius:6px;font-size:11px;font-weight:700;letter-spacing:1px;line-height:1.2;color:#ffb35c;background:#3a2410;border:1px solid #e08a2e;white-space:nowrap;flex-shrink:0}.bomb-tag.big{font-size:12px;padding:4px 10px;margin-left:10px;vertical-align:middle}.hand-row-top .bomb-tag{flex-shrink:0}
/* 每手「轮到我 → 建议上屏」:灰 = 正常(≤3 s),琥珀 = 慢(>3 s),红 = 过慢(>8 s)或没上屏,none = 本手没有 hero 回合 */
.latency-tag{display:inline-block;padding:4px 8px;border-radius:6px;font-size:11px;font-weight:600;line-height:1.2;color:#a5bcc4;background:#1b2b32;border:1px solid #2d414a;white-space:nowrap;flex-shrink:0;font-variant-numeric:tabular-nums}.latency-tag.slow{color:var(--amber);background:#382f20;border-color:#554b32}.latency-tag.late{color:var(--red);background:#3b252c;border-color:#68404b}.latency-tag.none{color:#6d818c;background:transparent;border-style:dashed}.latency-tag.big{font-size:12px;padding:4px 10px;margin-left:10px;vertical-align:middle;font-weight:600}
/* 手牌档案入口(实时页第四区)与档案子页面 */
.archive-entry-panel{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap;margin-top:10px}.archive-entry-panel>div{min-width:0;flex:1 1 320px}.archive-entry-panel p{margin:0 0 6px}.archive-summary{font-size:13px;color:#dfe9ed}a.button{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border:1px solid var(--line);border-radius:8px;color:#a5bcc4;background:#111b21;text-decoration:none;font-size:12px;white-space:nowrap}a.button:hover{border-color:#406f63;color:#dfe9ed}a.button.primary{color:#06291f;background:var(--mint);border-color:var(--mint);font-weight:650}a.button.primary:hover{background:#a0f5d9;color:#06291f}.archive-open{font-size:13px;padding:11px 18px;flex-shrink:0}.archive-page{margin-top:14px}.archive-page .archive-list{max-height:calc(100vh - 330px)}.archive-page .archive-detail{max-height:calc(100vh - 330px)}#archive-root.mono{max-width:360px;display:inline-block}
/* 手牌回放子页面(/<line>/replay/):控制条吸顶,三栏 牌桌状态 / 画面 / 事件流;档案页每手的「回放」链接 */
.replay-head h1{font-size:22px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}.replay-head p{overflow-wrap:anywhere;font-size:11px}.replay-transport{position:absolute;left:0;right:0;bottom:0;z-index:2;display:flex;flex-direction:column;gap:2px;padding:30px 10px 6px;background:linear-gradient(to top,#000000d9 0,#00000099 55%,#0000 100%);font-size:11px;color:#e6f1f3;opacity:1;transition:opacity .25s ease}.replay-video-wrap.controls-hidden .replay-transport{opacity:0;pointer-events:none}.replay-video-wrap.controls-hidden .replay-transport:has(:focus-visible){opacity:1;pointer-events:auto}.replay-video-wrap.controls-hidden .replay-video{cursor:none}.replay-transport input[type=range]{display:block;width:100%;height:16px;margin:0;accent-color:var(--mint);cursor:pointer}.replay-transport input[type=range]:disabled{cursor:default;opacity:.5}.replay-controls{display:flex;gap:4px;align-items:center;min-width:0}.replay-controls-spacer{flex:1 1 auto}.replay-transport button.replay-ctl{padding:5px 9px;border:0;border-radius:5px;background:transparent;color:#e6f1f3;font-size:12px;line-height:1.2}.replay-transport button.replay-ctl:hover:not(:disabled){background:#ffffff24;color:#fff}.replay-transport button.replay-ctl:disabled{opacity:.45}.replay-transport button.replay-ctl-play{min-width:74px;text-align:left;font-weight:650}.replay-transport select{flex:0 0 auto;width:auto;min-width:62px;max-width:none;padding:3px 6px;border:1px solid #ffffff38;border-radius:5px;background:#00000080;color:#e6f1f3;font-size:11px}.replay-time{font-size:12px;color:#e6f1f3;white-space:nowrap;font-variant-numeric:tabular-nums;padding:0 6px;text-shadow:0 1px 2px #000}.replay-grid{display:grid;grid-template-columns:minmax(300px,1fr) minmax(320px,1.15fr) minmax(320px,1.1fr);gap:20px;align-items:start}.replay-flags{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}.replay-flags:empty{display:none}.badge.bomb{color:#ffb35c;background:#3a2410;border-color:#e08a2e}.replay-video-wrap{position:relative;min-height:120px;display:flex;align-items:center;justify-content:center;border-radius:6px;background:#080e12;border:1px solid #233039;overflow:hidden}.replay-video{width:100%;max-height:72vh;display:block;background:#000;cursor:pointer}.replay-video-empty{padding:40px 20px 92px}.replay-frame-wrap{aspect-ratio:9/16;max-height:60vh}.replay-events-panel{padding:0}.replay-events-bar{padding:12px 14px;border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:flex-start;gap:6px 14px}.replay-events-bar label{display:flex;gap:6px;align-items:center;white-space:nowrap}.replay-keys{flex-basis:100%}.replay-events{height:calc(100vh - 300px);min-height:360px;overflow:auto;scrollbar-width:thin;scrollbar-color:#334b56 transparent}.replay-event{display:grid;grid-template-columns:58px 1fr;gap:8px;padding:6px 12px;border-bottom:1px solid #1a262e;font-size:11px;line-height:1.5;cursor:pointer;opacity:.5;overflow-wrap:anywhere}.replay-event:hover{background:#15222a}.replay-event.past{opacity:1}.replay-event.current{background:#16302a;box-shadow:inset 3px 0 var(--mint)}.replay-t{color:#547785;font-size:10px;padding-top:2px;white-space:nowrap}.replay-event-body{display:flex;gap:5px;flex-wrap:wrap;align-items:center;min-width:0}.replay-chip{padding:2px 7px;border:1px solid #304249;border-radius:4px;background:#192a30;color:#b9cfd5;font-size:10px}.replay-chip.strong{font-weight:650;color:#dcebee}.replay-chip.state{border-color:#3f6f62;background:#16302a;color:#c8f5e6}.replay-chip.action{border-color:#795b36;background:#352c1e;color:#efc790}.replay-chip.action.fold{color:#778b97;border-color:#2c3841;background:#172129}.replay-chip.hero{border-color:#2f8a67;background:#1d5a45;color:#dffbee}.replay-chip.advice{border-color:#60b49b;background:#132922;color:#c8f5e6}.replay-chip.hud{border-color:#3b6b96;background:#1f3d59;color:#d9ecff}.replay-chip.gate{border-color:#68404b;background:#3b252c;color:#ffc2c6}.replay-chip.skip{border-color:#554b32;background:#382f20;color:var(--amber)}.replay-chip.bomb{border-color:#e08a2e;background:#3a2410;color:#ffb35c}.replay-text{color:#8aa99f}.replay-event.log .replay-text{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px;color:#9fb6c0}.replay-event.log.lvl-warn .replay-text,.replay-event.log.lvl-warning .replay-text{color:#d0b691}.replay-event.log.lvl-error .replay-text,.replay-event.log.lvl-fatal .replay-text{color:#e4acb4}.replay-events:not(.all-logs) .replay-event.log.lvl-trace,.replay-events:not(.all-logs) .replay-event.log.lvl-debug,.replay-events:not(.all-logs) .replay-event.log.lvl-info{display:none}.replay-event.marker .replay-text{color:#c9e3dc;font-weight:650}.replay-event.round .replay-text{color:#c8f5e6}a.button.replay-link{padding:3px 8px;font-size:10px}.hand-row-top a.button.replay-link{flex-shrink:0}.outcome-chip a.button.replay-link{margin-top:2px}.hand-detail-head a.button.replay-link{font-size:12px;padding:7px 14px}@media(max-width:1170px){.replay-grid{grid-template-columns:1fr 1fr}.replay-grid>section:last-child{grid-column:1/-1}.replay-events{height:420px}}@media(max-width:760px){.replay-grid{grid-template-columns:1fr}.replay-transport{padding:24px 6px 4px}.replay-transport button.replay-ctl{padding:6px 8px}.replay-transport button.replay-ctl-play{min-width:0}.replay-ctl-label{display:none}.replay-time{font-size:11px;padding:0 4px}}
/* 回放页:「用同一套 Swift 代码重跑这手」面板 */
.swift-replay{margin:0 0 18px}.swift-replay .panel-top{flex-wrap:wrap;margin-bottom:10px}.swift-replay h3{display:flex;gap:10px;align-items:center;font-size:13px!important}.swift-replay .inline-controls{flex-wrap:wrap;min-width:0}.swift-replay .inline-controls>span{overflow-wrap:anywhere;line-height:1.5}.swift-progress{display:flex;flex-direction:column;gap:8px}.swift-log{max-height:180px;font-size:10px;margin:0}.swift-result{display:flex;flex-direction:column;gap:10px}.swift-summary-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.swift-summary-row b{font-size:13px;color:#dcebee;line-height:1.5}.swift-first{font-size:11px;color:#f3d6da;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;overflow-wrap:anywhere;line-height:1.6}.swift-first:empty{display:none}.swift-diff td{white-space:normal;overflow-wrap:anywhere;text-align:left;font-size:10px;vertical-align:top}.swift-diff td:first-child{color:#d2e0e5;font-family:inherit}.swift-diff th{text-align:left}.swift-source{display:flex;gap:14px;align-items:center;flex-wrap:wrap;font-size:11px;color:#b6cdd5;border-top:1px solid #2c413f;padding-top:10px}.swift-source .board-label{margin:0}.swift-source label{display:flex;gap:5px;align-items:center}.swift-source input[type=radio]{accent-color:var(--mint);margin:0}.swift-source input[type=radio]:disabled+*{opacity:.5}
#swift-code{white-space:pre-line;margin:0 0 10px}
.ai-code{margin:8px 0 2px;color:#9fb6c0;line-height:1.6;overflow-wrap:anywhere}.ai-code.none{color:#c9a978}.ai-code b{color:#cfe3e8;font-weight:600}.ai-code-link{color:var(--mint);text-decoration:none}.ai-code-link:hover{text-decoration:underline}.ai-part{margin-top:8px}.ai-part-label{font-size:10px;color:#7f98a4;letter-spacing:.04em;margin-bottom:3px}.ai-chain{margin:0;padding-left:20px;font-size:11px;color:#a8bec7;line-height:1.65}.ai-chain li{margin:2px 0;overflow-wrap:anywhere}.ai-chain li.bad,.ai-fix-loc.bad{color:#e4acb4}.ai-src{display:inline-block;font-size:9px;border:1px solid #37505a;border-radius:4px;padding:0 5px;margin-right:6px;color:#9fb6c0}.ai-src.code{border-color:#406f63;color:var(--mint)}.ai-ref-bad{color:var(--red);font-size:10px}.ai-fix{font-size:11px;color:#c3d6dc;line-height:1.65}.ai-fix-loc{margin-top:3px;padding-left:8px;border-left:2px solid #2d3f47;overflow-wrap:anywhere}
.timing-export{padding:3px 9px;font-size:11px;border-radius:6px;white-space:nowrap}.timing-bar{margin-top:12px;padding:10px 13px;border:1px solid var(--line);border-radius:8px;background:#0f171d}.timing-table{margin-top:8px;table-layout:fixed;min-width:1460px}.timing-table tr:first-child th:first-child{width:130px}.timing-table th{padding:0 8px 6px}.timing-table th.timing-group{text-align:center;color:#99b3b6;border-bottom:1px solid #24313a}.timing-table td{padding:7px 8px;white-space:nowrap}.timing-table td small{display:block;margin-top:2px;color:var(--muted);font-size:9px;white-space:normal;overflow-wrap:anywhere}.timing-table tr+tr th:first-child{text-align:right}.timing-table tr.current td{color:var(--mint)}.timing-table .group-start{border-left:1px solid #3a4c57}.timing-table tr.timing-version{cursor:pointer}.timing-table tr.timing-version:hover td{background:#152028}.timing-table .timing-caret{color:var(--muted)}.timing-table tr.timing-hand td{background:#0c1419;border-top-color:#1b262d;padding-top:5px;padding-bottom:5px;font-size:10px;color:#93a9b3}.timing-table tr.timing-hand td:first-child{padding-left:22px}.timing-hand-link{border:0;background:none;padding:0;color:#b9d4dc;font:inherit;cursor:pointer;text-decoration:underline dotted}.timing-hand-link:hover{color:var(--mint);background:none}
.hand-group-squid{display:flex;flex-direction:column;gap:6px;margin:6px 0;padding:6px 6px 8px;border:1px solid #2f6f69;border-left:3px solid #449e95;border-radius:9px;background:#0c1b1d}.hand-group-squid+.hand-group-squid{margin-top:12px}.hand-group-squid-title{display:flex;align-items:center;gap:8px;padding:2px 3px 6px;border-bottom:1px dashed #2f6f69;font-size:11px;color:#9ce8e0;min-width:0}.hand-group-squid-title>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
