.site-header[data-v-0c68c494]{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.8rem 1rem .9rem;padding-top:calc(.8rem + env(safe-area-inset-top,0));padding-right:calc(1rem + env(safe-area-inset-right,0));padding-left:calc(1rem + env(safe-area-inset-left,0));color:#fff;background:radial-gradient(ellipse 90% 140% at 85% 50%,rgba(168,85,247,.55),transparent 65%),linear-gradient(135deg,#3b1d75,#5b21b6,#7c3aed);position:sticky;top:0;z-index:30;box-shadow:0 2px 12px #4c1d9540}[data-theme=light] .site-header[data-v-0c68c494]{background:radial-gradient(ellipse 90% 140% at 85% 50%,rgba(196,181,253,.6),transparent 65%),linear-gradient(135deg,#ddd6fe,#c4b5fd,#a78bfa);color:#1a0b2e;box-shadow:0 1px 6px #7c3aed38}.site-header__logo[data-v-0c68c494]{display:flex;flex-direction:column;gap:.15rem;color:inherit;text-decoration:none;min-width:0;letter-spacing:-.02em;transition:transform .16s ease;flex:1 1 auto}.site-header__logo[data-v-0c68c494]:hover{transform:translate(2px)}.logo-row[data-v-0c68c494]{display:flex;flex-wrap:wrap;gap:.3rem;font-weight:900;font-size:clamp(.9rem,3.2vw,1.12rem);text-transform:uppercase;line-height:1}.logo-word[data-v-0c68c494]{display:inline-block}.logo-suffix[data-v-0c68c494]{font-size:clamp(.68rem,2vw,.8rem);font-style:italic;font-weight:400;opacity:.78;text-transform:none;letter-spacing:0}.site-header__tools[data-v-0c68c494]{position:relative;display:flex;align-items:center;gap:.3rem;flex-shrink:0}.dashboard-btn[data-v-0c68c494]{display:inline-flex;align-items:center;gap:.4rem;padding:.4rem .85rem .4rem .65rem;border-radius:999px;border:1px solid rgba(255,255,255,.25);background:#ffffff26;color:inherit;text-decoration:none;font-size:.88rem;font-weight:600;letter-spacing:.01em;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);transition:background-color .14s ease,border-color .14s ease;min-height:2.4rem}.dashboard-btn[data-v-0c68c494]:hover{background:#ffffff47;border-color:#ffffff80}[data-theme=light] .dashboard-btn[data-v-0c68c494]{background:#ffffff80;border-color:#7c3aed4d}[data-theme=light] .dashboard-btn[data-v-0c68c494]:hover{background:#fffc;border-color:#7c3aed99}.dashboard-btn__label[data-v-0c68c494]{white-space:nowrap}@media (max-width: 420px){.dashboard-btn__label[data-v-0c68c494]{display:none}.dashboard-btn[data-v-0c68c494]{padding:.4rem .55rem}}.hamburger-btn[data-v-0c68c494]{font:inherit;padding:.4rem;border-radius:var(--radius-sm, 6px);border:1px solid rgba(255,255,255,.25);background:#ffffff26;color:inherit;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;min-width:2.4rem;min-height:2.4rem;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);transition:background-color .14s ease,border-color .14s ease}.hamburger-btn[data-v-0c68c494]:hover,.hamburger-btn[aria-expanded=true][data-v-0c68c494]{background:#ffffff47;border-color:#ffffff80}[data-theme=light] .hamburger-btn[data-v-0c68c494]{background:#ffffff80;border-color:#7c3aed4d}[data-theme=light] .hamburger-btn[data-v-0c68c494]:hover,[data-theme=light] .hamburger-btn[aria-expanded=true][data-v-0c68c494]{background:#fffc;border-color:#7c3aed99}.hamburger-menu[data-v-0c68c494]{position:absolute;top:calc(100% + .5rem);right:0;min-width:14rem;max-width:calc(100vw - 1.5rem);background:var(--color-bg-surface, #1a0b2e);color:var(--color-text-primary, #f4f0e8);border:1px solid color-mix(in srgb,var(--color-brand-primary, #7c3aed) 35%,transparent);border-radius:10px;box-shadow:0 8px 24px #00000073;padding:.4rem;display:flex;flex-direction:column;gap:.1rem;z-index:40}[data-theme=light] .hamburger-menu[data-v-0c68c494]{background:#fff;color:#1a0b2e;box-shadow:0 6px 18px #7c3aed2e}.hamburger-menu__item[data-v-0c68c494]{display:flex;align-items:center;gap:.6rem;padding:.6rem .8rem;background:transparent;border:0;border-radius:6px;color:inherit;font:inherit;font-size:.92rem;text-align:left;cursor:pointer;width:100%;transition:background-color .12s ease}.hamburger-menu__item[data-v-0c68c494]:hover,.hamburger-menu__item[data-v-0c68c494]:focus-visible{background:color-mix(in srgb,var(--color-brand-primary, #7c3aed) 22%,transparent);outline:none}.hamburger-menu__icon[data-v-0c68c494]{display:inline-flex;width:1.4rem;font-size:1rem;flex-shrink:0;justify-content:center}.hamburger-menu__label[data-v-0c68c494]{flex:1 1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hamburger-menu__divider[data-v-0c68c494]{border:0;border-top:1px solid color-mix(in srgb,var(--color-text-primary, #f4f0e8) 14%,transparent);margin:.25rem 0}@media (max-width: 540px){.logo-row[data-v-0c68c494]{font-size:.82rem;gap:.22rem}.logo-suffix[data-v-0c68c494]{font-size:.66rem}}.bottom-nav[data-v-20cd5f1c]{display:none}@media (pointer: coarse),(max-width: 768px){.bottom-nav[data-v-20cd5f1c]{display:block;position:fixed;left:0;right:0;bottom:0;z-index:35;background:color-mix(in srgb,var(--color-bg-base) 94%,transparent);border-top:1px solid color-mix(in srgb,var(--color-text-primary) 10%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);padding-bottom:env(safe-area-inset-bottom,0)}[data-v-20cd5f1c]:root{--bottom-nav-height: 72px}}.bottom-nav__list[data-v-20cd5f1c]{list-style:none;margin:0;padding:.2rem .35rem .25rem;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:.15rem}.bottom-nav__cell[data-v-20cd5f1c]{min-width:0;display:flex}.bottom-nav__btn[data-v-20cd5f1c]{width:100%;min-height:56px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.18rem;padding:.35rem .25rem;border:0;background:transparent;color:color-mix(in srgb,var(--color-text-primary) 78%,transparent);text-decoration:none;font:inherit;font-size:.7rem;letter-spacing:.02em;cursor:pointer;border-radius:10px;transition:background-color .14s ease,color .14s ease}.bottom-nav__btn[data-v-20cd5f1c]:hover{background:color-mix(in srgb,var(--color-brand-primary) 10%,transparent);color:var(--color-text-primary)}.bottom-nav__btn[data-v-20cd5f1c]:focus-visible{background:color-mix(in srgb,var(--color-brand-primary) 10%,transparent);color:var(--color-text-primary);outline:2px solid var(--color-brand-primary);outline-offset:-2px}.bottom-nav__btn--active[data-v-20cd5f1c]{color:var(--color-brand-primary);background:color-mix(in srgb,var(--color-brand-primary) 14%,transparent);font-weight:600}.bottom-nav__btn--logout[data-v-20cd5f1c]{color:var(--color-text-secondary, color-mix(in srgb, var(--color-text-primary) 78%, transparent))}.bottom-nav__btn--logout[data-v-20cd5f1c]:hover{color:#ef4444;background:color-mix(in srgb,#ef4444 10%,transparent)}.bottom-nav__icon[data-v-20cd5f1c]{display:inline-flex;align-items:center;justify-content:center;line-height:0}.bottom-nav__icon svg[data-v-20cd5f1c]{width:24px;height:24px;display:block}.bottom-nav__btn--active .bottom-nav__icon svg[data-v-20cd5f1c]{stroke-width:2.2}.bottom-nav__label[data-v-20cd5f1c]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.install-banner[data-v-cdf056c6]{position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.625rem 1rem;background:var(--color-brand-primary);color:var(--color-brand-primary-contrast);font-size:.9rem;box-shadow:var(--shadow-sm)}@media (hover: hover) and (pointer: fine){.install-banner[data-v-cdf056c6]{display:none}}.install-banner.ios[data-v-cdf056c6]{background:var(--color-bg-surface);color:var(--color-text-primary)}.install-text[data-v-cdf056c6]{flex:1;line-height:1.3}.install-actions[data-v-cdf056c6]{display:flex;gap:.5rem;align-items:center}.install-primary[data-v-cdf056c6]{font:inherit;padding:.375rem .875rem;border-radius:var(--radius-sm);border:0;background:#ffffff26;color:inherit;font-weight:600;cursor:pointer}.install-primary[data-v-cdf056c6]:hover{background:#ffffff40}.install-dismiss[data-v-cdf056c6]{font:inherit;font-size:1.25rem;line-height:1;padding:0 .5rem;background:transparent;border:0;color:inherit;cursor:pointer;opacity:.8}.install-dismiss[data-v-cdf056c6]:hover{opacity:1}.pwa-update-banner[data-v-110b88a0]{position:fixed;top:env(safe-area-inset-top,0);left:0;right:0;z-index:60;background:var(--color-brand-primary, #7c3aed);color:var(--color-brand-primary-contrast, #fff);padding:.75rem 1rem;display:flex;align-items:center;justify-content:space-between;gap:.75rem;box-shadow:0 2px 8px #0003;font-size:.9rem}.pwa-update-text[data-v-110b88a0]{flex:1;font-weight:600;line-height:1.3}.pwa-update-actions[data-v-110b88a0]{display:flex;gap:.5rem;align-items:center;flex-shrink:0}.pwa-update-btn[data-v-110b88a0]{background:#fff;color:var(--color-brand-primary, #7c3aed);border:0;padding:.5rem 1rem;border-radius:var(--radius-sm, 4px);font-weight:700;cursor:pointer;font:inherit}.pwa-update-btn[data-v-110b88a0]:hover,.pwa-update-btn[data-v-110b88a0]:focus-visible{opacity:.92}.pwa-dismiss-btn[data-v-110b88a0]{background:transparent;border:0;color:currentColor;font-size:1.5rem;line-height:1;cursor:pointer;padding:0 .25rem;opacity:.8}.pwa-dismiss-btn[data-v-110b88a0]:hover,.pwa-dismiss-btn[data-v-110b88a0]:focus-visible{opacity:1}.app-layout{display:flex;flex-direction:column;min-height:100svh}.app-layout__body{display:flex;flex-direction:column;flex:1}@media (pointer: coarse),(max-width: 768px){.app-layout__body--with-nav{padding-bottom:calc(var(--bottom-nav-height, 72px) + env(safe-area-inset-bottom,0))}}.app-layout__legal{padding:1.2rem 1rem calc(.9rem + env(safe-area-inset-bottom,0));display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.5rem .7rem;font-size:.9rem;line-height:1.4;color:color-mix(in srgb,var(--color-ink, #f4f0e8) 78%,transparent)}.app-layout__legal-link{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em;padding:.35rem .1rem;border-radius:4px}.app-layout__legal-link:hover,.app-layout__legal-link:focus-visible{color:var(--color-brand-primary, #7c3aed);text-decoration-color:var(--color-brand-primary, #7c3aed);outline:none}.app-layout__sep{color:color-mix(in srgb,var(--color-ink, #f4f0e8) 45%,transparent)}.app-layout__build,.app-layout__version-only{flex-basis:100%;text-align:center;margin-top:.15rem;font-size:.78rem;color:color-mix(in srgb,var(--color-ink, #f4f0e8) 60%,transparent);font-variant-numeric:tabular-nums}.app-layout__version-only{display:block;padding:.6rem 0 calc(.6rem + env(safe-area-inset-bottom,0))}:root{--color-bg-base: #ffffff;--color-bg-surface: #f5f5f7;--color-text-primary: #0f0f14;--color-text-secondary: #555563;--color-brand-primary: #7c3aed;--color-brand-primary-contrast: #ffffff;--color-accent: #a855f7;--color-success: #16a34a;--color-warning: #d97706;--color-danger: #dc2626;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 14px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .08);--shadow-md: 0 4px 12px rgba(0, 0, 0, .12);--font-sans: system-ui, -apple-system, "Segoe UI", "Inter", sans-serif;--color-bg-canvas: #f4f0e8;--color-ink: #0f0f14;--color-ink-muted: #6b6558;--color-kinetic: #d4ff3a;--color-pulse: var(--color-brand-primary);--font-display: ui-serif, "Iowan Old Style", "Apple Garamond", Georgia, "Times New Roman", serif;--font-body: ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: ui-monospace, "SF Mono", "Cascadia Code", Consolas, monospace;--ease-out-expo: cubic-bezier(.16, 1, .3, 1);--duration-hero: .6s}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--color-bg-base: #0a0a0f;--color-bg-surface: #1a1a22;--color-text-primary: #f5f5f7;--color-text-secondary: #a0a0b0;--color-brand-primary: #a78bfa;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .5);--shadow-md: 0 4px 16px rgba(0, 0, 0, .6);--color-bg-canvas: #0a0a0b;--color-ink: #f4f0e8;--color-ink-muted: #8a8376;--color-pulse: #a78bfa}}[data-theme=dark]{--color-bg-base: #0a0a0f;--color-bg-surface: #1a1a22;--color-text-primary: #f5f5f7;--color-text-secondary: #a0a0b0;--color-brand-primary: #a78bfa;--color-bg-canvas: #0a0a0b;--color-ink: #f4f0e8;--color-ink-muted: #8a8376;--color-pulse: #a78bfa}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--color-bg-base);color:var(--color-text-primary);font-family:var(--font-body);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;min-height:100vh;min-height:100dvh;overscroll-behavior:none}a{color:var(--color-brand-primary);text-decoration:none}a:hover{text-decoration:underline}.view-fullscreen-mobile{display:flex;flex-direction:column;flex:1}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.btn{font:inherit;font-size:.9rem;font-weight:600;padding:.65rem 1.1rem;border-radius:var(--radius-sm);border:1px solid transparent;background:var(--color-bg-surface);color:var(--color-text-primary);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:.4rem;line-height:1.2;min-height:2.4rem;transition:background-color .14s ease,border-color .14s ease,transform .12s ease;text-decoration:none;user-select:none}.btn:disabled{opacity:.45;cursor:default}.btn:focus-visible{outline:2px solid var(--color-brand-primary);outline-offset:2px}.btn--primary{background:var(--color-brand-primary);color:#fff;border-color:var(--color-brand-primary);letter-spacing:.01em}.btn--primary:hover:not(:disabled){background:color-mix(in srgb,var(--color-brand-primary) 86%,black);border-color:color-mix(in srgb,var(--color-brand-primary) 86%,black)}.btn--ghost{background:color-mix(in srgb,var(--color-brand-primary) 10%,transparent);color:var(--color-brand-primary);border-color:color-mix(in srgb,var(--color-brand-primary) 40%,transparent)}.btn--ghost:hover:not(:disabled){background:color-mix(in srgb,var(--color-brand-primary) 20%,transparent);border-color:var(--color-brand-primary)}.btn--ghost-link{background:transparent;color:color-mix(in srgb,var(--color-text-primary) 72%,transparent);border-color:color-mix(in srgb,var(--color-text-primary) 22%,transparent)}.btn--ghost-link:hover:not(:disabled){color:#b91c1c;border-color:color-mix(in srgb,#f87171 55%,transparent);background:color-mix(in srgb,#f87171 10%,transparent)}[data-theme=dark] .btn--ghost-link:hover:not(:disabled){color:#fecaca}.btn--sm{font-size:.82rem;padding:.45rem .85rem;min-height:2.1rem}@media (max-width: 640px){.btn{min-height:2.75rem;padding:.75rem 1.15rem;font-size:.95rem;width:100%}.btn--sm{min-height:2.6rem;padding:.6rem 1rem;font-size:.88rem}.card-row__actions .btn,.admin-view__head .btn,.program-row__actions .btn,.week-row__actions .btn,.year-row__actions .btn,.user-row__actions .btn{width:auto;flex:1 1 auto}.program-row__actions,.week-row__actions,.year-row__actions,.user-row__actions{grid-column:1 / -1;flex-wrap:wrap;justify-content:stretch!important;gap:.5rem!important}.program-row__actions .btn,.week-row__actions .btn,.year-row__actions .btn,.user-row__actions .btn{min-height:2.75rem!important;flex:1 1 calc(50% - .25rem);font-size:.95rem!important;font-weight:600}.program-row__actions .btn--ghost-link,.week-row__actions .btn--ghost-link,.year-row__actions .btn--ghost-link,.user-row__actions .btn--ghost-link{color:#b91c1c;border-color:color-mix(in srgb,#f87171 42%,transparent);background:color-mix(in srgb,#f87171 8%,transparent)}[data-theme=dark] .program-row__actions .btn--ghost-link,[data-theme=dark] .week-row__actions .btn--ghost-link,[data-theme=dark] .year-row__actions .btn--ghost-link,[data-theme=dark] .user-row__actions .btn--ghost-link{color:#fca5a5}.admin-view__head{flex-direction:column;align-items:stretch}.admin-view__head .btn--primary{min-height:3rem;font-size:1rem;font-weight:700;width:100%}}select{background-color:var(--color-bg-surface);color:var(--color-text-primary);color-scheme:light dark}[data-theme=dark] select{color-scheme:dark}[data-theme=light] select{color-scheme:light}select option{background-color:var(--color-bg-surface);color:var(--color-text-primary)}select optgroup{background-color:var(--color-bg-surface);color:var(--color-text-secondary);font-style:normal;font-weight:600}select option:checked,select option:hover{background-color:color-mix(in srgb,var(--color-brand-primary) 20%,var(--color-bg-surface));color:var(--color-text-primary)}.hdr-btn--lang,.tool-btn--lang{display:none!important}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
