*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #f2f2f7;--bg-elevated: #ffffff;--fill-1: rgba(120,120,128,.12);--fill-2: rgba(120,120,128,.08);--separator: rgba(60,60,67,.12);--label: #000000;--label-2: rgba(60,60,67,.6);--label-3: rgba(60,60,67,.36);--blue: #007AFF;--blue-lt: rgba(0,122,255,.12);--green: #34C759;--green-lt: rgba(52,199,89,.12);--red: #FF3B30;--red-lt: rgba(255,59,48,.12);--orange: #FF9500;--orange-lt: rgba(255,149,0,.12);--nav-bg: rgba(255,255,255,.72);--topbar-bg: rgba(255,255,255,.72);--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--radius-full: 9999px;--shadow-sm: 0 1px 3px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04);--shadow-md: 0 4px 16px rgba(0,0,0,.08), 0 1px 4px rgba(0,0,0,.04);--shadow-lg: 0 12px 40px rgba(0,0,0,.12), 0 4px 12px rgba(0,0,0,.06);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--duration: .24s}[data-theme=dark]{--bg: #1c1c1e;--bg-elevated: #2c2c2e;--fill-1: rgba(255,255,255,.1);--fill-2: rgba(255,255,255,.06);--separator: rgba(255,255,255,.1);--label: #ffffff;--label-2: rgba(235,235,245,.6);--label-3: rgba(235,235,245,.3);--blue: #0A84FF;--blue-lt: rgba(10,132,255,.2);--green: #30D158;--green-lt: rgba(48,209,88,.2);--red: #FF453A;--red-lt: rgba(255,69,58,.2);--orange: #FF9F0A;--orange-lt: rgba(255,159,10,.2);--nav-bg: rgba(28,28,30,.85);--topbar-bg: rgba(28,28,30,.85);--shadow-sm: 0 1px 3px rgba(0,0,0,.3), 0 1px 2px rgba(0,0,0,.2);--shadow-md: 0 4px 16px rgba(0,0,0,.4), 0 1px 4px rgba(0,0,0,.2);--shadow-lg: 0 12px 40px rgba(0,0,0,.5), 0 4px 12px rgba(0,0,0,.3)}html,body,#root{height:100%;font-family:Figtree,-apple-system,sans-serif;font-size:16px;background:var(--bg);color:var(--label);-webkit-font-smoothing:antialiased;transition:background var(--duration),color var(--duration)}html{scrollbar-gutter:stable}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--fill-1);border-radius:99px}.icon{font-family:Material Symbols Outlined;font-weight:400;font-style:normal;font-size:20px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none;font-variation-settings:"FILL" 0,"wght" 300,"GRAD" 0,"opsz" 24}.icon-sm{font-size:16px}.icon-lg{font-size:24px}.icon-filled{font-variation-settings:"FILL" 1,"wght" 400,"GRAD" 0,"opsz" 24}.app-shell{display:grid;grid-template-rows:56px 1fr;grid-template-columns:240px 1fr;grid-template-areas:"nav topbar" "nav main";min-height:100vh}@media (max-width: 768px){.app-shell{grid-template-rows:56px 1fr 60px;grid-template-columns:1fr;grid-template-areas:"topbar" "main" "nav"}}.topbar{grid-area:topbar;display:flex;align-items:center;justify-content:space-between;padding:0 24px;background:var(--topbar-bg);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid var(--separator);position:sticky;top:0;z-index:50;transition:background var(--duration)}.topbar-brand{display:flex;align-items:center;gap:8px;font-size:17px;font-weight:700;letter-spacing:-.4px}.topbar-logo{width:28px;height:28px;background:var(--blue);border-radius:8px;display:grid;place-items:center;color:#fff;font-size:15px}.topbar-actions{display:flex;align-items:center;gap:4px}.topbar-avatar{width:28px;height:28px;border-radius:50%;background:var(--blue-lt);display:grid;place-items:center;font-size:11px;font-weight:700;color:var(--blue);cursor:pointer;border:none;font-family:inherit}.sidebar{grid-area:nav;background:var(--nav-bg);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-right:1px solid var(--separator);padding:16px 10px;display:flex;flex-direction:column;gap:2px;overflow-y:auto;transition:background var(--duration)}@media (max-width: 768px){.sidebar{border-right:none;border-top:1px solid var(--separator);padding:6px 12px 8px;flex-direction:row;justify-content:space-around;overflow-x:auto;overflow-y:hidden;gap:0}}.nav-label{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--label-3);padding:12px 10px 4px}@media (max-width: 768px){.nav-label{display:none}}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:var(--radius-md);font-size:15px;font-weight:500;color:var(--label-2);cursor:pointer;border:none;background:none;width:100%;text-align:left;font-family:inherit;transition:background var(--duration) var(--ease-out),color var(--duration) var(--ease-out)}.nav-item:hover{background:var(--fill-2);color:var(--label)}.nav-item.active{background:var(--blue-lt);color:var(--blue);font-weight:600}.nav-icon{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;flex-shrink:0;background:var(--fill-1);transition:background var(--duration)}.nav-item.active .nav-icon{background:var(--blue);color:#fff}@media (max-width: 768px){.nav-item{flex-direction:column;gap:3px;font-size:10px;padding:6px 4px;min-width:60px;justify-content:center}.nav-icon{width:26px;height:26px}}.main-content{grid-area:main;padding:28px 24px;overflow-y:auto}@media (max-width: 768px){.main-content{padding:16px}}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.page-title{font-size:28px;font-weight:700;letter-spacing:-.6px}@media (max-width: 768px){.page-title{font-size:22px}}.card{background:var(--bg-elevated);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);overflow:hidden;transition:background var(--duration)}.card-row{display:flex;align-items:center;padding:13px 16px;gap:12px;position:relative;transition:background var(--duration) var(--ease-out)}.card-row:hover{background:var(--fill-2)}.card-row+.card-row:before{content:"";position:absolute;top:0;left:16px;right:0;height:1px;background:var(--separator)}.card-row-icon{width:34px;height:34px;border-radius:8px;display:grid;place-items:center;flex-shrink:0}.card-row-body{flex:1;min-width:0}.card-row-title{font-size:15px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-row-subtitle{font-size:13px;color:var(--label-2);margin-top:1px}.card-row-actions{display:flex;gap:6px;flex-shrink:0}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:var(--radius-full);font-size:12px;font-weight:600;white-space:nowrap}.badge-blue{background:var(--blue-lt);color:var(--blue)}.badge-green{background:var(--green-lt);color:var(--green)}.badge-orange{background:var(--orange-lt);color:var(--orange)}.badge-red{background:var(--red-lt);color:var(--red)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 18px;border-radius:var(--radius-full);font-family:inherit;font-size:15px;font-weight:600;border:none;cursor:pointer;transition:opacity var(--duration),transform 80ms,background var(--duration);white-space:nowrap}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--blue);color:#fff}.btn-primary:hover:not(:disabled){opacity:.88}.btn-secondary{background:var(--fill-1);color:var(--label)}.btn-secondary:hover:not(:disabled){background:var(--fill-2)}.btn-destructive{background:var(--red-lt);color:var(--red)}.btn-ghost{background:none;color:var(--blue);padding:9px 12px}.btn-ghost:hover{background:var(--blue-lt)}.btn-sm{padding:6px 14px;font-size:13px}.btn-icon{width:32px;height:32px;padding:0;border-radius:var(--radius-md);font-size:14px;background:var(--fill-1);color:var(--label-2)}.btn-icon:hover{background:var(--fill-2);color:var(--label)}.btn-icon.danger:hover{background:var(--red-lt);color:var(--red)}.theme-toggle{width:32px;height:32px;border-radius:var(--radius-md);border:none;background:var(--fill-1);color:var(--label-2);cursor:pointer;display:grid;place-items:center;transition:background var(--duration),color var(--duration)}.theme-toggle:hover{background:var(--fill-2);color:var(--label)}.toggle{position:relative;width:48px;height:28px;flex-shrink:0}.toggle input{opacity:0;width:0;height:0;position:absolute}.toggle-track{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:99px;background:var(--fill-1);cursor:pointer;transition:background var(--duration) var(--ease-out)}.toggle input:checked+.toggle-track{background:var(--green)}.toggle-thumb{position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 4px #0003;transition:transform var(--duration) var(--ease-spring);pointer-events:none}.toggle input:checked~.toggle-thumb{transform:translate(20px)}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:13px;font-weight:600;color:var(--label-2)}.field-input{padding:11px 14px;border:1.5px solid var(--separator);border-radius:var(--radius-md);font-family:inherit;font-size:15px;color:var(--label);background:var(--bg-elevated);outline:none;transition:border-color var(--duration),background var(--duration);width:100%}.field-input:focus{border-color:var(--blue)}.field-input::placeholder{color:var(--label-3)}select.field-input{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23aaa' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:36px}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media (max-width: 480px){.field-row{grid-template-columns:1fr}}.drawer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000040;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;animation:fadeIn var(--duration) var(--ease-out)}.drawer{position:fixed;right:0;top:0;bottom:0;width:min(460px,100vw);background:var(--bg);box-shadow:var(--shadow-lg);z-index:101;display:flex;flex-direction:column;animation:slideIn var(--duration) var(--ease-out);overflow:hidden;transition:background var(--duration)}@media (max-width: 600px){.drawer{top:auto;right:0;left:0;bottom:0;width:100%;border-radius:20px 20px 0 0;max-height:92vh;animation:slideUp var(--duration) var(--ease-out)}}.drawer-handle{display:none;width:36px;height:4px;border-radius:99px;background:var(--fill-1);margin:10px auto 0;flex-shrink:0}@media (max-width: 600px){.drawer-handle{display:block}}.drawer-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--separator);flex-shrink:0}.drawer-title{font-size:17px;font-weight:700;letter-spacing:-.3px}.drawer-body{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:14px}.drawer-footer{padding:16px 20px;border-top:1px solid var(--separator);display:flex;gap:10px;flex-shrink:0}.drawer-footer .btn{flex:1}.occurrence-list{display:flex;flex-direction:column;gap:10px}.occurrence-item{display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--bg-elevated);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);animation:fadeUp .3s var(--ease-out) both;transition:background var(--duration)}.occ-time-block{text-align:center;min-width:44px;flex-shrink:0}.occ-time{font-size:14px;font-weight:700;color:var(--blue);letter-spacing:-.2px}.occ-date{font-size:11px;color:var(--label-2);font-weight:500}.occ-body{flex:1;min-width:0}.occ-title{font-size:15px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.occ-meta{font-size:12px;color:var(--label-2);margin-top:2px;display:flex;align-items:center;gap:6px}.occ-actions{display:flex;gap:6px;flex-shrink:0}.color-picker{display:flex;gap:8px;flex-wrap:wrap}.color-swatch{width:26px;height:26px;border-radius:50%;cursor:pointer;border:2px solid transparent;transition:transform .15s var(--ease-spring),border-color .15s}.color-swatch:hover{transform:scale(1.15)}.color-swatch.selected{border-color:var(--label);transform:scale(1.1)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 24px;text-align:center;gap:10px}.empty-icon{font-size:44px;opacity:.3;color:var(--label-2)}.empty-title{font-size:18px;font-weight:700;letter-spacing:-.3px}.empty-sub{font-size:15px;color:var(--label-2);max-width:260px;line-height:1.5}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.section-title{font-size:20px;font-weight:700;letter-spacing:-.4px}.loading-screen{min-height:100vh;display:grid;place-items:center;background:var(--bg)}.spinner{width:24px;height:24px;border:2.5px solid var(--separator);border-top-color:var(--blue);border-radius:50%;animation:spin .65s linear infinite}.auth-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:var(--bg)}.auth-card{width:100%;max-width:380px;background:var(--bg-elevated);border-radius:var(--radius-xl);padding:36px 32px;box-shadow:var(--shadow-md);transition:background var(--duration)}.auth-brand{text-align:center;margin-bottom:28px}.auth-logo-wrap{width:56px;height:56px;border-radius:16px;overflow:hidden;margin:0 auto 12px;box-shadow:0 4px 16px #007aff4d}.auth-brand h1{font-size:24px;font-weight:700;letter-spacing:-.5px}.auth-tagline{font-size:14px;color:var(--label-2);margin-top:4px}.auth-tabs{display:flex;gap:4px;background:var(--fill-2);border-radius:var(--radius-md);padding:3px;margin-bottom:20px}.auth-tab{flex:1;padding:7px;border:none;border-radius:9px;background:transparent;font-family:inherit;font-size:14px;font-weight:500;color:var(--label-2);cursor:pointer;transition:all var(--duration) var(--ease-out)}.auth-tab.active{background:var(--bg-elevated);color:var(--label);font-weight:600;box-shadow:var(--shadow-sm)}.auth-form{display:flex;flex-direction:column;gap:14px}.auth-error{font-size:13px;color:var(--red);background:var(--red-lt);padding:10px 12px;border-radius:var(--radius-md)}.auth-message{font-size:13px;color:var(--green);background:var(--green-lt);padding:10px 12px;border-radius:var(--radius-md)}.auth-divider{display:flex;align-items:center;gap:12px;margin:16px 0;color:var(--label-3);font-size:13px}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--separator)}.btn-google{width:100%;display:flex;align-items:center;justify-content:center;gap:10px;padding:11px;border:1.5px solid var(--separator);border-radius:var(--radius-full);background:var(--bg-elevated);font-family:inherit;font-size:15px;font-weight:500;color:var(--label);cursor:pointer;transition:background var(--duration),border-color var(--duration)}.btn-google:hover{background:var(--fill-2)}.btn-google:disabled{opacity:.5;cursor:not-allowed}.auth-footer{text-align:center;margin-top:14px}.link-btn{background:none;border:none;font-family:inherit;font-size:14px;color:var(--blue);cursor:pointer;padding:0}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:200;display:grid;place-items:center;padding:24px;animation:fadeIn var(--duration) var(--ease-out)}.dialog{background:var(--bg-elevated);border-radius:var(--radius-xl);padding:24px;width:100%;max-width:300px;box-shadow:var(--shadow-lg);animation:scaleIn var(--duration) var(--ease-spring);text-align:center;transition:background var(--duration)}.dialog-title{font-size:17px;font-weight:700;margin-bottom:8px}.dialog-body{font-size:15px;color:var(--label-2);line-height:1.5;margin-bottom:20px}.dialog-actions{display:flex;gap:10px}.dialog-actions .btn{flex:1}.tasks-grid{display:flex;flex-direction:column;gap:8px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideIn{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes scaleIn{0%{transform:scale(.92);opacity:0}to{transform:scale(1);opacity:1}}@keyframes fadeUp{0%{transform:translateY(8px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}
