:root{--pink:#fb7299;--pink-hover:#fc8ba9;--pink-active:#e45a82;--pink-bg:#fb729914;--blue:#23ade5;--t1:#18191c;--t2:#61666d;--t3:#9499a0;--bg:#f6f7f8;--card:#fff;--line:#e3e5e7;--line-light:#f1f2f3;--danger:#f05a5a;--radius:10px;--shadow:0 1px 2px #0000000a, 0 2px 10px #0000000a}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--t1);-webkit-font-smoothing:antialiased;font-family:PingFang SC,HarmonyOS Sans SC,Microsoft YaHei,Helvetica Neue,Arial,sans-serif;font-size:14px}button{font-family:inherit}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#d6d8db;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#b8babd}::-webkit-scrollbar-track{background:0 0}.topbar{z-index:40;background:var(--card);position:sticky;top:0;box-shadow:0 1px 2px #00000012}.topbar-inner{justify-content:space-between;align-items:center;gap:12px;max-width:1200px;height:60px;margin:0 auto;padding:0 20px;display:flex}.brand{align-items:center;gap:10px;min-width:0;display:flex}.brand-text h1{margin:0;font-size:18px;font-weight:700;line-height:1.2}.brand-text p{color:var(--t3);margin:0;font-size:11px}.topbar-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.btn{cursor:pointer;white-space:nowrap;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;gap:6px;height:32px;padding:0 14px;font-size:13px;transition:all .15s;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--pink);color:#fff}.btn-primary:hover:not(:disabled){background:var(--pink-hover)}.btn-primary:active:not(:disabled){background:var(--pink-active)}.btn-ghost{background:var(--card);border-color:var(--line);color:var(--t2)}.btn-ghost:hover:not(:disabled){color:var(--pink);border-color:var(--pink);background:var(--pink-bg)}.btn-text-danger{color:var(--danger);background:0 0}.btn-text-danger:hover{background:#f05a5a0f}.btn-link{color:var(--pink);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px}.btn-link:hover{text-decoration:underline}.btn-link.danger{color:var(--danger)}.btn.sm{height:28px;padding:0 12px;font-size:12px}button:focus-visible,a:focus-visible{outline:2px solid var(--pink);outline-offset:2px}.icon-btn{border:1px solid var(--line);background:var(--card);width:30px;height:30px;color:var(--t2);cursor:pointer;border-radius:8px;flex:none;justify-content:center;align-items:center;transition:all .15s;display:inline-flex}.icon-btn:hover{color:var(--pink);border-color:var(--pink);background:var(--pink-bg)}.icon-btn.danger:hover{color:var(--danger);border-color:var(--danger);background:#f05a5a0f}.main{max-width:1200px;margin:0 auto;padding:16px 20px 48px}.toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.seg{background:var(--card);border:1px solid var(--line);border-radius:10px;gap:2px;padding:3px;display:inline-flex}.seg button{height:28px;color:var(--t2);cursor:pointer;background:0 0;border:none;border-radius:7px;padding:0 16px;font-size:13px;transition:all .15s}.seg button.on{background:var(--pink);color:#fff;font-weight:600}.seg button:not(.on):hover{color:var(--pink)}.stats{color:var(--t3);font-size:12px}.loading{text-align:center;color:var(--t3);padding:120px 0}.week-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.week-scroll{min-height:420px;max-height:calc(100vh - 220px);overflow:auto}.week-inner{min-width:880px}.week-head{z-index:5;background:var(--card);border-bottom:1px solid var(--line);display:flex;position:sticky;top:0}.week-gutter-head{width:56px;color:var(--t3);flex:none;justify-content:center;align-items:center;font-size:11px;display:flex}.week-day-head{text-align:center;min-width:118px;color:var(--t1);flex:1;padding:10px 0;font-size:14px;font-weight:600}.week-day-head.today{color:var(--pink)}.week-body{height:1440px;display:flex}.week-gutter{flex:none;width:56px;position:relative}.gutter-hour{color:var(--t3);-webkit-user-select:none;user-select:none;font-variant-numeric:tabular-nums;font-size:10px;line-height:1;position:absolute;right:8px;transform:translateY(-50%)}.week-col{border-right:1px solid var(--line-light);background-image:repeating-linear-gradient(to bottom, var(--line-light) 0, var(--line-light) 1px, transparent 1px, transparent 60px);cursor:copy;flex:1;min-width:118px;position:relative}.week-col:last-child{border-right:none}.week-col.today{background-color:#fb72990b}.entry{background:color-mix(in srgb, var(--c) 11%, #fff);border-left:3px solid var(--c);cursor:pointer;-webkit-user-select:none;user-select:none;z-index:1;border-radius:8px;padding:5px 8px;transition:box-shadow .15s,transform .15s;position:absolute;left:5px;right:5px;overflow:hidden}.entry:hover{z-index:3;transform:translateY(-1px);box-shadow:0 4px 14px #00000024}.entry-name{color:var(--t1);white-space:nowrap;align-items:center;gap:5px;font-size:12px;font-weight:600;display:flex}.entry-name-text{text-overflow:ellipsis;overflow:hidden}.entry-time{color:var(--t2);font-variant-numeric:tabular-nums;white-space:nowrap;margin-top:2px;font-size:10.5px}.entry-title{color:var(--t2);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:11px;overflow:hidden}.live-badge{background:var(--pink);color:#fff;border-radius:8px;flex:none;padding:1px 5px;font-size:9.5px;font-weight:500;animation:1.6s ease-in-out infinite live-pulse}@keyframes live-pulse{0%,to{opacity:1}50%{opacity:.55}}.now-line{border-top:2px solid var(--pink);z-index:2;pointer-events:none;position:absolute;left:0;right:0}.now-line span{background:var(--pink);border-radius:50%;width:8px;height:8px;position:absolute;top:-5px;left:-3px;box-shadow:0 0 0 2px #fff}.week-hint{color:var(--t3);text-align:center;border-top:1px solid var(--line-light);margin:0;padding:10px 16px;font-size:12px}.day-chips{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.chip{background:var(--card);border:1px solid var(--line);height:30px;color:var(--t2);cursor:pointer;border-radius:15px;align-items:center;gap:6px;padding:0 14px;font-size:13px;transition:all .15s;display:inline-flex}.chip:hover{color:var(--pink);border-color:var(--pink)}.chip.on{background:var(--pink);border-color:var(--pink);color:#fff;font-weight:600}.chip.sm{border-radius:13px;height:26px;padding:0 10px;font-size:12px}.chip-dot{background:var(--pink);border-radius:50%;width:6px;height:6px}.chip.on .chip-dot{background:#fff}.day-list{flex-direction:column;gap:10px;max-width:760px;margin:0 auto;display:flex}.day-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);cursor:pointer;border:1px solid #0000;align-items:center;gap:12px;padding:13px 16px;transition:all .15s;display:flex}.day-card:hover{border-color:var(--pink)}.avatar{background:var(--c,var(--pink));color:#fff;border-radius:50%;flex:none;justify-content:center;align-items:center;width:40px;height:40px;font-size:15px;font-weight:600;display:flex}.day-info{flex:1;min-width:0}.day-name{align-items:center;gap:6px;font-size:15px;font-weight:600;display:flex}.day-time{color:var(--t2);font-variant-numeric:tabular-nums;align-items:center;gap:5px;margin-top:3px;font-size:12.5px;display:flex}.day-title{color:var(--t3);white-space:nowrap;text-overflow:ellipsis;margin-top:3px;font-size:12.5px;overflow:hidden}.day-empty{text-align:center;color:var(--t3);padding:70px 0 90px}.day-empty p{margin:0 0 16px;font-size:14px}.mask{z-index:100;background:#00000073;justify-content:center;align-items:center;padding:20px;animation:.15s fade-in;display:flex;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}}.modal{background:var(--card);border-radius:12px;width:440px;max-width:100%;max-height:86vh;padding:20px 22px 18px;animation:.18s pop-in;overflow:auto}.modal.wide{width:500px}@keyframes pop-in{0%{opacity:0;transform:scale(.96)translateY(10px)}}.modal-title{justify-content:space-between;align-items:center;margin:0 0 16px;font-size:16px;font-weight:700;display:flex}.dialog-empty{text-align:center;color:var(--t2);padding:24px 0 10px}.dialog-empty-text{color:var(--t3);text-align:center;padding:20px 0}.form-item{margin-bottom:14px}.form-label{color:var(--t2);margin-bottom:6px;font-size:12px;display:block}.input{border:1px solid var(--line);width:100%;height:34px;color:var(--t1);background:var(--card);border-radius:8px;outline:none;padding:0 10px;font-family:inherit;font-size:13px;transition:all .15s}.input:focus{border-color:var(--pink);box-shadow:0 0 0 3px #fb729924}.form-row{gap:10px;display:flex}.form-row .form-item{flex:1}.select-row{align-items:center;gap:8px;display:flex}.color-dot{border-radius:50%;flex:none;width:14px;height:14px}.day-picker{flex-wrap:wrap;gap:6px;display:flex}.form-error{color:var(--danger);margin:-4px 0 10px;font-size:12px}.form-actions{align-items:center;gap:10px;margin-top:18px;display:flex}.form-actions .spacer{flex:1}.swatches{flex-wrap:wrap;gap:8px;display:flex}.swatch{width:24px;height:24px;box-shadow:0 0 0 1px var(--line);cursor:pointer;border:2px solid #fff;border-radius:50%;transition:all .15s}.swatch:hover{transform:scale(1.1)}.swatch.on{box-shadow:0 0 0 2px var(--pink);transform:scale(1.12)}.sm-toolbar{justify-content:flex-end;margin-bottom:12px;display:flex}.sm-list{flex-direction:column;gap:8px;max-height:320px;display:flex;overflow:auto}.sm-row{border:1px solid var(--line-light);border-radius:10px;align-items:center;gap:10px;padding:8px 10px;transition:border-color .15s;display:flex}.sm-row:hover{border-color:var(--line)}.sm-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.sm-name{white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.sm-sub{color:var(--t3);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.sm-acts{flex:none;gap:6px;display:flex}.footer{text-align:center;color:var(--t3);flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;margin-top:24px;font-size:12px;display:flex}.toast{color:#fff;z-index:200;background:#18191ce6;border-radius:10px;max-width:80vw;padding:9px 18px;font-size:13px;animation:.2s toast-in;position:fixed;bottom:40px;left:50%;transform:translate(-50%)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}}@media (max-width:720px){.topbar-inner{height:56px;padding:0 12px}.brand-text h1{font-size:16px}.brand-text p{display:none}.main{padding:12px 12px 40px}.btn{padding:0 10px}.hide-sm{display:none}}
