/* All seasonal styles are scoped to the anonymous login page. */
.auth-top-note, .auth-backdrop { display: none; }
body.auth-screen { background: #285e53; color: #fffdf5; }
.auth-screen .app-shell { position: relative; width: 100%; min-height: 100svh; padding: 0; overflow: clip; isolation: isolate; }
.auth-screen .topbar { position: relative; z-index: 2; width: min(1320px, calc(100% - 112px)); padding: 26px 0 22px; margin: 0 auto; border-color: #ffffff30; }
.auth-screen .brand-lockup { gap: 14px; }
.auth-screen .brand-symbol { width: 46px; height: 46px; border: 1px solid #ead195; background: #fff7dd; color: #973e36; border-radius: 8px; }
.auth-screen .brand-symbol svg { width: 27px; height: 27px; }
.auth-screen .topbar h1 { font-size: 28px; font-weight: 650; line-height: 1.2; color: #fffdf5; }
.auth-screen .brand-lockup .eyebrow { margin-top: 5px; color: #edf0dc; font-size: 11px; }
.auth-screen .auth-top-note { display: flex; align-items: center; gap: 8px; margin: 0; padding: 8px 12px; border: 1px solid #d9c18c; border-radius: 4px; background: #fff9e9f2; color: #804035; font-size: 12px; }
.auth-top-note svg { width: 15px; height: 15px; }
.auth-screen .auth-panel { display: grid; grid-template-columns: minmax(0, 1fr) 392px; align-items: start; column-gap: 50px; row-gap: 80px; width: min(1320px, calc(100% - 112px)); min-height: calc(100svh - 100px); margin: 0 auto; padding: 32px 0 22px; }
.auth-screen .auth-backdrop { display: block; position: absolute; inset: 0; z-index: -1; pointer-events: none; }
.auth-screen .auth-backdrop img { display: block; width: 100%; height: 100%; max-width: none; object-fit: cover; object-position: center top; }
.auth-screen .auth-copy { position: relative; padding: 4px 0 0; min-height: 0; background: none; justify-content: flex-start; color: #fffdf5; animation: auth-arrive .6s ease-out both; }
.auth-screen .auth-kicker { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; margin: 0 0 20px; font-size: 10px; color: #f7efd4; }
.auth-screen .auth-festival-seal { padding: 5px 10px; background: #a3473c; border: 1px solid #e3b782; border-radius: 3px; color: #fff2ce; font-size: 12px; line-height: 1.5; }
.auth-screen .auth-copy h2 { font-family: 'Noto Serif SC', 'Songti SC', STSong, SimSun, serif; font-size: 50px; line-height: 1.4; font-weight: 700; margin: 0; text-shadow: 0 2px 14px #173f3240; }
.auth-screen .auth-copy h2 span { display: block; }
.auth-screen .auth-copy h2 .auth-slogan-accent { color: #ffe3a2; }
.auth-screen .auth-copy .auth-translation { margin-top: 16px; max-width: 420px; font-size: 15px; line-height: 1.8; color: #fff9e9; text-shadow: 0 1px 6px #173f3260; }
.auth-screen .auth-translation span { display: block; }
.auth-screen .auth-card { position: relative; width: 100%; max-width: none; padding: 28px 28px 24px; gap: 18px; background: #fffefb; color: #254b40; border: 1px solid #ecdfc1; border-top: 3px solid #aa483c; border-radius: 8px; box-shadow: 0 18px 60px #153e3426; animation: auth-arrive .6s .08s ease-out both; }
.auth-screen .auth-card-intro { margin-bottom: 2px; }
.auth-screen .auth-card-intro h2 { font-size: 23px; line-height: 1.4; color: #254b40; font-weight: 650; }
.auth-screen .auth-card-intro p { margin: 8px 0 0; font-size: 12px; color: #6c756d; line-height: 1.6; }
.auth-screen .auth-card-intro .auth-card-festival { display: flex; align-items: center; gap: 6px; margin: 0 0 16px; color: #994737; font-size: 11px; }
.auth-screen .auth-card-festival svg { width: 16px; height: 16px; }
.auth-screen .auth-card .tabs { gap: 4px; padding: 4px; margin: 0; background: #eef2ec; border-radius: 6px; }
.auth-screen .auth-card .tab { min-height: 40px; border-radius: 4px; color: #617167; }
.auth-screen .auth-card .tab.active { background: #fff; color: #964135; box-shadow: 0 1px 5px #182c2010; }
.auth-screen .auth-card > label { gap: 8px; color: #3b5548; font-size: 13px; }
.auth-screen .auth-input { position: relative; display: flex; align-items: center; min-width: 0; }
.auth-screen .auth-input > svg.lucide { position: absolute; left: 14px; width: 18px; height: 18px; color: #819087; pointer-events: none; }
.auth-screen .auth-input input { min-height: 49px; padding: 12px 14px 12px 43px; color: #233e31; background: #fff; border-color: #d9e1d9; border-radius: 5px; font-size: 16px; transition: border-color .15s, box-shadow .15s; }
.auth-screen .auth-input input::placeholder { color: #7f8982; font-size: 13px; }
.auth-screen .auth-input:focus-within > svg { color: #964135; }
.auth-screen .auth-input input:focus { border-color: #aa6557; box-shadow: 0 0 0 3px #b4685420; }
.auth-screen .auth-card .full { min-height: 50px; margin-top: 2px; border-color: #a13f35; border-radius: 5px; color: #fffaf0; background: #a13f35; font-size: 15px; box-shadow: 0 5px 12px #a13f3514; transition: background .18s, transform .18s; }
.auth-screen .auth-card .full:hover:not(:disabled) { background: #853129; transform: translateY(-1px); }
.auth-screen .auth-card .full:active:not(:disabled) { transform: translateY(0); }
.auth-screen .auth-card .full:disabled { opacity: .65; }
.auth-screen #adminPasswordRecoveryNote { color: #66776b; text-align: center; font-size: 12px; }
.auth-screen #authMsg { padding: 10px 12px; border: 1px solid #dce7df; background: #edf4ef; border-radius: 5px; font-size: 13px; color: #41604d; overflow-wrap: anywhere; }
.auth-screen #authMsg[data-tone='bad'] { border-color: #efd1ca; background: #fff0ec; color: #9c4137; }
.auth-screen #authMsg[data-tone='good'] { color: #24543b; }
.auth-screen .auth-footer { grid-column: 1 / -1; align-self: end; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding-top: 18px; border-top: 1px solid #fff6dc60; color: #fffaf0; text-shadow: 0 1px 5px #163e33; font-size: 11px; }
.auth-screen .auth-footer p { margin: 0; }
.auth-screen .auth-footer-mark { display: flex; align-items: center; gap: 8px; }
.auth-screen .auth-footer-mark svg { color: #ffe4b4; width: 16px; height: 16px; }
.auth-screen button:focus-visible { outline-color: #ad5b48; }
@keyframes auth-arrive { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
@media (min-width: 1600px) {
  .auth-screen .auth-panel { padding-top: 48px; grid-template-columns: minmax(0, 1fr) 420px; }
  .auth-screen .auth-copy h2 { font-size: 58px; }
  .auth-screen .auth-card { padding: 34px 32px 28px; gap: 20px; }
}
@media (max-width: 1100px) {
  .auth-screen .topbar, .auth-screen .auth-panel { width: calc(100% - 64px); }
  .auth-screen .auth-panel { grid-template-columns: minmax(0, 1fr) 340px; gap: 48px 28px; }
  .auth-screen .auth-copy h2 { font-size: 39px; }
  .auth-screen .auth-card { padding: 25px 22px 22px; }
  .auth-screen .auth-card-intro h2 { font-size: 21px; }
  .auth-screen .auth-copy .auth-translation { font-size: 14px; }
}
@media (max-width: 900px) and (min-width: 761px) {
  .auth-screen .auth-copy h2 { font-size: 31px; }
  .auth-screen .auth-panel { grid-template-columns: minmax(0, 1fr) 320px; column-gap: 24px; }
  .auth-screen .auth-kicker { gap: 9px; }
}
@media (max-width: 760px) {
  .auth-screen .topbar { width: calc(100% - 40px); padding: 22px 0 18px; }
  .auth-screen .topbar h1 { font-size: 23px; }
  .auth-screen .brand-lockup { gap: 10px; }
  .auth-screen .brand-symbol { width: 40px; height: 40px; }
  .auth-screen .auth-top-note { font-size: 10px; gap: 5px; padding: 7px 8px; }
  .auth-screen .auth-top-note svg { width: 12px; height: 12px; }
  .auth-screen .auth-panel { width: calc(100% - 40px); grid-template-columns: 1fr; gap: 24px; min-height: calc(100svh - 90px); padding: 27px 0 22px; }
  .auth-screen .auth-copy { padding: 0; min-height: 350px; }
  .auth-screen .auth-kicker { font-size: 9px; margin-bottom: 17px; gap: 10px; }
  .auth-screen .auth-festival-seal { font-size: 11px; padding: 4px 8px; }
  .auth-screen .auth-copy h2 { font-size: 35px; line-height: 1.45; }
  .auth-screen .auth-copy .auth-translation { font-size: 12px; margin-top: 14px; line-height: 1.8; }
  .auth-screen .auth-backdrop { bottom: auto; height: 800px; }
  .auth-screen .auth-backdrop img { object-position: 24% top; }
  .auth-screen .auth-card { width: 100%; max-width: 480px; justify-self: center; gap: 18px; padding: 25px 24px 23px; }
  .auth-screen .auth-card-intro h2 { font-size: 23px; }
  .auth-screen .auth-footer { gap: 14px; padding-top: 18px; font-size: 10px; }
  .auth-screen .auth-footer-mark { gap: 6px; }
}
@media (max-width: 380px) {
  .auth-screen .auth-top-note { display: none; }
  .auth-screen .auth-copy h2 { font-size: 29px; }
  .auth-screen .auth-copy { min-height: 326px; }
  .auth-screen .auth-card { padding: 22px 18px; }
  .auth-screen .auth-card-intro h2 { font-size: 21px; }
  .auth-screen .auth-footer { align-items: flex-start; flex-direction: column; gap: 7px; }
}
@media (prefers-reduced-motion: reduce) {
  .auth-screen .auth-copy, .auth-screen .auth-card { animation: none; }
  .auth-screen .auth-card .full, .auth-screen .auth-input input { transition: none; }
}
