:root{--bg-base: #0b0d14;--bg-surface: rgba(20, 23, 33, .5);--bg-elevated: #1c2030;--bg-overlay: rgba(11, 13, 20, .72);--accent-primary: #7c5cff;--accent-secondary: #3b82f6;--accent-gradient: linear-gradient(135deg, #7c5cff 0%, #3b82f6 100%);--accent-hover: linear-gradient(135deg, #9b7fff 0%, #60a5fa 100%);--success: #22c55e;--success-surface: rgba(34, 197, 94, .12);--warning: #f59e0b;--warning-surface: rgba(245, 158, 11, .12);--danger: #ef4444;--danger-surface: rgba(239, 68, 68, .12);--info: #38bdf8;--info-surface: rgba(56, 189, 248, .12);--text-primary: #f4f5fb;--text-secondary: #a0a6b8;--text-muted: #6b7180;--text-on-accent: #ffffff;--glass-border: rgba(255, 255, 255, .08);--glass-border-hover: rgba(255, 255, 255, .16);--glass-blur: blur(16px);--glass-bg: rgba(20, 23, 33, .5);--radius: 16px;--radius-sm: 8px;--radius-pill: 9999px;--shadow-soft: 0 8px 32px rgba(0, 0, 0, .32);--shadow-hover: 0 12px 40px rgba(124, 92, 255, .2);--shadow-modal: 0 24px 64px rgba(0, 0, 0, .48);--font-body: "Inter", system-ui, -apple-system, sans-serif;--font-display: "Outfit", "Inter", system-ui, sans-serif;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--text-2xs: 11px;--text-xs: 13px;--text-sm: 15px;--text-base: 17px;--text-lg: 20px;--text-xl: 24px;--text-2xl: 30px;--text-3xl: 38px;--duration-fast: .15s;--duration-base: .2s;--duration-slow: .25s;--duration-spring: .35s;--ease-default: cubic-bezier(.4, 0, .2, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--z-base: 0;--z-above: 10;--z-sticky: 100;--z-overlay: 200;--z-modal: 300;--z-toast: 400}.glass-card{background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);border-radius:var(--radius);box-shadow:var(--shadow-soft);transition:border-color var(--duration-base) var(--ease-default),box-shadow var(--duration-base) var(--ease-default)}.glass-card:hover{border-color:var(--glass-border-hover);box-shadow:var(--shadow-hover)}@supports not (backdrop-filter: blur(1px)){.glass-card{background:var(--bg-elevated)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;scroll-behavior:smooth}body{font-family:var(--font-body);font-size:var(--text-base);font-weight:400;line-height:1.5;color:var(--text-primary);background-color:var(--bg-base);min-height:100dvh;padding-bottom:env(safe-area-inset-bottom);overscroll-behavior:none}img,video,svg{display:block;max-width:100%}button{font-family:inherit;cursor:pointer;border:none;background:none;outline:none}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px;border-radius:var(--radius-sm)}.app-root{display:flex;flex-direction:column;min-height:100dvh;position:relative}.page-container{flex:1;width:100%;max-width:1280px;margin:0 auto;padding:var(--space-4);padding-bottom:calc(64px + env(safe-area-inset-bottom) + var(--space-4))}@media (min-width: 768px){.page-container{padding:var(--space-6);padding-bottom:var(--space-6);padding-left:calc(240px + var(--space-6))}}.schedule-grid{display:grid;grid-template-columns:160px repeat(7,minmax(80px,1fr));border-radius:var(--radius);overflow:hidden;border:1px solid var(--glass-border);background:var(--bg-elevated);overflow-x:auto;-webkit-overflow-scrolling:touch}.schedule-grid-header{display:contents}.schedule-grid-header-cell{position:sticky;top:0;z-index:var(--z-sticky);background:var(--bg-elevated);border-bottom:1px solid var(--glass-border);padding:var(--space-3) var(--space-2);text-align:center;font-size:var(--text-xs);font-weight:600;color:var(--text-secondary);white-space:nowrap}.schedule-grid-header-cell:first-child{position:sticky;left:0;z-index:calc(var(--z-sticky) + 1);text-align:left;padding-left:var(--space-4)}.schedule-grid-row{display:contents}.schedule-grid-name-cell{position:sticky;left:0;z-index:var(--z-above);background:var(--bg-elevated);border-bottom:1px solid var(--glass-border);border-right:1px solid var(--glass-border);padding:var(--space-3) var(--space-4);display:flex;align-items:center;gap:var(--space-2);min-height:64px}.schedule-grid-cell{border-bottom:1px solid var(--glass-border);border-right:1px solid var(--glass-border);padding:var(--space-2);min-height:64px;position:relative;transition:background-color var(--duration-fast) var(--ease-default)}.schedule-grid-cell:last-child{border-right:none}.tab-bar{position:fixed;bottom:0;left:0;right:0;height:calc(64px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border-top:1px solid var(--glass-border);display:flex;align-items:center;justify-content:space-around;z-index:var(--z-sticky)}@media (min-width: 768px){.tab-bar{display:none}}.sidebar{display:none}@media (min-width: 768px){.sidebar{display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;width:240px;background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border-right:1px solid var(--glass-border);z-index:var(--z-sticky);padding:var(--space-6) var(--space-4)}}.toast{position:fixed;bottom:calc(72px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);background:var(--bg-elevated);border:1px solid var(--glass-border);border-radius:var(--radius-pill);padding:var(--space-3) var(--space-6);font-size:var(--text-sm);font-weight:500;color:var(--text-primary);box-shadow:var(--shadow-soft);z-index:var(--z-toast);white-space:nowrap;animation:toast-in var(--duration-spring) var(--ease-spring)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%) translateY(8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@keyframes skeleton-wave{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.skeleton-wave{background:linear-gradient(90deg,var(--bg-elevated) 25%,rgba(255,255,255,.05) 50%,var(--bg-elevated) 75%);background-size:200px 100%;animation:skeleton-wave 1.5s infinite linear}.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}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.touch-target{min-width:48px;min-height:48px;display:flex;align-items:center;justify-content:center}
