@import "https://fonts.googleapis.com/css2?family=Geist:wght@300;400;500;600;700;800&display=swap";:root{--bg:#fdf0e9;--bg-card:#fff;--bg-muted:#fbf4f0;--bg-hover:#f7e9e1;--text-1:#1a1a2e;--text-2:#4a4a68;--text-3:#9e9eb8;--border:#0000000f;--border-subtle:#00000008;--accent:#6366f1;--accent-dim:#6366f11a;--accent-glow:#6366f138;--ok:#10b981;--warn:#f59e0b;--danger:#f43f5e;--radius-sm:6px;--radius-md:12px;--radius-lg:18px;--radius-xl:24px;--shadow-xs:0 1px 2px #00000008;--shadow-sm:0 2px 8px #0000000a, 0 1px 2px #00000008;--shadow-md:0 4px 16px #0000000f, 0 1px 4px #00000008;--shadow-lg:0 12px 32px #00000014, 0 2px 8px #0000000a;--shadow-xl:0 24px 56px #0000001a, 0 4px 12px #0000000d;--glass:#fdf0e9cc;--glass-blur:14px;--ease-out:cubic-bezier(.22,1,.36,1);--ease-spring:cubic-bezier(.34,1.56,.64,1);--sidebar-w:280px;--header-h:60px}[data-theme=dark]{--bg:#1a1520;--bg-card:#231e28;--bg-muted:#2a2430;--bg-hover:#332c3a;--text-1:#f0eaf5;--text-2:#9b8fad;--text-3:#5a5068;--border:#ffffff14;--border-subtle:#ffffff0a;--accent:#a78bfa;--accent-dim:#a78bfa1f;--accent-glow:#a78bfa33;--glass:#1a1520d9;--shadow-xs:0 1px 2px #00000040;--shadow-sm:0 1px 4px #0000004d, 0 2px 8px #0003;--shadow-md:0 4px 16px #00000059, 0 1px 4px #00000040;--shadow-lg:0 12px 32px #00000073, 0 2px 8px #0000004d;--shadow-xl:0 24px 56px #0000008c, 0 4px 12px #00000059}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text-1);-webkit-font-smoothing:antialiased;min-height:100vh;font-family:Geist,-apple-system,BlinkMacSystemFont,sans-serif;line-height:1.5;transition:background .25s,color .25s}button{cursor:pointer;color:inherit;background:0 0;border:none;font-family:inherit}input,textarea,select{color:inherit;background:0 0;border:none;outline:none;font-family:inherit}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--text-3);border-radius:99px}.app{flex-direction:column;min-height:100vh;display:flex}.app--ready .header,.app--ready .main{opacity:1}@keyframes splash-bg-in{0%{opacity:0}to{opacity:1}}.splash{z-index:999;cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;display:flex;position:fixed;inset:0;overflow:hidden}.splash--dark{background:radial-gradient(at 30% 40%,#2d1b69 0%,#1a1520 55%,#0d0a12 100%)}.splash--dark .splash__date{color:#c8b9ffa6}.splash--dark .splash__greeting{background:linear-gradient(135deg,#e0d7ff 0%,#c4b5fd 40%,#a78bfa 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.splash--dark .splash__hint{color:#c8b9ff59}.splash--light{background:radial-gradient(at 60% 30%,#fde8d8 0%,#fdf0e9 50%,#f8e0cc 100%)}.splash--light .splash__date{color:#4a2d1e8c}.splash--light .splash__greeting{background:linear-gradient(135deg,#1a1a2e 0%,#3d2b1e 50%,#6b3a2a 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.splash--light .splash__hint{color:#4a2d1e4d}.splash__grain{pointer-events:none;opacity:.25;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.04'/%3E%3C/svg%3E");background-repeat:repeat;background-size:128px 128px;position:absolute;inset:0}.splash__content{z-index:1;text-align:center;max-width:680px;padding:0 32px;position:relative}.splash__date,.splash__greeting,.splash__hint{opacity:0;filter:blur(14px);transition:opacity .5s var(--ease-out), filter .5s var(--ease-out), transform .5s var(--ease-out);transform:translateY(10px)}.splash__item--in{opacity:1!important;filter:blur()!important;transform:translateY(0)!important}.splash__date{letter-spacing:.06em;text-transform:capitalize;margin-bottom:20px;font-size:clamp(13px,2vw,16px);font-weight:500}.splash__greeting{letter-spacing:-.04em;margin-bottom:36px;font-size:clamp(26px,5vw,48px);font-weight:800;line-height:1.15}.splash__hint{-webkit-backdrop-filter:blur(4px);letter-spacing:.12em;text-transform:uppercase;cursor:pointer;background:0 0;border-radius:99px;justify-content:center;align-items:center;padding:10px 24px;font-size:11px;font-weight:600;transition:all .2s;display:inline-flex}.splash--dark .splash__hint{color:#c8b9ff8c;border:1px solid #c8b9ff33}.splash--light .splash__hint{color:#4a2d1e73;border:1px solid #4a2d1e26}.splash--dark .splash__hint:hover{color:#c8b9ffcc;border-color:#c8b9ff66}.splash--light .splash__hint:hover{color:#4a2d1eb3;border-color:#4a2d1e4d}.splash--leaving{animation:splash-leave .58s var(--ease-out) both}@keyframes splash-leave{0%{opacity:1;filter:blur()}to{opacity:0;filter:blur(20px)}}.header{z-index:80;height:var(--header-h);background:var(--glass);-webkit-backdrop-filter:blur(var(--glass-blur));border-bottom:1px solid var(--border);transition:background .25s;position:sticky;top:0}.header__inner{justify-content:space-between;align-items:center;width:100%;max-width:1400px;height:100%;margin:0 auto;padding:0 28px;display:flex}.header__brand{align-items:center;gap:10px;display:flex}.header__logo{color:#fff;background:linear-gradient(135deg,#6366f1 0%,#8b5cf6 100%);border-radius:10px;justify-content:center;align-items:center;width:34px;height:34px;display:flex;box-shadow:0 2px 10px #6366f159}.header__title{letter-spacing:-.03em;color:var(--text-1);font-size:17px;font-weight:700}.header__actions{align-items:center;gap:6px;display:flex}.btn{border-radius:var(--radius-md);letter-spacing:-.01em;white-space:nowrap;cursor:pointer;justify-content:center;align-items:center;gap:8px;min-height:42px;padding:10px 18px;font-size:13.5px;font-weight:600;transition:all .18s cubic-bezier(.22,1,.36,1);display:inline-flex}.btn-primary{background:var(--accent);color:#fff;box-shadow:0 1px 3px #6366f14d}.btn-primary:hover{filter:brightness(1.08);transform:translateY(-1px);box-shadow:0 4px 14px #6366f166}.btn-ghost{color:var(--text-2)}.btn-ghost:hover{background:var(--bg-hover);color:var(--text-1)}.btn-outline{border:1px solid var(--border);color:var(--text-2);background:var(--bg-card)}.btn-outline:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-dim)}.btn-danger{color:var(--danger)}.btn-danger:hover{background:#f43f5e14}.btn-icon{border-radius:var(--radius-sm);width:34px;height:34px;color:var(--text-2);justify-content:center;align-items:center;padding:0;display:flex}.btn-icon:hover{background:var(--bg-hover);color:var(--text-1)}.btn-sm{padding:5px 10px;font-size:12px}.save-pill{color:var(--text-3);letter-spacing:-.01em;border-radius:99px;align-items:center;gap:5px;padding:4px 10px;font-size:12px;font-weight:500;display:flex}.save-pill--ok{color:var(--ok)}.save-pill__dot{background:var(--ok);border-radius:50%;width:6px;height:6px;animation:2s infinite pulse-dot}@keyframes pulse-dot{0%,to{opacity:.4;transform:scale(1)}50%{opacity:1;transform:scale(1.3)}}.theme-toggle{background:var(--bg-muted);border:1px solid var(--border);cursor:pointer;border-radius:99px;width:42px;height:24px;transition:border-color .15s;position:relative}.theme-toggle:hover{border-color:var(--accent)}.theme-toggle__thumb{background:var(--accent);color:#fff;width:18px;height:18px;transition:transform .25s var(--ease-out);border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:2px;left:2px;box-shadow:0 1px 4px #00000026}[data-theme=dark] .theme-toggle__thumb{transform:translate(18px)}.main{flex:1;width:100%;max-width:1400px;margin:0 auto;padding:28px}.day-hero{top:var(--header-h);z-index:70;background:var(--glass);-webkit-backdrop-filter:blur(var(--glass-blur));border-bottom:1px solid var(--border);margin:-24px -28px 16px;padding:24px 28px 16px;position:sticky}.day-hero__date-strip{align-items:center;gap:8px;margin-bottom:6px;display:flex}.day-hero__weekday{letter-spacing:-.04em;color:var(--text-1);font-size:32px;font-weight:800;line-height:1}.day-hero__dateinfo{color:var(--text-3);letter-spacing:-.01em;margin-top:4px;font-size:13px;font-weight:400}.day-hero__greeting{color:var(--text-2);letter-spacing:-.02em;margin-top:6px;font-size:15px;font-weight:500}.day-hero__actions{align-items:center;gap:8px;display:flex}.hour-row{border-radius:var(--radius-lg);cursor:pointer;align-items:center;gap:10px;min-height:60px;margin-bottom:6px;padding:4px 0;transition:background .2s;display:flex}.hour-row--current .hour-label{color:var(--accent);font-weight:700}.hour-label{width:52px;color:var(--text-3);text-align:right;letter-spacing:-.01em;flex-shrink:0;padding-right:8px;font-size:12px;font-weight:500;position:relative}.hour-label--current:before{content:"";background:var(--accent);width:6px;height:6px;box-shadow:0 0 0 3px var(--accent-glow);border-radius:50%;position:absolute;top:50%;right:0;transform:translateY(-50%)}.hour-line{flex-direction:row;flex:1;align-items:center;gap:8px;display:flex;position:relative}.task-row{flex:1;align-items:center;gap:12px;min-width:0;display:flex}.task-row__check{border:2px solid var(--border);color:#0000;width:24px;height:24px;transition:all .2s var(--ease-spring);cursor:pointer;background:0 0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.task-row__check:hover{border-color:var(--card-color,var(--accent));transform:scale(1.15)}.task-row__check--checked{background:var(--card-color,var(--accent));border-color:var(--card-color,var(--accent));color:#fff}.task-card{background:var(--bg-card);cursor:grab;min-width:0;min-height:120px;transition:all .2s var(--ease-out);box-shadow:var(--shadow-xs);border:none;border-radius:20px;flex:1;align-items:flex-start;gap:14px;padding:14px 18px;display:flex}.task-card:active{cursor:grabbing}.task-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.task-card--done{opacity:.55}.task-card--done .task-card__title{color:var(--text-3);text-decoration:line-through}.task-card__icon-wrap{background:var(--card-bg,var(--accent-dim));width:42px;height:42px;color:var(--card-color,var(--accent));border-radius:14px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.task-card__body{flex:1;min-width:0}.task-card__title{color:var(--text-1);letter-spacing:-.01em;white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;line-height:1.4;overflow:hidden}.task-card__meta{color:var(--text-3);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:11px;font-weight:500;overflow:hidden}.fab{color:#fff;z-index:100;width:56px;height:56px;transition:all .2s var(--ease-spring);background:#4a2d1e;border-radius:18px;justify-content:center;align-items:center;display:flex;position:fixed;bottom:32px;right:32px;box-shadow:0 8px 28px #4a2d1e59}.fab:hover{transform:translateY(-4px)scale(1.06);box-shadow:0 14px 36px #4a2d1e73}[data-theme=dark] .fab{background:var(--accent);box-shadow:0 8px 28px #a78bfa4d}[data-theme=dark] .fab:hover{box-shadow:0 14px 36px #a78bfa66}.is-dragging{opacity:.35;transform:scale(.96)}.drop-target{background:var(--accent-dim);outline:2px dashed var(--accent);outline-offset:-2px}.slot-add{border-radius:var(--radius-md);border:1.5px dashed var(--border);min-height:54px;color:var(--text-3);cursor:pointer;transition:all .16s var(--ease-out);background:0 0;flex:1;justify-content:center;align-items:center;gap:6px;font-size:12px;font-weight:500;display:flex}.slot-add:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-dim)}.week-view{grid-template-columns:repeat(7,1fr);gap:16px;min-width:900px;display:grid}.week-col__header{text-align:center;border-radius:var(--radius-sm);background:var(--bg-muted);margin-bottom:12px;padding:8px 4px}.week-col__header--today{background:var(--accent-dim)}.week-col__day-short{letter-spacing:-.01em;color:var(--text-2);font-size:13px;font-weight:700}.week-col__header--today .week-col__day-short{color:var(--accent)}.week-col__day-full{color:var(--text-3);margin-top:1px;font-size:11px}.week-hour-row{flex-direction:column;gap:3px;margin-bottom:4px;display:flex}.week-hour-label{color:var(--text-3);letter-spacing:-.01em;padding:2px 0;font-size:10px;font-weight:500}.week-slot{flex-direction:column;gap:2px;display:flex}.week-task-chip{color:var(--chip-color,var(--accent));background:var(--chip-bg,var(--accent-dim));cursor:pointer;border-radius:6px;align-items:center;gap:5px;padding:4px 8px;font-size:11px;font-weight:500;transition:filter .15s;display:flex;overflow:hidden}.week-task-chip:hover{filter:brightness(1.07)}.week-task-chip__icon{flex-shrink:0}.week-task-chip__title{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.week-add-chip{border:1px dashed var(--border);color:var(--text-3);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;gap:4px;padding:3px;font-size:10px;transition:all .15s;display:flex}.week-add-chip:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-dim)}.week-col__copy-btn{width:100%;color:var(--text-3);cursor:pointer;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;gap:4px;margin-top:4px;padding:4px;font-size:10px;transition:all .15s;display:flex}.week-col__copy-btn:hover{border-color:var(--border);color:var(--text-2);background:var(--bg-hover)}.modal-overlay{z-index:200;-webkit-backdrop-filter:blur(6px);animation:overlay-in .2s var(--ease-out) both;background:#090b1273;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}@keyframes overlay-in{0%{opacity:0;-webkit-backdrop-filter:blur();backdrop-filter:blur()}to{opacity:1;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}}.modal-overlay--leaving{animation:overlay-out .22s var(--ease-out) both}@keyframes overlay-out{0%{opacity:1}to{opacity:0;-webkit-backdrop-filter:blur();backdrop-filter:blur()}}.modal{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-xl);width:100%;max-width:480px;box-shadow:var(--shadow-xl);animation:modal-in .28s var(--ease-spring) both;max-height:90vh;padding:28px;overflow-y:auto}@keyframes modal-in{0%{opacity:0;transform:scale(.94)translateY(20px)}to{opacity:1;transform:scale(1)translateY(0)}}.modal--leaving{animation:modal-out .2s var(--ease-out) both}@keyframes modal-out{0%{opacity:1;transform:scale(1)translateY(0)}to{opacity:0;transform:scale(.96)translateY(10px)}}.modal__header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:22px;display:flex}.modal__title{letter-spacing:-.03em;font-size:20px;font-weight:700;line-height:1.2}.modal__subtitle{color:var(--text-3);margin-top:3px;font-size:13px}.modal__close{width:30px;height:30px;color:var(--text-3);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;margin-top:-2px;display:flex}.modal__close:hover{background:var(--bg-hover);color:var(--text-1)}.field{margin-bottom:18px}.field__label{color:var(--text-2);letter-spacing:-.01em;text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px;font-size:11px;font-weight:600;display:block}.field__input{border-radius:var(--radius-sm);background:var(--bg-muted);border:1.5px solid var(--border);width:100%;color:var(--text-1);padding:10px 14px;font-size:14px;font-weight:500;transition:border-color .15s,box-shadow .15s}.field__input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow);background:var(--bg-card)}.search-box{width:100%;margin-bottom:12px;position:relative}.search-box__icon{color:var(--text-3);pointer-events:none;position:absolute;top:50%;left:14px;transform:translateY(-50%)}.search-box__input{padding-left:38px;font-size:13.5px}.icon-grid{grid-template-columns:repeat(8,1fr);gap:6px;max-height:200px;padding:4px 2px;display:grid;overflow-y:auto}.icon-grid__btn{aspect-ratio:1;background:var(--bg-muted);border:1px solid var(--border);color:var(--text-2);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;padding:8px;transition:all .14s;display:flex}.icon-grid__btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-dim)}.icon-grid__btn--active{background:var(--accent)!important;color:#fff!important;border-color:var(--accent)!important}.icon-grid__label{text-align:center;text-overflow:ellipsis;white-space:nowrap;width:100%;padding:0 2px;font-size:9px;font-weight:500;line-height:1;display:none;overflow:hidden}.category-list{flex-wrap:wrap;gap:6px;display:flex}.cat-chip{cursor:pointer;letter-spacing:-.01em;border:1.5px solid #0000;border-radius:99px;align-items:center;gap:5px;padding:5px 10px;font-size:12px;font-weight:500;transition:all .14s;display:inline-flex}.cat-chip:hover{opacity:.85}.cat-chip--active{border-color:currentColor;font-weight:600}.color-swatches{flex-wrap:wrap;gap:8px;padding:4px 0;display:flex}.color-swatch{cursor:pointer;width:28px;height:28px;transition:all .15s var(--ease-spring);border:2.5px solid #0000;border-radius:50%;position:relative}.color-swatch:hover{transform:scale(1.15)}.color-swatch--active{border-color:#fff;transform:scale(1.1);box-shadow:0 0 0 2.5px}.cat-settings-list{flex-direction:column;gap:10px;display:flex}.cat-settings-item{border-radius:var(--radius-md);border:1px solid var(--border);background:var(--bg-card);align-items:center;gap:12px;padding:10px 14px;display:flex}.cat-settings-item__swatch{border-radius:50%;flex-shrink:0;width:10px;height:10px}.cat-settings-item__name{letter-spacing:-.01em;flex:1;font-size:13px;font-weight:600}.cat-settings-item__actions{gap:4px;display:flex}.settings-tabs{background:var(--bg-muted);border-radius:var(--radius-md);gap:4px;margin-bottom:22px;padding:4px;display:flex}.settings-tab{color:var(--text-2);text-align:center;cursor:pointer;border-radius:8px;flex:1;padding:7px;font-size:13px;font-weight:500;transition:all .15s}.settings-tab--active{background:var(--bg-card);color:var(--text-1);box-shadow:var(--shadow-xs)}.section-title{color:var(--text-3);letter-spacing:.06em;text-transform:uppercase;margin-bottom:10px;font-size:12px;font-weight:600}.range-row{align-items:center;gap:12px;margin-bottom:10px;display:flex}.range-label{color:var(--text-2);min-width:48px;font-size:12px;font-weight:500}.range-val{color:var(--accent);text-align:center;background:var(--accent-dim);border-radius:6px;min-width:44px;padding:2px 6px;font-size:12px;font-weight:600}.range-input{appearance:none;background:var(--bg-hover);cursor:pointer;border-radius:99px;flex:1;height:4px}.range-input::-webkit-slider-thumb{-webkit-appearance:none;background:var(--accent);cursor:pointer;width:16px;height:16px;transition:transform .15s var(--ease-spring);border-radius:50%;box-shadow:0 1px 4px #6366f159}.range-input::-webkit-slider-thumb:hover{transform:scale(1.2)}.toast-dock{z-index:400;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:24px;right:24px}.toast{border-radius:var(--radius-md);background:var(--bg-card);border:1px solid var(--border);box-shadow:var(--shadow-lg);color:var(--text-1);animation:toast-in .3s var(--ease-spring) both;letter-spacing:-.01em;align-items:center;gap:10px;max-width:320px;padding:12px 18px;font-size:13px;font-weight:500;display:flex}.toast--leaving{animation:toast-out .2s var(--ease-out) both}@keyframes toast-in{0%{opacity:0;transform:translateY(16px)scale(.95)}}@keyframes toast-out{to{opacity:0;transform:translateY(8px)scale(.97)}}.toast__icon{flex-shrink:0}.day-pick-grid{grid-template-columns:repeat(4,1fr);gap:8px;margin:16px 0;display:grid}.day-pick-btn{border-radius:var(--radius-md);border:1.5px solid var(--border);text-align:center;cursor:pointer;color:var(--text-2);background:var(--bg-card);padding:10px 6px;font-size:13px;font-weight:500;transition:all .14s}.day-pick-btn:hover{border-color:var(--accent);color:var(--accent)}.day-pick-btn--sel{background:var(--accent);color:#fff;border-color:var(--accent);box-shadow:0 2px 8px #6366f14d}.day-pick-btn--origin{opacity:.35;pointer-events:none}.divider{background:var(--border);height:1px;margin:16px 0}.badge{border-radius:99px;align-items:center;gap:4px;padding:3px 8px;font-size:11px;font-weight:600;display:inline-flex}@media (width<=1024px){.week-view{grid-template-columns:repeat(3,1fr)}}@media (width<=768px){.main{padding:16px}.header__inner{padding:0 16px}.week-view{grid-template-columns:1fr 1fr}.day-hero__weekday{font-size:24px}}@media (width<=480px){.week-view{grid-template-columns:1fr;min-width:0}.day-pick-grid{grid-template-columns:repeat(3,1fr)}}.hidden{display:none!important}.file-input-hidden{display:none}.empty-state{text-align:center;color:var(--text-3);padding:48px 20px}.empty-state__icon{opacity:.4;margin:0 auto 12px}.empty-state__text{font-size:14px;font-weight:500}.empty-state__sub{margin-top:4px;font-size:12px}
