.dir-hero{position:relative;padding:3rem 1.5rem 2.25rem;overflow:hidden}.dir-hero__aurora{position:absolute;inset:-10% -10% auto;height:110%;pointer-events:none;z-index:0}.dir-hero__inner{position:relative;z-index:1;max-width:960px;margin:0 auto;display:flex;flex-direction:column;gap:.75rem}.dir-hero__eyebrow{display:inline-flex;align-items:center;gap:.6rem;font-family:var(--ig-font-mono);font-size:.68rem;font-weight:500;letter-spacing:.32em;text-transform:uppercase;color:var(--ig-gold);margin:0;align-self:flex-start}.dir-hero__eyebrow-mark{width:.42rem;height:.42rem;border-radius:50%;background:var(--ig-pulse-gold);box-shadow:0 0 12px var(--ig-pulse-gold),0 0 0 3px color-mix(in srgb,var(--ig-pulse-gold) 18%,transparent);flex-shrink:0;animation:igPulseDot 3.2s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.dir-hero__eyebrow-mark{animation:none}}.dir-hero__title{font-family:var(--ig-font-display);font-size:clamp(2.25rem,5vw,3.25rem);font-weight:240;letter-spacing:-.035em;line-height:1.04;color:var(--ig-text);margin:.25rem 0 0}.dir-hero__title :global(em){font-style:italic;font-weight:300;background:linear-gradient(180deg,var(--ig-accent) 0%,color-mix(in srgb,var(--ig-accent) 75%,var(--ig-gold)) 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.dir-hero__lede{font-family:var(--ig-font-body);font-size:1rem;line-height:1.6;color:var(--ig-text-muted);margin:.25rem 0 0;max-width:38rem}.dir-hero__rule{margin-top:1.25rem;height:2px;background:linear-gradient(90deg,transparent 0%,var(--ig-gold) 30%,var(--ig-accent) 70%,transparent 100%);opacity:.55}.dir-main{max-width:960px;margin:0 auto;padding:0 1.5rem 4rem}.dir-filters{display:flex;flex-direction:column;gap:1rem;margin-bottom:2rem;padding:1.25rem;border:1px solid var(--ig-border);border-radius:var(--ig-radius-lg);background:var(--ig-surface)}.dir-filter-row{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.dir-country-label{font-family:var(--ig-font-sans);font-size:.8125rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--ig-text-muted)}.dir-country-select{padding:.5rem .75rem;border:1px solid var(--ig-border);border-radius:var(--ig-radius-md);background:var(--ig-bg);font-family:var(--ig-font-sans);font-size:.875rem;color:var(--ig-text);min-width:11rem;cursor:pointer}.dir-country-select:focus{outline:none;border-color:var(--ig-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--ig-accent) 20%,transparent)}.dir-badges-filter{border:none;padding:0;margin:0}.dir-badges-legend{font-family:var(--ig-font-sans);font-size:.8125rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--ig-text-muted);padding:0;margin-bottom:.5rem}.dir-badge-chips{display:flex;flex-wrap:wrap;gap:.375rem}.dir-chip{padding:.35rem .75rem;border:1px solid var(--ig-border);border-radius:var(--ig-radius-pill);background:transparent;font-family:var(--ig-font-sans);font-size:.75rem;font-weight:500;color:var(--ig-text-muted);cursor:pointer;transition:border-color .15s ease,color .15s ease,background .15s ease}.dir-chip:hover{border-color:var(--ig-accent);color:var(--ig-text)}.dir-chip--active{background:var(--ig-accent);border-color:var(--ig-accent);color:#fff}.dir-loading{display:flex;align-items:center;justify-content:center;min-height:30vh}.dir-spinner{width:2rem;height:2rem;border:2px solid var(--ig-border);border-top-color:var(--ig-accent);border-radius:50%;animation:igSpin .7s linear infinite}@media(prefers-reduced-motion:reduce){.dir-spinner{animation:none;opacity:.4}}.dir-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}@media(max-width:900px){.dir-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.dir-grid{grid-template-columns:1fr}}.dir-card{display:flex;flex-direction:column;gap:.625rem;padding:1.125rem;background:var(--ig-surface);border:1px solid var(--ig-border);border-radius:var(--ig-radius-lg);text-decoration:none;color:inherit;box-shadow:var(--ig-shadow-card-rest);transition:border-color .15s ease,box-shadow .2s ease,transform .2s ease}.dir-card:hover{border-color:var(--ig-accent);box-shadow:var(--ig-shadow-card-hover);transform:translateY(-1px);text-decoration:none}.dir-card__head{display:flex;flex-direction:column;gap:.125rem}.dir-card__name{font-family:var(--ig-font-display);font-size:1.25rem;font-weight:320;letter-spacing:-.01em;color:var(--ig-text);margin:0;line-height:1.2}.dir-card__loc{font-family:var(--ig-font-sans);font-size:.8125rem;color:var(--ig-text-muted);margin:0}.dir-card__rating{display:flex;align-items:center}.dir-rating{display:inline-flex;align-items:center;gap:.5rem}.dir-rating--empty{font-family:var(--ig-font-sans);font-size:.8125rem;color:var(--ig-text-faint);font-style:italic}.dir-stars{display:inline-flex;align-items:center;gap:1px}.dir-star{fill:var(--ig-border-strong)}.dir-star--filled{fill:var(--ig-gold)}.dir-rating__value{font-family:var(--ig-font-sans);font-size:.8125rem;color:var(--ig-text-muted)}.dir-card__badges{display:flex;flex-wrap:wrap;gap:.25rem}.dir-pill{display:inline-block;padding:.15rem .5rem;background:var(--ig-bg-alt);border:1px solid var(--ig-border);border-radius:var(--ig-radius-sm);font-family:var(--ig-font-sans);font-size:.6875rem;font-weight:500;color:var(--ig-text-muted);white-space:nowrap}.dir-pill--more{font-style:italic;border-style:dashed}.dir-card__tagline{font-family:var(--ig-font-body);font-size:.875rem;color:var(--ig-text);margin:0;line-height:1.45;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.dir-card__tagline--empty{color:var(--ig-text-faint);font-style:italic}.dir-card__foot{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-top:auto;padding-top:.5rem;border-top:1px solid var(--ig-border)}.dir-card__techs{font-family:var(--ig-font-sans);font-size:.75rem;color:var(--ig-text-muted)}.dir-card__cta{font-family:var(--ig-font-sans);font-size:.8125rem;font-weight:600;color:var(--ig-accent)}.dir-no-schools__cta{color:var(--ig-accent);text-decoration:none;font-weight:600;margin-left:.25rem}.dir-no-schools__cta:hover{text-decoration:underline}
