:root{--background:#f8fafc;--surface:#ffffff;--surface-raised:#f8fafc;--surface-muted:#f1f5f9;--border:#e2e8f0;--border-subtle:#f1f5f9;--border-focus:#94a3b8;--text-primary:#0f172a;--text-secondary:#475569;--text-muted:#94a3b8;--accent:#2563eb;--accent-hover:#1d4ed8;--accent-soft:#eff6ff;--accent-border:#bfdbfe;--danger:#ef4444;--danger-soft:#fef2f2;--danger-border:#fecaca;--warning:#f59e0b;--warning-soft:#fffbeb;--warning-text:#92400e;--success:#10b981;--success-soft:#ecfdf5;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:20px;--radius-full:9999px;--shadow-sm:0 1px 2px 0 rgba(0,0,0,0.04);--shadow-md:0 4px 6px -1px rgba(0,0,0,0.06),0 2px 4px -2px rgba(0,0,0,0.04);--shadow-lg:0 10px 15px -3px rgba(0,0,0,0.08),0 4px 6px -4px rgba(0,0,0,0.03);--shadow-xl:0 20px 25px -5px rgba(0,0,0,0.09),0 8px 10px -6px rgba(0,0,0,0.04);--glass-surface:rgba(255,255,255,0.88);--font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"PingFang SC","Microsoft YaHei",sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body,html{min-height:100%;margin:0;overscroll-behavior:none}body{background-color:var(--background);color:var(--text-primary);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button,input,select,textarea{font:inherit;color:inherit}button{position:relative;min-height:38px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--text-primary);padding:0 14px;font-size:13px;font-weight:600;cursor:pointer;box-shadow:var(--shadow-sm);transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,transform .1s ease;display:inline-flex;align-items:center;justify-content:center}button:hover{background-color:var(--surface-muted);border-color:var(--border-focus)}button:active{transform:scale(.98)}button:disabled{cursor:not-allowed;opacity:.5;transform:none}input,select,textarea{width:100%;min-width:0;max-width:100%;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--text-primary);padding:9px 12px;font-size:14px;outline:none;transition:border-color .15s ease,box-shadow .15s ease}input[type=date],input[type=datetime-local]{min-inline-size:0;inline-size:100%;-moz-appearance:none;appearance:none;-webkit-appearance:none}textarea{resize:vertical;line-height:1.5}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(37,99,235,.14)}.primary-button{background:var(--accent);border-color:var(--accent);color:#ffffff}.primary-button:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:#ffffff}.danger-button{border-color:var(--danger-border);background:var(--danger-soft);color:var(--danger)}.danger-button:hover{background:#fee2e2;border-color:#fca5a5}.compact-button{min-height:30px;padding:0 10px;font-size:12px;border-radius:var(--radius-sm)}.wide-button{width:100%}.icon-button{width:36px;min-height:36px;padding:0;border-radius:var(--radius-full);font-size:20px;line-height:1;display:inline-flex;align-items:center;justify-content:center}.app-shell{min-height:100vh;padding:20px 24px 80px}.page-blur-backdrop{position:fixed;inset:0;z-index:30;pointer-events:none;background:rgba(15,23,42,.18);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);animation:backdrop-fade-in .2s ease both}.app-loading-shell{min-height:100dvh;display:grid;place-items:center;background:var(--background)}.app-loading-mark,.calendar-loading{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-md);color:var(--text-primary);font-weight:600}.app-loading-mark{padding:16px 28px;font-size:20px}.calendar-loading{display:grid;min-height:320px;place-items:center;padding:18px;font-size:14px;color:var(--text-muted)}.toast-message{position:fixed;top:24px;left:50%;z-index:80;width:min(380px,calc(100vw - 32px));border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:10px 16px;color:var(--text-primary);font-size:13px;font-weight:600;line-height:1.4;text-align:center;transform:translateX(-50%);animation:toast-slide-down .25s ease both}.success-toast{background:var(--success-soft);border-color:#a7f3d0;color:#065f46}.error-toast{background:var(--danger-soft);border-color:var(--danger-border);color:var(--danger)}.top-bar{max-width:1200px;margin:0 auto 16px}.top-title{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.top-title h1{margin:0;font-size:20px;font-weight:700;letter-spacing:-.01em;color:var(--text-primary)}.user-menu{position:relative;display:inline-flex;align-items:center}.user-name{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--text-secondary);padding:6px 12px;min-height:34px;font-size:13px;font-weight:600;gap:6px;cursor:pointer;box-shadow:var(--shadow-sm)}.user-name:hover{background:var(--surface-muted);color:var(--text-primary)}.user-menu-popover{position:absolute;top:calc(100% + 6px);left:0;z-index:50;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:4px;min-width:120px;animation:popover-drop .15s ease both}.user-menu-popover button{width:100%;min-height:32px;border:0;border-radius:var(--radius-sm);background:transparent;padding:0 10px;font-size:12px;justify-content:flex-start;box-shadow:none;color:var(--text-secondary)}.user-menu-popover button:hover{background:var(--surface-muted);color:var(--danger)}.today-pill-btn{border:1px solid var(--border);border-radius:var(--radius-full);background:var(--surface);color:var(--text-secondary);padding:5px 14px;min-height:34px;font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:6px;cursor:pointer;box-shadow:var(--shadow-sm);transition:all .15s ease}.today-pill-btn:hover{background:var(--surface-muted);color:var(--text-primary);border-color:var(--border-focus)}.workspace{max-width:1200px;margin:0 auto}.calendar-theme-hero{position:relative;display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-sm);padding:14px 22px;margin-bottom:16px}.calendar-theme-title{display:flex;flex-direction:column;justify-content:center}.calendar-theme-title span{display:block;font-size:36px;font-weight:800;line-height:1;color:var(--text-primary);letter-spacing:-.02em}.calendar-theme-title strong{display:block;font-size:13px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;margin-top:4px}.calendar-theme-art{position:relative;display:flex;align-items:center;justify-content:center;width:min(220px,45%);aspect-ratio:13/7;height:auto;overflow:hidden}.theme-base-art{position:absolute;inset:0;z-index:1;width:100%;height:100%;object-fit:contain;object-position:center;pointer-events:none}.theme-action-motion{isolation:isolate}.theme-action-motion .theme-base-art{opacity:0}.theme-action-frame{position:absolute;inset:0;z-index:2;width:100%;height:100%;object-fit:contain;object-position:center;opacity:0;pointer-events:none;animation:aligned-action-frame 6.4s step-end infinite}.action-frame-1{animation-delay:0s}.action-frame-2{animation-delay:-4.8s}.action-frame-3{animation-delay:-3.2s}.action-frame-4{animation-delay:-1.6s}@keyframes aligned-action-frame{0%,24.99%{opacity:1}25%,to{opacity:0}}.calendar-panel{position:relative;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-sm);padding:18px 22px 24px;overflow:hidden}.fc{position:relative;z-index:2;color:var(--text-primary);font-family:var(--font-sans)}.fc .fc-toolbar{align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}.fc .fc-toolbar-title{color:var(--text-primary);font-size:18px;font-weight:700;letter-spacing:-.01em}.fc .fc-button-primary{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--text-secondary);box-shadow:var(--shadow-sm);font-size:13px;font-weight:600;padding:5px 12px;min-height:32px;transition:all .15s ease}.fc .fc-button-primary:focus,.fc .fc-button-primary:hover{background:var(--surface-muted);color:var(--text-primary);border-color:var(--border-focus)}.fc .fc-today-button.fc-button-primary{background:var(--surface);color:var(--accent);border-color:var(--accent-border)}.fc .fc-today-button.fc-button-primary:hover{background:var(--accent-soft)}.fc .fc-button-primary:not(:disabled).fc-button-active,.fc .fc-button-primary:not(:disabled):active{background:var(--accent);color:#ffffff;border-color:var(--accent);box-shadow:none}.fc-theme-standard .fc-scrollgrid,.fc-theme-standard td,.fc-theme-standard th{border-color:var(--border-subtle)}.fc-theme-standard .fc-scrollgrid{border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden}.fc .fc-col-header-cell{background:var(--surface-raised)}.fc .fc-col-header-cell-cushion{color:var(--text-muted);font-size:12px;font-weight:600;padding:10px 4px;text-transform:uppercase}.fc .fc-daygrid-day{background:transparent;transition:background-color .15s ease}.fc .fc-daygrid-day:hover{background-color:rgba(248,250,252,.8)}.fc .fc-dayGridMonth-view .fc-scrollgrid-sync-table tr{height:72px!important}.fc .fc-dayGridMonth-view .fc-daygrid-day-frame{position:relative;height:72px;min-height:72px;padding:4px}.fc .fc-dayGridMonth-view .fc-daygrid-day.week-has-duration-event{height:98px!important}.fc .fc-dayGridMonth-view .fc-daygrid-day.week-has-duration-event .fc-daygrid-day-frame{height:98px;min-height:98px}.fc .fc-daygrid-day-number{color:var(--text-secondary);font-size:13px;font-weight:600;padding:2px 4px;text-align:right;width:100%}.day-cell-label{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;width:100%;height:100%;padding:2px;cursor:pointer;border-radius:var(--radius-sm);transition:background-color .15s ease}.day-cell-label:hover{background-color:var(--surface-muted)}.fc .fc-day-today .day-cell-label>span:first-child{background:var(--accent);color:#ffffff;border-radius:var(--radius-full);width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}.day-meta-stack{position:absolute;top:28px;left:2px;right:2px;z-index:3;display:flex;align-items:center;justify-content:center;gap:3px;flex-wrap:wrap}.day-event-summary{display:inline-flex;align-items:center;gap:3px;border-radius:var(--radius-full);background:var(--accent-soft);border:1px solid var(--accent-border);color:var(--accent);padding:0 5px;font-size:10px;font-weight:700;line-height:1.4}.expired-events .day-event-summary{background:#f1f5f9;border-color:#cbd5e1;color:var(--text-muted)}.event-dot{width:5px;height:5px;flex:0 0 auto;border-radius:50%;background:currentColor}.holiday-label{border-radius:var(--radius-full);background:var(--danger-soft);border:1px solid #fecaca;color:var(--danger);padding:0 5px;font-size:9px;font-weight:600;line-height:1.4;white-space:nowrap}.fc .fc-daygrid-day-events{position:absolute;top:3px;right:4px;left:4px;z-index:2;min-height:0;margin-top:0;pointer-events:none}.fc .fc-daygrid-event-harness{margin-top:0;pointer-events:auto}.fc .fc-dayGridMonth-view .fc-daygrid-day.week-has-duration-event .fc-daygrid-day-events{top:54px}.fc .fc-dayGridMonth-view .fc-daygrid-day.week-duration-event-compact .fc-daygrid-day-events{top:44px}.fc .fc-dayGridMonth-view .fc-daygrid-day.week-duration-event-dense .fc-daygrid-day-events{top:62px}.fc .fc-event.multi-day-event{height:22px;display:flex;align-items:center;border:1px solid #bfdbfe;border-radius:4px;background:#eff6ff;color:#1e40af;font-size:11px;font-weight:600;padding:0 6px;box-shadow:var(--shadow-sm);overflow:hidden}.fc .fc-event.multi-day-event:hover{background:#dbeafe}.multi-day-event-content{display:flex;align-items:center;justify-content:space-between;gap:4px;width:100%}.multi-day-event-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.multi-day-event-time{font-size:9px;color:#3b82f6;white-space:nowrap}.fc .fc-daygrid-event.single-day-event{display:none}.fc .fc-timegrid-slot{height:30px;border-color:var(--border-subtle)}.fc .fc-timegrid-axis-cushion,.fc .fc-timegrid-slot-label-cushion{color:var(--text-muted);font-size:11px;font-weight:500}.fc .fc-timegrid-col.fc-day-today{background:rgba(239,246,255,.4)}.fc .fc-timeGridWeek-view .fc-event.multi-day-event{min-height:20px;border-radius:4px;padding:0 6px}.fc .fc-timeGridDay-view .fc-timegrid-event.multi-day-event{right:auto!important;width:38px;min-height:34px;border-radius:4px;padding:4px}.fc .fc-timeGridDay-view .fc-timegrid-event.multi-day-event .fc-event-main{writing-mode:vertical-rl;-webkit-text-orientation:mixed;text-orientation:mixed}.bottom-nav{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:40;display:flex;align-items:center;gap:4px;padding:5px;border:1px solid rgba(226,232,240,.9);border-radius:var(--radius-full);background:var(--glass-surface);box-shadow:var(--shadow-lg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);animation:nav-float-in .3s cubic-bezier(.16,1,.3,1) both}.bottom-nav button{display:inline-flex;align-items:center;gap:6px;min-height:38px;padding:0 16px;border:0;border-radius:var(--radius-full);background:transparent;color:var(--text-secondary);font-size:13px;font-weight:600;box-shadow:none;cursor:pointer;transition:all .15s ease}.bottom-nav button:hover{background:var(--surface-muted);color:var(--text-primary)}.bottom-nav button.active{background:var(--accent);color:#ffffff;box-shadow:0 2px 8px rgba(37,99,235,.25)}.modal-backdrop{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:16px;background:rgba(15,23,42,.4);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);animation:backdrop-fade-in .2s ease both;overflow-y:auto}.settings-modal{width:min(560px,100%);max-height:calc(100dvh - 32px);border:1px solid var(--border);border-radius:var(--radius-lg);animation:modal-scale-in .2s cubic-bezier(.16,1,.3,1) both}.drawer,.settings-modal{overflow-y:auto;background:var(--surface);box-shadow:var(--shadow-xl);padding:24px}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(440px,100vw);z-index:55;display:flex;flex-direction:column;gap:14px;border-left:1px solid var(--border);animation:drawer-slide-in .25s cubic-bezier(.16,1,.3,1) both}.drawer-header,.panel-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.drawer-title{display:flex;align-items:center;gap:10px}.drawer-title h2,.panel-header h2{margin:0;font-size:18px;font-weight:700;color:var(--text-primary)}.eyebrow{margin:0 0 3px;color:var(--text-muted);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.field{display:grid;grid-gap:6px;gap:6px;margin-bottom:12px}.field span{font-size:12px;font-weight:600}.check-field,.field span{color:var(--text-secondary)}.check-field{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;margin:6px 0 12px}.check-field input{width:auto}.time-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px}.time-grid.single-time-grid{grid-template-columns:1fr}.drawer-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:auto;padding-top:16px;border-top:1px solid var(--border-subtle)}.drawer-actions .danger-button{margin-right:auto}.error-box,.warning-box{border-radius:var(--radius-md);padding:10px 14px;font-size:13px;line-height:1.5}.error-box{background:var(--danger-soft);border:1px solid var(--danger-border);color:var(--danger);margin-top:10px}.warning-box{background:var(--warning-soft);border:1px solid #fde68a;color:var(--warning-text);margin-bottom:12px}.settings-note{font-size:12px;line-height:1.5;color:var(--text-muted);margin:6px 0 12px}.ai-password-panel,.pending-result-panel,.reminder-email-panel{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-raised);padding:14px;margin-bottom:14px}.pending-result-panel{display:flex;flex-direction:column;gap:8px;background:var(--accent-soft);border-color:var(--accent-border);text-align:center}.pending-result-panel span{font-size:13px;font-weight:600;color:var(--accent)}.schedule-list{display:grid;grid-gap:8px;gap:8px;margin-top:12px}.schedule-item{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);padding:12px 14px;box-shadow:var(--shadow-sm);transition:all .15s ease}.schedule-item h3{margin:0 0 4px;font-size:14px;font-weight:600;color:var(--text-primary)}.schedule-item p{margin:2px 0;font-size:12px;color:var(--text-muted)}.schedule-actions{display:flex;gap:6px}.empty-state{border:1px dashed var(--border);border-radius:var(--radius-md);padding:28px;color:var(--text-muted);font-size:13px;text-align:center}.result-stack{display:grid;grid-gap:12px;gap:12px;margin-top:14px}.result-card{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);padding:14px;box-shadow:var(--shadow-sm)}.result-card-header{align-items:center;justify-content:space-between;margin-bottom:10px;font-size:12px;font-weight:600}.meta-row,.result-card-header{display:flex;color:var(--text-muted)}.meta-row{gap:10px;font-size:11px;margin-top:8px}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:20px;background:var(--background)}.auth-card{width:min(420px,100%);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-lg);padding:32px 28px}.auth-card h1{margin:0 0 16px;font-size:24px;font-weight:700;letter-spacing:-.01em;text-align:center;color:var(--text-primary)}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;grid-gap:4px;gap:4px;margin-bottom:18px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-muted);padding:3px}.auth-tabs button{border:0;min-height:32px;background:transparent;box-shadow:none;font-size:13px;color:var(--text-secondary)}.auth-tabs button.active{background:var(--surface);color:var(--text-primary);font-weight:700;box-shadow:var(--shadow-sm)}.auth-submit{width:100%;min-height:42px;margin-top:14px}.auth-note{margin:14px 0 0;color:var(--text-muted);font-size:12px;line-height:1.5;text-align:center}@keyframes backdrop-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-scale-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes drawer-slide-in{0%{opacity:0;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}@keyframes nav-float-in{0%{opacity:0;transform:translate(-50%,16px)}to{opacity:1;transform:translate(-50%)}}@keyframes toast-slide-down{0%{opacity:0;transform:translate(-50%,-10px)}to{opacity:1;transform:translate(-50%)}}@keyframes popover-drop{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}@media (max-width:960px){.app-shell{padding:12px 12px 76px}.calendar-panel{padding:12px 14px 18px}.calendar-theme-hero{padding:10px 16px}.calendar-theme-title span{font-size:28px}.calendar-theme-title strong{font-size:11px}.fc .fc-toolbar-title{font-size:16px}.fc .fc-button-primary{padding:4px 8px;font-size:12px}}@media (max-width:640px){.time-grid{grid-template-columns:1fr}.calendar-theme-hero{flex-direction:row;align-items:center}.bottom-nav{bottom:14px;padding:4px}.bottom-nav button{padding:0 10px;min-height:34px;font-size:12px}.drawer{width:100vw}.settings-modal{padding:16px}}