:root{--p:#4431df;--p2:#6a55f4;--bg:#f8f6ff;--card:#fff;--soft:#f0edff;--ink:#211d32;--muted:#6d6780;--line:#ded9ee;--error:#ca3e4e;--shadow:0 12px 34px rgba(52,38,116,.09);--week-col:148px}
body{background:radial-gradient(circle at 88% -8%,rgba(111,91,244,.14),transparent 31%),var(--bg);font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","Microsoft YaHei",sans-serif;overflow-x:hidden}
header{background:color-mix(in srgb,var(--soft) 91%,transparent);backdrop-filter:saturate(145%) blur(18px);-webkit-backdrop-filter:saturate(145%) blur(18px);box-shadow:0 1px 0 rgba(72,53,147,.05)}
.brand{font-family:Georgia,"Songti SC",serif;font-weight:700;letter-spacing:-.02em}.brand img{box-shadow:0 5px 14px rgba(63,43,214,.18)}
main{max-width:940px;padding-top:20px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;margin:4px 2px 18px}.page-head h1{font:700 31px/1.05 Georgia,"Songti SC",serif;letter-spacing:-.025em;margin:4px 0 0}.eyebrow{font-size:11px;letter-spacing:.14em;font-weight:750;color:var(--p);text-transform:uppercase}.live-clock{font-variant-numeric:tabular-nums;color:var(--muted);font-size:13px}.view-label,.live-dot{font-size:12px;color:var(--p);background:var(--soft);padding:6px 10px;border-radius:999px}.live-dot:before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:#27a87a;margin-right:6px;box-shadow:0 0 0 4px rgba(39,168,122,.12)}
.focus-card{position:relative;overflow:hidden;border:1px solid rgba(83,64,178,.18);border-radius:22px;background:linear-gradient(145deg,#fff,#f6f3ff);padding:20px;min-height:132px;box-shadow:var(--shadow);display:grid;grid-template-columns:1fr auto;gap:14px;align-items:center}.focus-card h2{font:700 23px/1.2 Georgia,"Songti SC",serif;margin:7px 0}.focus-card p{margin:0;font-size:14px}.focus-card>strong{color:var(--p);font-size:20px;font-variant-numeric:tabular-nums}.focus-add{color:var(--p);font-weight:700}.focus-progress{position:absolute;left:20px;right:20px;bottom:15px;height:4px;background:#e7e2f8;border-radius:99px;overflow:hidden}.focus-progress i{display:block;width:100%;height:100%;transform-origin:left;background:linear-gradient(90deg,var(--p),#8a79ff);transition:transform .8s linear}.focus-orbit{position:absolute;width:110px;height:110px;right:-28px;top:-45px;border:1px solid rgba(94,71,233,.17);border-radius:50%;animation:orbit 9s linear infinite}
.summary-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:18px;overflow:hidden;margin:14px 0 26px}.summary-strip div{background:var(--card);padding:13px 10px;display:grid;gap:3px}.summary-strip strong{font-size:18px;font-variant-numeric:tabular-nums}.summary-strip span{font-size:11px;color:var(--muted)}.section-title{display:flex;justify-content:space-between;align-items:end;margin:0 2px 12px}.section-title h2{margin:4px 0 0;font:700 22px Georgia,"Songti SC",serif}
.timeline-scroll{position:relative;height:min(62dvh,650px);overflow:auto;border:1px solid var(--line);border-radius:20px;background:var(--card);box-shadow:0 8px 28px rgba(45,33,98,.06);overscroll-behavior:contain;scrollbar-width:thin;scroll-behavior:smooth}.timeline-canvas,.week-canvas{position:relative;min-width:100%;padding-left:56px}.time-rail{position:absolute;left:0;top:0;width:56px;height:100%;background:color-mix(in srgb,var(--card) 94%,var(--soft));border-right:1px solid var(--line);z-index:4}.time-tick{position:absolute;left:0;right:0;top:calc(var(--tick)*64px);height:1px;border-top:1px solid rgba(90,75,130,.10);color:var(--muted);font-size:10px;padding:4px 6px;font-variant-numeric:tabular-nums}.time-tick.half{border-top-style:dashed;opacity:.65}.day-column{position:absolute;left:56px;right:0;top:0;height:100%;overflow:hidden}.day-column>.time-tick,.week-day>.time-tick{padding:0;color:transparent}
.timeline-task{position:absolute;z-index:2;top:0;left:var(--task-left);width:var(--task-width);height:var(--task-height);transform:translateY(var(--task-top));min-height:0;padding:7px 8px;border:1px solid color-mix(in srgb,var(--task-color) 42%,transparent);border-left:4px solid var(--task-color);border-radius:10px;background:color-mix(in srgb,var(--task-color) 10%,var(--card));text-align:left;overflow:hidden;color:var(--ink);box-shadow:0 4px 12px rgba(33,25,76,.06);transition:filter .14s,transform .14s,box-shadow .14s}.timeline-task strong,.timeline-task span,.timeline-task small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timeline-task strong{font-size:12px;line-height:1.2}.timeline-task span{font-size:10px;color:var(--muted);margin-top:3px;font-variant-numeric:tabular-nums}.timeline-task small{font-size:10px;margin-top:3px}.timeline-task:active{transform:translateY(var(--task-top)) scale(.985)}.timeline-task.is-complete{filter:grayscale(.75);opacity:.55}.timeline-task.is-live{box-shadow:0 0 0 2px color-mix(in srgb,var(--task-color) 18%,transparent),0 8px 18px rgba(66,46,180,.13)}
.now-line{position:absolute;z-index:3;left:var(--now-left);width:var(--now-width);top:0;transform:translateY(0);height:2px;background:linear-gradient(90deg,var(--p),#9d8cff);pointer-events:none;will-change:transform}.now-line:before{content:"";position:absolute;width:9px;height:9px;left:-4px;top:-4px;border-radius:50%;background:var(--p);box-shadow:0 0 0 5px rgba(68,49,223,.12)}.now-line span{position:absolute;right:4px;top:-19px;font-size:9px;font-weight:800;color:var(--p);background:var(--card);padding:2px 5px;border-radius:5px;font-variant-numeric:tabular-nums}
.calendar-controls{display:grid;grid-template-columns:44px 1fr 44px;gap:8px;align-items:center;margin-bottom:12px}.calendar-controls>button{padding:0;font-size:24px}.view-switch{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,1fr);padding:4px;background:var(--soft);border-radius:14px}.view-switch button{border:0;background:transparent;min-height:38px}.view-switch .active{background:var(--card);color:var(--p);box-shadow:0 2px 8px rgba(57,42,123,.08)}.date-banner{display:flex;justify-content:space-between;padding:10px 4px;color:var(--muted)}
.week-x{overflow-x:auto;border-radius:20px;border:1px solid var(--line);background:var(--card);box-shadow:0 8px 28px rgba(45,33,98,.06)}.week-head{position:sticky;top:0;z-index:8;display:grid;grid-template-columns:56px repeat(7,var(--week-col));width:1092px;background:var(--card);border-bottom:1px solid var(--line)}.week-head button{border:0;border-radius:0;padding:7px 3px;font-size:11px;min-height:42px}.week-head .today{color:var(--p);background:var(--soft);font-weight:800}.week-head button:active{transform:scale(.97)}.week-x .timeline-scroll{height:min(59dvh,620px);width:1092px;border:0;border-radius:0;box-shadow:none;overflow-y:auto;overflow-x:hidden}.week-canvas{width:1092px}.week-columns{position:absolute;left:56px;top:0;width:1036px;height:100%}.week-day{position:absolute;left:calc(var(--day) * 148px);top:0;width:var(--week-col);height:100%;border-right:1px solid var(--line);overflow:hidden}
nav{background:color-mix(in srgb,var(--card) 93%,transparent);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);box-shadow:0 -8px 26px rgba(35,25,80,.05)}nav button{position:relative;transition:color .16s,background .16s,transform .12s}nav button:active{transform:scale(.96)}nav .active:after{content:"";position:absolute;bottom:2px;width:16px;height:2px;background:var(--p);border-radius:10px}
dialog[open]{animation:dialog-in .22s cubic-bezier(.2,.8,.2,1)}dialog::backdrop{animation:fade-in .18s ease-out}#toast{box-shadow:0 12px 38px rgba(20,15,43,.25);animation:toast-in .2s cubic-bezier(.2,.8,.2,1)}
body.dark{--shadow:0 14px 36px rgba(0,0,0,.22)}body.dark .focus-card{background:linear-gradient(145deg,#2b2739,#24202f)}
@keyframes orbit{to{transform:rotate(360deg)}}@keyframes dialog-in{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}@keyframes fade-in{from{opacity:0}to{opacity:1}}@keyframes toast-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;scroll-behavior:auto!important;transition-duration:.01ms!important}.timeline-task,.now-line{transition:none!important}}
@media(min-width:700px){.timeline-scroll{height:680px}.summary-strip div{padding:17px}.timeline-task strong{font-size:13px}}
