:root,[data-theme=light]{--surface-primary: #ffffff;--surface-secondary: #faf9f8;--surface-hover: #f3f2f1;--text-primary: #242424;--text-secondary: #616161;--text-muted: #a19f9d;--border-color: #edebe9;--border-subtle: #f3f2f1;--accent-primary: #6264a7;--accent-primary-hover: #4f52a0;--slot-hover: rgba(98, 100, 167, .08);--now-line: #c4314b;--danger: #d13438;--danger-bg: rgba(209, 52, 56, .1);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .16);--theme-select-bg: #faf9f8;--theme-select-bg-hover: #f3f2f1;--theme-select-text: #242424;--theme-select-border: #edebe9;--nav-rail-bg: #f3f2f1;--home-glow-a: color-mix(in srgb, var(--accent-primary) 12%, transparent);--home-glow-b: color-mix(in srgb, var(--accent-primary) 8%, transparent);--home-ring-color: color-mix(in srgb, var(--accent-primary) 35%, var(--border-color));--home-circle-bg: var(--surface-primary);--home-circle-border: color-mix(in srgb, var(--accent-primary) 40%, var(--border-color));--home-circle-glow: color-mix(in srgb, var(--accent-primary) 25%, transparent);color-scheme:light}[data-theme=dark]{--surface-primary: #1f1f1f;--surface-secondary: #292929;--surface-hover: #333333;--text-primary: #ffffff;--text-secondary: #d1d1d1;--text-muted: #8a8886;--border-color: #3d3d3d;--border-subtle: #333333;--accent-primary: #7b83eb;--accent-primary-hover: #6264a7;--slot-hover: rgba(123, 131, 235, .12);--now-line: #ff6b6b;--danger: #f1707b;--danger-bg: rgba(241, 112, 123, .15);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .5);--theme-select-bg: #3d3d3d;--theme-select-bg-hover: #4a4a4a;--theme-select-text: #ffffff;--theme-select-border: #6b6b6b;--nav-rail-bg: #252525;--home-glow-a: color-mix(in srgb, var(--accent-primary) 18%, transparent);--home-glow-b: color-mix(in srgb, var(--now-line) 12%, transparent);--home-ring-color: color-mix(in srgb, var(--accent-primary) 45%, var(--border-color));--home-circle-bg: #292929;--home-circle-border: color-mix(in srgb, var(--accent-primary) 50%, var(--border-color));--home-circle-glow: color-mix(in srgb, var(--accent-primary) 30%, transparent);color-scheme:dark}[data-theme=synthwave]{--surface-primary: #1a0b2e;--surface-secondary: #241538;--surface-hover: #2f1d47;--text-primary: #f0e6ff;--text-secondary: #c4b5fd;--text-muted: #9d8ec4;--border-color: #4a2d6e;--border-subtle: #352252;--accent-primary: #ff71ce;--accent-primary-hover: #ff4fb8;--slot-hover: rgba(255, 113, 206, .14);--now-line: #01cdfe;--danger: #ff6b9d;--danger-bg: rgba(255, 107, 157, .18);--shadow-lg: 0 8px 32px rgba(255, 113, 206, .2);--theme-select-bg: #2f1d47;--theme-select-bg-hover: #3d2860;--theme-select-text: #f0e6ff;--theme-select-border: #6b3fa0;--nav-rail-bg: #1a0b2e;--home-glow-a: rgba(255, 113, 206, .2);--home-glow-b: rgba(1, 205, 254, .15);--home-ring-color: rgba(255, 113, 206, .45);--home-circle-bg: #241538;--home-circle-border: #ff71ce;--home-circle-glow: rgba(255, 113, 206, .35);color-scheme:dark}[data-theme=retro]{--surface-primary: #f6edd8;--surface-secondary: #ebe0c4;--surface-hover: #e0d4b4;--text-primary: #3d2914;--text-secondary: #6b4f2e;--text-muted: #9a7b52;--border-color: #d4c4a0;--border-subtle: #e8dcc0;--accent-primary: #d4642c;--accent-primary-hover: #b8521f;--slot-hover: rgba(212, 100, 44, .12);--now-line: #c4314b;--danger: #b83232;--danger-bg: rgba(184, 50, 50, .12);--shadow-lg: 0 8px 28px rgba(61, 41, 20, .18);--theme-select-bg: #ebe0c4;--theme-select-bg-hover: #e0d4b4;--theme-select-text: #3d2914;--theme-select-border: #d4c4a0;--nav-rail-bg: #e8dcc0;--home-glow-a: rgba(212, 100, 44, .15);--home-glow-b: rgba(196, 49, 75, .08);--home-ring-color: rgba(212, 100, 44, .4);--home-circle-bg: #f6edd8;--home-circle-border: #d4642c;--home-circle-glow: rgba(212, 100, 44, .2);color-scheme:light}[data-theme=coffee]{--surface-primary: #faf6f1;--surface-secondary: #f0e8de;--surface-hover: #e6dcd0;--text-primary: #3c2a21;--text-secondary: #6b5344;--text-muted: #9a8070;--border-color: #ddd0c2;--border-subtle: #ebe3d8;--accent-primary: #8b5e3c;--accent-primary-hover: #6f4a2f;--slot-hover: rgba(139, 94, 60, .1);--now-line: #a0522d;--danger: #c45c4a;--danger-bg: rgba(196, 92, 74, .12);--shadow-lg: 0 8px 28px rgba(60, 42, 33, .14);--theme-select-bg: #f0e8de;--theme-select-bg-hover: #e6dcd0;--theme-select-text: #3c2a21;--theme-select-border: #ddd0c2;--nav-rail-bg: #ebe3d8;--home-glow-a: rgba(139, 94, 60, .12);--home-glow-b: rgba(160, 82, 45, .08);--home-ring-color: rgba(139, 94, 60, .35);--home-circle-bg: #faf6f1;--home-circle-border: #8b5e3c;--home-circle-glow: rgba(139, 94, 60, .18);color-scheme:light}[data-theme=comfy]{--surface-primary: #faf8f6;--surface-secondary: #f3eeea;--surface-hover: #ebe4de;--text-primary: #4a4543;--text-secondary: #7a726c;--text-muted: #a89f98;--border-color: #e0d6ce;--border-subtle: #efe8e2;--accent-primary: #c9a089;--accent-primary-hover: #b08872;--slot-hover: rgba(201, 160, 137, .14);--now-line: #d4847a;--danger: #c96b6b;--danger-bg: rgba(201, 107, 107, .12);--shadow-lg: 0 8px 28px rgba(74, 69, 67, .1);--theme-select-bg: #f3eeea;--theme-select-bg-hover: #ebe4de;--theme-select-text: #4a4543;--theme-select-border: #e0d6ce;--nav-rail-bg: #efe8e2;--home-glow-a: rgba(201, 160, 137, .18);--home-glow-b: rgba(212, 132, 122, .1);--home-ring-color: rgba(201, 160, 137, .4);--home-circle-bg: #faf8f6;--home-circle-border: #c9a089;--home-circle-glow: rgba(201, 160, 137, .22);color-scheme:light}[data-theme=futuristic]{--surface-primary: #0c1018;--surface-secondary: #141b28;--surface-hover: #1c2638;--text-primary: #e8f4ff;--text-secondary: #9eb8d4;--text-muted: #6b849e;--border-color: #2a3d56;--border-subtle: #1a2838;--accent-primary: #00d4aa;--accent-primary-hover: #00b894;--slot-hover: rgba(0, 212, 170, .12);--now-line: #3b9eff;--danger: #ff6b8a;--danger-bg: rgba(255, 107, 138, .15);--shadow-lg: 0 8px 32px rgba(0, 212, 170, .12);--theme-select-bg: #1c2638;--theme-select-bg-hover: #243248;--theme-select-text: #e8f4ff;--theme-select-border: #3a5575;--nav-rail-bg: #0a0e14;--home-glow-a: rgba(0, 212, 170, .15);--home-glow-b: rgba(59, 158, 255, .12);--home-ring-color: rgba(0, 212, 170, .4);--home-circle-bg: #141b28;--home-circle-border: #00d4aa;--home-circle-glow: rgba(0, 212, 170, .25);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}:root{font-family:Segoe UI,system-ui,-apple-system,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html,body,#root{margin:0;padding:0;height:100%;height:100dvh}body{background:var(--surface-primary);color:var(--text-primary)}button,input,textarea{font-family:inherit}button{-webkit-tap-highlight-color:transparent;touch-action:manipulation}input,textarea,select{font-size:16px}@media(min-width:769px){input,textarea,select{font-size:inherit}}.nav-rail{display:flex;flex-direction:column;align-items:center;gap:8px;width:56px;flex-shrink:0;padding:12px 0;padding-top:calc(12px + env(safe-area-inset-top,0px));padding-bottom:calc(12px + env(safe-area-inset-bottom,0px));background:var(--nav-rail-bg, var(--surface-secondary));border-right:1px solid var(--border-color);z-index:120}.nav-rail-link{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:10px;color:var(--text-muted);text-decoration:none;transition:background .15s,color .15s,transform .1s}.nav-rail-link:hover{background:var(--surface-hover);color:var(--text-primary)}.nav-rail-link--active{background:var(--accent-primary);color:#fff;box-shadow:0 2px 12px color-mix(in srgb,var(--accent-primary) 45%,transparent)}.nav-rail-link--active:hover{background:var(--accent-primary-hover);color:#fff}@media(max-width:768px){.nav-rail{position:fixed;left:0;right:0;bottom:0;top:auto;width:100%;height:auto;flex-direction:row;justify-content:center;padding:8px 24px;padding-bottom:calc(8px + env(safe-area-inset-bottom,0px));border-right:none;border-top:1px solid var(--border-color)}.nav-rail-link{width:48px;height:48px}}.app-shell{display:flex;height:100vh;height:100dvh;overflow:hidden;background:var(--surface-primary)}.app-shell-main{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden}@media(max-width:768px){.app-shell{flex-direction:column}.app-shell-main{padding-bottom:calc(64px + env(safe-area-inset-bottom,0px))}}.theme-select-wrap{display:flex;flex-direction:column;gap:4px;min-width:0}.theme-select-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.theme-select{height:36px;max-width:140px;padding:0 28px 0 10px;border:1px solid var(--theme-select-border);border-radius:4px;background-color:var(--theme-select-bg);color:var(--theme-select-text);font-size:13px;font-weight:500;cursor:pointer;-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;transition:background-color .15s,border-color .15s}.theme-select:hover{background-color:var(--theme-select-bg-hover)}.theme-select:focus{outline:2px solid var(--accent-primary);outline-offset:1px}.theme-select option{background:var(--surface-primary);color:var(--text-primary)}@media(max-width:768px){.theme-select{max-width:120px;font-size:12px}}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--surface-secondary);padding:24px;position:relative}.auth-page-theme{position:absolute;top:20px;right:20px}.auth-card{width:100%;max-width:400px;background:var(--surface-primary);border:1px solid var(--border-color);border-radius:8px;padding:32px;box-shadow:var(--shadow-lg)}.auth-brand{display:flex;align-items:center;gap:12px;margin-bottom:8px;color:var(--accent-primary)}.auth-brand h1{margin:0;font-size:24px;color:var(--text-primary)}.auth-subtitle{margin:0 0 24px;font-size:14px;color:var(--text-secondary)}.auth-form{display:flex;flex-direction:column;gap:16px}.auth-field{display:flex;flex-direction:column;gap:6px}.auth-field label{font-size:13px;font-weight:600;color:var(--text-secondary)}.auth-field input{padding:10px 12px;border:1px solid var(--border-color);border-radius:4px;background:var(--surface-secondary);color:var(--text-primary);font-size:14px}.auth-field input:focus{outline:2px solid var(--accent-primary);outline-offset:-1px}.auth-error{margin:0;font-size:13px;color:var(--danger)}.auth-submit{padding:10px 16px;background:var(--accent-primary);color:#fff;border:none;border-radius:4px;font-size:14px;font-weight:600;cursor:pointer}.auth-submit:hover:not(:disabled){background:var(--accent-primary-hover)}.auth-submit:disabled{opacity:.7;cursor:not-allowed}.auth-switch{margin:20px 0 0;text-align:center;font-size:14px;color:var(--text-secondary)}.auth-switch-btn{background:none;border:none;color:var(--accent-primary);font-size:14px;font-weight:600;cursor:pointer;padding:0}.auth-switch-btn:hover{text-decoration:underline}.auth-loading{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;color:var(--text-secondary)}@media(max-width:768px){.auth-page{padding:16px;padding-top:calc(16px + env(safe-area-inset-top,0px));align-items:flex-start;padding-bottom:calc(16px + env(safe-area-inset-bottom,0px))}.auth-page-theme{top:calc(12px + env(safe-area-inset-top,0px));right:12px}.auth-card{margin-top:48px;padding:24px 20px}.auth-brand h1{font-size:20px}}.home-page{flex:1;min-height:0;overflow-y:auto;padding:24px 28px 32px;background:radial-gradient(ellipse 80% 60% at 30% 20%,var(--home-glow-a, transparent),transparent 70%),radial-gradient(ellipse 50% 40% at 85% 80%,var(--home-glow-b, transparent),transparent 65%),var(--surface-primary)}.home-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:32px}.home-greeting-line{margin:0 0 4px;font-size:15px;color:var(--text-secondary);font-weight:500}.home-greeting-name{margin:0;font-size:clamp(1.75rem,4vw,2.25rem);font-weight:700;color:var(--text-primary);letter-spacing:-.02em}.home-hero{display:flex;flex-direction:column;align-items:center;flex:1}.home-hero-scene{position:relative;width:min(920px,100%);height:min(520px,72vh);margin:0 auto}.home-orbit-ring{position:absolute;left:50%;top:50%;width:min(500px,95vw);height:min(500px,95vw);transform:translate(-58%,-50%);pointer-events:none;overflow:visible}.home-orbit-ring-stroke{fill:none;stroke:var(--home-ring-color, var(--border-color));stroke-width:1.5;stroke-dasharray:6 10;opacity:.65}.home-hero-core{position:absolute;left:38%;top:50%;transform:translate(-50%,-50%);z-index:2}.home-clock-circle{display:flex;flex-direction:column;align-items:center;justify-content:center;width:min(280px,52vw);height:min(280px,52vw);border-radius:50%;background:var(--home-circle-bg, var(--surface-secondary));border:2px solid var(--home-circle-border, var(--border-color));box-shadow:0 0 0 1px color-mix(in srgb,var(--accent-primary) 25%,transparent),0 0 48px var(--home-circle-glow, color-mix(in srgb, var(--accent-primary) 20%, transparent)),var(--shadow-lg);text-align:center;padding:24px}.home-clock-time{font-size:clamp(2.5rem,8vw,3.5rem);font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.03em;color:var(--text-primary);line-height:1.1}.home-clock-date{margin-top:10px;font-size:clamp(.9rem,2.5vw,1.05rem);color:var(--text-secondary);text-transform:capitalize}.home-clock-weather{margin:14px 0 0;font-size:1.1rem;font-weight:600;color:var(--accent-primary)}.home-orbit-layer{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.home-orbit-layer>*{pointer-events:auto}.home-plan-chip{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;gap:2px;max-width:148px;padding:8px 12px;border-radius:10px;background:color-mix(in srgb,var(--plan-color) 22%,var(--surface-primary));border:1px solid color-mix(in srgb,var(--plan-color) 55%,var(--border-color));box-shadow:0 4px 16px color-mix(in srgb,var(--plan-color) 25%,transparent);text-decoration:none;color:var(--text-primary);transition:transform .15s,box-shadow .15s;z-index:3}.home-plan-chip:hover{transform:translate(-50%,-50%) scale(1.04);box-shadow:0 6px 20px color-mix(in srgb,var(--plan-color) 35%,transparent)}.home-plan-chip--routine{border-style:dashed;background:color-mix(in srgb,var(--plan-color) 12%,var(--surface-primary))}.home-plan-chip-time{font-size:11px;font-weight:700;color:var(--plan-color);text-transform:lowercase}.home-plan-chip-title{font-size:13px;font-weight:600;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.home-orbit-more{position:absolute;transform:translate(-50%,-50%);padding:8px 14px;border-radius:999px;background:var(--surface-hover);border:1px solid var(--border-color);color:var(--accent-primary);font-size:13px;font-weight:600;text-decoration:none;z-index:3}.home-orbit-empty{position:absolute;left:62%;top:50%;transform:translateY(-50%);max-width:200px;margin:0;font-size:14px;color:var(--text-muted);line-height:1.45}.home-orbit-empty a{color:var(--accent-primary);font-weight:600}.home-orbit-empty--loading{color:var(--text-secondary)}.home-hero-caption{margin:20px 0 0;font-size:13px;color:var(--text-muted)}@media(max-width:768px){.home-page{padding:16px 16px 24px}.home-header{margin-bottom:20px}.home-hero-scene{height:min(440px,65vh)}.home-hero-core{left:50%}.home-orbit-ring{transform:translate(-50%,-50%)}.home-orbit-empty{left:50%;top:72%;transform:translate(-50%);text-align:center}.home-plan-chip{max-width:120px;padding:6px 10px}}.event-block{position:absolute;left:2px;right:2px;border:none;border-radius:4px;padding:4px 8px;text-align:left;cursor:pointer;overflow:hidden;color:#fff;z-index:2;display:flex;flex-direction:column;gap:2px;min-height:24px;box-shadow:0 1px 2px #00000026;background-color:var(--block-color, var(--accent-primary))}.event-block--routine{background-color:color-mix(in srgb,var(--block-color, #038387) 18%,var(--surface-primary));border:2px dashed var(--block-color, #038387);color:var(--text-primary);box-shadow:none}.event-block--routine .event-block-time{color:var(--text-secondary);opacity:1}.event-block--routine.event-block--compact{border-width:1px;background-color:color-mix(in srgb,var(--block-color, #038387) 22%,transparent)}.event-block:hover{filter:brightness(1.08)}.event-block-title{font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.event-block-time{font-size:11px;opacity:.9}.event-block--compact{position:static;width:100%;height:auto;min-height:0;padding:2px 6px;margin-bottom:2px;border-radius:2px}.event-block--compact .event-block-title{font-size:11px}.time-grid-wrapper{flex:1;overflow:auto;background:var(--surface-primary)}.time-grid{display:flex;min-width:100%}.time-grid-gutter{flex-shrink:0;width:56px;position:sticky;left:0;z-index:3;background:var(--surface-primary)}.time-grid-corner{height:48px;border-bottom:1px solid var(--border-color);position:sticky;top:0;background:var(--surface-primary);z-index:4}.time-label{display:flex;align-items:flex-start;justify-content:flex-end;padding-right:8px;padding-top:0;font-size:11px;color:var(--text-muted);transform:translateY(-6px);border-right:1px solid var(--border-color)}.time-grid-days{flex:1;min-width:0}.time-grid-day-headers{display:grid;grid-template-columns:repeat(var(--day-count),minmax(0,1fr));position:sticky;top:0;z-index:3;background:var(--surface-primary);border-bottom:1px solid var(--border-color)}.day-header{display:flex;flex-direction:column;align-items:center;padding:8px 4px;gap:2px;border-right:1px solid var(--border-color)}.day-header-weekday{font-size:11px;color:var(--text-muted);text-transform:capitalize}.day-header-date{width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:600;color:var(--text-primary);border-radius:50%}.day-header-date--today{background:var(--accent-primary);color:#fff}.time-grid-body{display:grid;grid-template-columns:repeat(var(--day-count),minmax(0,1fr))}.time-grid-column{position:relative;border-right:1px solid var(--border-color)}.time-slot{width:100%;border:none;border-bottom:1px solid var(--border-subtle);background:transparent;cursor:pointer;padding:0;display:block}.time-slot:hover{background:var(--slot-hover)}.now-line{position:absolute;left:0;right:0;height:2px;background:var(--now-line);z-index:1;pointer-events:none}.now-line:before{content:"";position:absolute;left:-5px;top:-4px;width:10px;height:10px;border-radius:50%;background:var(--now-line)}@media(max-width:768px){.time-grid-gutter{width:44px}.time-grid-corner{height:44px}.time-label{font-size:10px;padding-right:4px}.day-header{padding:6px 2px}.day-header-date{width:28px;height:28px;font-size:14px}.time-grid[data-multi-day=true]{min-width:calc(var(--day-count) * 72px + 44px)}.time-grid[data-multi-day=true] .time-grid-day-headers,.time-grid[data-multi-day=true] .time-grid-body{grid-template-columns:repeat(var(--day-count),72px)}.time-grid[data-multi-day=true] .time-grid-column{min-width:72px}}.month-view{flex:1;display:flex;flex-direction:column;overflow:auto;background:var(--surface-primary)}.month-view-weekdays{display:grid;grid-template-columns:repeat(7,1fr);border-bottom:1px solid var(--border-color);position:sticky;top:0;background:var(--surface-primary);z-index:2}.month-weekday{padding:10px;text-align:center;font-size:12px;font-weight:600;color:var(--text-muted)}.month-view-grid{display:grid;grid-template-columns:repeat(7,1fr);flex:1}.month-cell{min-height:100px;border:none;border-right:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle);background:var(--surface-primary);padding:6px 8px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:4px}.month-cell:hover{background:var(--slot-hover)}.month-cell--outside{background:var(--surface-secondary)}.month-cell--outside .month-cell-date{color:var(--text-muted)}.month-cell-date{font-size:13px;font-weight:600;color:var(--text-primary);width:26px;height:26px;display:flex;align-items:center;justify-content:center;border-radius:50%}.month-cell--today .month-cell-date{background:var(--accent-primary);color:#fff}.month-cell-events{display:flex;flex-direction:column;gap:2px;overflow:hidden}.month-cell-more{font-size:11px;color:var(--text-secondary);padding:0 4px}@media(max-width:768px){.month-weekday{padding:6px 2px;font-size:11px}.month-cell{min-height:64px;padding:4px;gap:2px}.month-cell-date{width:22px;height:22px;font-size:12px}.month-cell-events{display:none}.month-cell--today .month-cell-date,.month-cell:not(.month-cell--outside) .month-cell-date{position:relative}.month-cell.has-events .month-cell-date:after{content:"";position:absolute;bottom:0;width:4px;height:4px;border-radius:50%;background:var(--accent-primary)}.month-cell--today.has-events .month-cell-date:after{background:#fff}}.color-picker-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:8px}.color-picker-label{font-size:13px;font-weight:600;color:var(--text-secondary)}.color-swatch{width:100%;aspect-ratio:1;min-width:0;padding:0;border:2px solid transparent;border-radius:6px;background-color:var(--swatch-color);cursor:pointer;transition:transform .1s ease,box-shadow .1s ease}.color-swatch:hover{transform:scale(1.08)}.color-swatch--selected{border-color:var(--text-primary);box-shadow:0 0 0 2px var(--surface-primary),0 0 0 4px var(--text-primary)}@media(max-width:768px){.color-picker-grid{grid-template-columns:repeat(5,1fr)}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px}.modal{background:var(--surface-primary);border-radius:8px;box-shadow:var(--shadow-lg);width:100%;max-width:480px;max-height:90vh;overflow-y:auto}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 0}.modal-header h2{margin:0;font-size:20px;font-weight:600;color:var(--text-primary)}.modal-close{width:32px;height:32px;border:none;background:transparent;font-size:24px;line-height:1;color:var(--text-secondary);cursor:pointer;border-radius:4px}.modal-close:hover{background:var(--surface-hover)}.modal-form{padding:20px 24px 24px;display:flex;flex-direction:column;gap:16px}.form-field{display:flex;flex-direction:column;gap:6px}.form-field label{font-size:13px;font-weight:600;color:var(--text-secondary)}.form-field input,.form-field textarea{padding:8px 12px;border:1px solid var(--border-color);border-radius:4px;background:var(--surface-secondary);color:var(--text-primary);font-size:14px;font-family:inherit}.form-field input:focus,.form-field textarea:focus{outline:2px solid var(--accent-primary);outline-offset:-1px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-checkbox{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--text-primary);cursor:pointer}.form-hint{margin:0;font-size:14px;color:var(--text-secondary)}.form-error{margin:0;font-size:13px;color:var(--danger)}.modal-actions{display:flex;align-items:center;justify-content:space-between;margin-top:8px}.modal-actions-right{display:flex;gap:8px;margin-left:auto}.btn-primary{padding:8px 20px;background:var(--accent-primary);color:#fff;border:none;border-radius:4px;font-size:14px;font-weight:600;cursor:pointer}.btn-primary:hover{background:var(--accent-primary-hover)}.btn-secondary{padding:8px 20px;background:transparent;color:var(--text-primary);border:1px solid var(--border-color);border-radius:4px;font-size:14px;cursor:pointer}.btn-secondary:hover{background:var(--surface-hover)}.btn-danger{padding:8px 16px;background:transparent;color:var(--danger);border:1px solid var(--danger);border-radius:4px;font-size:14px;cursor:pointer}.btn-danger:hover{background:var(--danger-bg)}@media(max-width:768px){.modal-overlay{padding:0;align-items:stretch}.modal{max-width:none;max-height:none;height:100%;border-radius:0;display:flex;flex-direction:column}.modal-form{flex:1;overflow-y:auto}.form-row{grid-template-columns:1fr}.modal-actions{flex-direction:column-reverse;align-items:stretch;gap:8px}.modal-actions-right{flex-direction:column;margin-left:0}.btn-primary,.btn-secondary,.btn-danger{width:100%;padding:12px 16px}}.day-presets{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.day-presets button{padding:4px 10px;border:1px solid var(--border-color);border-radius:4px;background:var(--surface-secondary);color:var(--text-secondary);font-size:12px;cursor:pointer}.day-presets button:hover{background:var(--surface-hover);color:var(--text-primary)}.day-chips{display:flex;flex-wrap:wrap;gap:6px}.day-chip{width:40px;height:36px;border:1px solid var(--border-color);border-radius:4px;background:var(--surface-secondary);color:var(--text-secondary);font-size:13px;font-weight:600;cursor:pointer}.day-chip:hover{background:var(--surface-hover)}.day-chip--active{background:var(--accent-primary);border-color:var(--accent-primary);color:#fff}.day-chip--active:hover{background:var(--accent-primary-hover)}.calendar-header{display:flex;flex-direction:column;gap:10px;padding:12px 20px;border-bottom:1px solid var(--border-color);background:var(--surface-primary);flex-shrink:0}.calendar-header-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0}.calendar-header-left{display:flex;align-items:center;gap:8px;min-width:0;flex:1}.btn-menu{display:none;width:36px;height:36px;flex-shrink:0;border:1px solid var(--border-color);border-radius:4px;background:var(--surface-secondary);color:var(--text-primary);cursor:pointer;align-items:center;justify-content:center;padding:0}.btn-menu:hover{background:var(--surface-hover)}.btn-today{padding:6px 14px;border:1px solid var(--border-color);border-radius:4px;background:var(--surface-secondary);color:var(--text-primary);font-size:14px;font-weight:600;cursor:pointer;white-space:nowrap;flex-shrink:0}.btn-today:hover{background:var(--surface-hover)}.calendar-nav{display:flex;gap:2px;flex-shrink:0}.btn-nav{width:32px;height:32px;border:1px solid var(--border-color);border-radius:4px;background:var(--surface-secondary);color:var(--text-primary);font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}.btn-nav:hover{background:var(--surface-hover)}.calendar-title{margin:0;font-size:20px;font-weight:600;color:var(--text-primary);text-transform:capitalize;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.view-switcher{display:flex;border:1px solid var(--border-color);border-radius:4px;overflow:hidden;flex-shrink:0}.view-switcher--mobile{display:none}.view-tab{padding:6px 16px;border:none;background:var(--surface-secondary);color:var(--text-secondary);font-size:14px;font-weight:500;cursor:pointer;border-right:1px solid var(--border-color)}.view-tab:last-child{border-right:none}.view-tab:hover{background:var(--surface-hover)}.view-tab--active{background:var(--accent-primary);color:#fff}.view-tab--active:hover{background:var(--accent-primary-hover)}.view-tab-short{display:none}@media(max-width:768px){.calendar-header{padding:10px 12px;gap:8px}.btn-menu{display:flex}.btn-today{padding:6px 10px;font-size:13px}.btn-nav{width:36px;height:36px}.calendar-title{font-size:17px}.view-switcher--desktop{display:none}.view-switcher--mobile{display:flex;width:100%}.view-switcher--mobile .view-tab{flex:1;padding:8px 4px;text-align:center}.view-tab-full{display:inline}.view-tab-short{display:none}}@media(max-width:380px){.view-tab-full{display:none}.view-tab-short{display:inline;font-weight:600}}.mini-calendar{padding:0 16px 16px}.mini-calendar-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.mini-calendar-title{font-size:14px;font-weight:600;color:var(--text-primary);text-transform:capitalize}.mini-nav{width:28px;height:28px;border:none;background:transparent;color:var(--text-secondary);font-size:18px;cursor:pointer;border-radius:4px;display:flex;align-items:center;justify-content:center}.mini-nav:hover{background:var(--surface-hover)}.mini-calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:4px}.mini-weekday{text-align:center;font-size:11px;font-weight:600;color:var(--text-muted);padding:4px 0}.mini-calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.mini-day{position:relative;aspect-ratio:1;border:none;background:transparent;color:var(--text-primary);font-size:12px;cursor:pointer;border-radius:50%;display:flex;align-items:center;justify-content:center}.mini-day:hover{background:var(--surface-hover)}.mini-day--selected{background:var(--accent-primary)!important;color:#fff}.mini-day--today:not(.mini-day--selected){font-weight:700;color:var(--accent-primary)}.mini-day--outside{color:var(--text-muted)}.mini-day-dot{position:absolute;bottom:2px;width:4px;height:4px;border-radius:50%;background:var(--accent-primary)}.mini-day--selected .mini-day-dot{background:#fff}.sidebar{width:280px;flex-shrink:0;background:var(--surface-secondary);border-right:1px solid var(--border-color);display:flex;flex-direction:column;overflow-y:auto;-webkit-overflow-scrolling:touch}.sidebar-top{display:flex;align-items:center;justify-content:space-between;padding:16px 16px 12px}.sidebar-top-actions{display:flex;align-items:center;gap:8px}.sidebar-close{display:none;width:36px;height:36px;border:1px solid var(--border-color);border-radius:4px;background:var(--surface-primary);color:var(--text-secondary);font-size:22px;line-height:1;cursor:pointer}.sidebar-close:hover{background:var(--surface-hover)}.sidebar-brand{display:flex;align-items:center;gap:10px;font-size:18px;font-weight:700;color:var(--text-primary)}.sidebar-brand svg{color:var(--accent-primary)}.sidebar-new-btn{display:flex;align-items:center;gap:8px;margin:0 16px 8px;padding:10px 16px;background:var(--accent-primary);color:#fff;border:none;border-radius:4px;font-size:14px;font-weight:600;cursor:pointer;transition:background .15s}.sidebar-new-btn:hover{background:var(--accent-primary-hover)}.sidebar-new-icon{font-size:18px;line-height:1}.sidebar-routines-btn{display:flex;align-items:center;gap:8px;margin:0 16px 16px;padding:10px 16px;background:transparent;color:var(--accent-primary);border:1px solid var(--accent-primary);border-radius:4px;font-size:14px;font-weight:600;cursor:pointer}.sidebar-routines-btn:hover{background:var(--slot-hover)}.sidebar-routines{padding:0 16px 16px;border-bottom:1px solid var(--border-color)}.sidebar-routines-title{margin:0 0 8px;font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.sidebar-routines-list{display:flex;flex-direction:column;gap:4px;max-height:160px;overflow-y:auto}.sidebar-routine-item{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border:none;border-radius:4px;background:transparent;text-align:left;cursor:pointer}.sidebar-routine-item:hover{background:var(--surface-hover)}.sidebar-routine-dot{width:10px;height:10px;border-radius:2px;flex-shrink:0;border:2px dashed currentColor;background:transparent}.sidebar-routine-info{min-width:0;flex:1}.sidebar-routine-name{display:block;font-size:13px;font-weight:600;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-routine-meta{display:block;font-size:11px;color:var(--text-muted)}.sidebar-routines-empty{margin:0;font-size:12px;color:var(--text-muted)}.sidebar-hint{margin-top:auto;padding:16px;border-top:1px solid var(--border-color)}.sidebar-hint p{margin:0;font-size:12px;line-height:1.5;color:var(--text-muted)}.sidebar-user{padding:16px;border-top:1px solid var(--border-color);display:flex;flex-direction:column;gap:10px}.sidebar-user-info{display:flex;flex-direction:column;gap:2px;min-width:0}.sidebar-user-name{font-size:14px;font-weight:600;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-user-email{font-size:12px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-logout{padding:8px 12px;border:1px solid var(--border-color);border-radius:4px;background:transparent;color:var(--text-secondary);font-size:13px;cursor:pointer}.sidebar-logout:hover{background:var(--surface-hover);color:var(--text-primary)}@media(max-width:768px){.sidebar{position:fixed;top:0;left:0;bottom:0;width:min(300px,88vw);z-index:200;transform:translate(-105%);transition:transform .25s ease;box-shadow:var(--shadow-lg)}.sidebar--open{transform:translate(0)}.sidebar-close{display:flex;align-items:center;justify-content:center}.sidebar-hint{display:none}}.calendar-page{display:flex;flex:1;min-width:0;min-height:0;overflow:hidden}.calendar-main{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}.calendar-content{flex:1;display:flex;flex-direction:column;overflow:hidden;min-height:0}.calendar-loading{flex:1;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);font-size:14px}.sidebar-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:150;border:none;background:#00000073;cursor:pointer;padding:0}.fab-new-event{display:none}@media(max-width:768px){.fab-new-event{display:flex;align-items:center;justify-content:center;position:fixed;right:20px;bottom:calc(76px + env(safe-area-inset-bottom,0px));width:56px;height:56px;border:none;border-radius:50%;background:var(--accent-primary);color:#fff;font-size:28px;line-height:1;cursor:pointer;box-shadow:0 4px 16px #0000003d;z-index:100}.fab-new-event:active{transform:scale(.96);background:var(--accent-primary-hover)}}.auth-loading{min-height:100vh;display:flex;align-items:center;justify-content:center;color:var(--text-secondary)}
