/* The default skin has no matching selectors. Turning a festival off removes this layer. */
html[data-lms-theme] { --lms-primary:var(--festival-primary); --blue:var(--festival-primary); --green:var(--festival-primary); }
html[data-lms-theme] body { background:var(--festival-canvas) !important; }
html[data-lms-theme] :is(.main,.lms-page-content,.page-content) { background-color:var(--festival-canvas); }
html[data-lms-theme] :is(.sidebar,.topbar,.page-header,.header,.navbar) { border-color:color-mix(in srgb,var(--festival-primary) 18%,white); }
html[data-lms-theme] :is(.panel,.course-card,.assignment-card,.backup-panel,.checkin-card,.profile-card,.login-card,.theme-panel) { border-color:color-mix(in srgb,var(--festival-primary) 18%,white); box-shadow:0 4px 18px color-mix(in srgb,var(--festival-primary) 5%,transparent); }
html[data-lms-theme] :is(.workspace-hero,.lms-portal .home-hero,.lms-login .bg-student,.lms-login .bg-admin) { background:linear-gradient(115deg,var(--festival-primary),color-mix(in srgb,var(--festival-primary) 82%,#201430)) !important; color:#fff; }
html[data-lms-theme] :is(.workspace-hero,.home-hero) :is(h1,h2,p,.hero-icon) { color:#fff; }
html[data-lms-theme] :is(.btn.green,.btn.primary,.btn-primary,.btn-login,.workspace-nav a.active,.page-nav-links a.active,.nav-links a.active,.attendance-tabs a.active,.tabs a.active) { background:var(--festival-primary) !important; border-color:var(--festival-primary) !important; color:#fff !important; }
html[data-lms-theme] :is(.workspace-nav a.active,.nav a.active) :is(small,strong,i) { color:#fff !important; }
html[data-lms-theme] :is(.btn.outline,.page-nav-links a:hover,.workspace-nav a:hover:not(.active),.account-dropdown a:hover:not(.logout-button)) { background:var(--festival-tint); border-color:color-mix(in srgb,var(--festival-primary) 25%,white); color:var(--festival-primary); }
html[data-lms-theme] :is(th,.table thead th) { background:var(--festival-tint); }
html[data-lms-theme] :is(input,textarea,select):focus-visible { outline:2px solid var(--festival-primary); outline-offset:2px; }
html[data-lms-theme] .auth-welcome { background:linear-gradient(140deg,var(--festival-tint),var(--festival-canvas)); }
html[data-lms-theme] :is(.auth-welcome h2,.auth-welcome h2 em,.auth-form-heading h1,.auth-field i,.auth-nav-current) { color:var(--festival-primary); }
html[data-lms-theme] .auth-submit { background:var(--festival-primary); }
html[data-lms-theme] .auth-role-option:has(input:checked) { background:var(--festival-tint); color:var(--festival-primary); border-color:var(--festival-primary); }
html[data-lms-theme] :is(.nav a>i,.notification-button,.hero-icon) { color:var(--festival-primary); background:var(--festival-tint); }
html[data-lms-theme] .logout-button:hover { color:#c43e53 !important; background:#fff0f2 !important; }
html[data-lms-theme][data-festival-decorations] [data-festival-heading] { position:relative; padding-right:68px; min-height:48px; display:flex; align-items:center; }
html[data-lms-theme][data-festival-decorations] [data-festival-heading]::after { content:var(--festival-symbol); position:absolute; right:0; top:50%; transform:translateY(-50%); width:58px; height:58px; display:grid; place-items:center; font-size:42px; color:var(--festival-accent); line-height:1; pointer-events:none; background-image:var(--festival-image,none); background-size:contain; background-position:center; background-repeat:no-repeat; }
html[data-lms-theme=halloween][data-festival-decorations] [data-festival-heading]::after { content:""; }
html[data-lms-theme][data-festival-decorations] .panel-head>[data-festival-heading] { flex:1;min-width:0;gap:8px; }
html[data-lms-theme][data-festival-decorations] .auth-welcome [data-festival-heading] { display:block; }
html[data-lms-theme][data-festival-decorations] :is(.workspace-hero,.home-hero) [data-festival-heading] { padding-right:100px; min-height:82px; }
html[data-lms-theme][data-festival-decorations] :is(.workspace-hero,.home-hero) [data-festival-heading]::after { width:90px; height:90px; font-size:64px; }
.festival-maintenance-banner { position:fixed; inset:auto 16px 18px; z-index:4000; margin:auto; width:min(600px,calc(100% - 32px)); padding:14px 18px; border:1px solid #e8c98c; border-radius:14px; background:#fff9e9; color:#704d15; box-shadow:0 8px 32px #182b4426; font:13px/1.7 system-ui,sans-serif; }
.festival-maintenance-banner strong { display:block; }
.festival-effect-toggle { position:fixed; left:14px; bottom:12px; z-index:1000; border:1px solid var(--festival-primary); border-radius:30px; background:#fff; color:var(--festival-primary); font:11px/1.4 system-ui,sans-serif; padding:7px 10px; cursor:pointer; box-shadow:0 2px 10px #182b4410; }
.festival-celebration { position:fixed; inset:0; overflow:hidden; pointer-events:none; z-index:5000; }
.festival-celebration span { position:absolute; left:50%; top:62%; color:var(--festival-accent); font-size:24px; opacity:0; animation:festival-burst 1.65s ease-out forwards; }
.festival-celebration img { position:absolute; width:110px; height:110px; object-fit:contain; left:calc(50% - 55px); top:calc(48% - 55px); animation:festival-hello 1.65s ease-out forwards; }
@keyframes festival-burst { 8%{opacity:1} 100%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(var(--turn))} }
@keyframes festival-hello { 0%{opacity:0;transform:translateY(18px) scale(.8)} 25%,65%{opacity:1;transform:translateY(0) scale(1)} 100%{opacity:0;transform:translateY(-20px)} }
@media(max-width:600px) { html[data-lms-theme][data-festival-decorations] [data-festival-heading] { padding-right:46px; min-height:36px; } html[data-lms-theme][data-festival-decorations] [data-festival-heading]::after { width:40px;height:40px;font-size:30px; } html[data-lms-theme][data-festival-decorations] :is(.workspace-hero,.home-hero) [data-festival-heading] { padding-right:60px; min-height:52px; } html[data-lms-theme][data-festival-decorations] :is(.workspace-hero,.home-hero) [data-festival-heading]::after { width:54px;height:54px; } .festival-effect-toggle { bottom:8px;left:8px;font-size:10px; } }
@media(prefers-reduced-motion:reduce) { .festival-celebration { display:none; } }
