:root{--ink:#2f2a24;--ink-soft:#6d6357;--paper:#fffaf0;--bg:#f4ecdc;--edge:#e9dcc4;--accent:#e0893a;--ok:#3f8a5b;--ok-soft:#e3f0e4;--warn:#b7791f;--warn-soft:#fbf0d9;--bad:#c0503f;--bad-soft:#f8e1dc;--muted-soft:#eee8dc;color:var(--ink);font-family:Nunito,PingFang SC,Hiragino Sans GB,Microsoft YaHei,system-ui,sans-serif}@media (prefers-color-scheme:dark){:root{--ink:#f1e9dc;--ink-soft:#b9ad9c;--paper:#2a2621;--bg:#1d1a16;--edge:#3d372f;--ok-soft:#233528;--warn-soft:#3a3020;--bad-soft:#3d2622;--muted-soft:#34302a;--ok:#7cc493;--warn:#e2b05a;--bad:#e98a7b}}*{box-sizing:border-box}body{background:var(--bg);margin:0}main{max-width:980px;margin:0 auto;padding:32px 16px 64px}.brand{letter-spacing:.12em;text-transform:uppercase;color:var(--accent);font-size:13px;font-weight:800}h1{margin:6px 0 4px;font-size:28px}.lead{color:var(--ink-soft);margin:0 0 16px}.days{flex-wrap:wrap;gap:6px;display:flex}.days button{border:1px solid var(--edge);background:var(--paper);color:inherit;font:inherit;cursor:pointer;border-radius:99px;padding:5px 12px;font-size:14px}.days button.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:700}.days small{opacity:.75;margin-left:4px}.empty{color:var(--ink-soft);padding:24px 0}.insights{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;margin:24px 0;display:grid}.insights:empty{display:none}.card{background:var(--paper);border:1px solid var(--edge);border-radius:14px;padding:14px 16px}.card h2{margin:0 0 8px;font-size:15px}.card ul{margin:0;padding-left:18px;font-size:14px;line-height:1.8}.card .none{color:var(--ink-soft);font-size:14px}.card .count{color:var(--ink-soft)}.session{margin-bottom:20px}.session-head{flex-wrap:wrap;align-items:baseline;gap:6px 16px;margin:0 0 8px;display:flex}.session-head h3{margin:0;font-size:17px}.session-head .stat{color:var(--ink-soft);font-size:14px}.session-head .stat b{color:var(--ink)}table{border-collapse:collapse;background:var(--paper);border:1px solid var(--edge);border-radius:14px;width:100%;overflow:hidden}th,td{text-align:left;border-top:1px solid var(--edge);vertical-align:top;padding:9px 12px;font-size:14px}th{color:var(--ink-soft);background:var(--muted-soft);border-top:0;font-size:12px;font-weight:700}td.time{color:var(--ink-soft);white-space:nowrap;font-variant-numeric:tabular-nums}.where small,.said small{color:var(--ink-soft);margin-top:2px;font-size:12px;display:block}.said .text{font-size:15px;font-weight:700}.said .weak{-webkit-text-decoration:underline wavy var(--bad);text-decoration:underline wavy var(--bad);text-underline-offset:3px}.said .silent{color:var(--ink-soft);font-weight:400}.play{border:1px solid var(--edge);color:inherit;cursor:pointer;vertical-align:1px;background:0 0;border-radius:99px;width:26px;height:26px;margin-right:6px}.badge{white-space:nowrap;border-radius:99px;padding:1px 9px;font-size:12px;font-weight:700;display:inline-block}.badge.ok{background:var(--ok-soft);color:var(--ok)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.bad{background:var(--bad-soft);color:var(--bad)}.badge.muted{background:var(--muted-soft);color:var(--ink-soft)}.result small{color:var(--ink-soft);margin-top:3px;font-size:12px;display:block}@media (width<=640px){th.where-h,td.where{display:none}td,th{padding:8px}}.mastery{margin-top:24px}.mastery:empty{display:none}.mastery h2 small{opacity:.7;margin-left:8px;font-size:12px;font-weight:400}.mastery table{border-collapse:collapse;width:100%}.mastery th{text-align:left;vertical-align:top;white-space:nowrap;background:0 0;width:96px;padding:8px 8px 8px 0;font-size:14px}.mastery th small{opacity:.7;font-size:12px;font-weight:400;display:block}.mastery td{padding:6px 0}.point{background:#f1ece2;border:1px solid #0000;border-radius:10px;margin:0 6px 6px 0;padding:3px 10px;font-size:13px;line-height:1.4;display:inline-block}.point small{opacity:.75;font-size:11px;display:block}.point.muted{opacity:.5}.point.warn{background:#fbe9c8}.point.ok{background:#e5f1e6}.point.ok.strong{border-color:#4f8a5b;font-weight:700}.point.bad{background:#f8dcd8}.people{margin-bottom:8px}.trail summary{cursor:pointer;font-weight:700}.trail summary small{color:var(--ink-soft);margin-left:8px;font-weight:400}.trail table{margin-top:10px;font-size:13px}.trail td{vertical-align:top;padding:2px 8px 2px 0}.trail .detail{word-break:break-all;font-family:ui-monospace,monospace}.trail .detail b{color:var(--ink-soft);font-family:inherit}.trail tr.bad td{color:#b3261e}
