:root{--axis-w:44px;--row-h:68px;--tab-h:54px;--gap:4px;--pad:14px;--h-sm:30px;--h-md:34px;--h-lg:40px;--r-card:4px;--r-panel:6px;--r-btn:4px;--r-tag:3px;--r-pill:999px;--ease:cubic-bezier(.2, .8, .2, 1);--dur:.14s;--dur-slow:.28s;--font-system:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", sans-serif;--font-serif:"Songti SC", "STSong", "SimSun", Georgia, "Times New Roman", serif;--font-mono:ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, monospace;--font-rounded:"Yuanti SC", "Hiragino Maru Gothic ProN", "Microsoft YaHei", sans-serif;--font:var(--font-system);--fs-xs:11px;--fs-sm:12px;--fs-md:13.5px;--fs-lg:16px;--fs-xl:20px;--fs-2xl:28px;--c-bg:#f4f5f7;--c-surface:#fff;--c-surface-2:#f7f8fa;--c-panel:#fff;--c-text:#1d2129;--c-text-muted:#86909c;--c-border:#e5e6eb;--c-border-strong:#c9cdd4;--c-accent:#1677ff;--c-on-accent:#fff;--c-today:#1677ff0f;--c-danger:#f53f3f;--shadow-card:0 1px 2px #0000000a;--shadow-float:0 6px 20px #0000001f;--glass-blur:0px;--card-opacity:1;--panel-alpha:1;--wp-image:none;--wp-blur:0px;--wp-scrim:0;--lightningcss-light:initial;--lightningcss-dark: ;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--sat:env(safe-area-inset-top,0px);--sab:env(safe-area-inset-bottom,0px);--sal:env(safe-area-inset-left,0px);--sar:env(safe-area-inset-right,0px);--tap-grow:6px}button,a,[role=button],.chip,.tab,.week-pill{touch-action:manipulation}html,body{overscroll-behavior:none}@media (width<=430px){:root{--axis-w:40px;--pad:12px}}@media (width<=380px){:root{--axis-w:38px;--pad:10px;--row-h:64px}}@media (orientation:landscape) and (height<=560px){:root{--row-h:54px;--tab-h:48px}}@media (width>=700px){.app{max-width:520px;box-shadow:0 0 0 1px var(--c-border);margin:0 auto}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);font-size:var(--fs-md);color:var(--c-text);background:var(--c-bg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;overscroll-behavior:none;line-height:1.5}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0;padding:0}input,select{outline:none}::-webkit-scrollbar{width:0;height:0}.num,.at,.tl-time,.wk-day .dd,.hero-count .num,.sv{font-variant-numeric:tabular-nums}.app{background:var(--c-bg);height:100dvh;transition:background-color var(--dur-slow) var(--ease), color var(--dur) var(--ease);flex-direction:column;display:flex;position:relative;overflow:hidden}.wallpaper{z-index:0;pointer-events:none;filter:blur(var(--wp-blur));transition:opacity var(--dur-slow) var(--ease), filter var(--dur) var(--ease);background-position:50%;background-repeat:no-repeat;background-size:cover;position:fixed;inset:0;transform:scale(1.06)}.wallpaper-scrim{z-index:0;pointer-events:none;background:var(--c-bg);opacity:var(--wp-scrim);transition:opacity var(--dur) var(--ease), background-color var(--dur-slow) var(--ease);position:fixed;inset:0}.app-layer{z-index:1;flex-direction:column;height:100%;display:flex;position:relative}.topbar{padding:calc(var(--sat) + 10px) calc(var(--pad) + var(--sar)) 0 calc(var(--pad) + var(--sal));border-bottom:1px solid var(--c-border);background:var(--c-panel);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.4);flex:none}.topbar-row{align-items:center;gap:10px;min-height:40px;display:flex}.topbar-row>div:first-child{flex:auto;min-width:0}.term-name{font-size:var(--fs-lg);letter-spacing:-.2px;text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.term-sub{font-size:var(--fs-xs);color:var(--c-text-muted);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;overflow:hidden}.topbar-actions{flex:none;gap:8px;margin-left:auto;display:flex}.week-strip{scrollbar-width:none;scroll-behavior:smooth;gap:5px;padding:8px 0 9px;display:flex;overflow-x:auto}.week-pill{min-width:38px;height:var(--h-sm);white-space:nowrap;border-radius:var(--r-tag);font-size:var(--fs-sm);font-variant-numeric:tabular-nums;color:var(--c-text-muted);background:var(--c-surface);border:1px solid var(--c-border);transition:background-color var(--dur) var(--ease), color var(--dur) var(--ease), border-color var(--dur) var(--ease);flex:none;justify-content:center;align-items:center;gap:3px;padding:0 10px;font-weight:600;display:flex;position:relative}.week-pill:hover{border-color:var(--c-border-strong);color:var(--c-text)}.week-pill.active{background:var(--c-accent);color:var(--c-on-accent);border-color:var(--c-accent);font-weight:700}.week-pill.is-now:after{content:"";opacity:.85;background:currentColor;border-radius:50%;width:4px;height:4px}.content{-webkit-overflow-scrolling:touch;flex:auto;overflow:hidden auto}.content-inner{padding:14px calc(var(--pad) + var(--sar)) calc(var(--tab-h) + var(--sab) + 26px) calc(var(--pad) + var(--sal))}.content-inner.flush{padding-left:0;padding-right:0}.tabbar{height:calc(var(--tab-h) + var(--sab));padding-bottom:var(--sab);background:var(--c-panel);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.5);border-top:1px solid var(--c-border);z-index:30;grid-auto-columns:1fr;grid-auto-flow:column;align-items:center;display:grid;position:absolute;bottom:0;left:0;right:0}.tab{height:calc(var(--tab-h));min-height:44px;font-size:var(--fs-xs);color:var(--c-text-muted);white-space:nowrap;transition:color var(--dur) var(--ease), transform var(--dur) var(--ease);flex-direction:column;justify-content:center;align-items:center;gap:3px;padding:0 2px;display:flex;position:relative}.tab:active{transform:scale(.94)}.tab.active{color:var(--c-accent);font-weight:600}.tab.active:before{content:"";background:var(--c-accent);width:20px;height:2px;position:absolute;top:-1px;left:50%;transform:translate(-50%)}.tab-icon{display:block}.tab-brand,.tab-foot{display:none}.app.wide{max-width:none;box-shadow:none;--row-h:92px;--axis-w:58px;--pad:22px;--tab-h:0px;margin:0}.app.wide .app-layer{grid-template-rows:100%;grid-template-columns:236px minmax(0,1fr);display:grid}.app.wide .content{grid-area:1/2;min-width:0}.app.wide .tabbar{height:auto;padding:calc(var(--sat) + 14px) 12px calc(var(--sab) + 14px);border-top:0;border-right:1px solid var(--c-border);flex-direction:column;grid-area:1/1;align-items:stretch;gap:3px;display:flex;position:relative;bottom:auto;left:auto;right:auto}.app.wide .tab-brand{align-items:center;gap:10px;padding:0 6px 16px;display:flex}.tab-brand-mark{background:var(--c-accent);width:34px;height:34px;color:var(--c-on-accent);border-radius:8px;flex:none;justify-content:center;align-items:center;font-size:17px;font-weight:700;display:flex}.tab-brand-name{font-size:var(--fs-md);letter-spacing:-.2px;font-weight:700}.tab-brand-sub{font-size:var(--fs-xs);color:var(--c-text-muted);margin-top:1px}.app.wide .tab{height:42px;min-height:42px;font-size:var(--fs-md);border-radius:8px;flex-direction:row;justify-content:flex-start;align-items:center;gap:10px;padding:0 12px}.app.wide .tab:hover{background:var(--c-surface-2);color:var(--c-text)}.app.wide .tab.active{background:color-mix(in srgb, var(--c-accent) 12%, transparent);color:var(--c-accent)}.app.wide .tab.active:before{border-radius:2px;width:3px;height:18px;top:50%;left:0;transform:translateY(-50%)}.app.wide .tab-icon{width:18px;height:18px}.app.wide .tab-foot{border-top:1px solid var(--c-border);margin-top:auto;padding:12px 6px 0;display:block}.app.wide .tab-get{height:var(--h-md);border:1px solid color-mix(in srgb, var(--c-accent) 45%, transparent);color:var(--c-accent);font-size:var(--fs-sm);border-radius:8px;justify-content:center;align-items:center;font-weight:600;text-decoration:none;display:flex}.app.wide .tab-get:hover{background:color-mix(in srgb, var(--c-accent) 10%, transparent)}.app.wide .tab-ver{text-align:center;font-size:var(--fs-xs);color:var(--c-text-muted);font-variant-numeric:tabular-nums;margin-top:8px}.app.wide .content-inner{padding-bottom:44px}.app.wide .topbar{padding-top:16px;padding-bottom:2px}.app.wide .week-strip{scrollbar-width:thin}.app.wide .fab{bottom:30px;right:30px}.app.wide .btn:hover{border-color:var(--c-border-strong)}.app.wide .btn.primary:hover{filter:brightness(1.07)}.app.wide .icon-btn:hover,.app.wide .list-row.tap:hover{background:var(--c-surface-2)}.app.wide .chip:hover{border-color:var(--c-border-strong)}.app.wide .ev:hover{border-color:var(--c-accent)}.app.wide :focus-visible{outline:2px solid var(--c-accent);outline-offset:2px}.row{align-items:center;gap:8px;display:flex}.col{flex-direction:column;display:flex}.spacer{flex:auto}.muted{color:var(--c-text-muted)}.tiny{font-size:var(--fs-xs)}.small{font-size:var(--fs-sm)}.bold{font-weight:700}.ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.section-title{font-size:var(--fs-sm);color:var(--c-text);white-space:nowrap;align-items:center;gap:6px;margin:20px 0 8px;padding-left:8px;font-weight:700;display:flex;position:relative}.section-title:before{content:"";background:var(--c-accent);width:2px;position:absolute;top:3px;bottom:3px;left:0}.card-block{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-panel);overflow:hidden}.btn{height:var(--h-md);border-radius:var(--r-btn);font-size:var(--fs-sm);white-space:nowrap;background:var(--c-surface);color:var(--c-text);border:1px solid var(--c-border);transition:background-color var(--dur) var(--ease), border-color var(--dur) var(--ease), opacity var(--dur) var(--ease);justify-content:center;align-items:center;gap:6px;padding:0 14px;font-weight:600;display:inline-flex;position:relative}.btn:hover{border-color:var(--c-border-strong)}.btn:active{opacity:.82}.btn.primary{background:var(--c-accent);color:var(--c-on-accent);border-color:var(--c-accent)}.btn.primary:hover{filter:brightness(1.06)}.btn.ghost{background:0 0}.btn.block{width:100%}.btn:after{content:"";position:absolute;inset:-6px -3px}.btn.sm{height:var(--h-sm);font-size:var(--fs-xs);padding:0 11px}.btn.sm:after{inset:-7px -4px}.btn.block:after{inset:-6px 0}.btn.danger{color:var(--c-danger);border-color:var(--c-border)}.icon-btn{width:var(--h-md);height:var(--h-md);border-radius:var(--r-btn);background:var(--c-surface);border:1px solid var(--c-border);color:var(--c-text);transition:border-color var(--dur) var(--ease), background-color var(--dur) var(--ease);justify-content:center;align-items:center;font-size:16px;display:inline-flex;position:relative}.icon-btn:after{content:"";inset:calc(-1 * var(--tap-grow));position:absolute}.icon-btn:hover{border-color:var(--c-border-strong)}.segmented{background:var(--c-surface-2);border:1px solid var(--c-border);border-radius:var(--r-btn);gap:0;padding:3px;display:flex}.segmented .seg{height:42px;font-size:var(--fs-xs);color:var(--c-text-muted);transition:background-color var(--dur) var(--ease), color var(--dur) var(--ease);white-space:nowrap;border-radius:2px;flex:1 1 0;justify-content:center;align-items:center;gap:4px;font-weight:600;display:inline-flex;position:relative}.segmented .seg.active{background:var(--c-surface);color:var(--c-accent);box-shadow:0 1px 2px #0000000f}.segmented .seg:after{content:"";position:absolute;inset:-2px 0}.list-row{border-bottom:1px solid var(--c-border);align-items:center;gap:10px;padding:12px 14px;display:flex}.list-row:last-child{border-bottom:0}.list-row .lr-label{font-size:var(--fs-md)}.list-row .lr-sub{font-size:var(--fs-xs);color:var(--c-text-muted);margin-top:2px;line-height:1.45}.list-row>div:not(.dot):not(.lr-right){min-width:0}.list-row .lr-right{color:var(--c-text-muted);font-size:var(--fs-sm);white-space:nowrap;flex:none;align-items:center;gap:8px;margin-left:auto;display:flex}.slider-row{border-bottom:1px solid var(--c-border);padding:11px 14px}.slider-row:last-child{border-bottom:0}.slider-head{align-items:center;margin-bottom:2px;display:flex}.slider-head .sv{font-size:var(--fs-xs);color:var(--c-text-muted);margin-left:auto}input[type=range].rng{appearance:none;background:0 0;width:100%;height:44px;margin:0}input[type=range].rng::-webkit-slider-runnable-track{background:linear-gradient(to right, var(--c-accent) var(--fill,50%), var(--c-border) var(--fill,50%));border-radius:0;height:2px}input[type=range].rng::-webkit-slider-thumb{-webkit-appearance:none;background:var(--c-surface);border:1.5px solid var(--c-accent);cursor:pointer;border-radius:2px;width:14px;height:14px;margin-top:-6px}input[type=range].rng::-moz-range-track{background:var(--c-border);height:2px}input[type=range].rng::-moz-range-thumb{background:var(--c-surface);border:1.5px solid var(--c-accent);border-radius:2px;width:12px;height:12px}.switch{border-radius:var(--r-pill);background:var(--c-border-strong);width:40px;height:22px;transition:background-color var(--dur) var(--ease);flex:none;position:relative}.switch.on{background:var(--c-accent)}.switch:after{content:"";width:18px;height:18px;transition:transform var(--dur) var(--ease);background:#fff;border-radius:50%;position:absolute;top:2px;left:2px}.switch.on:after{transform:translate(18px)}.swatch{border-radius:var(--r-tag);width:32px;height:32px;transition:transform var(--dur) var(--ease);border:1px solid #0000001f;position:relative}.swatch.active{box-shadow:0 0 0 2px var(--c-surface), 0 0 0 3px var(--c-accent)}.swatch:after{content:"";position:absolute;inset:-6px}.palette-grid{grid-template-columns:repeat(12,1fr);gap:4px;padding:0 14px 13px;display:grid}.palette-chip{border-radius:2px;height:22px}.input{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-btn);width:100%;height:34px;font-size:var(--fs-md);transition:border-color var(--dur) var(--ease);padding:0 10px}.input:focus{border-color:var(--c-accent)}.field{margin-bottom:13px}.field-label{font-size:var(--fs-xs);color:var(--c-text-muted);margin-bottom:5px}.sheet-mask{z-index:60;animation:fadeIn var(--dur) var(--ease);background:#00000073;position:fixed;inset:0}.sheet{z-index:61;background:var(--c-surface);border-top:1px solid var(--c-border);max-height:88dvh;box-shadow:var(--shadow-float);animation:sheetUp var(--dur-slow) var(--ease);padding-bottom:var(--sab);border-radius:8px 8px 0 0;flex-direction:column;display:flex;position:fixed;bottom:0;left:0;right:0}.sheet-grip{background:var(--c-border-strong);border-radius:2px;flex:none;width:28px;height:3px;margin:9px auto 0}.sheet-head{border-bottom:1px solid var(--c-border);flex:none;align-items:center;gap:10px;padding:8px 16px 10px;display:flex}.sheet-title{font-size:var(--fs-lg);font-weight:700}.sheet-body{-webkit-overflow-scrolling:touch;padding:14px 16px calc(20px + var(--sab));overflow-y:auto}@keyframes sheetUp{0%{opacity:.5;transform:translateY(4%)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.app.wide .content-inner.two-col>*{columns:380px;column-gap:16px}.app.wide .content-inner.two-col>*>*{break-inside:avoid}.app.wide .sheet{border-top:1px solid var(--c-border);border:1px solid var(--c-border);border-radius:12px;width:min(660px,100vw - 72px);max-height:min(84dvh,920px);padding-bottom:0;animation:none;inset:50% auto auto 50%;transform:translate(-50%,-50%)}.app.wide .sheet.sheet-doc,.app.wide .sheet.sheet-full{border-top:1px solid var(--c-border);border-radius:12px;width:min(960px,100vw - 72px);max-height:min(90dvh,1040px);top:50%;left:50%}.app.wide .sheet-grip{display:none}.app.wide .sheet-head{padding:15px 22px 13px}.app.wide .sheet-body{padding:16px 22px 22px}.app.wide .sheet-doc .sheet-body{padding:0 22px 24px}.app.wide .toast{bottom:26px}.toast{left:50%;bottom:calc(var(--tab-h) + var(--sab) + 20px);z-index:90;border-radius:var(--r-btn);background:var(--c-text);max-width:min(88vw,420px);color:var(--c-bg);font-size:var(--fs-sm);text-align:center;box-shadow:var(--shadow-float);animation:sheetUp .2s var(--ease);justify-content:center;align-items:center;gap:12px;padding:9px 14px;font-weight:600;display:flex;position:fixed;transform:translate(-50%)}.toast-undo{white-space:nowrap;border-radius:var(--r-tag);color:inherit;font-weight:700;font-size:var(--fs-xs);background:#ffffff2e;flex:none;padding:3px 10px}.toast-undo:active{opacity:.7}.toast.warn{color:#fff7e8;background:#b4690e}.toast.error{background:var(--c-danger);color:#fff}.chip{border-radius:var(--r-tag);font-size:var(--fs-xs);background:var(--c-surface);color:var(--c-text-muted);border:1px solid var(--c-border);white-space:nowrap;transition:background-color var(--dur) var(--ease), color var(--dur) var(--ease), border-color var(--dur) var(--ease);align-items:center;gap:5px;padding:7px 11px;font-weight:600;display:inline-flex;position:relative}.chip:hover{border-color:var(--c-border-strong)}.chip.on{background:var(--c-accent);color:var(--c-on-accent);border-color:var(--c-accent)}.chip:after{content:"";position:absolute;inset:-6px 0}.chip-row{flex-wrap:wrap;gap:8px;padding:11px 14px;display:flex}.dot{border-radius:50%;flex:none;width:6px;height:6px}.dot.ok{background:#00b42a}.dot.warn{background:#ff7d00}.dot.bad{background:var(--c-danger)}.preset-scroll{gap:8px;padding:2px 14px 13px;display:flex;overflow-x:auto}.preset-card{border-radius:var(--r-card);border:1px solid var(--c-border);background:var(--c-surface);width:96px;transition:border-color var(--dur) var(--ease);flex:none;overflow:hidden}.preset-card.active{border-color:var(--c-accent);box-shadow:0 0 0 2px var(--c-today)}.preset-thumb{height:64px;position:relative}.preset-thumb .bar{border-radius:1px;position:absolute}.preset-meta{border-top:1px solid var(--c-border);padding:6px 8px 7px}.preset-name{font-size:var(--fs-xs);text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.preset-hint{font-size:var(--fs-xs);color:var(--c-text-muted);text-overflow:ellipsis;white-space:nowrap;margin-top:1px;overflow:hidden}.wp-grid{grid-template-columns:repeat(4,1fr);gap:6px;padding:4px 14px 13px;display:grid}.wp-item{border-radius:var(--r-tag);border:1px solid var(--c-border);position:relative;overflow:hidden}.wp-item.active{border-color:var(--c-accent);box-shadow:0 0 0 2px var(--c-today)}.wp-item img{object-fit:cover;width:100%;height:54px;display:block}.wp-item .wp-name{font-size:var(--fs-xs);text-align:center;background:var(--c-surface);border-top:1px solid var(--c-border);text-overflow:ellipsis;white-space:nowrap;padding:4px 2px;overflow:hidden}.wp-item.none{background:repeating-linear-gradient(45deg, var(--c-surface-2) 0 5px, var(--c-surface) 5px 10px);height:54px;font-size:var(--fs-xs);color:var(--c-text-muted);white-space:nowrap;justify-content:center;align-items:center;display:flex}.fab{right:calc(16px + var(--sar));bottom:calc(var(--tab-h) + var(--sab) + 16px);z-index:40;background:var(--c-accent);width:52px;height:52px;color:var(--c-on-accent);box-shadow:var(--shadow-float);transition:opacity var(--dur) var(--ease);border-radius:10px;justify-content:center;align-items:center;font-size:22px;font-weight:300;line-height:1;display:flex;position:absolute}.fab:active{opacity:.85}.task-row{border-bottom:1px solid var(--c-border);align-items:flex-start;gap:10px;padding:11px 14px;display:flex}.task-row:last-child{border-bottom:0}.task-check{border:1.5px solid var(--c-border-strong);border-radius:var(--r-tag);background:var(--c-surface);color:#fff;width:24px;height:24px;transition:background-color var(--dur) var(--ease), border-color var(--dur) var(--ease);flex:none;justify-content:center;align-items:center;margin-top:1px;font-size:12px;font-weight:800;line-height:1;display:flex;position:relative}.task-check.on{background:var(--c-accent);border-color:var(--c-accent)}.task-check:after{content:"";position:absolute;inset:-10px -6px -10px -10px}.task-main{cursor:pointer;flex:auto;min-width:0;padding:2px 0}.task-title{font-size:var(--fs-md)}.task-title.done{color:var(--c-text-muted);text-decoration:line-through}.task-sub{font-size:var(--fs-xs);margin-top:2px}.task-row.done{opacity:.6}.search-input{width:100%;height:40px;font-size:var(--fs-md);padding:0 12px}.result-row{border-bottom:1px solid var(--c-border);cursor:pointer;align-items:center;gap:10px;padding:11px 14px;display:flex}.result-row:last-child{border-bottom:0}.result-bar{border-radius:1px;flex:none;width:3px;height:30px}.att-row{gap:5px;margin-top:7px;display:flex}.att{min-width:38px;height:var(--h-sm);border:1px solid var(--c-border);border-radius:var(--r-tag);background:var(--c-surface);color:var(--c-text-muted);font-size:var(--fs-xs);white-space:nowrap;transition:background-color var(--dur) var(--ease), color var(--dur) var(--ease), border-color var(--dur) var(--ease);padding:0 10px;font-weight:600;position:relative}.att:after{content:"";position:absolute;inset:-8px -2px}.att.on{background:var(--c-accent);color:var(--c-on-accent);border-color:var(--c-accent)}.att.on:nth-child(3){background:var(--c-danger);border-color:var(--c-danger)}.stat-row{background:var(--c-border);border:1px solid var(--c-border);border-radius:var(--r-panel);grid-template-columns:repeat(4,1fr);gap:1px;margin:10px 0 4px;display:grid;overflow:hidden}.stat{background:var(--c-surface);text-align:center;flex-direction:column;gap:1px;padding:9px 6px;display:flex}.stat b{font-size:var(--fs-md);font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:700}.stat span{font-size:var(--fs-xs);color:var(--c-text-muted);white-space:nowrap}.crop-panel{z-index:200;color:#fff;padding-top:var(--sat);padding-bottom:var(--sab);background:#0c0e12;flex-direction:column;display:flex;position:fixed;inset:0}.crop-head{flex:none;align-items:center;gap:10px;padding:10px 14px;display:flex}.crop-title{text-align:center;font-size:var(--fs-md);flex:auto;font-weight:700}.crop-head .btn.ghost{color:#fff;border-color:#ffffff47}.crop-stage{flex:auto;justify-content:center;align-items:center;min-height:0;padding:4px 14px;display:flex}.crop-frame{touch-action:none;cursor:grab;background:#16181d;border-radius:6px;max-width:100%;max-height:100%;position:relative;overflow:hidden;box-shadow:0 0 0 1px #ffffff24}.crop-frame:active{cursor:grabbing}.crop-loading{font-size:var(--fs-sm);color:#ffffffb3;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.crop-foot{flex:none;padding:6px 14px 14px}.crop-foot .small,.crop-foot .sv{color:#ffffffd9}.crop-foot .panel-desc{color:#fff9}.studio-lock{z-index:20;border:1px solid var(--c-border);border-left:3px solid var(--c-accent);border-radius:var(--r-panel);background:var(--c-surface);align-items:center;gap:10px;margin:0 0 12px;padding:11px 13px;display:flex;position:sticky;top:0}.studio-lock.on{border-left-color:var(--c-border-strong)}.studio-lock.inline{z-index:auto;position:static}.studio-lock-text{flex:auto;min-width:0}.studio-lock-title{font-size:var(--fs-md);align-items:center;gap:6px;font-weight:700;display:flex}.studio-lock .studio-lock-title:before{content:"";background:currentColor;flex:none;width:13px;height:13px;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='11' width='16' height='10' rx='1'/%3E%3Cpath d='M8 11V7a4 4 0 0 1 8 0v4'/%3E%3C/svg%3E") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='11' width='16' height='10' rx='1'/%3E%3Cpath d='M8 11V7a4 4 0 0 1 8 0v4'/%3E%3C/svg%3E") 50%/contain no-repeat}.studio-lock:not(.on) .studio-lock-title:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='11' width='16' height='10' rx='1'/%3E%3Cpath d='M8 11V7a4 4 0 0 1 7.4-2.1'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='11' width='16' height='10' rx='1'/%3E%3Cpath d='M8 11V7a4 4 0 0 1 7.4-2.1'/%3E%3C/svg%3E")}.studio-lock-sub{font-size:var(--fs-xs);color:var(--c-text-muted);margin-top:2px}.studio.locked .panel button,.studio.locked .panel input,.studio.locked .panel select,.studio.locked .panel .switch,.studio.locked .panel .swatch,.studio.locked .panel .preset-card,.studio.locked .panel .wp-item,.studio.locked .panel .upload-zone,.studio.locked .panel .segmented{pointer-events:none}.studio.locked .panel{opacity:.62}.studio.locked .panel .palette-grid{opacity:1}.studio.locked .panel .list-row.tap,.studio.locked .panel [role=button]{pointer-events:none}.panel .mascot-rows.unlocked .list-row.tap{pointer-events:auto}.warn-bar{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-card);border-left:3px solid #ff7d00;align-items:flex-start;gap:10px;margin-bottom:10px;padding:10px 12px;display:flex}.warn-badge{border-radius:var(--r-tag);color:#fff;text-align:center;background:#ff7d00;flex:none;width:18px;height:18px;font-size:12px;font-weight:800;line-height:18px}.warn-title{font-size:var(--fs-sm);font-weight:700}.warn-item{font-size:var(--fs-xs);color:var(--c-text-muted);margin-top:3px;line-height:1.5}.week-pill:before{content:"";position:absolute;inset:-7px -2px}.week-pill.step{min-width:34px;color:var(--c-text);border-color:var(--c-border-strong);padding:0 6px;font-size:16px}.week-pill.step+.week-pill{margin-left:4px}.week-pill:has(+.week-pill.step){margin-right:4px}.week-pill.step:disabled{opacity:.35;cursor:default}.picker-trigger.jump-date{width:128px;font-size:var(--fs-xs);flex:none;padding:0 22px 0 9px}.picker-trigger.jump-date .pk-caret{right:6px}@media (width<=380px){.picker-trigger.jump-date{width:108px}}.sess-card{border:1px solid var(--c-border);border-radius:var(--r-card);background:var(--c-surface-2);margin-bottom:10px;padding:12px}.sess-head{align-items:center;gap:8px;margin-bottom:10px;display:flex}.sess-index{font-size:var(--fs-xs);color:var(--c-accent);white-space:nowrap;flex:none;font-weight:700}.sess-head .btn{flex:none}.empty-actions{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:16px;display:flex}.list-row.tap:active,.result-row:active,.task-main:active{background:var(--c-surface-2)}.list-row.tap{transition:background-color var(--dur) var(--ease)}.task-main{border-radius:var(--r-tag);transition:background-color var(--dur) var(--ease)}.chip:active,.att:active{opacity:.78}.week-pill:active{transform:scale(.94)}.swatch:active,.wp-item:active,.preset-card:active{transform:scale(.97)}.ev:active{filter:brightness(.96)}.segmented .seg:active{opacity:.75}.icon-btn:active{background:var(--c-surface-2)}.plugin-card{border-top:1px solid var(--c-border);padding:13px 14px}.plugin-head{align-items:center;gap:10px;display:flex}.plugin-title{min-width:0;font-size:var(--fs-md);flex:auto;align-items:center;gap:6px;font-weight:700;display:flex}.plugin-badge{letter-spacing:.3px;border-radius:var(--r-tag);background:var(--c-surface-2);color:var(--c-text-muted);border:1px solid var(--c-border);flex:none;padding:1px 5px;font-size:10px;font-weight:600}.plugin-desc{font-size:var(--fs-xs);color:var(--c-text-muted);margin-top:5px;line-height:1.6}.plugin-meta{font-size:var(--fs-xs);color:var(--c-text-muted);font-variant-numeric:tabular-nums;margin-top:6px}.plugin-perms{flex-direction:column;gap:6px;margin-top:9px;display:flex}.plugin-perm{align-items:center;gap:8px;display:flex}.plugin-perm .task-check{margin-top:0}.plugin-perm-text{font-size:var(--fs-xs);color:var(--c-text)}.plugin-caps{flex-wrap:wrap;gap:6px;margin-top:9px;display:flex}.plugin-caps .chip{cursor:default}.plugin-remove{margin-top:10px}.export-opt{flex-direction:column;align-items:stretch;gap:2px}.export-opt .pk-label{flex-direction:column;gap:2px;display:flex}.export-hint{font-size:var(--fs-xs);color:var(--c-text-muted);white-space:normal;font-weight:400}.share-box{resize:none;height:148px;font-family:var(--font-mono);font-size:var(--fs-xs);word-break:break-all;padding:10px;line-height:1.5}.share-meta{font-size:var(--fs-xs);color:var(--c-text-muted);margin-top:8px;line-height:1.55}.check-progress{align-items:center;gap:10px;padding:2px 14px 12px;display:flex}.check-bar{background:var(--c-border);border-radius:2px;flex:auto;height:4px;overflow:hidden}.check-bar>i{background:var(--c-accent);height:100%;transition:width var(--dur-slow) var(--ease);display:block}.check-pct{font-size:var(--fs-xs);color:var(--c-text-muted);font-variant-numeric:tabular-nums;flex:none}.check-row{border-top:1px solid var(--c-border);align-items:flex-start;gap:10px;padding:12px 14px;display:flex}.check-main{flex:auto;min-width:0}.check-title{font-size:var(--fs-md);font-weight:600}.check-how{font-size:var(--fs-xs);color:var(--c-text-muted);margin-top:3px;line-height:1.55}.check-row.done .check-title{color:var(--c-text-muted)}.check-actions{border-top:1px solid var(--c-border);gap:8px;padding:12px 14px 4px;display:flex}.check-actions .btn{flex:none}.welcome{z-index:100;padding:calc(20px + var(--sat)) calc(18px + var(--sar)) calc(20px + var(--sab)) calc(18px + var(--sal));background:var(--c-bg);animation:fadeIn var(--dur-slow) var(--ease);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.welcome-inner{width:100%;max-width:400px}.welcome-brand{align-items:center;gap:12px;margin-bottom:20px;display:flex}.welcome-mark{border-radius:var(--r-panel);background:var(--c-accent);width:46px;height:46px;color:var(--c-on-accent);font-size:var(--fs-xl);flex:none;justify-content:center;align-items:center;font-weight:700;display:flex}.welcome-name{font-size:var(--fs-xl);letter-spacing:-.3px;font-weight:700}.welcome-tag{font-size:var(--fs-xs);color:var(--c-text-muted);margin-top:3px}.welcome-list{flex-direction:column;gap:2px;display:flex}.welcome-item{background:var(--c-surface);border:1px solid var(--c-border);border-bottom:0;align-items:flex-start;gap:12px;padding:13px 14px;display:flex}.welcome-item:first-child{border-radius:var(--r-panel) var(--r-panel) 0 0}.welcome-item:last-child{border-bottom:1px solid var(--c-border);border-radius:0 0 var(--r-panel) var(--r-panel)}.welcome-icon{color:var(--c-accent);flex:none;margin-top:1px;display:inline-flex}.welcome-item-title{font-size:var(--fs-md);font-weight:600}.welcome-item-sub{font-size:var(--fs-xs);color:var(--c-text-muted);margin-top:3px;line-height:1.55}.welcome-go{height:var(--h-lg);font-size:var(--fs-md);margin-top:20px}.welcome-foot{text-align:center;font-size:var(--fs-xs);color:var(--c-text-muted);margin-top:10px}.picker-trigger{width:100%;height:var(--h-md);text-align:left;background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-btn);font-size:var(--fs-md);color:var(--c-text);transition:border-color var(--dur) var(--ease), background-color var(--dur) var(--ease);align-items:center;padding:0 26px 0 10px;display:flex;position:relative}.picker-trigger.compact{font-size:var(--fs-sm);padding:0 22px 0 8px}.picker-trigger:after{content:"";position:absolute;inset:-6px 0}.row>.picker-trigger{flex:1 1 0;min-width:0}.picker-trigger:hover{border-color:var(--c-border-strong)}.picker-trigger:active{background:var(--c-surface-2)}.picker-trigger:disabled{opacity:.45}.picker-trigger .pk-text{text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums;flex:auto;min-width:0;overflow:hidden}.picker-trigger .pk-caret{color:var(--c-text-muted);pointer-events:none;font-size:9px;line-height:1;position:absolute;top:50%;right:9px;transform:translateY(-50%)}.picker-layer.sheet-mask{z-index:70}.picker-layer.sheet{z-index:71}.picker-list{margin:-14px -16px}.picker-opt{text-align:left;width:100%;font-size:var(--fs-md);color:var(--c-text);border-bottom:1px solid var(--c-border);transition:background-color var(--dur) var(--ease);align-items:center;gap:10px;padding:13px 16px;display:flex;position:relative}.picker-opt:last-child{border-bottom:0}.picker-opt:active{background:var(--c-surface-2)}.picker-opt.on{color:var(--c-accent);background:var(--c-today);font-weight:600}.picker-opt .pk-check{width:14px;color:var(--c-accent);flex:none;font-size:12px}.picker-opt .pk-label{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.picker-opt .pk-sub{font-size:var(--fs-xs);color:var(--c-text-muted);font-variant-numeric:tabular-nums;flex:none}.picker-opt.on .pk-sub{color:var(--c-accent)}.cf{margin:-14px -16px;padding:0 16px 4px}.cf-chip{border-radius:2px;display:block;position:absolute;inset:2px}.cf-preview{border-radius:var(--r-btn);border:1px solid var(--c-border);height:72px}.cf-input{align-items:center;gap:8px;margin-top:12px;display:flex}.cf-hash{font-size:var(--fs-lg);color:var(--c-text-muted);font-weight:700}.cf-input .input{text-transform:uppercase;letter-spacing:1px;font-variant-numeric:tabular-nums;font-weight:600}.cf-warn{font-size:var(--fs-xs);color:var(--c-danger);margin-top:6px}.cf-grid{grid-template-columns:repeat(6,1fr);gap:8px;margin-top:14px;display:grid}.cf-swatch{border-radius:var(--r-tag);border:1px solid var(--c-border);height:38px;transition:transform var(--dur) var(--ease);position:relative}.cf-swatch:active{transform:scale(.94)}.cf-swatch.on{box-shadow:0 0 0 2px var(--c-surface), 0 0 0 3px var(--c-accent)}.cal{margin:-14px -16px;padding:0 0 4px}.cal-head{align-items:center;gap:8px;padding:6px 12px 10px;display:flex}.cal-title{text-align:center;font-size:var(--fs-md);font-variant-numeric:tabular-nums;flex:auto;font-weight:700}.cal-nav{width:var(--h-sm);height:var(--h-sm);color:var(--c-text);border:1px solid var(--c-border);border-radius:var(--r-btn);background:var(--c-surface);transition:background-color var(--dur) var(--ease);justify-content:center;align-items:center;font-size:17px;line-height:1;display:flex;position:relative}.cal-nav:active{background:var(--c-surface-2)}.cal-week{font-size:var(--fs-xs);color:var(--c-text-muted);text-align:center;grid-template-columns:repeat(7,1fr);padding:0 8px 4px;display:grid}.cal-grid{grid-template-columns:repeat(7,1fr);gap:2px;padding:0 8px;display:grid}.cal-day{border-radius:var(--r-tag);height:38px;font-size:var(--fs-md);color:var(--c-text);font-variant-numeric:tabular-nums;transition:background-color var(--dur) var(--ease), color var(--dur) var(--ease);justify-content:center;align-items:center;display:flex;position:relative}.cal-day:active{background:var(--c-surface-2)}.cal-day.out{color:var(--c-text-muted);opacity:.45}.cal-day.today{box-shadow:inset 0 0 0 1px var(--c-accent);color:var(--c-accent);font-weight:700}.cal-day.on{background:var(--c-accent);color:var(--c-on-accent);font-weight:700}.cal-foot{border-top:1px solid var(--c-border);gap:8px;margin-top:10px;padding:12px 16px 4px;display:flex}.cal-foot .btn{flex:1 1 0}.time-pick{gap:10px;height:320px;display:flex}.tp-col{flex-direction:column;flex:1 1 0;min-width:0;display:flex}.tp-head{text-align:center;font-size:var(--fs-xs);color:var(--c-text-muted);flex:none;padding:0 0 8px}.tp-scroll{-webkit-overflow-scrolling:touch;border:1px solid var(--c-border);border-radius:var(--r-btn);background:var(--c-surface);flex:auto;min-height:0;overflow-y:auto}.tp-cell{width:100%;height:42px;font-size:var(--fs-md);color:var(--c-text);font-variant-numeric:tabular-nums;border-bottom:1px solid var(--c-border);transition:background-color var(--dur) var(--ease), color var(--dur) var(--ease);display:block}.tp-cell:last-child{border-bottom:0}.tp-cell:active{background:var(--c-surface-2)}.tp-cell.on{background:var(--c-accent);color:var(--c-on-accent);font-weight:700}.picker-trigger .pk-text.ph{color:var(--c-text-muted)}.confirm-mask{z-index:90;animation:fadeIn var(--dur) var(--ease);background:#0000007a;justify-content:center;align-items:center;padding:28px;display:flex;position:fixed;inset:0}.confirm-box{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-panel);width:100%;max-width:320px;box-shadow:var(--shadow-float);animation:popIn .17s var(--ease);overflow:hidden}.confirm-msg{font-size:var(--fs-md);color:var(--c-text);padding:20px 18px;line-height:1.65}.confirm-actions{border-top:1px solid var(--c-border);display:flex}.confirm-actions .btn{height:var(--h-lg);font-size:var(--fs-md);background:0 0;border:0;border-radius:0;flex:1 1 0;font-weight:600}.confirm-actions .btn+.btn{border-left:1px solid var(--c-border)}.confirm-actions .btn:after{display:none}.confirm-actions .btn:active{background:var(--c-surface-2)}.confirm-actions .btn.ghost{color:var(--c-text-muted)}.confirm-actions .btn.danger{color:var(--c-danger)}@keyframes popIn{0%{opacity:.5;transform:scale(.94)}to{opacity:1;transform:scale(1)}}.btn:focus-visible,.icon-btn:focus-visible,.chip:focus-visible,.att:focus-visible,.swatch:focus-visible,.input:focus-visible,.segmented .seg:focus-visible,.week-pill:focus-visible,.tab:focus-visible,.picker-trigger:focus-visible,.picker-opt:focus-visible,.cal-nav:focus-visible,.cal-day:focus-visible,.tp-cell:focus-visible,.task-check:focus-visible,.toast-undo:focus-visible,.preset-card:focus-visible,.wp-item:focus-visible{outline:2px solid var(--c-accent);outline-offset:1px}.crash-full{z-index:300;padding:calc(20px + var(--sat)) 18px calc(20px + var(--sab));background:var(--c-bg);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.crash-card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-panel);width:100%;max-width:460px;box-shadow:var(--shadow-card);padding:16px}.crash-inline{background:var(--c-surface);border:1px solid var(--c-danger);border-radius:var(--r-panel);margin:12px;padding:12px}.crash-title{font-size:var(--fs-md);margin-bottom:6px;font-weight:700}.crash-msg{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--c-text-muted);overflow-wrap:anywhere;background:var(--c-surface-2);border-radius:var(--r-card);padding:8px 10px;line-height:1.7}.mascot-layer{z-index:55;pointer-events:none;position:fixed;inset:0}.mascot{pointer-events:auto;touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;transition:opacity var(--dur) var(--ease), translate 0s linear;position:absolute;transform:translate(-50%,-100%)}.mascot.dragging{cursor:grabbing}.mascot-art{position:relative}.mascot-inner{transform-origin:50% 100%;height:100%;animation:mascotBreathe var(--m-speed,5.2s) var(--ease) infinite, mascotBob var(--m-bob-speed,6.8s) ease-in-out infinite;will-change:transform;position:relative}.mascot-inner.sleeping{opacity:.78}.mascot-img{-webkit-user-drag:none;width:auto;height:100%;display:block}.mascot-sheet{display:block;position:relative;overflow:hidden}.mascot-sheet-img{-webkit-user-drag:none;will-change:transform;backface-visibility:hidden;max-width:none;max-height:none;position:absolute;top:0;left:0}.mascot-blink{background:linear-gradient(to bottom, var(--c-bg), transparent);opacity:.85;height:14%;animation:mascotBlink .13s var(--ease);pointer-events:none;position:absolute;top:0;left:0;right:0}.mascot-shadow{pointer-events:none;background:radial-gradient(#00000042,#0000 70%);width:52%;height:8px;position:absolute;bottom:-4px;left:50%;transform:translate(-50%)}.mascot-thumb{border-radius:var(--r-card);background-color:var(--c-surface);background-image:linear-gradient(45deg, var(--c-border) 25%, transparent 25%, transparent 75%, var(--c-border) 75%), linear-gradient(45deg, var(--c-border) 25%, transparent 25%, transparent 75%, var(--c-border) 75%);background-position:0 0,5px 5px;background-size:10px 10px;justify-content:center;align-items:flex-end;display:flex;position:relative;overflow:hidden}.mascot-thumb.is-empty{border:1px dashed var(--c-border-strong);background-image:none;background-color:var(--c-surface-2)}.mascot-thumb-img{background-position:bottom;background-repeat:no-repeat;background-size:contain;width:100%;height:100%}.mascot-thumb-img.is-sheet{background-position:0 0}.mascot-thumb-badge{border-radius:var(--r-tag);color:#fff;font-variant-numeric:tabular-nums;background:#0000008c;padding:0 4px;font-size:9px;line-height:14px;position:absolute;bottom:2px;right:2px}.mascot-slots{grid-template-columns:repeat(auto-fit,minmax(56px,1fr));gap:8px;padding:2px 14px 12px;display:grid}.mascot-slot{border:1px solid var(--c-border);border-radius:var(--r-panel);background:var(--c-surface);text-align:center;min-width:0;transition:border-color var(--dur) var(--ease), background-color var(--dur) var(--ease);padding:6px 6px 5px;position:relative}.mascot-slot.on{border-color:var(--c-accent);background:var(--c-today)}.mascot-slot:active{background:var(--c-surface-2)}.mascot-slot-name{font-size:var(--fs-xs);text-overflow:ellipsis;white-space:nowrap;margin-top:5px;font-weight:600;overflow:hidden}.mascot-slot-sub{color:var(--c-text-muted);text-overflow:ellipsis;white-space:nowrap;margin-top:1px;font-size:9px;overflow:hidden}.mascot-slot.on .mascot-slot-name{color:var(--c-accent)}.mascot-slot .mascot-slot-add{color:var(--c-text-muted);justify-content:center;align-items:center;font-size:18px;display:flex}.mascot-editbox{border:1px solid var(--c-border);border-radius:var(--r-panel);background:var(--c-surface-2);margin:0 14px 12px;padding:10px}.mascot-editbox-head{align-items:center;gap:10px;display:flex}.mascot-editbox-name{flex:auto;min-width:0}.mascot-grid-nums{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:8px;display:grid}.mascot-grid-nums label{min-width:0}.mascot-grid-nums span{font-size:var(--fs-xs);color:var(--c-text-muted);margin-bottom:4px;display:block}.mascot-grid-nums .input{text-align:center}.mascot-preview{padding:0 14px 12px}.mascot-preview-stage{border:1px solid var(--c-border);border-radius:var(--r-panel);background-color:var(--c-surface);background-image:linear-gradient(45deg, var(--c-border) 25%, transparent 25%, transparent 75%, var(--c-border) 75%), linear-gradient(45deg, var(--c-border) 25%, transparent 25%, transparent 75%, var(--c-border) 75%);background-position:0 0,5px 5px;background-size:10px 10px;justify-content:center;align-items:flex-end;min-height:184px;padding:12px;display:flex;overflow:hidden}.mascot-hero{align-items:center;gap:12px;padding:12px 14px 6px;display:flex}.mascot-hero-stage{border-radius:var(--r-card);background-color:var(--c-surface);background-image:linear-gradient(45deg, var(--c-border) 25%, transparent 25%, transparent 75%, var(--c-border) 75%), linear-gradient(45deg, var(--c-border) 25%, transparent 25%, transparent 75%, var(--c-border) 75%);background-position:0 0,5px 5px;background-size:10px 10px;flex:none;justify-content:center;align-items:flex-end;width:84px;height:84px;display:flex;overflow:hidden}.mascot-hero-meta{flex:auto;min-width:0}.mascot-backdrop{z-index:0;background:0 0;position:fixed;inset:0}.mascot-menu{z-index:1;background:var(--c-surface);border:1px solid var(--c-border-strong);border-radius:var(--r-panel);width:208px;box-shadow:var(--shadow-float);pointer-events:auto;animation:popIn var(--dur) var(--ease);padding:6px;position:absolute;transform:translate(-50%,-100%)}.mascot-menu.below{animation:popInDown var(--dur) var(--ease);transform:translate(-50%)}@keyframes popInDown{0%{opacity:0;transform:translate(-50%,-4px)scale(.98)}to{opacity:1;transform:translate(-50%)scale(1)}}.mascot-menu-head{font-size:var(--fs-xs);color:var(--c-text-muted);align-items:center;gap:6px;padding:5px 8px 7px;display:flex;overflow:hidden}.mascot-menu-dot{background:var(--c-accent);border-radius:50%;flex:none;width:6px;height:6px}.mascot-menu-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}.mascot-menu-item{text-align:left;width:100%;color:var(--c-text);border-radius:var(--r-btn);transition:background-color var(--dur) var(--ease), color var(--dur) var(--ease);align-items:center;gap:10px;padding:8px 9px;display:flex}.mascot-menu-item+.mascot-menu-item{margin-top:1px}.mascot-menu-item svg{color:var(--c-text-muted);transition:color var(--dur) var(--ease);flex:none}.mascot-menu-item:active{background:var(--c-surface-2)}.mascot-menu-item:active svg,.mascot-menu-item:active .mmi-text{color:var(--c-accent)}.mmi-text{min-width:0;font-size:var(--fs-sm);font-weight:600;display:block}.mmi-sub{font-size:var(--fs-xs);color:var(--c-text-muted);text-overflow:ellipsis;white-space:nowrap;margin-top:1px;font-weight:400;display:block;overflow:hidden}.mascot-menu-arrow{background:var(--c-surface);border-right:1px solid var(--c-border-strong);border-bottom:1px solid var(--c-border-strong);width:10px;height:10px;margin-left:-5px;position:absolute;bottom:-5px;left:50%;transform:rotate(45deg)}.mascot-menu.below .mascot-menu-arrow{border:0;border-left:1px solid var(--c-border-strong);border-top:1px solid var(--c-border-strong);top:-5px;bottom:auto}@keyframes mascotBreathe{0%,to{transform:scaleY(1)rotate(0)}50%{transform:scaleY(calc(1 + var(--m-breathe,.02))) rotate(var(--m-sway,0deg))}}@keyframes mascotBob{0%,to{translate:0 calc(var(--m-bob,.01) * -100%)}50%{translate:0 calc(var(--m-bob,.01) * 100%)}}@keyframes mascotBlink{0%{opacity:0}to{opacity:.85}}@keyframes mascotGaitStep{0%,to{translate:0}25%{translate:0 -3.2%}50%{translate:0}75%{translate:0 -3.2%}}@keyframes mascotGaitTilt{0%,to{transform:rotate(0)}25%{transform:rotate(1.8deg)}75%{transform:rotate(-1.8deg)}}.mascot.walking .mascot-inner.gait{animation:mascotGaitTilt var(--gait-speed,.56s) ease-in-out infinite, mascotGaitStep var(--gait-speed,.56s) ease-in-out infinite}@keyframes mascotRxHop{0%{transform:translateY(0)scale(1)}38%{transform:translateY(-9%)scale(1.03,.96)}70%{transform:translateY(0)scale(.98,1.03)}to{transform:translateY(0)scale(1)}}@keyframes mascotRxSway{0%{transform:rotate(0)}22%{transform:rotate(-4.5deg)}55%{transform:rotate(3.5deg)}80%{transform:rotate(-1.5deg)}to{transform:rotate(0)}}@keyframes mascotRxStartle{0%{transform:scale(1)}18%{transform:scale(1.11)}36%{transform:scale(1.02)translate(-2%)}54%{transform:scale(1.05)translate(2%)}to{transform:scale(1)}}@keyframes mascotRxPeek{0%{transform:translateY(0)scale(1)}45%{transform:translateY(-3%)scale(.94,1.02)}to{transform:translateY(0)scale(1)}}.mascot-inner.rx-hop{animation:mascotRxHop .52s var(--ease)}.mascot-inner.rx-sway{animation:mascotRxSway .7s var(--ease)}.mascot-inner.rx-startle{animation:mascotRxStartle .42s var(--ease)}.mascot-inner.rx-peek{animation:mascotRxPeek .46s var(--ease)}@media (prefers-reduced-motion:reduce){.mascot-inner.rx-hop,.mascot-inner.rx-sway,.mascot-inner.rx-startle,.mascot-inner.rx-peek,.mascot-inner{animation:none}.mascot{transition:none}.mascot.walking .mascot-inner.gait{animation:none}.mascot-blink{display:none}}.panel{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-panel);margin-bottom:12px;overflow:hidden}.panel-head{align-items:center;gap:8px;padding:12px 14px 10px;display:flex}.panel-title{font-size:var(--fs-md);font-weight:700}.panel-sub{font-size:var(--fs-xs);color:var(--c-text-muted);margin-left:auto}.panel-desc{font-size:var(--fs-xs);color:var(--c-text-muted);padding:0 14px 12px;line-height:1.65}.sheet.sheet-doc,.sheet.sheet-full{border-top:0;border-radius:0;max-height:100dvh;top:0}.sheet-peek{-webkit-overflow-scrolling:touch;max-height:210px;padding:2px 14px 10px;overflow-y:auto}.sheet-peek.tall{max-height:320px}.peek-row{border-bottom:1px solid var(--c-border);font-size:var(--fs-xs);gap:8px;padding:5px 0;line-height:1.6;display:flex}.peek-row:last-child{border-bottom:0}.peek-row.head{color:var(--c-accent);font-weight:700}.peek-no{width:36px;color:var(--c-text-muted);font-variant-numeric:tabular-nums;flex:none}.peek-text{overflow-wrap:anywhere;flex:auto;min-width:0}.import-stats{gap:8px;margin-bottom:12px;display:flex}.import-stats .stat{text-align:center;border:1px solid var(--c-border);border-radius:var(--r-card);background:var(--c-surface-2);flex:1 1 0;padding:10px 6px}.import-stats .stat.bad{border-color:var(--c-danger)}.import-stats .stat-n{font-size:var(--fs-xl);font-variant-numeric:tabular-nums;font-weight:700}.import-stats .stat.bad .stat-n{color:var(--c-danger)}.import-stats .stat-l{font-size:var(--fs-xs);color:var(--c-text-muted);margin-top:2px}.sheet-doc .sheet-head{border-bottom:1px solid var(--c-border)}.sheet-doc .sheet-body{padding:0 16px calc(24px + var(--sab))}.doc-nav{z-index:3;-webkit-overflow-scrolling:touch;border-bottom:1px solid var(--c-border);background:var(--c-surface);gap:6px;padding:12px 0 9px;display:flex;position:sticky;top:0;overflow-x:auto}.doc-nav::-webkit-scrollbar{display:none}.doc-nav-chip{height:var(--h-md);border:1px solid var(--c-border);border-radius:var(--r-pill);background:var(--c-surface-2);color:var(--c-text);font-size:var(--fs-sm);white-space:nowrap;flex:none;padding:0 11px;position:relative}.doc-nav-chip:after{content:"";position:absolute;inset:-6px 0}.doc-nav-chip:active{background:var(--c-today);border-color:var(--c-accent);color:var(--c-accent)}.doc-lead{font-size:var(--fs-sm);color:var(--c-text-muted);background:var(--c-surface-2);border-left:2px solid var(--c-accent);border-radius:var(--r-card);margin:12px 0 0;padding:10px 12px;line-height:1.8}.doc-sec{padding-top:20px;scroll-margin-top:60px}.doc-sec+.doc-sec{border-top:1px solid var(--c-border);margin-top:20px}.doc-h2{font-size:var(--fs-lg);margin-bottom:8px;font-weight:700}.doc-h3{font-size:var(--fs-md);margin:14px 0 6px;font-weight:700}.doc-p{font-size:var(--fs-md);margin-bottom:8px;line-height:1.85}.doc-p b,.doc-ul b{font-weight:700}.doc-ul{margin:0 0 8px;padding-left:18px}.doc-ul li{font-size:var(--fs-md);margin-bottom:5px;line-height:1.85}.doc-ul li::marker{color:var(--c-text-muted)}.doc-steps{margin:6px 0 10px}.doc-step{gap:10px;padding:7px 0;display:flex}.doc-step-n{border-radius:var(--r-pill);background:var(--c-accent);width:20px;height:20px;color:var(--c-on-accent);font-size:var(--fs-xs);flex:none;justify-content:center;align-items:center;margin-top:1px;font-weight:700;display:flex}.doc-step-t{font-size:var(--fs-md);font-weight:700}.doc-step-d{font-size:var(--fs-sm);color:var(--c-text-muted);margin-top:2px;line-height:1.8}.doc-note{font-size:var(--fs-sm);color:var(--c-text-muted);border:1px dashed var(--c-border-strong);border-radius:var(--r-card);margin:10px 0 4px;padding:9px 11px;line-height:1.8}.doc-qa{border-bottom:1px solid var(--c-border);padding:11px 0}.doc-qa:last-child{border-bottom:0}.doc-q{font-size:var(--fs-md);margin-bottom:5px;font-weight:700}.doc-q:before{content:"问 ";color:var(--c-text-muted);font-weight:400;font-size:var(--fs-sm)}.doc-a{font-size:var(--fs-sm);color:var(--c-text-muted);line-height:1.85}.doc-a:before{content:"答 ";color:var(--c-text-muted)}.doc-actions{margin-top:12px}.doc-table{flex-direction:column;margin:8px 0 10px;display:flex}.doc-tr{border-bottom:1px solid var(--c-border);font-size:var(--fs-sm);gap:10px;padding:6px 0;line-height:1.7;display:flex}.doc-tr:last-child{border-bottom:0}.doc-tr>span:first-child{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--c-accent);overflow-wrap:anywhere;flex:0 0 42%}.doc-tr>span:last-child{flex:auto;min-width:0}.doc-code{background:var(--c-surface-2);border:1px solid var(--c-border);border-radius:var(--r-card);font-family:var(--font-mono);font-size:var(--fs-xs);white-space:pre;-webkit-overflow-scrolling:touch;margin:8px 0 10px;padding:10px 12px;line-height:1.75;overflow-x:auto}.log-entry{border-bottom:1px solid var(--c-border);padding:13px 0}.log-entry:last-child{border-bottom:0}.log-head{flex-wrap:wrap;align-items:baseline;gap:8px;margin-bottom:9px;display:flex}.log-ver{font-family:var(--font-mono);font-size:var(--fs-md);font-weight:700}.log-title{min-width:0;font-size:var(--fs-sm);color:var(--c-text-muted);flex:auto}.log-date{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--c-text-muted)}.log-items{flex-direction:column;gap:7px;display:flex}.log-item{align-items:flex-start;gap:8px;display:flex}.log-tag{font-size:var(--fs-xs);border:1px solid var(--c-border-strong);border-radius:var(--r-tag);color:var(--c-text-muted);flex:none;margin-top:3px;padding:0 5px;line-height:15px}.log-tag.new{color:var(--c-accent);border-color:var(--c-accent)}.log-tag.fix{color:var(--c-danger);border-color:var(--c-danger)}.log-text{font-size:var(--fs-sm);line-height:1.8}.week-scroll{padding:0 5px}.week-bar{align-items:center;gap:8px;padding:9px 6px 8px;display:flex}.week-range{font-size:var(--fs-xs);color:var(--c-text-muted);white-space:nowrap;flex:none}.week-head{grid-template-columns:var(--axis-w) 1fr;margin-bottom:0;display:grid}.week-head .axis-spacer{border:1px solid var(--c-border);background:var(--c-surface);color:var(--c-text-muted);cursor:pointer;border-left:0;justify-content:center;align-items:center;font-size:13px;line-height:1;display:flex;position:relative}.week-head .axis-spacer:after{content:"";position:absolute;inset:-8px -6px}.week-head .axis-spacer:active{background:var(--c-today);color:var(--c-accent)}.axis{cursor:pointer}.axis:active .axis-cell .ai{color:var(--c-accent)}.week-head .days-head{border-top:1px solid var(--c-border);border-bottom:1px solid var(--c-border);display:flex}.wk-day{text-align:center;border-left:1px solid var(--c-border);flex:1 1 0;min-width:0;padding:4px 0 5px}.wk-day:first-child{border-left:0}.wk-day .wd{color:var(--c-text-muted);letter-spacing:0;font-size:11px}.wk-day .dd{font-size:var(--fs-md);margin-top:0;font-weight:700}.wk-day.today{background:var(--c-accent)}.wk-day.today .wd,.wk-day.today .dd{color:var(--c-on-accent)}.week-grid{grid-template-columns:var(--axis-w) 1fr;padding-bottom:10px;display:grid}.axis{border-right:1px solid var(--c-border);flex-direction:column;display:flex}.axis-cell{height:var(--row-h);flex-direction:column;justify-content:flex-start;align-items:center;padding-top:4px;display:flex}.axis-cell .ai{color:var(--c-text-muted);white-space:nowrap;letter-spacing:.2px;font-size:11px;font-weight:700;line-height:1.2}.axis-cell .at{color:var(--c-text-muted);opacity:.72;font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11px;line-height:1.25}.days{height:calc(var(--row-h) * var(--periods));background-image:linear-gradient(to bottom, var(--c-border) 1px, transparent 1px), linear-gradient(to right, var(--c-border) 1px, transparent 1px);background-size:100% var(--row-h), var(--colw,14.2857%) 100%;position:relative}.today-col{background:var(--c-today);pointer-events:none;position:absolute;top:0;bottom:0}.now-line{background:var(--c-danger);z-index:6;pointer-events:none;height:1.5px;position:absolute;left:0;right:0}.now-line:before{content:"";background:var(--c-danger);border-radius:1px;width:5px;height:5px;position:absolute;top:-2px;left:0}.ev{cursor:pointer;border-radius:var(--r-card);transition:opacity var(--dur) var(--ease), border-color var(--dur) var(--ease);opacity:var(--card-opacity);flex-direction:column;gap:1px;padding:4px;font-size:11px;line-height:1.25;display:flex;position:absolute;overflow:hidden}.ev:hover{border-color:var(--c-border-strong)}.ev .ev-name{-webkit-line-clamp:3;-webkit-box-orient:vertical;font-weight:600;display:-webkit-box;overflow:hidden}.ev .ev-room{opacity:.62;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ev .ev-teacher{opacity:.5;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ev .ev-flag{background:var(--c-danger);color:#fff;border-radius:2px;padding:0 3px;font-size:10px;line-height:1.3;position:absolute;top:2px;right:2px}.ev[data-style=line]{background-color:var(--c-surface);background-image:linear-gradient(var(--cc-fill), var(--cc-fill));border:1px solid var(--c-border);border-left:3px solid var(--cc);color:var(--c-text)}.ev[data-style=solid]{background:var(--cc);color:var(--cc-on);border:1px solid #0000}.ev[data-style=gradient]{background:linear-gradient(155deg, var(--cc), var(--cc2));color:var(--cc-on);border:1px solid #0000}.ev[data-style=glass]{background:var(--cc-soft);color:var(--c-text);-webkit-backdrop-filter:blur(12px)saturate(1.4);border:1px solid var(--cc-soft-line)}.ev[data-style=outline]{background:var(--c-surface);color:var(--c-text);border:1.5px solid var(--cc)}.ev.has-image{color:#fff;border-color:#0000}.ev .ev-bg{z-index:0;background-position:50%;background-size:cover;position:absolute;inset:0}.ev .ev-veil{z-index:1;background:linear-gradient(#0003,#000000a8);position:absolute;inset:0}.ev .ev-body{z-index:2;flex-direction:column;gap:1px;display:flex;position:relative}.empty{text-align:center;color:var(--c-text-muted);padding:44px 24px}.empty .empty-emoji{color:var(--c-text-muted);opacity:.55;margin:0 auto 10px;display:block}.empty .empty-title{font-size:var(--fs-md);color:var(--c-text);margin-bottom:4px;font-weight:600}.hero{background:var(--c-surface);border:1px solid var(--c-border);border-left:3px solid var(--hero-c,var(--c-accent));border-radius:var(--r-panel);margin-bottom:6px;padding:13px 14px 14px;position:relative;overflow:hidden}.hero-head{align-items:center;gap:8px;display:flex}.hero-kicker{font-size:var(--fs-xs);color:var(--c-text-muted);letter-spacing:.3px;white-space:nowrap;font-weight:600}.hero-tag{white-space:nowrap;letter-spacing:.3px;border-radius:var(--r-tag);background:var(--hero-c,var(--c-accent));color:#fff;flex:none;margin-left:auto;padding:2px 7px;font-size:10.5px;font-weight:700}.hero-title{font-size:var(--fs-xl);letter-spacing:-.3px;margin-top:7px;font-weight:700;line-height:1.25}.hero-meta{font-size:var(--fs-sm);color:var(--c-text-muted);margin-top:4px}.hero-count{align-items:baseline;gap:6px;margin-top:12px;display:flex}.hero-count .num{letter-spacing:-1.2px;color:var(--hero-c,var(--c-accent));font-size:34px;font-weight:800;line-height:1}.hero-count .unit{font-size:var(--fs-sm);color:var(--c-text-muted)}.hero-progress{background:var(--c-border);height:2px;margin-top:11px;overflow:hidden}.hero-progress>i{background:var(--hero-c,var(--c-accent));height:100%;transition:width 1s linear;display:block}.hero.has-image{color:#fff;background-position:50%;background-size:cover;border-left-color:#0000}.hero .hero-veil{z-index:0;background:linear-gradient(120deg,#00000057,#000000b3);position:absolute;inset:0}.hero.has-image>.hero-inner{z-index:1;position:relative}.hero.has-image .hero-title,.hero.has-image .hero-count .num{color:#fff}.hero.has-image .hero-kicker,.hero.has-image .hero-meta,.hero.has-image .hero-count .unit{color:#ffffffc7}.hero.has-image .hero-progress{background:#ffffff3d}.hero.has-image .hero-progress>i{background:#fff}.tl{padding-left:58px;position:relative}.tl:before{content:"";background:var(--c-border);width:1px;position:absolute;top:5px;bottom:14px;left:53px}.tl-item{padding-bottom:7px;position:relative}.tl-time{text-align:right;width:46px;color:var(--c-text-muted);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:11px;line-height:1.35;position:absolute;top:4px;left:-56px}.tl-node{background:var(--c-surface);border:1.5px solid var(--tl-c);border-radius:1px;width:7px;height:7px;position:absolute;top:8px;left:-14px}.tl-item.ongoing .tl-node{background:var(--tl-c)}.tl-card{background:var(--c-surface);border:1px solid var(--c-border);border-left:3px solid var(--tl-c);border-radius:var(--r-card);transition:opacity var(--dur) var(--ease);padding:9px 11px;position:relative}.tl-item.past .tl-card{opacity:.45}.tl-item.ongoing .tl-card{box-shadow:0 0 0 1px var(--c-today)}.tl-name{font-weight:600;font-size:var(--fs-md)}.tl-meta{font-size:var(--fs-xs);color:var(--c-text-muted);margin-top:2px}.tl-status{font-size:var(--fs-xs);margin-top:3px;font-weight:700}.color-row{flex-wrap:wrap;align-items:center;gap:7px;padding:4px 14px 13px;display:flex}.custom-color{border:1px solid var(--c-border);border-radius:var(--r-tag);background:0 0;width:36px;height:36px;padding:0;position:relative}.custom-color:after{content:"";position:absolute;inset:-4px}.upload-zone{text-align:center;border:1px dashed var(--c-border-strong);border-radius:var(--r-btn);font-size:var(--fs-xs);color:var(--c-text-muted);transition:border-color var(--dur) var(--ease), background-color var(--dur) var(--ease);margin:0 14px 13px;padding:16px;line-height:1.6}.upload-zone.hot{border-color:var(--c-accent);background:var(--c-today);color:var(--c-accent)}.asset-line{border-top:1px solid var(--c-border);align-items:center;gap:10px;padding:10px 14px;display:flex}.asset-line>div{min-width:0}.asset-line .btn{flex:none}.asset-thumb{width:var(--h-md);height:var(--h-md);border-radius:var(--r-tag);object-fit:cover;border:1px solid var(--c-border);flex:none}.drop-mask{z-index:120;color:#fff;font-size:var(--fs-lg);border-radius:var(--r-panel);background:#0000009e;border:2px dashed #ffffff6b;justify-content:center;align-items:center;margin:12px;font-weight:700;display:flex;position:fixed;inset:0}.setting-note{font-size:var(--fs-xs);color:var(--c-text-muted);line-height:1.7}@media (width<=430px){.ev .ev-name{-webkit-line-clamp:4}.ev .ev-teacher{display:none}}@media (width<=380px){.ev{padding:3px;font-size:11px}.ev .ev-room{font-size:10px}.days{--gap:2px}.week-range{display:none}}@media (height<=700px){.topbar{padding-top:calc(var(--sat) + 7px)}.week-strip{padding:6px 0 7px}.term-sub{display:none}}@media (orientation:landscape) and (height<=560px){.topbar{padding-top:calc(var(--sat) + 4px)}.week-strip{padding:4px 0 5px}.week-pill{min-width:30px;height:26px}.tab-icon{width:17px;height:17px}.fab{width:44px;height:44px;bottom:calc(var(--tab-h) + var(--sab) + 10px)}.content-inner{padding-bottom:calc(var(--tab-h) + var(--sab) + 12px)}}@media (hover:none){.week-pill:hover{border-color:var(--c-border);color:var(--c-text-muted)}.week-pill.active:hover{color:var(--c-on-accent)}.ev:hover,.btn:hover,.chip:hover,.icon-btn:hover{border-color:var(--c-border)}}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}
