:root{--bg:#0b1014;--panel:#111b22;--panel2:#15222b;--border:#314550;--line:#24343e;--text:#e8eef2;--muted:#9eafb9;--accent:#91c9ee;--orange:#d5a26e;--blue:#14709b;--green:#8fc8a8;--red:#ed9b93;--shadow:rgba(0,0,0,.35);color-scheme:dark}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:88px}body{margin:0;color:var(--text);font:15px/1.6 'Segoe UI',Arial,sans-serif;background:radial-gradient(ellipse at 50% -120px,rgba(46,82,100,.23),transparent 730px),linear-gradient(#0c1318,#0b1014 620px);min-height:100vh}body.menu-open{overflow:hidden}button,input,textarea{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid #a8dafa;outline-offset:3px}img{max-width:100%}p{margin:0 0 15px}h1,h2,h3{margin:0;line-height:1.2}h1{font-family:Georgia,'Times New Roman',serif;font-size:clamp(27px,3vw,40px);letter-spacing:.015em}h2{font-family:Georgia,'Times New Roman',serif;color:#b8d8ed;font-size:clamp(21px,2vw,26px);letter-spacing:.02em;margin-bottom:15px}h3{font-size:15px}small,.small{font-size:12px;line-height:1.55}.muted{color:var(--muted)}[hidden]{display:none!important}.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.page-shell{width:min(100% - 40px,1460px);margin:0 auto}.site-top{min-height:77px;padding:19px 215px 14px;display:flex;align-items:center;justify-content:center;gap:40px;border-bottom:1px solid var(--line)}.site-wordmark{font-family:Georgia,serif;font-size:16px;font-weight:800;letter-spacing:.11em;white-space:nowrap}.site-wordmark span{color:var(--accent)}.top-links{display:flex;align-items:center;justify-content:center;gap:7px;flex-wrap:wrap}.top-links a{display:inline-flex;align-items:center;justify-content:center;color:#d6e5ed;padding:7px 13px;border:1px solid transparent;border-radius:6px;font-size:13px;font-weight:700;white-space:nowrap}.top-links a:hover{background:#172630;border-color:var(--border);text-decoration:none}
.menu-btn,.user-badge{position:fixed;top:11px;z-index:2001;display:flex;align-items:center;gap:10px;padding:8px 13px;min-height:44px;background:rgba(17,20,24,.96);border:1px solid rgba(0,174,239,.48);border-radius:999px;box-shadow:0 8px 24px var(--shadow);color:var(--text);font-weight:800;backdrop-filter:blur(5px)}.menu-btn{left:12px}.menu-btn img{object-fit:contain}.account-wrap{position:fixed;top:11px;right:12px;z-index:2001}.user-badge{position:relative;top:auto;right:auto;padding:6px 10px;color:var(--accent)}.user-badge img{border-radius:50%;object-fit:cover;border:1px solid var(--border);background:#273440}.user-dropdown{position:absolute;right:0;top:calc(100% + 8px);min-width:190px;background:#121c24;border:1px solid var(--border);border-radius:9px;padding:6px;box-shadow:0 16px 35px #0008}.user-dropdown a{display:block;padding:9px 12px;border-radius:5px;color:var(--text)}.user-dropdown a:hover{background:#20313d;text-decoration:none}
#app-backdrop{position:fixed;inset:0;background:#0009;z-index:2005}#app-menu{position:fixed;inset:0 auto 0 0;width:min(320px,88vw);background:#0d151b;border-right:1px solid var(--border);z-index:2006;transform:translateX(-102%);transition:transform .23s ease;display:flex;flex-direction:column;box-shadow:10px 0 40px #0007}#app-menu.open{transform:translateX(0)}.drawer-head{display:flex;justify-content:space-between;align-items:center;padding:17px 20px;border-bottom:1px solid var(--border);font-family:Georgia,serif;color:var(--accent);font-size:21px}.icon-close{background:none;border:1px solid var(--border);color:var(--text);font-size:25px;width:38px;height:38px;border-radius:6px}.drawer-nav{overflow:auto;display:flex;flex-direction:column;padding:12px}.drawer-nav span{color:#7894a5;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.15em;padding:15px 12px 5px}.drawer-nav a{padding:10px 12px;border-radius:6px;color:var(--text)}.drawer-nav a:hover{background:#1b2a34;text-decoration:none}
.banner-wrap{width:min(52%,860px);margin:24px auto 27px}.hero-banner{display:block;width:100%;height:auto;border:1px solid #435460;border-radius:5px;box-shadow:0 12px 35px #0007}.intro{text-align:center;max-width:830px;margin:0 auto 30px}.eyebrow,.panel-label{color:var(--orange);font-size:11px;font-weight:800;letter-spacing:.19em;text-transform:uppercase;margin-bottom:9px}.intro h1{margin-bottom:14px}.intro p{color:#b9c7cf;font-size:15px}.intro-chips{display:flex;flex-wrap:wrap;justify-content:center;gap:9px;margin-top:20px}.intro-chips span{border:1px solid #3c4c53;border-radius:999px;padding:4px 13px;font-size:11px;color:#b8cbd7;background:#111c23}
.panel{background:linear-gradient(155deg,rgba(24,38,47,.87),rgba(12,20,26,.96));border:1px solid var(--border);border-radius:6px;padding:24px;box-shadow:0 5px 20px #0002;min-width:0}.panel p{color:#b7c6ce}.panel-label{color:#789db3;margin-bottom:7px}.dashboard{display:grid;grid-template-columns:1fr 1.15fr 1fr;gap:16px;margin-bottom:18px}.dashboard .panel{display:flex;flex-direction:column}.overview-stats{margin-top:auto;display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:16px 0;gap:16px;margin-bottom:18px}.overview-stats span,.credential>span{display:block;color:#829cae;font-size:10px;font-weight:800;letter-spacing:.14em;margin-bottom:5px}.overview-stats strong{font-size:15px}.small.muted{margin:0}.connection-panel .button{width:100%}.check-row{display:flex;align-items:flex-start;gap:11px;padding:13px 0;color:#d0dae0;font-size:13px;cursor:pointer}.check-row input{width:18px;height:18px;flex:none;accent-color:#3089b5;margin:2px 0 0}.button{display:inline-flex;align-items:center;justify-content:center;text-align:center;gap:8px;padding:10px 18px;border-radius:5px;min-height:42px;font-size:12px;font-weight:800;letter-spacing:.04em;text-decoration:none;transition:background .15s,border-color .15s}.button:hover{text-decoration:none}.button.primary{color:#f2faff;background:linear-gradient(#197ba8,#105373);border:1px solid #3999c5}.button.primary:hover{background:#227eaa}.button.secondary{color:#c5e5f6;background:#172b36;border:1px solid #3d6378}.button.secondary:hover{background:#203c4d}.button:disabled{opacity:.55;cursor:not-allowed}.connection-panel form{margin-bottom:14px}.connection-result{border-top:1px solid var(--border);padding-top:16px;margin-top:4px}.credential{margin-bottom:13px}.credential>div{display:flex;align-items:center;gap:7px}.credential code{display:block;flex:1;min-width:0;overflow-wrap:anywhere;background:#081117;border:1px solid var(--line);border-radius:4px;padding:10px;color:#e3f0f8;font-size:13px}.copy-button{padding:9px;border:1px solid #3c6073;background:#1a3442;color:var(--accent);border-radius:4px;font-size:11px}.form-error{color:var(--red)!important;font-size:13px}.community-link{display:flex;align-items:center;gap:12px;padding:15px 0;border-bottom:1px solid var(--line);color:var(--accent)}.community-link:hover{text-decoration:none}.community-link>span:nth-child(2){flex:1}.community-link strong{display:block;font-size:13px}.community-link small{display:block;color:var(--muted);font-size:12px}.community-icon{width:36px;height:36px;display:grid;place-items:center;background:#1d313e;color:#a6d4ec;border:1px solid #38586b;border-radius:6px;font-size:22px;flex:none}.community-quote{font-family:Georgia,serif;color:var(--orange);font-style:italic;margin-top:auto;padding-top:23px;font-size:15px}
.section-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:14px}.section-head h2{margin-bottom:0}.section-head p{margin:8px 0 0}.section-intro{margin:0 0 22px;color:#b1c2cc}.section-badge{font-size:11px;color:#afd3e8;background:#172e3c;border:1px solid #345668;padding:6px 11px;border-radius:4px;white-space:nowrap}.schedule-panel{margin-bottom:18px}.boss-grid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:10px}.boss-card{min-width:0;overflow:hidden;background:#101920;border:1px solid #35444e;border-radius:5px}.boss-art{height:190px;overflow:hidden;background:#1b2931;position:relative}.boss-art img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 25%;transition:transform .25s}.boss-card:hover .boss-art img{transform:scale(1.035)}.boss-info{padding:12px 8px 13px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:5px}.boss-name{font-size:13px;font-family:Georgia,serif;font-weight:800;color:#d8e2e8;min-height:34px;display:flex;align-items:center;justify-content:center;line-height:1.25}.boss-info strong{font-size:16px;color:var(--accent)}.boss-info small{color:#8fa3af;font-size:11px}.boss-date{font-size:10px;color:#aec2cd}.status,.provisional{display:inline-block;font-size:10px;line-height:1.35;border-radius:3px;padding:3px 6px}.status.locked{color:#a6b3ba;background:#263139}.status.unlocked{color:#b6dfc8;background:#19382c}.status.completed{color:#a8d4ef;background:#1b3747}.provisional{color:#d9b891;background:#3a2d22}.schedule-foot{border-top:1px solid var(--line);margin-top:20px;padding-top:15px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;color:var(--muted);font-size:12px}.schedule-foot strong{color:var(--text)}
.lower-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}.lower-side{display:flex;flex-direction:column;gap:18px}.rules-list{margin-top:20px}.rule{display:flex;gap:14px;padding:14px 0;border-bottom:1px solid var(--line)}.rule:last-child{border:0}.rule-number{flex:none;font-family:Georgia,serif;color:var(--orange);font-size:22px;width:31px}.rule h3{color:#e0ebf1;margin:2px 0 5px}.rule p{font-size:13px;color:#aebfc9;margin:0}.about-art{height:210px;overflow:hidden;border:1px solid var(--border);border-radius:4px;margin:8px 0 20px}.about-art img{width:100%;height:100%;object-fit:cover;object-position:center 75%}.about-panel p{font-size:13px}.small-panel{flex:1}.small-panel .button{margin-top:8px}.gallery-preview{margin-bottom:18px}.gallery-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}.photo-card{min-width:0;overflow:hidden;border:1px solid var(--border);border-radius:5px;background:#0e181f}.photo-link{display:block;aspect-ratio:4/3;overflow:hidden;background:#182b35}.photo-link img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .2s}.photo-link:hover img{transform:scale(1.04)}.photo-meta{display:flex;justify-content:space-between;gap:8px;padding:9px 10px 4px;font-size:11px;color:var(--muted)}.photo-meta strong{color:#c4dcea;overflow-wrap:anywhere}.photo-caption{font-size:12px;color:#b2c1ca;margin:0;padding:0 10px 10px;overflow-wrap:anywhere}.empty-gallery{grid-column:1/-1;text-align:center;padding:36px 20px;border:1px dashed #354d5d;border-radius:5px;color:var(--muted)}.empty-symbol{font-size:38px;color:var(--accent)}.empty-gallery h3{color:#c8d9e3;margin:6px 0}.empty-gallery p{margin:0}.site-footer{padding:25px 0 35px;display:flex;justify-content:space-between;gap:15px;flex-wrap:wrap;border-top:1px solid var(--line);font-size:11px;color:#7893a4}.site-footer a{color:#9fcce7}
.notice{margin:0 0 18px;padding:12px 16px;border-radius:5px;border:1px solid #4d686f;background:#19313b;font-size:13px}.notice.success{color:#b9e2cd;border-color:#396f55;background:#173228}.notice.error{color:#ffd0c9;border-color:#844b45;background:#3b2222}.admin-panel{margin-bottom:18px}.admin-form fieldset{min-width:0;border:1px solid var(--border);border-radius:5px;padding:17px;margin:0 0 18px}.admin-form legend{color:#b4d5e8;font-weight:800;padding:0 7px}.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.admin-form label,.upload-form label{display:block;font-size:12px;font-weight:700;color:#b9cbd6;margin-bottom:13px}.admin-form input:not([type=checkbox]),.admin-form textarea,.upload-form input{display:block;width:100%;background:#0a141b;color:var(--text);border:1px solid #3a5260;border-radius:4px;padding:10px 11px;margin-top:6px;min-width:0}.admin-form textarea{resize:vertical;line-height:1.55}.admin-boss-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.admin-boss-row{display:grid;grid-template-columns:42px minmax(0,1fr) 75px auto;align-items:center;gap:10px;border:1px solid var(--line);padding:8px;border-radius:4px}.admin-boss-row img{width:42px;height:52px;object-fit:cover;border-radius:3px}.admin-boss-row strong{font-size:12px;display:block}.admin-boss-row small{font-size:10px;color:var(--muted)}.admin-boss-row label{margin:0}.admin-boss-row input[type=number]{padding:7px 5px;text-align:center;margin-top:3px}.admin-done{display:flex!important;align-items:center;gap:5px;font-size:11px!important}.admin-done input{accent-color:#2783ad}.admin-actions{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.gallery-page .gallery-heading{display:flex;justify-content:space-between;align-items:end;gap:20px;flex-wrap:wrap;margin-bottom:25px}.gallery-heading h1{margin-bottom:12px}.gallery-heading p{color:var(--muted);margin:0}.upload-panel{margin-bottom:18px}.upload-form{display:grid;grid-template-columns:1fr 1.5fr auto;gap:16px;align-items:end}.upload-form label{margin:0}.upload-form .button{min-width:150px}.upload-panel>.small{margin-top:15px}.gallery-main{margin-bottom:18px}.gallery-main .gallery-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.gallery-main .photo-link{aspect-ratio:16/10}.delete-form{padding:0 10px 10px}.text-button{border:0;background:none;padding:0;color:var(--accent);font-size:11px}.text-button.danger{color:var(--red)}.pagination{display:flex;align-items:center;justify-content:center;gap:25px;margin-top:25px;font-size:13px}.pagination a{padding:7px 13px;border:1px solid var(--border);border-radius:4px}.image-lightbox{position:fixed;inset:0;max-width:min(94vw,1400px);max-height:94vh;padding:14px;background:#0b1319;border:1px solid #4b6574;border-radius:6px;color:var(--text);box-shadow:0 20px 80px #000b}.image-lightbox::backdrop{background:#000d}.image-lightbox img{display:block;max-width:100%;max-height:calc(90vh - 100px);object-fit:contain;margin:auto}.image-lightbox p{text-align:center;margin:12px 35px 0;font-size:13px}.lightbox-close{position:absolute;top:8px;right:8px;background:#101d26;border:1px solid #526572;color:white;width:35px;height:35px;border-radius:4px;font-size:22px}
@media(max-width:1200px){.site-top{padding-left:150px;padding-right:150px;gap:15px;flex-direction:column}.dashboard{grid-template-columns:1fr 1fr}.community-panel{grid-column:1/-1}.community-panel{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:22px}.community-panel .panel-label,.community-panel h2,.community-quote{grid-column:1/-1}.community-link{border-bottom:0}.boss-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.boss-art{height:210px}.gallery-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.admin-boss-grid{grid-template-columns:1fr}}
@media(max-width:800px){.page-shell{width:min(100% - 28px,1460px)}.site-top{padding:75px 0 14px;min-height:0;gap:5px}.site-wordmark{font-size:13px}.top-links{gap:2px}.top-links a{font-size:12px;padding:6px 10px}.banner-wrap{width:100%;max-width:650px;margin:18px auto 24px}.dashboard,.lower-grid,.admin-grid{grid-template-columns:1fr}.community-panel{display:flex!important;grid-column:auto}.community-link{border-bottom:1px solid var(--line)}.panel{padding:19px}.boss-art{height:180px}.gallery-main .gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.upload-form{grid-template-columns:1fr}.upload-form .button{justify-self:start}.admin-boss-grid{grid-template-columns:1fr}.about-art{height:180px}}
@media(max-width:520px){.page-shell{width:min(100% - 22px,1460px)}.menu-btn{left:8px;top:8px;min-height:40px;padding:5px 10px;font-size:12px}.menu-btn img{width:25px;height:25px}.account-wrap{top:8px;right:8px}.user-badge{min-height:40px;padding:5px 8px;font-size:12px}.user-badge img{width:25px;height:25px}.site-top{padding-top:62px}.site-wordmark{font-size:12px}.top-links a{font-size:11px;padding:5px 8px}.intro{margin-bottom:23px}.intro p{font-size:13px}.intro-chips span{font-size:10px}.panel{padding:16px}.panel h2{font-size:21px}.boss-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.boss-art{height:170px}.boss-name{min-height:0}.boss-info{padding:10px 5px}.boss-info strong{font-size:14px}.gallery-grid,.gallery-main .gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.photo-meta{font-size:10px;flex-wrap:wrap}.admin-boss-row{grid-template-columns:35px minmax(0,1fr) 60px;gap:7px}.admin-boss-row img{width:35px;height:45px}.admin-done{grid-column:2/-1}.schedule-foot{display:block}.schedule-foot span{display:block;margin-bottom:7px}.gallery-page .gallery-heading{align-items:start}.section-head .button{width:100%}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}

/* Optional user background; original background remains the fallback. */
body.vh-custom-background{
  background-image:
    linear-gradient(180deg,rgba(11,16,20,.72),rgba(11,16,20,.87) 48%,rgba(11,16,20,.94)),
    url('../data/valbackground.jpg'),
    radial-gradient(ellipse at 50% -120px,rgba(46,82,100,.23),transparent 730px),
    linear-gradient(#0c1318,#0b1014 620px);
  background-size:cover,cover,auto,auto;
  background-position:center top,center center,center top,center top;
  background-repeat:no-repeat;
  background-attachment:fixed,fixed,scroll,scroll;
}

/* Wider banner, same approximate desktop height. */
.banner-wrap{width:min(76%,1120px);margin:24px auto 27px}
.hero-banner{width:100%;height:auto;aspect-ratio:3/1;object-fit:cover;object-position:center center}
@media(max-width:800px){
  .banner-wrap{width:100%;max-width:650px;margin:18px auto 24px}
  .hero-banner{height:auto;aspect-ratio:auto;object-fit:contain}
  body.vh-custom-background{background-attachment:scroll}
}

/* Font-only readability update. Layout widths, grid counts, spacing, image
   heights, controls, and responsive breakpoints remain at their original values. */
body{font-size:18px}
h1{font-size:clamp(30px,3vw,42px)}
h2{font-size:clamp(24px,2vw,30px)}
h3{font-size:18px}
small,.small{font-size:14px}
.site-wordmark{font-size:18px}
.top-links a{font-size:15px}
.menu-btn,.user-badge{font-size:15px}
.user-dropdown a{font-size:16px}
.drawer-head{font-size:23px}
.drawer-nav span{font-size:13px}
.drawer-nav a{font-size:16px}
.eyebrow,.panel-label{font-size:14px}
.intro p{font-size:18px}
.intro-chips span{font-size:14px}
.overview-stats span,.credential>span{font-size:13px}
.overview-stats strong{font-size:18px}
.check-row{font-size:16px}
.button{font-size:15px}
.credential code{font-size:16px}
.copy-button{font-size:14px}
.form-error{font-size:15px}
.community-link strong{font-size:16px}
.community-link small{font-size:14px}
.community-quote{font-size:18px}
.section-badge{font-size:14px}
.boss-name{font-size:16px}
.boss-info strong{font-size:19px}
.boss-info small{font-size:14px}
.boss-date{font-size:13px}
.status,.provisional{font-size:13px}
.schedule-foot{font-size:15px}
.rule h3{font-size:18px}
.rule p,.about-panel p{font-size:17px}
.photo-meta{font-size:14px}
.photo-caption{font-size:15px}
.site-footer{font-size:14px}
.notice{font-size:15px}
.admin-form legend{font-size:18px}
.admin-form label,.upload-form label{font-size:15px}
.admin-form input:not([type=checkbox]),.admin-form textarea,.upload-form input{font-size:16px}
.admin-boss-row strong{font-size:15px}
.admin-boss-row small{font-size:13px}
.admin-done{font-size:14px!important}
.text-button{font-size:14px}
.pagination{font-size:15px}
.image-lightbox p{font-size:15px}
@media(max-width:800px){
  .site-wordmark{font-size:16px}
  .top-links a{font-size:14px}
}
@media(max-width:520px){
  .menu-btn,.user-badge{font-size:14px}
  .site-wordmark{font-size:15px}
  .top-links a{font-size:14px}
  .intro p{font-size:18px}
  .intro-chips span{font-size:13px}
  .panel h2{font-size:24px}
  .boss-info strong{font-size:19px}
  .photo-meta{font-size:14px}
}
