:root{color-scheme:light;--bg: #eff1f5;--card: #ffffff;--card2: #e6e9ef;--border: #ccd0da;--input-bg: #eff1f5;--text: #4c4f69;--muted: #6c6f85;--a: #1e66f5;--b: #fe640b;--ok: #40a02b;--danger: #d20f39;--accent2: #8839ef;--on-accent: #eff1f5;--shadow: 0 2px 10px rgba(76, 79, 105, .08);--shadow-lg: 0 10px 32px rgba(76, 79, 105, .18);--nav-bg: rgba(239, 241, 245, .85);--radius: 14px}:root[data-theme=dark]{color-scheme:dark;--bg: #24273a;--card: #363a4f;--card2: #494d64;--border: #494d64;--input-bg: #1e2030;--text: #cad3f5;--muted: #a5adcb;--a: #8aadf4;--b: #f5a97f;--ok: #a6da95;--danger: #ed8796;--accent2: #c6a0f6;--on-accent: #24273a;--shadow: 0 2px 10px rgba(0, 0, 0, .3);--shadow-lg: 0 10px 32px rgba(0, 0, 0, .5);--nav-bg: rgba(36, 39, 58, .85)}@media(prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;--bg: #24273a;--card: #363a4f;--card2: #494d64;--border: #494d64;--input-bg: #1e2030;--text: #cad3f5;--muted: #a5adcb;--a: #8aadf4;--b: #f5a97f;--ok: #a6da95;--danger: #ed8796;--accent2: #c6a0f6;--on-accent: #24273a;--shadow: 0 2px 10px rgba(0, 0, 0, .3);--shadow-lg: 0 10px 32px rgba(0, 0, 0, .5);--nav-bg: rgba(36, 39, 58, .85)}}*{box-sizing:border-box;margin:0;padding:0}::selection{background:color-mix(in srgb,var(--a) 30%,transparent)}body{background:radial-gradient(1200px 500px at 85% -10%,color-mix(in srgb,var(--a) 10%,transparent),transparent 60%),radial-gradient(900px 500px at -10% 110%,color-mix(in srgb,var(--accent2) 8%,transparent),transparent 60%),var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,sans-serif;line-height:1.6;-webkit-font-smoothing:antialiased;transition:background-color .25s,color .25s}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}::-webkit-scrollbar-track{background:transparent}main{max-width:1040px;margin:0 auto;padding:20px 16px 60px}main.bare{max-width:none;padding:0}.topnav{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:16px;padding:10px 20px;background:var(--nav-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}.brand{font-weight:700;font-size:17px;letter-spacing:.5px}.topnav nav{display:flex;gap:4px;flex:1}.topnav nav a{color:var(--muted);text-decoration:none;padding:6px 14px;border-radius:999px;font-size:14px;transition:color .15s,background .15s}.topnav nav a:hover{color:var(--text);background:var(--card2)}.topnav nav a.router-link-active{color:var(--on-accent);background:var(--a);font-weight:600}.nav-tools{display:flex;align-items:center;gap:8px}.nav-icon{position:relative}.nav-badge{position:absolute;top:-5px;right:-5px;background:var(--danger);color:#fff;border-radius:999px;font-size:11px;font-weight:700;min-width:17px;height:17px;display:flex;align-items:center;justify-content:center;padding:0 4px;pointer-events:none}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;box-shadow:var(--shadow);transition:border-color .2s}.card h2{font-size:15px;margin-bottom:12px;display:flex;align-items:center;gap:8px}.card h2 .right{margin-left:auto;font-size:12px;font-weight:400;color:var(--muted)}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}section{margin-bottom:14px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--border);background:var(--card2);color:var(--text);border-radius:10px;padding:8px 16px;font-size:14px;cursor:pointer;text-decoration:none;transition:transform .12s,filter .15s,box-shadow .15s}.btn:hover{filter:brightness(1.06);transform:translateY(-1px);box-shadow:var(--shadow)}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}.btn.primary{background:var(--a);border-color:var(--a);color:var(--on-accent);font-weight:600}.btn.ok{background:var(--ok);border-color:var(--ok);color:var(--on-accent);font-weight:600}.btn.danger{background:transparent;border-color:var(--danger);color:var(--danger)}.btn.ghost{background:transparent;box-shadow:none}.btn.sm{padding:4px 12px;font-size:13px;border-radius:8px}.btn.block{width:100%}label{display:block;font-size:13px;color:var(--muted);margin-bottom:10px}input,textarea,select{width:100%;margin-top:4px;background:var(--input-bg);border:1px solid var(--border);border-radius:8px;color:var(--text);padding:8px 12px;font-size:14px;font-family:inherit;transition:border-color .15s,box-shadow .15s}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--a);box-shadow:0 0 0 3px color-mix(in srgb,var(--a) 20%,transparent)}textarea{resize:vertical;min-height:70px}summary{transition:color .15s}summary:hover{color:var(--text)}.error{color:var(--danger);font-size:13px;margin:6px 0}.muted{color:var(--muted);font-size:13px}.row{display:flex;gap:10px;align-items:center}.row.wrap{flex-wrap:wrap}.grow{flex:1}.badge{display:inline-flex;align-items:center;gap:4px;font-size:12px;padding:2px 8px;border-radius:999px;border:1px solid var(--border);color:var(--muted)}.badge.ok{color:var(--ok);border-color:var(--ok)}.badge.a{color:var(--a);border-color:var(--a)}.badge.b,.badge.manual{color:var(--b);border-color:var(--b)}.dot{width:9px;height:9px;border-radius:50%;background:var(--muted);display:inline-block;flex:none}.dot.on{background:var(--ok);animation:pulse 1.6s infinite}@keyframes pulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--ok) 50%,transparent)}50%{box-shadow:0 0 0 6px transparent}}.hero{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.hero-days{font-size:52px;font-weight:800;line-height:1.1;background:linear-gradient(120deg,var(--a),var(--accent2));-webkit-background-clip:text;background-clip:text;color:transparent}.hero .spacer{flex:1}.timer-display{font-size:34px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:1px}.stat-num{font-size:24px;font-weight:700;font-variant-numeric:tabular-nums}.chips{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}.chip{border:1px solid var(--border);background:var(--input-bg);color:var(--muted);border-radius:999px;padding:4px 12px;font-size:13px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .12s}.chip:hover{border-color:var(--a);color:var(--text)}.chip.sel{background:var(--a);border-color:var(--a);color:var(--on-accent)}.chip.static{cursor:default;padding:1px 8px;font-size:12px}.chip.static.a{color:var(--a);border-color:var(--a);background:transparent}.chip.static.b{color:var(--b);border-color:var(--b);background:transparent}.plan-row{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px dashed var(--border)}.plan-row:last-child{border-bottom:none}.plan-row .content{flex:1;font-size:14px;word-break:break-all}.plan-row.done .content{text-decoration:line-through;color:var(--muted)}.plan-row input[type=checkbox]{width:16px;height:16px;accent-color:var(--ok);margin:0}.plan-del{color:var(--muted);background:none;border:none;cursor:pointer;font-size:15px;padding:2px 6px;border-radius:6px}.plan-del:hover{color:var(--danger);background:color-mix(in srgb,var(--danger) 12%,transparent)}.cal-head{display:flex;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap}.cal-head h2{margin:0}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.cal-dow{text-align:center;color:var(--muted);font-size:12px;padding:4px 0}.cal-cell{min-height:84px;background:var(--card);border:1px solid var(--border);border-radius:10px;padding:6px 8px;cursor:pointer;transition:border-color .15s,transform .12s,box-shadow .15s}.cal-cell:hover{border-color:var(--a);transform:translateY(-1px);box-shadow:var(--shadow)}.cal-cell.other{opacity:.35;cursor:default}.cal-cell.other:hover{border-color:var(--border);transform:none;box-shadow:none}.cal-cell.today{border-color:var(--a);box-shadow:0 0 0 1px var(--a)}.cal-cell .dnum{font-size:13px;font-weight:600;margin-bottom:4px}.cal-cell .u{font-size:12px;line-height:1.7;white-space:nowrap;overflow:hidden}.cal-cell .u .dot{width:7px;height:7px;margin-right:4px}.u-a{color:var(--a)}.u-b{color:var(--b)}.dot.a{background:var(--a)}.dot.b{background:var(--b)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#1819268c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:16px;animation:fade-in .15s ease}@keyframes fade-in{0%{opacity:0}}.modal{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:20px;width:100%;max-width:760px;max-height:85vh;overflow-y:auto;box-shadow:var(--shadow-lg);animation:pop-in .18s ease}@keyframes pop-in{0%{transform:scale(.96) translateY(8px);opacity:0}}.modal.narrow{max-width:420px}.modal h3{margin-bottom:14px}.modal .actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}.session-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:7px 0;border-bottom:1px dashed var(--border);font-size:13px}.session-row:last-child{border-bottom:none}.session-row .time{font-variant-numeric:tabular-nums}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.login-card{width:100%;max-width:360px;box-shadow:var(--shadow-lg)}.login-card h1{font-size:22px;text-align:center;margin-bottom:6px}.login-card .countdown-hint{text-align:center;margin-bottom:16px}.login-card form{margin-top:16px}.identity{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}.identity button{padding:12px;border-radius:10px;cursor:pointer;font-size:15px;border:1px solid var(--border);background:var(--input-bg);color:var(--muted);transition:all .15s}.identity button:hover{border-color:var(--a)}.identity button.active{border-color:var(--a);color:var(--text);background:var(--card2);font-weight:600}.chart{width:100%;height:340px}.chart-sm{width:100%;height:280px}.cols{display:grid;grid-template-columns:1fr 1fr;gap:16px}.col-title{font-size:14px;font-weight:600;margin-bottom:8px;display:flex;align-items:center;gap:8px}.msg-list{max-height:340px;overflow-y:auto;display:flex;flex-direction:column;gap:10px;padding:6px 2px}.msg-row{display:flex}.msg-row.mine{justify-content:flex-end}.bubble{max-width:78%;background:var(--card2);border-radius:14px 14px 14px 4px;padding:8px 14px}.msg-row.mine .bubble{background:color-mix(in srgb,var(--a) 16%,var(--card2));border-radius:14px 14px 4px}.msg-meta{display:flex;gap:8px;align-items:baseline;font-size:12px;margin-bottom:2px}.msg-meta .who{font-weight:600}.msg-meta .who.a{color:var(--a)}.msg-meta .who.b{color:var(--b)}.msg-time{color:var(--muted);font-size:11px}.msg-content{font-size:14px;white-space:pre-wrap;word-break:break-word}.msg-sys-row{display:flex;justify-content:center}.msg-sys{font-size:12px;color:var(--muted);background:var(--input-bg);border:1px solid var(--border);border-radius:999px;padding:3px 14px}.toasts{position:fixed;right:16px;bottom:16px;z-index:200;display:flex;flex-direction:column;gap:10px;max-width:340px}.toast{background:var(--card);border:1px solid var(--border);border-left:4px solid var(--ok);border-radius:12px;padding:12px 14px;box-shadow:var(--shadow-lg);animation:toast-in .25s ease}.toast.sys{border-left-color:var(--a)}@keyframes toast-in{0%{transform:translateY(14px);opacity:0}}.toast .t-head{display:flex;align-items:center;gap:8px;margin-bottom:4px;font-size:13px}.toast .t-head .who{font-weight:700}.toast .t-body{font-size:14px;white-space:pre-wrap;word-break:break-word}.toast .t-actions{display:flex;gap:8px;margin-top:8px;justify-content:flex-end}@media(max-width:720px){.grid2,.cols{grid-template-columns:1fr}.hero-days{font-size:40px}.cal-cell{min-height:64px;padding:4px 5px}.cal-cell .u{font-size:11px}.toasts{left:16px;max-width:none}.topnav{gap:8px;padding:10px 12px}.topnav nav a{padding:6px 9px}}
