:root{--color-bg-primary: #0c1220;--color-bg-secondary: #0c1220;--color-surface: #111a2c;--color-surface-hover: #162238;--color-bg-card: var(--color-surface);--color-bg-card-hover: var(--color-surface-hover);--color-bg-input: rgba(17, 26, 44, .92);--color-bg-nav: rgba(12, 18, 32, .9);--color-text-primary: #ffffff;--color-text-secondary: rgba(255, 255, 255, .72);--color-text-tertiary: rgba(255, 255, 255, .48);--color-text-heading: #ffffff;--color-hairline: rgba(255, 255, 255, .06);--color-border: var(--color-hairline);--color-border-hover: rgba(255, 255, 255, .12);--color-border-focus: rgba(47, 123, 255, .5);--color-primary: #2f7bff;--color-primary-pressed: #2b6fe3;--color-neutral: #7c8aa5;--color-accent-primary: var(--color-primary);--color-accent-secondary: var(--color-primary-pressed);--color-accent-success: #41d288;--color-accent-warning: #f2c75c;--color-accent-error: #ff7878;--color-info-bg: rgba(47, 123, 255, .18);--color-info-text: rgba(215, 229, 255, .92);--color-error-bg: rgba(255, 120, 120, .2);--color-error-text: rgba(255, 205, 205, .94);--color-success-bg: rgba(65, 210, 136, .2);--color-success-text: rgba(198, 249, 223, .95);--color-warning-bg: rgba(242, 199, 92, .18);--color-warning-text: rgba(242, 215, 149, .95);--color-status-queued-bg: rgba(47, 123, 255, .15);--color-status-queued-text: var(--color-primary);--color-status-running-bg: rgba(138, 90, 255, .15);--color-status-running-text: #a58fff;--color-status-ok-bg: rgba(65, 210, 136, .16);--color-status-ok-text: #9ff3cc;--color-status-fail-bg: rgba(255, 120, 120, .18);--color-status-fail-text: #ffb3b3;--color-status-blocked-bg: rgba(242, 199, 92, .18);--color-status-blocked-text: rgba(242, 215, 149, .95);--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--space-2xl: 40px;--space-3xl: 48px;--font-family: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-size-xs: .8125rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-md: 1.125rem;--font-size-lg: 1.5rem;--font-size-xl: 1.75rem;--font-size-2xl: 2rem;--font-size-3xl: 2.25rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.2;--line-height-normal: 1.45;--line-height-relaxed: 1.65;--touch-target-min: 44px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 14px;--radius-xl: 18px;--radius-full: 999px;--shadow-sm: 0 0 0 1px var(--color-hairline);--shadow-md: 0 2px 12px rgba(4, 8, 16, .25);--shadow-lg: 0 16px 32px rgba(4, 8, 16, .3);--shadow-xl: 0 24px 48px rgba(4, 8, 16, .32);--card-bg-gradient: linear-gradient(145deg, rgba(17, 26, 44, .95) 0%, rgba(12, 18, 32, .98) 100%);--card-border-subtle: rgba(255, 255, 255, .08);--card-shadow-elevated: 0 8px 24px rgba(4, 8, 16, .25);--card-shadow-hover: 0 24px 48px rgba(4, 8, 16, .4), 0 0 0 1px rgba(47, 123, 255, .1);--transition-fast: .1s ease;--transition-base: .18s ease;--transition-slow: .3s ease;--focus-ring: 0 0 0 3px rgba(47, 123, 255, .28);--focus-ring-offset: 0 0 0 2px var(--color-bg-primary);--breakpoint-sm: 640px;--breakpoint-md: 768px;--breakpoint-lg: 1024px;--breakpoint-xl: 1280px}:root{font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}a{color:inherit;text-decoration:none}body{margin:0;min-height:100vh}button,select,input{font-family:inherit}*:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px}[tabindex="-1"]:focus:not(:focus-visible){outline:none;-webkit-tap-highlight-color:transparent}.home-content:focus,[role=tabpanel]:focus{outline:none;-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex="0"]:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px}.badge{display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-full);font-weight:var(--font-weight-medium);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}.badge--sm{padding:2px var(--space-sm);font-size:var(--font-size-xs)}.badge--md{padding:var(--space-xs) 10px;font-size:var(--font-size-sm)}.badge--queued{background:var(--color-status-queued-bg);color:var(--color-status-queued-text)}.badge--running,.badge--validating{background:var(--color-status-running-bg);color:var(--color-status-running-text)}.badge--ok{background:var(--color-status-ok-bg);color:var(--color-status-ok-text)}.badge--fail,.badge--timeout{background:var(--color-status-fail-bg);color:var(--color-status-fail-text)}.badge--blocked{background:var(--color-status-blocked-bg);color:var(--color-status-blocked-text)}.badge--info{background:var(--color-info-bg);color:var(--color-info-text)}.badge--success{background:var(--color-success-bg);color:var(--color-success-text)}.badge--warning{background:var(--color-warning-bg);color:var(--color-warning-text)}.badge--error{background:var(--color-error-bg);color:var(--color-error-text)}.button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);border:none;border-radius:var(--radius-md);font-family:var(--font-family);font-weight:var(--font-weight-semibold);cursor:pointer;transition:transform .11s cubic-bezier(.22,1,.36,1),background var(--transition-base),color var(--transition-base),box-shadow var(--transition-base);white-space:nowrap;-webkit-user-select:none;user-select:none;min-height:var(--touch-target-min);min-width:var(--touch-target-min)}.button:focus-visible{outline:none;box-shadow:var(--focus-ring-offset),var(--focus-ring)}.button:disabled{opacity:.6;cursor:not-allowed;transform:none!important}.button--sm{padding:var(--space-md) var(--space-lg);font-size:var(--font-size-base)}@media(min-width:640px){.button--sm{padding:var(--space-sm) var(--space-md);font-size:var(--font-size-sm)}}.button--md{padding:var(--space-md) var(--space-xl);font-size:var(--font-size-base)}@media(min-width:640px){.button--md{padding:var(--space-md) var(--space-lg)}}.button--lg{padding:var(--space-lg) var(--space-2xl);font-size:var(--font-size-md)}@media(min-width:640px){.button--lg{padding:var(--space-lg) var(--space-xl);font-size:var(--font-size-lg)}}.button--primary{background:var(--color-primary);color:var(--color-text-primary);box-shadow:none}@media(hover:hover)and (pointer:fine){.button--primary:not(:disabled):hover{box-shadow:0 10px 24px #2f7bff3d}}.button--primary:not(:disabled):active{transform:scale(.98);background:var(--color-primary-pressed)}.button--secondary{background:transparent;color:var(--color-text-secondary);border:1px solid var(--color-hairline)}@media(hover:hover)and (pointer:fine){.button--secondary:not(:disabled):hover{color:var(--color-text-primary);border-color:#ffffff1f}}.button--secondary:not(:disabled):active{transform:scale(.98);background:#ffffff0f}.button--link{background:none;color:var(--color-accent-primary);padding:var(--space-sm) var(--space-md)}@media(hover:hover)and (pointer:fine){.button--link:not(:disabled):hover{color:var(--color-accent-secondary);text-decoration:underline}}.button--ghost{background:transparent;color:var(--color-text-secondary);border:1px solid var(--color-hairline);border-radius:var(--radius-full);padding:var(--space-sm) var(--space-lg);font-size:var(--font-size-base);transition:background var(--transition-base),color var(--transition-base)}@media(hover:hover)and (pointer:fine){.button--ghost:not(:disabled):hover{background:#ffffff0f;color:var(--color-text-primary)}}.button--full-width{width:100%}.card{background:var(--color-bg-card);border:1px solid var(--color-hairline);border-radius:var(--radius-lg);padding:var(--space-lg);box-shadow:none;transition:background var(--transition-base),transform var(--transition-base),border-color var(--transition-base)}@media(min-width:640px){.card{border-radius:var(--radius-lg);padding:var(--space-xl)}}.card--interactive{cursor:pointer}.card:not(.card--interactive):focus{outline:none;-webkit-tap-highlight-color:transparent}@media(hover:hover)and (pointer:fine){.card--interactive:hover{background:var(--color-bg-card-hover);transform:translateY(-2px);box-shadow:0 28px 90px #0f172a66}}.card--interactive:focus-visible{outline:none;box-shadow:var(--focus-ring-offset),var(--focus-ring)}.card-header{margin-bottom:var(--space-lg)}.card-title{margin:0 0 var(--space-sm);font-size:var(--font-size-md);color:var(--color-text-secondary);font-weight:var(--font-weight-medium)}.card-subtitle{color:var(--color-text-tertiary);font-size:var(--font-size-sm)}.card-content{color:var(--color-text-primary)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--space-3xl) var(--space-xl);min-height:240px}.empty-state-icon{font-size:var(--font-size-3xl);margin-bottom:var(--space-lg);color:var(--color-text-tertiary);opacity:.5}.empty-state-title{margin:0 0 var(--space-sm);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.empty-state-description{margin:0 0 var(--space-xl);font-size:var(--font-size-base);color:var(--color-text-secondary);max-width:40ch}.empty-state-action{margin-top:var(--space-md)}.input-wrapper{display:flex;flex-direction:column;gap:var(--space-sm)}.input-label{font-size:var(--font-size-base);font-weight:var(--font-weight-medium);color:var(--color-text-primary)}.input{width:100%;padding:var(--space-md);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-bg-input);color:var(--color-text-primary);font-size:var(--font-size-base);font-family:var(--font-family);min-height:var(--touch-target-min);transition:border-color var(--transition-base),box-shadow var(--transition-base)}.input::placeholder{color:var(--color-text-tertiary)}@media(hover:hover)and (pointer:fine){.input:hover:not(:disabled){border-color:var(--color-border-hover)}}.input:focus{outline:none;border-color:var(--color-border-focus);box-shadow:var(--focus-ring)}.input:disabled{opacity:.6;cursor:not-allowed}.input--error{border-color:var(--color-accent-error)}.input--error:focus{border-color:var(--color-accent-error);box-shadow:0 0 0 3px #f8717133}.input-error{margin:0;font-size:var(--font-size-sm);color:var(--color-error-text);font-weight:var(--font-weight-medium)}.input-helper{margin:0;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.loading-indicator{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-lg);padding:var(--space-2xl);min-height:160px}.loading-spinner{position:relative;display:inline-block}.loading-spinner--sm{width:24px;height:24px}.loading-spinner--md{width:40px;height:40px}.loading-spinner--lg{width:56px;height:56px}.loading-spinner-circle{width:100%;height:100%;border:3px solid var(--color-border);border-top-color:var(--color-accent-primary);border-radius:50%;animation:spin .8s linear infinite}.loading-spinner--sm .loading-spinner-circle{border-width:2px}.loading-spinner--lg .loading-spinner-circle{border-width:4px}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{margin:0;font-size:var(--font-size-base);color:var(--color-text-secondary);font-weight:var(--font-weight-medium)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.toast{position:fixed;bottom:var(--space-xl);left:50%;transform:translate(-50%);padding:var(--space-md) var(--space-lg);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);animation:slideUp .3s ease;z-index:1000;display:flex;align-items:center;gap:var(--space-md);max-width:90vw;min-width:280px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}@keyframes slideUp{0%{transform:translate(-50%) translateY(100px);opacity:0}to{transform:translate(-50%) translateY(0);opacity:1}}.toast-info{background:var(--color-info-bg);border:1px solid rgba(56,189,248,.4);color:var(--color-info-text)}.toast-error{background:var(--color-error-bg);border:1px solid rgba(248,113,113,.4);color:var(--color-error-text)}.toast-success{background:var(--color-success-bg);border:1px solid rgba(34,197,94,.4);color:var(--color-success-text)}.toast-icon{flex-shrink:0}.toast-message{flex:1;font-size:var(--font-size-base);font-weight:var(--font-weight-medium)}.toast-close{background:none;border:none;color:inherit;font-size:1.5rem;cursor:pointer;padding:0;opacity:.7;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:all var(--transition-fast);flex-shrink:0}.toast-close:hover{opacity:1;background:#ffffff1a}.toast-close:focus-visible{outline:none;box-shadow:var(--focus-ring)}@media(max-width:640px){.toast{bottom:calc(var(--space-xl) + env(safe-area-inset-bottom,0px));max-width:calc(100vw - 2 * var(--space-md))}}@media(min-width:640px){.toast{min-width:320px;max-width:480px}}.schedule-card{display:flex;flex-direction:column;gap:12px;padding:16px;border-radius:var(--radius-md);background:var(--color-surface);box-shadow:0 6px 18px #00000026}.schedule-card--compact{padding:12px;gap:8px}.schedule-card__header{display:flex;align-items:center;justify-content:space-between;gap:12px}.schedule-card__status-dot{width:10px;height:10px;border-radius:999px}.schedule-card__status-dot--green{background:#22c55e}.schedule-card__status-dot--yellow{background:#facc15}.schedule-card__status-dot--gray{background:#737373}.schedule-card__header-info{flex:1;display:flex;flex-direction:column;gap:2px}.schedule-card__title{font-size:1rem;font-weight:600}.schedule-card__meta{color:var(--color-text-muted);font-size:.875rem}.schedule-card__main{display:flex;flex-direction:column;gap:8px}.schedule-card__row{display:flex;justify-content:space-between;gap:16px}.schedule-card__label{color:var(--color-text-muted);font-size:.875rem}.schedule-card__value{font-size:.95rem;text-align:right}.schedule-card__hint{color:var(--color-warning);font-size:.85rem}.schedule-card__footer{display:flex;align-items:center;justify-content:space-between;gap:12px}.schedule-card__actions{display:flex;gap:8px;flex-wrap:wrap}.schedule-card__menu{width:44px;height:44px;border:none;border-radius:999px;background:#ffffff14;color:inherit;display:flex;align-items:center;justify-content:center}.schedule-card__menu:hover{background:#ffffff26}.schedule-card__menu:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.schedule-card__menu-placeholder{width:44px;height:44px}.home-booking-card{background:var(--card-bg-gradient);border:1px solid var(--color-hairline);border-radius:var(--radius-lg);padding:0;overflow:hidden;position:relative;transition:transform var(--transition-base),box-shadow var(--transition-base);box-shadow:var(--card-shadow-elevated)}.home-booking-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--color-primary) 0%,rgba(47,123,255,.5) 100%);opacity:.7}@media(hover:hover)and (pointer:fine){.home-booking-card:hover{transform:translateY(-2px);box-shadow:var(--card-shadow-hover)}}@media(prefers-reduced-motion:reduce){.home-booking-card{transition:none}.home-booking-card:hover{transform:none}}.home-booking-card__content{display:flex;flex-direction:column;gap:var(--space-md)}.home-booking-card__hero{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-lg) var(--space-md) var(--space-xs)}.home-booking-card__status-body{display:flex;align-items:center;gap:var(--space-sm)}.home-booking-card__status-indicator{width:64px;height:64px;border-radius:var(--radius-full);display:grid;place-content:center;border:2px solid var(--color-hairline);background:#111a2ce6;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);flex-shrink:0;transition:all var(--transition-base);will-change:transform,box-shadow;position:relative}.home-booking-card__status-indicator:before{content:"";position:absolute;inset:-2px;border-radius:var(--radius-full);padding:2px;background:linear-gradient(135deg,transparent,transparent);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:0;transition:opacity var(--transition-base)}.home-booking-card__status-indicator svg{width:22px;height:22px;position:relative;z-index:1;stroke-width:2.5}.home-booking-card__status-indicator--active{color:var(--color-accent-success);border-color:#41d28880;background:linear-gradient(135deg,#41d28833,#41d2881a);box-shadow:0 0 24px #41d28840,inset 0 0 24px #41d2881f;animation:statusPulse 2.5s ease-in-out infinite}.home-booking-card__status-indicator--active:before{background:linear-gradient(135deg,#41d28866,#41d28826);opacity:1}.home-booking-card__status-indicator--idle{color:var(--color-neutral);border-color:#7c8aa580;background:linear-gradient(135deg,#7c8aa526,#7c8aa514);box-shadow:0 0 20px #7c8aa52e}.home-booking-card__status-indicator--unknown{color:#f2c75ce6;border-color:#f2c75c66;background:linear-gradient(135deg,#f2c75c1f,#f2c75c0f);box-shadow:0 0 18px #f2c75c33}@keyframes statusPulse{0%,to{transform:scale(1);box-shadow:0 0 20px #41d28833,inset 0 0 20px #41d2881a}50%{transform:scale(1.02);box-shadow:0 0 28px #41d2884d,inset 0 0 24px #41d28826}}@media(hover:hover)and (pointer:fine){.home-booking-card__status-indicator:hover{transform:scale(1.05)}}@media(prefers-reduced-motion:reduce){.home-booking-card__status-indicator--active{animation:none}.home-booking-card__status-indicator:hover{transform:none}}.home-booking-card__status-text{flex:1;min-width:0}.home-booking-card__status-label{margin:0;font-size:2rem;font-weight:var(--font-weight-bold);color:var(--color-text-heading);text-transform:capitalize;line-height:var(--line-height-tight);letter-spacing:-.02em}.home-booking-card__status-description{margin:var(--space-xs) 0 0;font-size:var(--font-size-xs);color:var(--color-text-secondary);line-height:var(--line-height-normal)}.home-booking-card__grid{display:grid;gap:var(--space-sm);padding:0 var(--space-md) var(--space-md)}.home-booking-card__panel{border:1px solid var(--card-border-subtle);border-radius:var(--radius-md);padding:var(--space-md);background:#ffffff05;box-shadow:var(--card-shadow-subtle)}.home-booking-card__panel-header{display:flex;align-items:center;gap:var(--space-xs);margin-bottom:var(--space-sm);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.08em;font-size:var(--font-size-2xs)}.home-booking-card__panel-header h3{margin:0;font-size:var(--font-size-xs);color:var(--color-text-heading);letter-spacing:.08em}.home-booking-card__panel-header svg{width:16px;height:16px}.home-booking-card__booking-info{display:flex;flex-direction:column;gap:var(--space-xs)}.home-booking-card__booking-type{display:inline-flex;align-items:center;gap:var(--space-xs);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-heading);flex-wrap:wrap}.home-booking-card__booking-type svg{color:var(--color-primary);flex-shrink:0;width:14px;height:14px;stroke-width:2.5}.home-booking-card__source-badge{margin-left:var(--space-xs);font-size:10px;padding:2px 6px}.home-booking-card__booking-time{display:inline-flex;align-items:center;gap:var(--space-xs);font-size:var(--font-size-xs);color:var(--color-text-secondary);font-weight:var(--font-weight-medium)}.home-booking-card__booking-time svg{flex-shrink:0;color:var(--color-text-tertiary);width:12px;height:12px;opacity:.8}.home-booking-card__booking-countdown{display:inline-flex;align-items:center;gap:var(--space-xs);font-size:var(--font-size-xs);color:var(--color-accent-primary);font-weight:var(--font-weight-semibold);padding:2px var(--space-xs);background:#2f7bff1a;border-radius:var(--radius-sm);border:1px solid rgba(47,123,255,.2);margin-top:var(--space-xs)}.home-booking-card__booking-countdown svg{flex-shrink:0;width:12px;height:12px;animation:countdownPulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}@keyframes countdownPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.1)}}@media(prefers-reduced-motion:reduce){.home-booking-card__booking-countdown svg{animation:none}}.home-booking-card__action-link{margin-top:var(--space-xs);align-self:flex-start;display:inline-flex;align-items:center;gap:var(--space-xs);font-size:var(--font-size-xs);color:var(--color-primary);padding:0;min-height:auto;transition:transform var(--transition-base),color var(--transition-base)}.home-booking-card__action-link svg{transition:transform var(--transition-base);width:12px;height:12px}@media(hover:hover)and (pointer:fine){.home-booking-card__action-link:hover{transform:translateY(-1px);color:var(--color-accent-primary)}.home-booking-card__action-link:hover svg{transform:translate(3px)}}.home-booking-card__empty-state{display:flex;flex-direction:column;gap:var(--space-sm);align-items:flex-start}.home-booking-card__empty-text{margin:0;font-size:var(--font-size-sm);color:var(--color-text-tertiary);font-style:italic;line-height:var(--line-height-relaxed)}.home-booking-card__cta-button{margin-top:var(--space-xs);padding:var(--space-sm) var(--space-md);font-size:var(--font-size-sm);min-height:var(--touch-target-min);background:linear-gradient(135deg,var(--color-primary),var(--color-primary-pressed));border-radius:var(--radius-md);transition:all var(--transition-base);box-shadow:0 4px 12px #2f7bff40}@media(hover:hover)and (pointer:fine){.home-booking-card__cta-button:hover{transform:translateY(-2px);box-shadow:0 6px 16px #2f7bff59}}@media(min-width:640px){.home-booking-card__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-md)}.home-booking-card__panel--next{border-left:1px solid var(--card-border-subtle)}.home-booking-card__status-body{gap:var(--space-md)}.home-booking-card__status-label{font-size:var(--font-size-xl)}.home-booking-card__booking-info{gap:var(--space-sm)}}@media(min-width:1024px){.home-booking-card__hero{padding:var(--space-xl) var(--space-xl) var(--space-sm)}.home-booking-card__grid{padding:0 var(--space-xl) var(--space-xl)}}.calendar-view{display:flex;flex-direction:column;gap:var(--space-lg);padding:var(--space-lg);background:var(--color-bg-card);border-radius:var(--radius-lg);border:1px solid var(--color-border)}.calendar-header{display:flex;justify-content:space-between;align-items:center;gap:var(--space-md)}.calendar-eyebrow{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-tertiary);margin:0 0 var(--space-xs)}.calendar-heading{font-size:var(--font-size-lg);margin:0;color:var(--color-text-heading)}.calendar-timezone{margin:var(--space-xs) 0 0;color:var(--color-text-secondary);font-size:var(--font-size-sm)}.calendar-nav{display:flex;gap:var(--space-sm)}.calendar-nav__button{width:var(--touch-target-min);height:var(--touch-target-min);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-bg-input);color:var(--color-text-primary);font-size:1.25rem}.calendar-nav__button:focus-visible{outline:none;box-shadow:var(--focus-ring)}.calendar-controls{display:flex;gap:var(--space-sm);flex-wrap:wrap}.calendar-chip{flex:1;min-height:var(--touch-target-min);border-radius:var(--radius-full);border:1px solid var(--color-border);background:transparent;color:var(--color-text-secondary);font-weight:var(--font-weight-medium)}.calendar-chip.is-active{background:#2f7bff29;color:var(--color-text-primary);border-color:#2f7bff66}.calendar-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);font-size:var(--font-size-sm)}.calendar-banner--error{background:var(--color-error-bg);color:var(--color-error-text)}.calendar-banner__action{background:transparent;border:none;color:inherit;font-weight:var(--font-weight-semibold);text-decoration:underline}.calendar-grid{display:flex;flex-direction:column;gap:var(--space-sm)}.calendar-weekday-row,.calendar-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--space-xs)}.calendar-weekday{text-align:center;font-size:var(--font-size-sm);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:.08em}.calendar-cell{min-height:72px;padding:var(--space-sm);border-radius:var(--radius-md);background:#ffffff05;display:flex;flex-direction:column;border:1px solid rgba(255,255,255,.04);gap:var(--space-sm)}.calendar-cell--empty{min-height:72px}.calendar-cell--today{border-color:#2f7bff66;box-shadow:inset 0 0 0 1px #2f7bff40}.calendar-cell--selected{background:#2f7bff1a;border-color:var(--color-primary)}.calendar-cell--interactive{cursor:pointer;transition:background .15s ease,border-color .15s ease}.calendar-cell--interactive:hover:not(.calendar-cell--selected){background:#ffffff0d;border-color:#ffffff1a}.calendar-cell--absent{background:#96969614;border-style:dashed}.calendar-cell__absence-marker{display:block;height:4px;width:100%;background:var(--color-text-tertiary);border-radius:2px;opacity:.5}.calendar-cell__date{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.calendar-cell__dots{display:flex;flex-wrap:wrap;gap:4px;min-height:16px}.calendar-dot{width:12px;height:12px;border-radius:50%;display:inline-flex}.calendar-dot--success{background:var(--color-accent-success)}.calendar-dot--error{background:var(--color-accent-error)}.calendar-dot--warning{background:var(--color-accent-warning)}.calendar-dot--neutral{background:var(--color-neutral)}.calendar-cell__more{font-size:var(--font-size-xs);color:var(--color-text-tertiary)}.calendar-loading{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.calendar-legend{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-sm);font-size:var(--font-size-sm);color:var(--color-text-secondary)}@media(max-width:640px){.calendar-view{padding:var(--space-sm)}.calendar-header{flex-direction:row;align-items:center;justify-content:space-between}.calendar-eyebrow{display:none}.calendar-heading{font-size:var(--font-size-md)}.calendar-timezone{font-size:.75rem;margin-top:0}.calendar-nav{width:auto}.calendar-controls{width:100%;gap:var(--space-xs)}.calendar-chip{flex:1 1 auto;font-size:var(--font-size-sm);padding:0 var(--space-sm)}.calendar-grid,.calendar-weekday-row,.calendar-week{gap:2px}.calendar-weekday{font-size:.7rem;margin-bottom:2px}.calendar-cell{min-height:52px;padding:4px;gap:2px}.calendar-cell--empty{min-height:52px}.calendar-cell__date{font-size:.75rem;line-height:1}.calendar-cell__dots{min-height:auto;gap:2px;margin-top:2px}.calendar-dot{width:6px;height:6px}.calendar-cell__more{font-size:.65rem;line-height:1}.calendar-banner{flex-direction:column;align-items:flex-start}}@media(min-width:768px){.calendar-view{padding:var(--space-xl)}.calendar-cell{min-height:92px}.calendar-legend{grid-template-columns:repeat(4,minmax(0,1fr))}.calendar-controls{max-width:360px}}.day-agenda{background:var(--color-bg-card);border-radius:var(--radius-lg);border:1px solid var(--color-border);display:flex;flex-direction:column}.day-agenda__header{padding:var(--space-lg);border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;align-items:center}.day-agenda__title{margin:0;font-size:var(--font-size-lg);color:var(--color-text-heading)}.day-agenda__subtitle{margin:var(--space-xs) 0 0;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.day-agenda__content{padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-md)}.day-agenda__empty{text-align:center;padding:var(--space-xl) 0;color:var(--color-text-tertiary)}.day-agenda__list{display:flex;flex-direction:column;gap:var(--space-sm)}.day-agenda__item{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md);border-radius:var(--radius-md);background:#ffffff05;border:1px solid rgba(255,255,255,.04)}.day-agenda__item-info{display:flex;align-items:center;gap:var(--space-md)}.day-agenda__time{font-family:var(--font-mono);font-weight:var(--font-weight-medium);color:var(--color-text-primary);min-width:48px}.day-agenda__type{display:flex;align-items:center;gap:var(--space-xs);font-weight:var(--font-weight-medium)}.day-agenda__source{font-size:var(--font-size-xs);color:var(--color-text-tertiary);display:flex;align-items:center;gap:4px}.day-agenda__actions{display:flex;gap:var(--space-sm)}.day-agenda__add-form{margin-top:var(--space-md);padding:var(--space-md);border-radius:var(--radius-md);background:#2f7bff0a;border:1px solid rgba(47,123,255,.1);display:flex;gap:var(--space-sm);align-items:flex-end}.day-agenda__add-form .input-group{flex:1}@media(max-width:640px){.day-agenda__add-form{flex-direction:column;align-items:stretch}}.absence-list{margin-top:var(--space-lg)}.absence-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-md);gap:var(--space-sm);flex-wrap:wrap}.absence-header h3{font-size:var(--font-size-lg);margin:0}.absence-actions{display:flex;gap:var(--space-xs);flex-wrap:wrap;justify-content:flex-start}.absence-error{color:var(--color-error-text);background:var(--color-error-bg);padding:var(--space-sm);border-radius:var(--radius-md);display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-md);font-size:var(--font-size-sm)}.absence-items{display:flex;flex-direction:column;gap:var(--space-sm)}.absence-item{background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-sm) var(--space-md);display:flex;justify-content:space-between;align-items:center;gap:var(--space-sm)}.absence-info{display:flex;flex-direction:column;gap:4px}.absence-title{font-weight:500;display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.absence-dates{font-size:var(--font-size-sm);color:var(--color-text-muted)}.absence-delete{background:none;border:none;color:var(--color-text-muted);cursor:pointer;padding:var(--space-xs);border-radius:var(--radius-sm)}.absence-delete:hover{color:var(--color-error-text);background:var(--color-error-bg)}.absence-settings-card,.absence-add-card{margin-bottom:var(--space-md)}.date-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-md)}.form-actions{display:flex;gap:var(--space-sm);margin-top:var(--space-md);flex-wrap:wrap}.spin{animation:spin 1s linear infinite}.absence-empty{text-align:center;padding:var(--space-lg);color:var(--color-text-muted);background:var(--color-bg-surface-muted);border-radius:var(--radius-md);border:1px dashed var(--color-border)}@media(max-width:640px){.absence-item{flex-direction:column;align-items:flex-start}.absence-delete{align-self:flex-start}.date-row{grid-template-columns:1fr}}.history-view{--color-bg-subtle: var(--color-surface-hover);--color-border-subtle: var(--card-border-subtle);display:flex;gap:var(--space-lg);height:100%;min-height:0}.history-list-container{flex:1;min-width:0;overflow-y:auto;padding-right:var(--space-xs)}.history-group{margin-bottom:var(--space-lg)}.history-group-title{position:sticky;top:0;background:var(--color-bg-app);z-index:10;padding:var(--space-sm) 0;margin:0 0 var(--space-xs) 0;font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.history-item{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);margin-bottom:var(--space-xs);transition:border-color .2s,box-shadow .2s;cursor:pointer;overflow:hidden}.history-item:hover{border-color:var(--color-primary-light)}.history-item.is-selected{border-color:var(--color-primary);background-color:var(--color-bg-card-active)}.history-item-header{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--space-md);padding:var(--space-md)}.history-time{font-family:var(--font-mono);font-weight:500;color:var(--color-text-primary);font-size:var(--font-size-md)}.history-info{display:flex;flex-direction:column;gap:2px;min-width:0}.history-info-top{display:flex;align-items:center;gap:var(--space-sm)}.history-type{display:flex;align-items:center;gap:4px;font-size:var(--font-size-sm);font-weight:500}.history-type.type-in{color:var(--color-success)}.history-type.type-out{color:var(--color-error)}.history-message{font-size:var(--font-size-sm);color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.history-status{flex-shrink:0}.history-item-details{border-top:1px solid var(--color-border);padding:var(--space-md);background-color:var(--color-bg-subtle);font-size:var(--font-size-sm);animation:slideDown .2s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.history-details-content{max-width:100%;overflow-wrap:break-word;word-wrap:break-word}.history-details-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-md);padding-bottom:var(--space-sm);border-bottom:1px solid var(--color-border)}.history-details-header h3{margin:0;font-size:var(--font-size-lg)}.history-dl{margin:0}.detail-row{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--color-border-subtle)}.detail-row:last-child{border-bottom:none}.detail-label{color:var(--color-text-muted);font-weight:500;min-width:0}.detail-value{font-family:var(--font-mono);text-align:right;color:var(--color-text-primary);min-width:0;max-width:100%;overflow-wrap:break-word;word-break:break-word}.detail-block{margin-top:var(--space-sm);padding-top:var(--space-sm);border-top:1px solid var(--color-border-subtle)}.detail-value-block{margin:4px 0 0;white-space:pre-wrap;word-break:break-word;color:var(--color-text-primary)}.detail-path{font-family:var(--font-mono);font-size:.85em;background:var(--color-bg-subtle);padding:4px;border-radius:4px}.history-sidebar{width:350px;flex-shrink:0;background:var(--color-bg-card);border-left:1px solid var(--color-border);padding:var(--space-lg);overflow-y:auto;display:none}.flex-center{display:flex;align-items:center;gap:var(--space-xs);justify-content:flex-end}.icon-btn{background:none;border:none;padding:4px;color:var(--color-text-muted);cursor:pointer;border-radius:4px;display:flex;align-items:center}.icon-btn:hover{background:var(--color-bg-subtle);color:var(--color-text-primary)}.proof-link{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);text-decoration:none;color:var(--color-primary);font-size:var(--font-size-sm);transition:background-color .2s;white-space:nowrap}.proof-link:hover{background:var(--color-bg-subtle)}.history-log-section{margin-top:var(--space-md);border-top:1px solid var(--color-border-subtle)}.log-toggle{width:100%;display:flex;justify-content:space-between;align-items:center;padding:var(--space-md) 0;background:none;border:none;color:var(--color-text-muted);font-size:var(--font-size-sm);font-weight:500;cursor:pointer}.log-toggle:hover{color:var(--color-text-primary)}.log-container{background:#0000004d;padding:var(--space-sm);border-radius:var(--radius-md);font-family:Menlo,Monaco,Courier New,monospace;font-size:.8em;overflow-x:auto;border:1px solid var(--color-border)}.log-list{list-style:none;padding:0;margin:0;color:var(--color-text-secondary)}.log-list li{margin-bottom:4px;padding-left:var(--space-sm);border-left:2px solid var(--color-border)}.log-actions{margin-top:var(--space-sm);display:flex;justify-content:flex-end}@media(min-width:768px){.history-sidebar{display:block;border:1px solid var(--color-border);border-radius:var(--radius-lg);height:fit-content;max-height:100%;position:sticky;top:0}.history-item-details{display:none}}@media(max-width:767px){.history-view{flex-direction:column}.history-sidebar{display:none!important}.history-item-header{padding:var(--space-md);min-height:64px}.history-item{overflow:visible}.detail-row{flex-wrap:wrap;gap:4px}.detail-label{flex-basis:100%}.detail-value{flex-basis:100%;text-align:left}.history-item-details{max-width:100%;overflow-x:hidden;overflow-y:visible;padding-left:var(--space-sm);padding-right:var(--space-sm)}}.admin-panel{padding:var(--space-lg);max-width:1200px;margin:0 auto}.admin-title{font-size:var(--font-size-xl);font-weight:600;margin-bottom:var(--space-lg)}.admin-banner{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-md);border-radius:var(--radius-md);margin-bottom:var(--space-md)}.admin-banner--error{background:var(--color-error-bg);border:1px solid rgba(248,113,113,.3);color:var(--color-error-text)}.admin-banner--success{background:var(--color-success-bg);border:1px solid rgba(34,197,94,.3);color:var(--color-success-text)}.admin-section{margin-bottom:var(--space-lg)}.admin-form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--space-md);margin-bottom:var(--space-md)}.admin-actions{display:flex;gap:var(--space-sm);flex-wrap:wrap}.admin-actions--responsive{align-items:flex-end}.admin-test-controls{display:flex;align-items:flex-end;gap:var(--space-sm);flex:1;min-width:260px}.admin-select-field{display:flex;flex-direction:column;gap:var(--space-xs);flex:1}.admin-select-field label{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.admin-select-field select{width:100%;padding:var(--space-sm);border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-bg-input);color:var(--color-text-primary);min-height:var(--touch-target-min)}.admin-select-field select:disabled{opacity:.6;cursor:not-allowed}.admin-helper-text{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0}.admin-test-results{margin-top:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--color-border)}.admin-test-result{display:flex;align-items:flex-start;gap:var(--space-sm);padding:var(--space-sm);margin-bottom:var(--space-sm);border-radius:var(--radius-sm)}.admin-test-result.success{background:var(--color-success-bg);border:1px solid rgba(34,197,94,.3)}.admin-test-result.error{background:var(--color-error-bg);border:1px solid rgba(248,113,113,.3)}.admin-test-result-header{display:flex;align-items:center;gap:var(--space-xs);font-weight:500}.admin-test-result-header code{font-family:monospace;font-size:var(--font-size-sm);background:#0000001a;padding:2px 6px;border-radius:var(--radius-xs)}.admin-test-result-text{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-top:var(--space-xs)}.admin-test-result-error{font-size:var(--font-size-sm);color:var(--color-error-text);margin-top:var(--space-xs)}.admin-checkbox{display:flex;align-items:center;gap:var(--space-xs)}.admin-checkbox label{display:flex;align-items:center;gap:var(--space-xs);cursor:pointer}.admin-checkbox input[type=checkbox]{width:auto}.admin-credentials-list{display:flex;flex-direction:column;gap:var(--space-md)}.admin-credential-item{padding:var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.admin-credential-info{display:flex;flex-direction:column;gap:var(--space-xs);margin-bottom:var(--space-sm)}.admin-credential-badge{display:inline-flex;align-items:center;gap:var(--space-xs);font-size:var(--font-size-sm);color:var(--color-success-text)}.admin-credential-badge--missing{color:var(--color-error-text)}.admin-credential-meta{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.admin-credential-actions{display:flex;gap:var(--space-sm);flex-wrap:wrap;align-items:center}.admin-credential-form{display:flex;flex-direction:column;gap:var(--space-sm);width:100%;margin-top:var(--space-sm)}.admin-credential-form-actions{display:flex;gap:var(--space-sm)}.admin-error{padding:var(--space-lg);text-align:center;color:var(--color-error-text)}.admin-error-detail{margin-top:var(--space-sm);font-size:var(--font-size-sm);opacity:.9}@media(max-width:768px){.admin-panel{padding:var(--space-md)}.admin-form-grid{grid-template-columns:1fr}.admin-actions,.admin-credential-actions,.admin-credential-form-actions,.admin-test-controls{flex-direction:column;align-items:stretch}.admin-select-field select{min-height:calc(var(--touch-target-min) + var(--space-xs))}}@media(max-width:480px){.admin-panel{padding:var(--space-sm)}.admin-banner{flex-direction:column;align-items:flex-start}.admin-test-result{flex-direction:column}}:root{color-scheme:light dark;font-family:var(--font-family);line-height:var(--line-height-normal);font-weight:var(--font-weight-normal);background-color:var(--color-bg-primary);color:var(--color-text-primary)}body{margin:0;min-height:100vh;background-color:var(--color-bg-primary)}#root{min-height:100vh}.app-shell{max-width:100%;margin:0 auto;padding:var(--space-md) var(--space-md) calc(152px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:var(--space-md);background-color:var(--color-bg-primary);min-height:100vh}.app-shell--home{min-height:100vh}@media(min-width:768px){.app-shell{max-width:960px;padding:var(--space-lg) var(--space-xl) calc(184px + env(safe-area-inset-bottom));gap:var(--space-lg)}}.app-header{display:flex;align-items:center;justify-content:flex-start;padding:var(--space-sm) 0;min-height:44px;flex-shrink:0}.menu-button{display:flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:var(--radius-md);border:1px solid var(--color-hairline);background:#111a2ceb;color:var(--color-text-primary);cursor:pointer;transition:background var(--transition-base),border-color var(--transition-base),transform var(--transition-base);flex-shrink:0}.menu-button:hover{background:#111a2cfa;border-color:#ffffff1f}.menu-button:active{transform:scale(.95)}.menu-button:focus-visible{outline:none;box-shadow:var(--focus-ring)}.menu-overlay{position:fixed;inset:0;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:9998;animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.menu-drawer{position:fixed;top:0;right:0;bottom:0;width:min(400px,85vw);max-width:100%;background:var(--card-bg-gradient);border-left:1px solid var(--color-hairline);box-shadow:-8px 0 32px #04081080;z-index:9999;display:flex;flex-direction:column;overflow:hidden;animation:slideInRight .3s cubic-bezier(.34,1.56,.64,1);will-change:transform}@keyframes slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}@media(prefers-reduced-motion:reduce){.menu-overlay,.menu-drawer{animation:none}}.menu-drawer__header{padding:var(--space-xl);border-bottom:1px solid var(--card-border-subtle);display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-md)}.menu-drawer__header-content{flex:1;display:flex;flex-direction:column;gap:var(--space-xs);min-width:0}.menu-drawer__close{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-md);border:1px solid var(--color-hairline);background:transparent;color:var(--color-text-secondary);cursor:pointer;transition:background var(--transition-base),color var(--transition-base);flex-shrink:0}.menu-drawer__close:hover{background:#ffffff0f;color:var(--color-text-primary)}.menu-drawer__close:focus-visible{outline:none;box-shadow:var(--focus-ring)}.menu-drawer__content{flex:1;overflow-y:auto;padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-xl)}.menu-drawer__section{display:flex;flex-direction:column;gap:var(--space-md)}.header-eyebrow{margin:0;font-size:var(--font-size-xs);letter-spacing:.24em;text-transform:uppercase;color:var(--color-text-secondary)}.header-heading{margin:0;font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);letter-spacing:-.02em;color:var(--color-text-heading);line-height:var(--line-height-tight)}.header-subtitle{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.profile-chip{display:inline-flex;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-full);background:transparent;border:1px solid var(--color-hairline);cursor:pointer;transition:background var(--transition-base),border-color var(--transition-base)}.profile-chip:focus-visible{outline:none;box-shadow:var(--focus-ring)}.profile-chip--open{background:#111a2ceb;border-color:#ffffff1f}.profile-chip__avatar{width:40px;height:40px;border-radius:var(--radius-full);display:grid;place-content:center;font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);color:var(--color-text-primary);background:#111a2ceb;border:1px solid var(--color-hairline)}.profile-chip__text{display:flex;flex-direction:column;gap:2px;text-align:left}.profile-chip__name{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium)}.profile-chip__meta{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.profile-chip__chevron{width:18px;height:18px;color:var(--color-text-secondary);transition:transform var(--transition-base)}.profile-menu-container{position:relative;display:inline-flex}.profile-menu{position:absolute;top:calc(100% + var(--space-xs));left:0;right:0;min-width:200px;border-radius:var(--radius-lg);background:#0c1220f5;border:1px solid var(--color-hairline);box-shadow:0 24px 48px #04081073;padding:var(--space-sm);display:flex;flex-direction:column;gap:2px;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);z-index:10000}.profile-menu__item{display:flex;align-items:center;justify-content:flex-start;gap:var(--space-sm);border:none;width:100%;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);background:transparent;color:var(--color-text-primary);font-size:var(--font-size-sm);cursor:pointer;transition:background var(--transition-base),color var(--transition-base)}.profile-menu__item:hover,.profile-menu__item:focus-visible{background:#ffffff0a;color:var(--color-text-primary)}.profile-menu__icon{width:18px;height:18px;color:var(--color-text-secondary)}.profile-menu__item:hover .profile-menu__icon,.profile-menu__item:focus-visible .profile-menu__icon{color:var(--color-text-heading)}.bottom-nav{position:fixed;left:0;right:0;bottom:0;margin:0 auto;padding:var(--space-md) var(--space-xl) calc(var(--space-md) + env(safe-area-inset-bottom));display:flex;justify-content:space-around;gap:var(--space-sm);background:#0c1220eb;border-top:1px solid var(--color-hairline);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);z-index:1000}@media(min-width:640px){.bottom-nav{max-width:520px;border-radius:var(--radius-lg) var(--radius-lg) 0 0;border-left:1px solid var(--color-hairline);border-right:1px solid var(--color-hairline)}}.nav,.nav-active{position:relative;border:none;padding:var(--space-xs) var(--space-md) calc(var(--space-sm) + 2px);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;background:transparent;color:var(--color-text-tertiary);transition:color var(--transition-base);min-height:var(--touch-target-min);flex:1;display:flex;flex-direction:column;align-items:center;gap:var(--space-2xs)}.nav-active{color:var(--color-primary)}.nav-active:after{content:"";position:absolute;left:22%;right:22%;bottom:0;height:2px;border-radius:6px;background:var(--color-primary)}.nav-icon{width:20px;height:20px}.nav-label{font-size:var(--font-size-2xs);letter-spacing:.04em;text-transform:uppercase}.link{background:none;border:none;color:var(--color-accent-primary);cursor:pointer;font-size:var(--font-size-base);padding:var(--space-md);min-height:var(--touch-target-min);transition:color var(--transition-base);align-self:flex-end}@media(min-width:640px){.link{padding:var(--space-sm) var(--space-md);align-self:auto}}.link:hover{color:var(--color-accent-secondary);text-decoration:underline}.link:focus-visible{outline:none;box-shadow:var(--focus-ring)}.banner{padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);font-weight:var(--font-weight-medium);border:1px solid transparent;font-size:var(--font-size-sm);flex-shrink:0}.banner.info{background:var(--color-info-bg);color:var(--color-info-text);border-color:#38bdf84d}.banner.error{background:var(--color-error-bg);color:var(--color-error-text);border-color:#f871714d}.home-content{display:flex;flex-direction:column;gap:var(--space-sm);flex:1;min-height:0;overflow:hidden}.home-status-bar{display:flex;flex-direction:column;gap:var(--space-xs);flex-shrink:0}.home-status-bar .loading-indicator{padding:var(--space-sm);min-height:auto;gap:var(--space-sm)}.home-status-bar .loading-indicator .loading-spinner{width:20px;height:20px}.home-status-bar .loading-indicator .loading-spinner-circle{border-width:2px}.home-status-bar .loading-text{font-size:var(--font-size-xs)}.home-status-card{border-radius:var(--radius-lg);border:1px solid var(--color-hairline);background:var(--color-surface)}.status-body{display:flex;align-items:center;gap:var(--space-lg)}.status-indicator{width:64px;height:64px;border-radius:var(--radius-full);display:grid;place-content:center;border:1px solid var(--color-hairline);background:#111a2cdb;color:var(--color-neutral)}.status-indicator svg{width:32px;height:32px}.status-indicator--active{color:var(--color-primary)}.status-indicator--idle,.status-indicator--unknown{color:var(--color-neutral)}.status-details{display:flex;flex-direction:column;gap:var(--space-xs)}.status-heading{margin:0;font-size:var(--font-size-2xl);font-weight:var(--font-weight-semibold);letter-spacing:-.01em;text-transform:capitalize}.status-meta{margin:0;font-size:var(--font-size-base);color:var(--color-text-secondary);line-height:1.5}.home-actions{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-md);border-radius:var(--radius-lg);border:1px solid var(--color-hairline);background:var(--card-bg-gradient);box-shadow:var(--card-shadow-elevated);transition:transform var(--transition-base),box-shadow var(--transition-base);flex-shrink:0}@media(hover:hover)and (pointer:fine){.home-actions:hover{transform:translateY(-1px);box-shadow:var(--card-shadow-hover)}}@media(prefers-reduced-motion:reduce){.home-actions{transition:none}.home-actions:hover{transform:none}}.home-actions__caption{margin:0;font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);letter-spacing:.12em;text-transform:uppercase;color:var(--color-text-secondary);opacity:.9}.action-segment{position:relative;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-sm);border-radius:var(--radius-full);border:1px solid var(--card-border-subtle);background:#111a2cf2;padding:var(--space-sm);overflow:hidden;box-shadow:inset 0 2px 8px #04081040}.action-segment__indicator{position:absolute;top:8px;bottom:8px;left:8px;width:calc(50% - 16px);border-radius:var(--radius-full);background:linear-gradient(135deg,#2f7bff40,#2f7bff26);box-shadow:0 4px 16px #2f7bff4d,inset 0 1px 2px #ffffff1f;transition:transform .3s cubic-bezier(.34,1.56,.64,1);will-change:transform;z-index:0}@media(prefers-reduced-motion:reduce){.action-segment__indicator{transition:transform .18s ease}}.action-segment__button{position:relative;border:none;background:transparent;color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-full);display:inline-flex;align-items:center;justify-content:center;gap:var(--space-xs);min-height:44px;cursor:pointer;transition:color .2s ease,transform .2s cubic-bezier(.34,1.56,.64,1);z-index:1}@media(min-width:640px){.action-segment__button{min-height:48px;padding:var(--space-sm) var(--space-lg);font-size:var(--font-size-base)}}.action-segment__button svg{width:18px;height:18px;stroke-width:2.5;transition:transform .2s ease}.action-segment__button.is-active{color:var(--color-text-heading);font-weight:var(--font-weight-bold)}.action-segment__button:focus-visible{outline:none;box-shadow:0 0 0 3px #2f7bff4d}@media(hover:hover)and (pointer:fine){.action-segment__button:not(:disabled):hover{transform:translateY(-2px);color:var(--color-text-primary)}.action-segment__button:not(:disabled):hover svg{transform:scale(1.1)}.action-segment__button.is-active:hover{color:var(--color-text-heading)}}.action-segment__button:disabled{opacity:.5;cursor:not-allowed}.action-segment__button:not(:disabled):active{transform:scale(.96)}@media(prefers-reduced-motion:reduce){.action-segment__button{transition:color .15s ease}.action-segment__button:hover{transform:none}.action-segment__button:hover svg{transform:none}.action-segment__button:active{transform:none}}dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:var(--space-sm) var(--space-lg);font-size:var(--font-size-base)}dl dt{color:var(--color-text-secondary);font-weight:var(--font-weight-medium)}.scheduler-section{display:flex;flex-direction:column;gap:var(--space-xl)}.scheduler-header{display:flex;flex-direction:column;gap:var(--space-md)}.scheduler-view-switch{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-xs);padding:4px;border-radius:var(--radius-full);border:1px solid var(--color-border);background:#ffffff05}.scheduler-view-switch__btn{border:none;border-radius:var(--radius-full);min-height:var(--touch-target-min);font-weight:var(--font-weight-medium);background:transparent;color:var(--color-text-secondary)}.scheduler-view-switch__btn.is-active{background:#2f7bff2e;color:var(--color-text-primary)}.scheduler-view-switch__btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.scheduler-title{margin:0;font-size:var(--font-size-xl);color:var(--color-text-heading)}.scheduler-header__cta{align-self:stretch}.scheduler-card{margin-top:var(--space-md)}.scheduler-form{display:flex;flex-direction:column;gap:var(--space-lg)}.scheduler-toggle-group{display:flex;flex-direction:column;gap:var(--space-sm);margin-top:var(--space-sm)}.scheduler-toggle{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-md);border-radius:var(--radius-lg);border:1px solid var(--color-border);background:var(--color-bg-input);color:var(--color-text-primary);font-weight:var(--font-weight-medium);cursor:pointer;transition:background var(--transition-base),border-color var(--transition-base),color var(--transition-base)}.scheduler-toggle.is-active{border-color:var(--color-accent-primary);background:linear-gradient(135deg,#22c55e33,#38bdf840);color:var(--color-text-heading);font-weight:var(--font-weight-semibold)}.scheduler-warning{padding:var(--space-md);border-radius:var(--radius-md);background:#facc152e;border:1px solid rgba(250,204,21,.35)}.scheduler-warning__text{margin:0;font-size:var(--font-size-sm);color:var(--color-warning-text);display:flex;align-items:center;gap:var(--space-sm)}.scheduler-grid{display:grid;gap:var(--space-md)}.scheduler-grid--split{grid-template-columns:1fr}.scheduler-grid>*{min-width:0}.scheduler-select{width:100%;margin-top:var(--space-xs);padding:var(--space-md);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-bg-input);color:var(--color-text-primary);font-family:var(--font-family);font-size:var(--font-size-base);min-height:var(--touch-target-min)}.scheduler-select:focus{outline:none;border-color:var(--color-border-focus);box-shadow:var(--focus-ring)}.scheduler-weekdays{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-top:var(--space-sm)}.scheduler-weekday{padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-lg);border:1px solid var(--color-border);background:var(--color-bg-input);color:var(--color-text-primary);font-weight:var(--font-weight-medium);cursor:pointer;transition:background var(--transition-base),border-color var(--transition-base),color var(--transition-base)}.scheduler-weekday.is-selected{border-color:var(--color-accent-primary);background:linear-gradient(135deg,#38bdf840,#3b82f659);color:var(--color-text-heading)}.scheduler-actions{display:flex;flex-direction:column;gap:var(--space-sm)}.scheduler-actions__button{width:100%}.scheduler-preview{margin-top:var(--space-md);padding:var(--space-md);border-radius:var(--radius-md);border:1px solid rgba(148,163,184,.3);background:#1e293ba6;color:var(--color-text-primary)}.scheduler-preview--warning{background:#facc1529;border-color:#facc1559}.scheduler-preview__title{margin:0 0 var(--space-xs);font-size:var(--font-size-md);color:var(--color-text-heading)}.scheduler-preview__info{margin:0 0 var(--space-sm);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.scheduler-preview__message{margin:0;font-size:var(--font-size-sm);color:var(--color-warning-text);display:flex;align-items:center;gap:var(--space-sm)}.scheduler-preview__list{margin:0;padding-left:var(--space-xl);font-size:var(--font-size-sm);max-height:240px;overflow-y:auto;color:var(--color-text-primary)}.scheduler-list{display:flex;flex-direction:column;gap:var(--space-md);margin-top:var(--space-md)}.scheduler-item{padding:0}.scheduler-item__body{display:flex;flex-direction:column;gap:var(--space-lg)}.scheduler-item__content{display:flex;flex-direction:column;gap:var(--space-md)}.scheduler-item__header{display:flex;flex-direction:column;gap:var(--space-sm)}.scheduler-item__title{margin:0;font-size:var(--font-size-lg);color:var(--color-text-heading)}.scheduler-item__details{display:grid;grid-template-columns:auto 1fr;gap:var(--space-xs) var(--space-md);font-size:var(--font-size-sm)}.scheduler-item__details dt{font-weight:var(--font-weight-semibold);color:var(--color-text-secondary)}.scheduler-item__details dd{margin:0}.scheduler-item__tags{display:flex;flex-wrap:wrap;gap:var(--space-sm);justify-content:flex-start}.scheduler-item__actions{display:flex;flex-direction:column;gap:var(--space-md)}.scheduler-item__actions-row{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.scheduler-item__delete{color:var(--color-accent-error)}.scheduler-item__snooze summary{cursor:pointer;font-size:var(--font-size-sm);color:var(--color-text-secondary);-webkit-user-select:none;user-select:none}.scheduler-item__snooze summary::marker{color:var(--color-text-secondary)}.scheduler-item__snooze-actions{display:flex;flex-direction:column;gap:var(--space-xs);margin-top:var(--space-sm)}.scheduler-item__footer{margin-top:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-sm);font-size:var(--font-size-sm)}.scheduler-item__weekdays{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.scheduler-item__skip{margin:0;color:var(--color-warning-text);display:flex;align-items:center;gap:var(--space-xs)}.scheduler-jobs{margin-top:var(--space-2xl);display:flex;flex-direction:column;gap:var(--space-lg)}.scheduler-jobs__list{display:flex;flex-direction:column;gap:var(--space-md)}.scheduler-jobs__item{padding:0}.scheduler-jobs__item-body{display:flex;flex-direction:column;gap:var(--space-md);padding:var(--space-lg)}.scheduler-jobs__item-header{display:flex;flex-direction:column;gap:var(--space-sm)}.scheduler-jobs__item-title{margin:0;display:flex;align-items:center;gap:var(--space-sm);font-size:var(--font-size-md);color:var(--color-text-heading)}.scheduler-jobs__item-time{margin:0;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.scheduler-jobs__item-id{margin:0;font-size:var(--font-size-xs);color:var(--color-text-tertiary)}.scheduler-jobs__item-actions{display:flex;justify-content:flex-end}.scheduler-jobs__item-delete{color:var(--color-accent-error)}@media(min-width:640px){.scheduler-header{flex-direction:row;align-items:center;justify-content:space-between}.scheduler-header__cta{align-self:auto;width:auto}.scheduler-toggle-group{flex-direction:row}.scheduler-actions{flex-direction:row;justify-content:flex-start}.scheduler-actions__button{width:auto}.scheduler-grid--split{grid-template-columns:repeat(2,minmax(0,1fr))}.scheduler-item__body{flex-direction:row;justify-content:space-between;align-items:flex-start}.scheduler-item__content{flex:1}.scheduler-item__actions{align-items:flex-end}.scheduler-jobs__item-body{flex-direction:row;justify-content:space-between;align-items:center}.scheduler-jobs__item-header{flex-direction:row;align-items:center;gap:var(--space-md)}.scheduler-jobs__item-actions{align-items:center}}@media(min-width:768px){.scheduler-item__details{font-size:var(--font-size-base)}.scheduler-jobs__item-body{padding:var(--space-xl)}}.ptr-hint,.ptr-loading{text-align:center;padding:var(--space-lg);color:var(--color-text-secondary)}.ptr-loading{color:var(--color-accent-primary)}.run-list{background:var(--color-bg-card);border-radius:var(--radius-md);border:1px solid var(--color-border);overflow-x:auto;-webkit-overflow-scrolling:touch}@media(min-width:640px){.run-list{border-radius:var(--radius-lg)}}.history-grid{display:grid;grid-template-columns:1fr;gap:var(--space-lg);align-items:flex-start}@media(min-width:1024px){.history-grid{grid-template-columns:2fr 1fr;gap:var(--space-xl)}}.run-cards-mobile{display:block}.run-cards-list{display:flex;flex-direction:column;gap:var(--space-md)}.run-card{cursor:pointer;transition:transform var(--transition-base);padding:0;background:var(--color-bg-card);border:1px solid var(--color-hairline)}.run-card:active{transform:scale(.98)}.run-card__summary{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:var(--space-md)}.run-card__main{flex:1;display:flex;flex-direction:column;gap:var(--space-sm);min-width:0}.run-card__time-type{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);flex-wrap:wrap}.run-card__time{font-size:var(--font-size-sm);color:var(--color-text-secondary);font-weight:var(--font-weight-medium)}.run-card__type-badge{display:flex;align-items:center;gap:var(--space-sm)}.run-card__type{display:inline-flex;align-items:center;gap:var(--space-xs);font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-text-heading)}.run-card__type--in{color:var(--color-accent-primary)}.run-card__type--out{color:var(--color-accent-secondary)}.run-card__status-text{margin-left:4px}.run-card__chevron{flex-shrink:0;color:var(--color-text-secondary);transition:transform var(--transition-base)}.run-card__chevron--expanded{transform:rotate(180deg)}.run-card__details{border-top:1px solid var(--color-border);padding:var(--space-md);animation:slideDown .2s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.run-card__dl{display:grid;grid-template-columns:auto 1fr;gap:var(--space-xs) var(--space-md);font-size:var(--font-size-sm);margin-bottom:var(--space-md)}.run-card__dl div{display:contents}.run-card__dl dt{font-weight:var(--font-weight-semibold);color:var(--color-text-secondary)}.run-card__dl dd{margin:0;color:var(--color-text-primary);word-break:break-word}.run-card__proof{font-size:var(--font-size-xs);color:var(--color-text-tertiary)}.run-card__log{margin-top:var(--space-md)}.run-card__log-title{margin:0 0 var(--space-sm);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-heading)}.run-card__log-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--space-xs)}.run-card__log-list li{font-size:var(--font-size-xs);color:var(--color-text-secondary);background:#1e293b80;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);border:1px solid rgba(148,163,184,.1)}.run-list-desktop{display:none}@media(min-width:768px){.run-cards-mobile{display:none}.run-list-desktop{display:grid;grid-template-columns:1fr;gap:var(--space-lg)}}@media(min-width:1024px){.run-list-desktop{grid-template-columns:2fr 1fr;gap:var(--space-xl)}}table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm)}@media(min-width:640px){table{font-size:var(--font-size-base)}}thead{background:#1e293be6;position:sticky;top:0;z-index:10}thead th{text-align:left;padding:var(--space-sm) var(--space-md);font-weight:var(--font-weight-medium);color:var(--color-text-heading);white-space:nowrap}@media(min-width:640px){thead th{padding:var(--space-md)}}tbody td{padding:var(--space-sm) var(--space-md);border-top:1px solid rgba(148,163,184,.15);color:var(--color-text-primary)}@media(min-width:640px){tbody td{padding:var(--space-md)}}tbody tr{cursor:pointer;transition:background var(--transition-base);min-height:var(--touch-target-min)}@media(hover:hover)and (pointer:fine){tbody tr:hover{background:#3b82f614}}tbody tr:focus-visible{outline:none;box-shadow:inset var(--focus-ring)}.row-selected{background:#3b82f62e}.badge{padding:var(--space-xs) 10px;border-radius:var(--radius-full);font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.05em;font-weight:var(--font-weight-medium)}.status-queued{background:var(--color-status-queued-bg);color:var(--color-status-queued-text)}.status-running,.status-validating{background:var(--color-status-running-bg);color:var(--color-status-running-text)}.status-ok{background:var(--color-status-ok-bg);color:var(--color-status-ok-text)}.status-fail,.status-timeout{background:var(--color-status-fail-bg);color:var(--color-status-fail-text)}.status-blocked{background:var(--color-status-blocked-bg);color:var(--color-status-blocked-text)}.status{font-size:var(--font-size-md);color:var(--color-text-secondary)}.run-detail{background:var(--color-bg-card);border-radius:var(--radius-md);border:1px solid var(--color-border);padding:var(--space-lg);min-height:240px}@media(min-width:640px){.run-detail{border-radius:var(--radius-lg);padding:var(--space-xl);min-height:320px}}.run-detail-placeholder{color:var(--color-text-secondary);font-size:var(--font-size-base);text-align:center;padding:var(--space-2xl)}.detail-head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-md)}.detail-head h3{margin:0;font-size:var(--font-size-lg)}.detail-sub{margin:var(--space-xs) 0 0;color:var(--color-text-tertiary);font-size:var(--font-size-xs);letter-spacing:.08em}.detail-log{margin-top:var(--space-xl)}.detail-log h4{margin:0 0 var(--space-md);font-size:var(--font-size-md)}.detail-log ul{list-style:none;padding:0;margin:0;display:grid;gap:var(--space-sm);font-size:var(--font-size-sm);color:var(--color-text-heading)}.detail-log li{background:#1e293bb3;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);border:1px solid var(--color-border)}.login-card{background:var(--color-bg-card);border-radius:var(--radius-md);padding:var(--space-lg);border:1px solid var(--color-border);width:100%;max-width:100%;box-shadow:var(--shadow-md)}@media(min-width:640px){.login-card{border-radius:var(--radius-lg);padding:var(--space-xl);max-width:400px;box-shadow:var(--shadow-xl)}}.login-field{display:flex;flex-direction:column;gap:var(--space-sm);margin-bottom:var(--space-lg);font-size:var(--font-size-base)}.login-field label{font-weight:var(--font-weight-medium);color:var(--color-text-primary)}.login-field select,.login-field input{width:100%;padding:var(--space-md);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-bg-input);color:var(--color-text-primary);font-size:var(--font-size-base);min-height:var(--touch-target-min);transition:border-color var(--transition-base),box-shadow var(--transition-base)}@media(hover:hover)and (pointer:fine){.login-field input:hover{border-color:var(--color-border-hover)}}.login-field input:focus{outline:none;border-color:var(--color-border-focus);box-shadow:var(--focus-ring)}.login-error{color:var(--color-error-text);margin:0 0 var(--space-md);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);padding:var(--space-md);background:var(--color-error-bg);border-radius:var(--radius-sm);border:1px solid rgba(248,113,113,.3)}@media(min-width:640px){.login-error{padding:var(--space-sm) var(--space-md)}}@media(max-width:640px){.app-shell{overscroll-behavior-y:contain}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.8}}.primary:active:not(:disabled),.secondary:active:not(:disabled){transform:scale(.98)}html{scroll-behavior:smooth}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spinner{animation:spin 1s linear infinite}.ptr{overflow:hidden}.ptr__children{overflow-y:auto;-webkit-overflow-scrolling:touch}.ptr--dragging{-webkit-user-select:none;user-select:none}@media(max-width:640px){.ptr__pull-down,.ptr__release{transition:transform .2s cubic-bezier(.4,0,.2,1)}}
