:root{color-scheme:dark;--color-background:#0b0d12;--color-surface:#12151c;--color-surface-alt:#181c26;--color-text:#cfcfcf;--color-heading:#e6edf3;--color-accent:#8ab4f8;--color-muted:#5a6378;--color-border:rgba(138, 180, 248, 0.35);--focus-outline:3px solid rgba(138, 180, 248, 0.75);--shadow-soft:0 18px 40px rgba(4, 7, 12, 0.45);--shadow-inner:inset 0 0 0 1px rgba(138, 180, 248, 0.12);--max-width:1120px;--transition-fast:150ms ease;--transition-medium:280ms ease;font-family:"Inter",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}*,::after,::before{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;background-color:var(--color-background);color:var(--color-text);font-size:1rem;line-height:1.6;display:flex;flex-direction:column}body:focus-within{scroll-behavior:smooth}body.nav-open{overflow:hidden}body.spoiler-animate .card__summary{transition:filter var(--transition-medium),opacity var(--transition-medium)}img{max-width:100%;display:block}a{color:var(--color-accent);text-decoration:none;transition:color var(--transition-fast)}a:focus,a:hover{color:#a5c7ff}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:var(--focus-outline);outline-offset:3px}button{font:inherit;cursor:pointer;border:0;color:inherit;background:0 0}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.skip-link{position:absolute;top:-10rem;left:1.5rem;z-index:999;padding:.75rem 1.25rem;background:var(--color-accent);color:#05070b;border-radius:999px;box-shadow:var(--shadow-soft);font-weight:600;transition:top var(--transition-fast)}.skip-link:focus{top:1.5rem}.container{width:min(100%,var(--max-width));margin:0 auto;padding:0 1.5rem}.site-header{position:sticky;top:0;z-index:10;background:rgba(11,13,18,.85);backdrop-filter:blur(14px);border-bottom:1px solid rgba(138,180,248,.1)}.brand,.site-header__inner{display:flex;align-items:center}.site-header__inner{justify-content:space-between;gap:1rem;min-height:4.5rem}.brand{font-family:"Cinzel Decorative",serif;font-weight:700;letter-spacing:.05em;color:var(--color-heading);gap:.5rem}.brand__sparkle{width:24px;height:24px;flex-shrink:0}.nav-toggle{width:44px;height:44px;border-radius:999px;background:0 0;border:1px solid rgba(138,180,248,.35);color:var(--color-heading);display:none;align-items:center;justify-content:center;transition:background var(--transition-fast),border var(--transition-fast)}.nav-toggle:focus-visible,.nav-toggle:hover{background:rgba(138,180,248,.12);border-color:rgba(138,180,248,.6)}.site-nav{display:flex;align-items:center;gap:1.25rem;list-style:none;margin:0;padding:0}.site-nav a{color:var(--color-text);font-weight:600;letter-spacing:.01em;position:relative;padding-block:.25rem}.site-nav a[aria-current=page],h1,h2,h3,h4{color:var(--color-heading)}.site-nav a[aria-current=page]::after{content:"";position:absolute;left:0;bottom:-.4rem;width:100%;height:2px;background:var(--color-accent)}.site-main{flex:1}.hero{position:relative;padding:clamp(5rem,12vw,9rem)0 clamp(4rem,10vw,7rem);background:radial-gradient(circle at 20% 20%,rgba(138,180,248,.08),transparent 55%),radial-gradient(circle at 80% 10%,rgba(116,153,230,.14),transparent 45%),linear-gradient(160deg,rgba(20,25,38,.95),rgba(11,13,18,.95));overflow:hidden}.hero::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at center,transparent,rgba(5,7,11,var(--hero-vignette-opacity, 0.4)));pointer-events:none}.hero__grid{display:grid;gap:2rem;align-items:center}.hero__lead{position:relative;z-index:1;display:grid;gap:1.5rem}h1,h2,h3,h4{font-family:"Cinzel Decorative",serif;letter-spacing:-.02em;margin:0}.hero h1{font-size:clamp(2.75rem,6vw,4.1rem);text-transform:uppercase;word-spacing:.12em}.hero__subtitle{font-size:clamp(1.1rem,2.5vw,1.25rem);max-width:32rem;color:rgba(231,237,243,.82)}.hero__actions{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.button,.sparkle{display:inline-flex;align-items:center;justify-content:center}.sparkle{width:64px;height:64px;background:rgba(138,180,248,.15);border-radius:50%;box-shadow:var(--shadow-inner)}.button{gap:.5rem;padding:.85rem 1.6rem;border-radius:999px;background:var(--color-accent);color:#05070b;font-weight:700;letter-spacing:.03em;transition:transform var(--transition-fast),box-shadow var(--transition-fast),background var(--transition-fast);box-shadow:0 12px 25px rgba(138,180,248,.24)}.button:focus-visible,.button:hover{transform:translateY(-1px);box-shadow:0 20px 34px rgba(138,180,248,.3)}.button--ghost{background:0 0;color:var(--color-accent);border:1px solid rgba(138,180,248,.4);box-shadow:none}.button--ghost:focus-visible,.button--ghost:hover{background:rgba(138,180,248,.12)}.section{padding:clamp(3.5rem,10vw,6rem)0}.section__header{display:grid;gap:.75rem;margin-bottom:2.75rem;max-width:48rem}.section__header p{margin:0;color:rgba(207,207,207,.92)}.featured{display:grid;gap:clamp(2rem,3vw,2.75rem)}.featured__item{display:grid;gap:1.5rem}.card{background:var(--color-surface);border-radius:1.5rem;overflow:hidden;border:1px solid rgba(138,180,248,.08);box-shadow:var(--shadow-soft);transition:transform var(--transition-medium),border var(--transition-medium),box-shadow var(--transition-medium);position:relative}.card:hover{box-shadow:0 24px 55px rgba(5,8,14,.5)}.card:focus-within,.card:hover{transform:translateY(-4px);border-color:rgba(138,180,248,.25)}.card.is-open{border-color:rgba(138,180,248,.4);box-shadow:0 26px 60px rgba(5,8,14,.55)}.card__media{position:relative;overflow:hidden}.card__media img{width:100%;height:auto;object-fit:cover}.card__label{position:absolute;top:1rem;left:1rem;padding:.35rem .85rem;background:rgba(11,13,18,.85);border-radius:999px;font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;color:var(--color-accent)}.card__body{padding:1.75rem 1.75rem 1.25rem;display:grid;gap:1.25rem}.card__title{font-size:1.6rem}.card__summary{margin:0;color:rgba(226,235,243,.85)}.card__footer{margin-top:1.25rem;display:flex;justify-content:flex-start;gap:.75rem}.card__toggle{align-items:center;gap:.45rem;padding:.55rem 1.1rem;border-radius:999px;border:1px solid rgba(138,180,248,.35);background:rgba(138,180,248,.12);color:var(--color-heading);font-size:.85rem;letter-spacing:.12em;text-transform:uppercase;transition:background var(--transition-fast),border var(--transition-fast),color var(--transition-fast),transform var(--transition-fast)}.card.is-open .card__toggle.hide-btn,.card__toggle{display:inline-flex}.card.is-open .card__toggle.show-btn,.card__toggle.hide-btn{display:none}.card__toggle:focus-visible,.card__toggle:hover{background:rgba(138,180,248,.22);border-color:rgba(138,180,248,.55);color:var(--color-heading);transform:translateY(-1px)}.card__toggle-icon{transition:transform var(--transition-fast)}.card.is-open .card__toggle-icon{transform:rotate(180deg)}.card__meta{display:grid;gap:.75rem;margin:0}.card__meta div{display:grid;gap:.15rem}.card__meta dt{font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;color:var(--color-muted)}.card__meta dd{margin:0;color:rgba(226,235,243,.88)}.card__tags{display:flex;flex-wrap:wrap;gap:.5rem;padding:0;margin:0;list-style:none}.card__heading{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.badge{display:inline-flex;align-items:center;justify-content:center;font-size:.75rem;text-transform:uppercase;letter-spacing:.12em;padding:.35rem .9rem;border-radius:999px;background:rgba(138,180,248,.16);color:var(--color-accent);border:1px solid rgba(138,180,248,.2)}.badge--outline{background:0 0}.badge[data-house=gryffindor]{color:#ffb347;border-color:rgba(255,179,71,.4);background:rgba(255,179,71,.12)}.badge[data-house=slytherin]{color:#6bd68d;border-color:rgba(107,214,141,.4);background:rgba(107,214,141,.12)}.badge[data-house=ravenclaw]{color:#78b7ff;border-color:rgba(120,183,255,.4);background:rgba(120,183,255,.12)}.badge[data-house=hufflepuff]{color:#ffd166;border-color:rgba(255,209,102,.4);background:rgba(255,209,102,.12)}.grid{display:grid;gap:clamp(1.5rem,3vw,2.5rem)}.grid--cards{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.filter{background:var(--color-surface);border-radius:1.25rem;padding:1.5rem;border:1px solid rgba(138,180,248,.12);box-shadow:var(--shadow-soft)}.filter,.filter__controls{display:grid;gap:1rem}.filter__fieldset{border:0;margin:0;padding:0;display:grid;gap:.75rem}.filter__legend{font-size:.8rem;text-transform:uppercase;letter-spacing:.12em;color:var(--color-muted)}.filter__options{display:flex;flex-wrap:wrap;gap:.5rem}.filter__chip{display:inline-flex;align-items:center;gap:.45rem;padding:.45rem .95rem;border-radius:999px;border:1px solid rgba(138,180,248,.2);background:var(--color-surface-alt);cursor:pointer;transition:border var(--transition-fast),background var(--transition-fast),box-shadow var(--transition-fast)}.filter__chip input{accent-color:var(--color-accent);width:1rem;height:1rem}.filter__chip span{font-size:.85rem;letter-spacing:.02em}.filter__chip:focus-within,.filter__chip:hover{border-color:rgba(138,180,248,.45);background:rgba(138,180,248,.08);box-shadow:0 0 0 3px rgba(138,180,248,.15)}.filter__actions{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.field{display:grid;gap:.35rem}.field label{font-size:.8rem;text-transform:uppercase;letter-spacing:.14em;color:var(--color-muted)}.field input,.field select{border-radius:.9rem;border:1px solid rgba(138,180,248,.2);padding:.75rem 1rem;background:var(--color-surface-alt);color:var(--color-heading);transition:border var(--transition-fast),box-shadow var(--transition-fast)}.field input:hover,.field select:hover{border-color:rgba(138,180,248,.4)}.field input:focus-visible,.field select:focus-visible{box-shadow:0 0 0 4px rgba(138,180,248,.15)}.results-count{font-size:.9rem;color:rgba(207,207,207,.78)}.empty-state{padding:3rem 1.5rem;text-align:center;background:rgba(20,24,34,.6);border-radius:1.25rem;border:1px dashed rgba(138,180,248,.3)}body[data-page=wizards].spoiler-hidden .card__summary{filter:blur(.65rem);opacity:.2;position:relative}body[data-page=wizards].spoiler-hidden .card__summary::after{content:"Spoiler hidden — toggle to view";position:absolute;inset:.5rem;display:grid;place-items:center;background:rgba(11,13,18,.85);color:var(--color-accent);font-weight:600;letter-spacing:.04em;border-radius:1rem}.card__incantation{margin:0;font-family:"Inter",system-ui,sans-serif;font-size:.9rem;color:rgba(226,235,243,.78);display:flex;align-items:center;gap:.5rem}.card__effect strong,.card__incantation span{text-transform:uppercase;color:var(--color-muted)}.card__incantation span{letter-spacing:.12em;font-size:.7rem}.card__incantation code{font-family:"Fira Code","Courier New",monospace;font-size:.85rem;color:var(--color-heading);background:rgba(138,180,248,.12);border-radius:.5rem;padding:.35rem .6rem}.card__effect{margin:0;color:rgba(207,207,207,.85);font-size:.95rem}.card__effect strong{font-weight:600;letter-spacing:.05em;margin-right:.35rem}.card__badges{display:flex;gap:.5rem;flex-wrap:wrap}.badge[data-difficulty=Beginner]{background:rgba(123,230,170,.14);border-color:rgba(123,230,170,.35);color:#8cf4bb}.badge[data-difficulty=Intermediate]{background:rgba(138,180,248,.14);border-color:rgba(138,180,248,.4);color:#8ab4f8}.badge[data-difficulty=Advanced]{background:rgba(255,196,119,.14);border-color:rgba(255,196,119,.4);color:#ffc477}.badge[data-difficulty="N.E.W.T."]{background:rgba(255,138,213,.14);border-color:rgba(255,138,213,.4);color:#ff8ad5}.card__meta--inline{display:grid;gap:1rem}.card__meta--inline div{gap:.35rem}.card__meta--inline dd{color:rgba(226,235,243,.9)}.card__details{padding:1.25rem 1.75rem 1.75rem;display:none;gap:1rem;overflow:hidden;height:0;opacity:0;border-top:1px solid rgba(138,180,248,.12);transition:opacity var(--transition-medium),height var(--transition-medium)}.card.is-open .card__details{display:block;height:auto;opacity:1}.card__details:not([hidden]){display:block}.card__notes{margin:0;padding-left:1.1rem;display:grid;gap:.4rem;color:rgba(226,235,243,.85)}.card__notes li{list-style:disc}.card__notes li strong{display:block;font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;color:var(--color-muted)}.card__notes li span{display:block}.timeline{display:grid;gap:1.75rem}.timeline__year{background:var(--color-surface);border-radius:1.5rem;border:1px solid rgba(138,180,248,.12);overflow:hidden;box-shadow:var(--shadow-soft)}.timeline__year-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.5rem 1.75rem;background:rgba(18,21,28,.85)}.timeline__year h2{font-size:1.5rem}.timeline__toggle{padding:.5rem 1rem;border-radius:999px;background:rgba(138,180,248,.12);border:1px solid rgba(138,180,248,.25);color:var(--color-heading);font-weight:600}.timeline__panel[hidden]{display:none}.timeline__panel{padding:1.75rem}.timeline__list{list-style:none;margin:0;padding:0;display:grid;gap:1.5rem}.timeline__item{display:grid;grid-template-columns:auto 1fr;gap:1rem;align-items:flex-start}.timeline__marker{width:12px;height:12px;border-radius:50%;margin-top:.5rem;background:var(--color-accent);box-shadow:0 0 0 6px rgba(138,180,248,.16)}.timeline__item--house .timeline__marker{background:#ffd166;box-shadow:0 0 0 6px rgba(255,209,102,.18)}.timeline__item--wizard .timeline__marker{background:#8ab4f8}.timeline__content{background:var(--color-surface-alt);border-radius:1.25rem;padding:1.25rem 1.5rem;border:1px solid rgba(138,180,248,.12)}.timeline__content h3{font-size:1.15rem;margin-bottom:.5rem}.timeline__source{font-size:.75rem;text-transform:uppercase;letter-spacing:.15em;color:var(--color-muted);margin:0 0 .65rem}.site-footer{padding:2.5rem 0;background:rgba(12,15,20,.95);border-top:1px solid rgba(138,180,248,.1)}.site-footer__inner{display:grid;gap:1.5rem;justify-items:center;text-align:center}.footer__social{display:flex;gap:1.1rem;flex-wrap:wrap;justify-content:center;padding:0;margin:0;list-style:none}.footer__social a{padding:.4rem .6rem;display:inline-flex;align-items:center;gap:.5rem;border-radius:.75rem;border:1px solid rgba(138,180,248,.18);background:rgba(138,180,248,.08);color:rgba(226,235,243,.88);transition:border var(--transition-fast),background var(--transition-fast),color var(--transition-fast),transform var(--transition-fast)}.footer__social a:focus-visible,.footer__social a:hover{background:rgba(138,180,248,.16);border-color:rgba(138,180,248,.35);color:var(--color-heading);transform:translateY(-1px)}.footer__icon{width:1.2rem;height:1.2rem;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.footer__icon svg{width:100%;height:100%;fill:currentColor}.footer__disclaimer{font-size:.85rem;color:rgba(140,150,170,.85);margin:0}.about-card,.about-grid{display:grid;gap:2rem}.about-card{background:var(--color-surface);border-radius:1.5rem;padding:2rem;border:1px solid rgba(138,180,248,.1);box-shadow:var(--shadow-soft);gap:1rem}.about-card p{margin:0}.about-list{margin:.75rem 0 0;padding-left:1.15rem;display:grid;gap:.35rem;color:rgba(226,235,243,.85)}.about-list li{margin:0;line-height:1.5}.about-card:focus-within,.card:focus-within,.timeline__year:focus-within{box-shadow:0 0 0 3px rgba(138,180,248,.35)}.not-found{padding:clamp(4rem,15vw,8rem)0;text-align:center;display:grid;gap:2rem}.not-found__symbol{font-size:clamp(4rem,12vw,7rem);color:rgba(138,180,248,.6)}.not-found p{margin:0 auto;max-width:32rem;color:rgba(210,220,238,.75)}.cta-group{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}@media (max-width:960px){.site-header__inner{flex-wrap:wrap}.nav-toggle{display:inline-flex}.site-nav{position:fixed;inset:0 0 auto;top:4.75rem;flex-direction:column;align-items:flex-start;padding:1.5rem;background:rgba(12,15,22,.98);max-height:0;overflow:hidden;transition:max-height var(--transition-medium)}.site-nav[data-open]{max-height:18rem}.site-nav li{width:100%}.site-nav a{display:block;width:100%;padding:.75rem .5rem}.hero__grid{text-align:center}.hero__lead{justify-items:center}.hero__actions{justify-content:center}.filter__controls{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}}@media (max-width:640px){.container{padding:0 1.25rem}.card__body{padding:1.5rem}.filter,.timeline__panel{padding:1.25rem}.timeline__item{grid-template-columns:1fr}.timeline__marker{margin-top:0}.featured{grid-template-columns:1fr}.hero__subtitle{text-align:center}}@media (max-width:480px){.site-nav[data-open]{max-height:22rem}.grid--cards{grid-template-columns:1fr}.card__title{font-size:1.4rem}.hero h1{font-size:clamp(2.4rem,8vw,3rem)}}@media (prefers-reduced-motion:reduce){*,::after,::before{animation:none!important;transition:none!important;scroll-behavior:auto!important}.card__details,.site-nav{transition:none}}