.site-footer{text-align:center;padding:16px 20px;font-size:12px;color:var(--faint);background:var(--card);border-top:1px solid var(--rule);display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap}.site-footer a{color:var(--faint);text-decoration:none;transition:color .15s}.site-footer a:hover{color:var(--c1)}.site-footer .sep{color:var(--rule)}.site-footer .police-link{display:inline-flex;align-items:center;gap:4px}.site-footer .police-icon{width:14px;height:14px;vertical-align:middle}:root{--c1: #2373f4;--c2: #578ef5;--c3: #65d0f4;--c4: #f2f7a0;--ink: #1a2332;--muted: #5a6b85;--faint: #8a93a6;--rule: #e3e8f0;--bg: #f7f9ff;--card: #ffffff;--danger: #e5484d;--done: #8a93a6;--font: "Noto Sans SC", "Source Han Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;--r-s: 6px;--r-m: 10px;--r-l: 16px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--sp-7: 48px;--shadow-s: 0 1px 3px rgba(35, 115, 244, .08);--shadow-m: 0 4px 16px rgba(35, 115, 244, .12);--shadow-l: 0 12px 40px rgba(26, 35, 50, .18)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font);font-weight:400;font-size:15px;line-height:1.75;color:var(--ink);background:var(--bg)}h1,h2,h3,h4,h5,b,strong{font-weight:700}button{font-family:var(--font);cursor:pointer;border:none;background:none}input{font-family:var(--font)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:var(--c1);color:#fff;font-weight:700;font-size:14px;border-radius:var(--r-s);padding:9px 22px;box-shadow:var(--shadow-s);transition:background .15s}.btn:hover{background:var(--c2)}.btn:disabled,.btn.disabled{background:#c7d6f5;cursor:not-allowed;box-shadow:none}.btn.ghost{background:#fff;color:var(--c1);border:1px solid var(--c1);box-shadow:none}.btn.ghost:hover{background:#eaf1fe}.btn.danger{background:var(--danger)}.btn.danger:hover{background:#d13438}.btn.plain{background:#fff;color:var(--muted);border:1px solid var(--rule);box-shadow:none}.input{background:#fff;border:1px solid var(--rule);border-radius:var(--r-s);padding:9px 13px;font-size:13.5px;color:var(--ink);width:100%;transition:border-color .15s}.input::placeholder{color:var(--faint)}.input:hover{border-color:var(--c2)}.input:focus{outline:none;border-color:var(--c1);box-shadow:0 0 0 1px var(--c1)}.input.err{border-color:var(--danger)}.err-text{color:var(--danger);font-size:12px;margin-top:4px}.tag-st{display:inline-block;font-size:11px;font-weight:700;padding:2px 9px;border-radius:99px;line-height:1.6}.st-todo{background:#e3edfe;color:var(--c1)}.st-doing{background:#dff6fd;color:#0e8cb8}.st-over{background:#fdeaea;color:var(--danger)}.st-done{background:#eef0f4;color:var(--done)}.app-nav{background:var(--card);height:56px;display:flex;align-items:center;gap:20px;padding:0 24px;border-bottom:1px solid var(--rule);box-shadow:var(--shadow-s);position:sticky;top:0;z-index:10}.app-nav .brand{font-weight:700;font-size:16px;color:var(--c1);display:flex;align-items:center;gap:8px}.app-nav .brand img{width:22px;height:22px}.app-nav .tabs{display:flex;gap:4px;margin-left:12px}.app-nav .tab{padding:6px 16px;border-radius:99px;font-size:13.5px;color:var(--muted);text-decoration:none}.app-nav .tab:hover{color:var(--c1)}.app-nav .tab.on{background:var(--c1);color:#fff;font-weight:700}.app-nav .me{margin-left:auto;display:flex;align-items:center;gap:10px;color:var(--muted);font-size:13px}.app-nav .me img{width:18px;height:18px}.app-nav .quit{display:flex;align-items:center;gap:4px;color:var(--faint);font-size:12.5px;border:1px solid var(--rule);border-radius:99px;padding:4px 12px;transition:all .15s}.app-nav .quit:hover{color:var(--danger);border-color:var(--danger)}.app-nav .quit img{width:14px;height:14px}.app-shell{display:flex;flex-direction:column;min-height:100vh}.app-main{flex:1}.auth-hero{min-height:calc(100vh - 53px);display:flex;align-items:center;justify-content:center;padding:40px;background:radial-gradient(600px 300px at 15% 20%,rgba(101,208,244,.25),transparent 60%),radial-gradient(500px 260px at 85% 80%,rgba(242,247,160,.4),transparent 60%),var(--bg)}.auth-card{background:var(--card);width:360px;border-radius:var(--r-l);box-shadow:var(--shadow-m);padding:36px 34px;border:1px solid var(--rule)}.auth-card .logo-row{display:flex;align-items:center;gap:10px;margin-bottom:6px}.auth-card .logo-row img{width:30px;height:30px}.auth-card .logo-row b{font-size:19px;color:var(--c1)}.auth-card .sub{font-size:12.5px;color:var(--faint);margin-bottom:22px}.auth-card .field{margin-bottom:14px}.auth-card .label{font-size:12.5px;color:var(--muted);margin-bottom:5px;font-weight:700}.auth-card .btn{width:100%;margin-top:8px}.auth-card .switch{text-align:center;font-size:12.5px;color:var(--faint);margin-top:16px}.auth-card .switch b{color:var(--c1);cursor:pointer}.page-body{max-width:960px;margin:0 auto;padding:24px 24px 48px}.create-bar{background:var(--card);border:1px solid var(--rule);border-radius:var(--r-m);box-shadow:var(--shadow-s);padding:14px;display:flex;gap:10px;align-items:center;margin-bottom:26px;position:sticky;top:72px;z-index:5;flex-wrap:wrap}.create-bar .plus{width:26px;height:26px;flex:none}.create-bar .grow{flex:1;min-width:180px}.create-bar .date-pick{display:flex;align-items:center;gap:6px;min-width:210px;cursor:pointer}.create-bar .date-pick img{width:15px;height:15px}.group-title{display:flex;align-items:center;gap:8px;font-weight:700;font-size:14px;margin:22px 0 10px}.group-title .cnt{font-size:11.5px;color:var(--faint);font-weight:400}.task{background:var(--card);border:1px solid var(--rule);border-radius:var(--r-m);box-shadow:var(--shadow-s);padding:12px 16px;display:flex;align-items:center;gap:12px;margin-bottom:10px;transition:box-shadow .15s,transform .15s}.task:hover{box-shadow:var(--shadow-m);transform:translateY(-1px)}.task .cb{width:20px;height:20px;flex:none;cursor:pointer}.task .txt{flex:1;min-width:0;cursor:pointer}.task .txt .t1{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task .txt .t2{font-size:12px;color:var(--faint);display:flex;align-items:center;gap:4px}.task .txt .t2 img{width:12px;height:12px}.task .ops{display:flex;gap:6px}.task .ops .op{width:30px;height:30px;border-radius:var(--r-s);border:1px solid var(--rule);background:#fff;display:flex;align-items:center;justify-content:center;transition:all .15s}.task .ops .op img{width:15px;height:15px}.task .ops .op:hover{background:#eaf1fe}.task .ops .op.del:hover img{filter:invert(32%) sepia(83%) saturate(2109%) hue-rotate(338deg)}.task.done .txt .t1{color:var(--faint);text-decoration:line-through}.task.over{border-color:#f5c6c8}.empty{padding:60px 20px;text-align:center;color:var(--faint)}.empty img{width:44px;height:44px;opacity:.35}.empty .big{font-size:15px;color:var(--muted);font-weight:700;margin:16px 0 6px}.cal-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}.cal-toolbar .nav-arrows{display:flex;gap:6px}.cal-toolbar .arr{width:30px;height:30px;border:1px solid var(--rule);border-radius:var(--r-s);background:#fff;display:flex;align-items:center;justify-content:center}.cal-toolbar .arr:hover{background:#eaf1fe}.cal-toolbar .arr img{width:14px;height:14px}.cal-toolbar .title{font-size:16px;font-weight:700}.cal-toolbar .today{border:1px solid var(--c1);color:var(--c1);font-size:12.5px;border-radius:99px;padding:4px 14px;font-weight:700}.cal-toolbar .today:hover{background:#eaf1fe}.cal-toolbar .view-sw{margin-left:auto;display:flex;background:#e9eef7;border-radius:99px;padding:3px}.cal-toolbar .view-sw span{padding:5px 16px;border-radius:99px;font-size:12.5px;color:var(--muted);cursor:pointer}.cal-toolbar .view-sw span.on{background:var(--c1);color:#fff;font-weight:700}.mv-ev .cb,.slot-ev .cb{display:inline-block;width:9px;height:9px;border:1.5px solid;border-radius:2px}.mv-wrap{background:var(--card);border:1px solid var(--rule);border-radius:var(--r-m);overflow:hidden}.mv-dow{display:grid;grid-template-columns:repeat(7,1fr);border-bottom:1px solid var(--rule)}.mv-dow span{text-align:center;font-size:11.5px;color:var(--faint);font-weight:700;padding:8px 0}.mv-grid{display:grid;grid-template-columns:repeat(7,1fr)}.mv-cell{min-height:96px;padding:5px 6px 6px;cursor:pointer;border-right:1px solid var(--rule);border-bottom:1px solid var(--rule)}.mv-cell:nth-child(7n){border-right:none}.mv-cell:nth-last-child(-n+7){border-bottom:none}.mv-cell:hover{background:#f6f9ff}.mv-cell.dim{opacity:.4;cursor:default}.mv-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.mv-d{font-size:12px;color:var(--ink);font-weight:700;line-height:20px;min-width:20px;text-align:center;border-radius:50%}.mv-d.today{background:var(--c1);color:#fff}.mv-l{font-size:10.5px;color:var(--faint)}.mv-l.fest{color:#d97706}.mv-ev{display:flex;align-items:center;gap:4px;border-radius:4px;padding:1.5px 6px;margin-bottom:3px;font-size:10.5px;white-space:nowrap;overflow:hidden;cursor:pointer}.mv-ev .cb{flex:0 0 auto}.mv-ev .ct{overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.mv-ev .tm{font-size:10px;opacity:.75;flex:0 0 auto}.mv-more{font-size:10px;color:var(--faint);padding-left:6px}.yv-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.yv-month{background:var(--card);border:1px solid var(--rule);border-radius:var(--r-m);padding:12px 14px;box-shadow:var(--shadow-s);cursor:pointer}.yv-month:hover{box-shadow:var(--shadow-m)}.yv-month b{font-size:13px;display:block;margin-bottom:8px}.yv-dow{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:2px}.yv-dow span{text-align:center;font-size:10px;color:var(--faint);padding:2px 0}.yv-cells{display:grid;grid-template-columns:repeat(7,1fr);gap:1px}.yv-cells i{font-style:normal;display:flex;flex-direction:column;align-items:center;padding:1px 0 2px;border-radius:3px;color:var(--ink)}.yv-cells i b{font-weight:400;font-size:10.5px;line-height:15px}.yv-cells i .dot{width:4px;height:4px;border-radius:50%;background:var(--danger)}.yv-cells i.out{color:#c6cbd6}.yv-cells i.has{background:#dbe4fb;color:#4563b8}.yv-cells i.today{background:var(--c1);color:#fff;font-weight:700}.yv-cells i.today .dot{background:#fff}.wv-wrap{background:var(--card);border:1px solid var(--rule);border-radius:var(--r-m);overflow:hidden}.wv-head{display:flex;border-bottom:1px solid var(--rule)}.wv-gh{flex:0 0 64px;border-right:1px solid var(--rule);background:#fbfcff}.wv-hcell{flex:1;padding:8px 6px;display:flex;align-items:baseline;gap:6px;cursor:pointer;border-right:1px solid var(--rule)}.wv-hcell:last-child{border-right:none}.wv-hcell .n{font-size:14px;font-weight:700;color:var(--ink);min-width:22px;height:22px;line-height:22px;text-align:center;border-radius:50%}.wv-hcell.today .n{background:var(--c1);color:#fff}.wv-hcell .l{font-size:10.5px;color:var(--faint)}.wv-hcell .l.fest{color:#d97706}.wv-body{display:flex;max-height:72vh;overflow-y:auto}.wv-gutter{flex:0 0 64px;border-right:1px solid var(--rule);background:#fbfcff}.wv-gutter .h{height:44px;font-size:10.5px;color:var(--faint);text-align:right;padding:2px 8px 0 0}.wv-lane{flex:1;position:relative;height:1056px;overflow:hidden;border-right:1px solid var(--rule);background:repeating-linear-gradient(180deg,#fff 0 43px,var(--rule) 43px 44px)}.wv-lane:last-child{border-right:none}.day-cols{display:flex;border:1px solid var(--rule);border-radius:var(--r-m);overflow:hidden;background:var(--card)}.hour-col{flex:0 0 64px;border-right:1px solid var(--rule);background:#fbfcff}.hour-col .h{height:44px;font-size:10.5px;color:var(--faint);text-align:right;padding:2px 8px 0 0}.lane-col{flex:1;position:relative;height:1056px;overflow:hidden;background:repeating-linear-gradient(180deg,#fff 0 43px,var(--rule) 43px 44px)}.day-scroll{max-height:72vh;overflow-y:auto}.slot-ev{position:absolute;left:6px;right:6px;border-radius:var(--r-s);padding:6px 10px;font-size:12px;border-left:3px solid;overflow:hidden;cursor:pointer}.slot-ev .cb{margin-right:6px;vertical-align:-1px}.slot-ev .tt{font-weight:600}.slot-ev .tm{font-size:10.5px;opacity:.8;margin-top:2px}.now-line{position:absolute;left:0;right:0;border-top:2px solid var(--danger);z-index:2}.now-line i{position:absolute;left:-5px;top:-5px;width:10px;height:10px;border-radius:50%;background:var(--danger)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1a233273;display:flex;align-items:center;justify-content:center;z-index:50}.dialog{background:var(--card);width:340px;border-radius:var(--r-l);box-shadow:var(--shadow-l);padding:24px;max-width:92vw}.dialog h5{font-size:16px;margin-bottom:14px;display:flex;align-items:center;gap:8px}.dialog .kv{display:flex;font-size:13px;margin-bottom:10px}.dialog .kv .k{flex:0 0 72px;color:var(--faint)}.dialog .kv .v{flex:1;color:var(--ink);word-break:break-all}.dialog .actions{display:flex;gap:10px;margin-top:18px;justify-content:flex-end}.dialog .actions .btn{padding:7px 18px;font-size:13px}.dialog.danger h5{color:var(--danger)}.warn-text{font-size:13px;color:var(--muted);background:#fdf2e2;border-radius:var(--r-s);padding:10px 12px}.toast-wrap{position:fixed;top:76px;right:20px;z-index:100;display:flex;flex-direction:column;gap:8px}.toast{padding:10px 18px;border-radius:var(--r-s);font-size:13px;box-shadow:var(--shadow-m);animation:slide-in .2s ease-out}.toast.ok{background:#e0f7fd;color:#0e8cb8}.toast.err{background:#fdeaea;color:var(--danger)}@keyframes slide-in{0%{transform:translate(30px);opacity:0}to{transform:none;opacity:1}}.dt-mode{display:flex;gap:8px;margin-bottom:12px}.dt-mode span{padding:5px 16px;border-radius:99px;font-size:12.5px;color:var(--muted);cursor:pointer;background:#eef1f7}.dt-mode span.on{background:#e3edfe;color:var(--c1);font-weight:700}.dt-row{display:flex;align-items:center;gap:8px;margin-bottom:10px;font-size:13px}.dt-row .k{flex:0 0 40px;color:var(--faint)}.dt-row select{flex:1;padding:7px 9px;border:1px solid var(--rule);border-radius:var(--r-s);font-size:13px;font-family:var(--font);background:#fff}@media (max-width: 1199px){.yv-grid{grid-template-columns:repeat(3,1fr)}.create-bar .date-pick{flex-basis:100%}}@media (max-width: 767px){.yv-grid{grid-template-columns:repeat(2,1fr)}.mv-cell{min-height:72px}.mv-ev .tm,.app-nav .me span.nm{display:none}.page-body{padding:16px 12px 40px}}
