/* Functional improvements shared across pages. Keep after the design styles. */
.sr-only { position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0; }
:focus-visible { outline:3px solid var(--water);outline-offset:5px; }
.skip-link { position:fixed;top:12px;left:12px;z-index:400000;transform:translateY(-200%);padding:12px;background:var(--clean);color:var(--hole);font-family:'Plain',sans-serif; }
.skip-link:focus { transform:none; }
[hidden] { display:none !important; }
#main-content:focus { outline:none; }
#nav { transition:transform .35s ease,background-color .45s ease,padding .45s ease; }
#nav.nav--hidden { transform:translateY(-110%); }
#nav:focus-within { transform:none; }
#contact-btn { border:0;background:none;padding:0;font:inherit;font-family:'Grotzec',sans-serif;font-weight:var(--t-nav-weight);font-size:var(--t-nav-size);letter-spacing:var(--t-grotzec-ls);text-transform:uppercase;color:var(--hole);pointer-events:auto;cursor:pointer; }
#contact-btn:hover { color:var(--blur); }
.nav-links a,#contact-btn { display:inline-flex;align-items:center;min-height:44px; }
#contact-overlay { border:0;max-width:none;max-height:none;width:100%;height:100%;margin:0;padding:0;color:var(--clean); }
#contact-overlay:not([open]) { display:none; }
#contact-overlay[open] { display:flex; }
#contact-overlay::backdrop { background:var(--hole); }
.contact-close { position:absolute;right:5vw;top:4vh;min-height:44px;background:none;border:0;color:var(--clean);font-family:'Grotzec',sans-serif;font-size:var(--t-nav-size);text-transform:uppercase;cursor:pointer; }
.contact-open { overflow:hidden; }
.hero-fallback { left:15%;top:15%;width:15vw; }
#scroll-indicator { display:flex; }
.skill-row { opacity:1;transform:none; }
#proficiency.reveal-ready:not(.animated) .skill-row { opacity:0;transform:translateY(10px); }
.skills-col h2,.prose-block h2 { font-family:'Plain',sans-serif;font-weight:700;font-size:var(--t-minor-size);letter-spacing:var(--t-minor-ls);text-transform:uppercase;color:var(--hole);margin-bottom:1.4vh; }
.proj-hero-accent { background:var(--accent); }
.project-category { color:var(--hole); }
video.gallery-img { display:block; }
.project-row[href="project-paper-boat.html"] .proj-thumb img { object-position:right; }
.hl-card:focus-visible .hl-card-text { opacity:1; }
.hl-card:focus-visible .hl-card-img { transform:scale(1.048);filter:saturate(1) brightness(1); }
.hl-card:focus-visible .hl-card-title,.hl-card:focus-visible .hl-card-cat { color:var(--card-accent); }
.filter-btn { min-height:44px; }
@media (min-width:769px) and (max-height:700px) {
  .about-page { height:auto;min-height:100vh; }
  .about-main { flex:none;min-height:65vh; }
}
@media (max-width:768px) { #contact-btn { font-size:clamp(12px,3.2vw,18px); } }
@media (prefers-reduced-motion:reduce) {
  *,*::before,*::after { animation:none !important;transition:none !important;scroll-behavior:auto !important; }
  #scene,#hero-title { position:absolute; }
  #scroll-indicator { display:none; }
  #proficiency.reveal-ready .skill-row { opacity:1 !important;transform:none !important; }
  .hero-img-wrap { will-change:auto; }
  #contact-overlay[open] { clip-path:none;pointer-events:auto; }
}
