:root { --navy:#0b3557; --deep:#06283f; --teal:#0d9496; --teal-dark:#087476; --aqua:#ddf5f2; --gold:#f4bb49; --cream:#fbfaf6; --white:#fff; --ink:#183345; --muted:#5e7482; --line:#d4e3e5; --shadow:0 22px 62px rgba(7,45,70,.13); }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; color:var(--ink); background:var(--cream); font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; line-height:1.55; }
button,input,select { font:inherit; }
button,a { -webkit-tap-highlight-color:transparent; }
button { color:inherit; }
a { color:inherit; }
.skip-link { position:fixed; top:8px; left:8px; z-index:1000; padding:10px 14px; color:#fff; border-radius:10px; background:var(--navy); transform:translateY(-150%); }
.skip-link:focus { transform:translateY(0); }
.site-header { position:sticky; top:0; z-index:100; display:flex; min-height:78px; align-items:center; justify-content:space-between; gap:24px; padding:12px clamp(20px,5vw,72px); border-bottom:1px solid rgba(11,53,87,.1); background:rgba(251,250,246,.95); backdrop-filter:blur(16px); }
.brand { display:inline-flex; align-items:center; gap:11px; text-decoration:none; }
.brand img { display:block; }
.brand > span { display:grid; }
.brand strong { color:var(--navy); font-size:1.1rem; line-height:1.15; }
.brand small { color:var(--teal-dark); font-size:.65rem; font-weight:900; letter-spacing:.1em; text-transform:uppercase; }
.site-header nav { display:flex; align-items:center; gap:5px; }
.site-header nav a { padding:10px 11px; color:#28475d; border-radius:10px; font-size:.82rem; font-weight:760; text-decoration:none; }
.site-header nav a:hover { color:var(--teal-dark); background:#edf7f5; }
.site-header nav .home-link { padding:11px 16px; margin-left:7px; color:#fff; border-radius:999px; background:var(--navy); }

.hero { position:relative; display:grid; min-height:calc(100vh - 78px); grid-template-columns:minmax(0,.95fr) minmax(480px,1.05fr); align-items:center; gap:clamp(42px,7vw,110px); padding:clamp(70px,8vw,120px) clamp(24px,7vw,112px); overflow:hidden; background:radial-gradient(circle at 8% 18%,rgba(59,217,202,.2),transparent 30%),radial-gradient(circle at 96% 90%,rgba(244,187,73,.17),transparent 28%),var(--cream); }
.hero::after { position:absolute; right:-180px; bottom:-230px; width:560px; height:560px; border:1px solid rgba(13,148,150,.12); border-radius:50%; box-shadow:0 0 0 75px rgba(13,148,150,.04),0 0 0 150px rgba(13,148,150,.02); content:""; }
.hero-copy,.core-map { position:relative; z-index:2; }
.eyebrow { display:flex; align-items:center; gap:10px; margin:0 0 14px; color:var(--teal-dark); font-size:.73rem; font-weight:900; letter-spacing:.14em; text-transform:uppercase; }
.eyebrow > span { width:34px; height:2px; background:currentColor; }
.hero h1 { margin:0; color:var(--navy); font-size:clamp(3.4rem,6.4vw,7rem); letter-spacing:-.065em; line-height:.94; }
.hero h1 em { color:var(--teal); font-style:normal; }
.hero-copy > p:not(.eyebrow) { max-width:720px; margin:27px 0 0; color:#496575; font-size:clamp(1.03rem,1.4vw,1.3rem); line-height:1.68; }
.hero-actions { display:flex; flex-wrap:wrap; gap:9px; margin-top:28px; }
.button { display:inline-flex; min-height:52px; align-items:center; justify-content:center; gap:10px; padding:13px 19px; border:1px solid transparent; border-radius:14px; font-size:.83rem; font-weight:900; text-decoration:none; transition:transform .18s ease; }
.button:hover { transform:translateY(-2px); }
.button.primary { color:#fff; background:var(--teal); box-shadow:0 13px 30px rgba(13,148,150,.2); }
.button.secondary { color:var(--navy); border-color:#c9dade; background:#fff; }
.hero-copy > ul { display:flex; flex-wrap:wrap; gap:8px; padding:0; margin:25px 0 0; list-style:none; }
.hero-copy > ul li { padding:7px 10px; color:#496474; border:1px solid var(--line); border-radius:999px; background:rgba(255,255,255,.7); font-size:.68rem; font-weight:800; }
.hero-copy > ul li::before { margin-right:6px; color:var(--teal); content:"✓"; }

.core-map { width:min(100%,680px); aspect-ratio:1; justify-self:center; }
.map-orbit { position:absolute; inset:9%; border:1px dashed rgba(13,148,150,.28); border-radius:50%; animation:orbit-turn 36s linear infinite; }
.orbit-two { inset:22%; border-style:solid; border-color:rgba(244,187,73,.24); animation-direction:reverse; animation-duration:26s; }
.map-core { position:absolute; top:50%; left:50%; display:grid; width:46%; aspect-ratio:1.08; place-content:center; padding:28px; color:#fff; border:9px solid rgba(255,255,255,.92); border-radius:34px; background:linear-gradient(145deg,var(--navy),#0b6371); box-shadow:0 30px 80px rgba(7,45,70,.25); transform:translate(-50%,-50%) rotate(-2deg); }
.map-core > span { display:grid; width:48px; height:48px; place-items:center; color:var(--navy); border-radius:14px; background:var(--gold); font-weight:950; }
.map-core small { margin-top:17px; color:#8ce0d8; font-size:.61rem; font-weight:900; letter-spacing:.12em; }
.map-core strong { margin-top:3px; font-size:clamp(1rem,1.5vw,1.3rem); }
.map-core p { margin:8px 0 0; color:rgba(255,255,255,.68); font-size:.72rem; }
.map-node { position:absolute; display:grid; min-width:115px; min-height:46px; place-items:center; padding:9px 13px; color:var(--navy); border:1px solid var(--line); border-radius:14px; background:#fff; box-shadow:0 12px 30px rgba(7,45,70,.1); font-size:.7rem; font-weight:900; animation:node-float 5s ease-in-out infinite; }
.node-stofa { top:6%; left:39%; }.node-stodvar { top:24%; right:0; animation-delay:-1s; }.node-thema { right:7%; bottom:19%; animation-delay:-2s; }.node-adlogun { bottom:4%; left:39%; animation-delay:-3s; }.node-forfoll { bottom:20%; left:1%; animation-delay:-4s; }.node-dagur { top:24%; left:0; animation-delay:-2.5s; }
@keyframes orbit-turn { to { transform:rotate(360deg); } }
@keyframes node-float { 50% { transform:translateY(-7px); } }

.builder-section { padding:clamp(76px,8vw,120px) clamp(20px,6vw,96px); background:#fff; }
.section-heading { display:grid; max-width:1500px; grid-template-columns:minmax(0,1fr) minmax(300px,520px); align-items:end; gap:40px; margin:0 auto 40px; }
.section-heading h2 { margin:0; color:var(--navy); font-size:clamp(2.5rem,4.8vw,5.2rem); letter-spacing:-.055em; line-height:.98; }
.section-heading > p { margin:0; color:var(--muted); font-size:1rem; line-height:1.7; }
.section-heading.light h2 { color:#fff; }.section-heading.light > p { color:rgba(255,255,255,.7); }.section-heading.light .eyebrow { color:#80ddd5; }
.builder-layout { display:grid; max-width:1500px; grid-template-columns:minmax(350px,.7fr) minmax(620px,1.3fr); align-items:start; gap:18px; margin:0 auto; }
.builder-form { display:grid; gap:17px; padding:clamp(22px,3vw,34px); border:1px solid var(--line); border-radius:25px; background:var(--cream); box-shadow:0 12px 34px rgba(7,45,70,.08); }
.builder-form > header { display:flex; align-items:center; gap:12px; padding-bottom:18px; border-bottom:1px solid var(--line); }
.builder-form > header > span { display:grid; width:45px; height:45px; place-items:center; color:var(--navy); border-radius:13px; background:var(--gold); font-size:.75rem; font-weight:950; }
.builder-form > header div { display:grid; }.builder-form header small { color:var(--teal-dark); font-size:.63rem; font-weight:900; letter-spacing:.1em; }.builder-form h3 { margin:1px 0 0; color:var(--navy); font-size:1.3rem; }
.field-row { display:grid; grid-template-columns:1fr 1fr; gap:9px; }
.builder-form label,.builder-form fieldset { min-width:0; }
.field-row label,.full-field { display:grid; gap:6px; }
.builder-form label > span,.builder-form legend { color:#3d5b6d; font-size:.76rem; font-weight:850; }
.builder-form select,.builder-form input[type="text"] { width:100%; min-height:49px; padding:0 13px; color:var(--navy); border:1px solid #c6dade; border-radius:12px; background:#fff; }
.builder-form fieldset { display:grid; gap:8px; padding:0; margin:0; border:0; }.builder-form legend small { color:#7b8f9a; font-weight:600; }
.duration-choice > div { display:grid; grid-template-columns:repeat(4,1fr); gap:7px; }.duration-choice label,.needs-choice label,.site-options label { cursor:pointer; }.duration-choice input,.needs-choice input,.site-options input { position:absolute; opacity:0; pointer-events:none; }
.duration-choice label span { display:grid; min-height:44px; place-items:center; color:#456273; border:1px solid #c6dade; border-radius:11px; background:#fff; font-size:.75rem; font-weight:900; }.duration-choice input:checked + span { color:var(--navy); border-color:var(--gold); background:#fff3d9; box-shadow:inset 0 0 0 1px var(--gold); }
.needs-choice > div { display:grid; grid-template-columns:1fr 1fr; gap:7px; }.needs-choice label span { display:flex; min-height:43px; align-items:center; gap:8px; padding:8px 10px; color:#496575; border:1px solid #cbdde0; border-radius:11px; background:#fff; font-size:.69rem; font-weight:800; }.needs-choice label span::before { display:grid; width:19px; height:19px; flex:0 0 auto; place-items:center; border:1px solid #a9c5c9; border-radius:6px; content:""; }.needs-choice input:checked + span { color:var(--navy); border-color:var(--teal); background:#eaf8f6; }.needs-choice input:checked + span::before { color:#fff; border-color:var(--teal); background:var(--teal); content:"✓"; font-size:.62rem; }
.visually-hidden { position:absolute!important; width:1px!important; height:1px!important; padding:0!important; margin:-1px!important; overflow:hidden!important; clip:rect(0,0,0,0)!important; white-space:nowrap!important; border:0!important; }.site-picker { padding-top:3px!important; }.site-picker > p { margin:0; color:var(--muted); font-size:.65rem; }.site-tools { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:6px; }.site-tools input { min-height:43px!important; font-size:.7rem; }.site-tools button { padding:8px 10px; color:var(--navy); border:1px solid #c6dade; border-radius:11px; background:#fff; font-size:.63rem; font-weight:850; cursor:pointer; }.site-tools button[aria-pressed="true"] { color:#fff; border-color:var(--teal); background:var(--teal); }.site-options { display:grid; max-height:420px; gap:6px; overflow:auto; overscroll-behavior:contain; }.site-options label > span { display:grid; min-height:58px; grid-template-columns:35px minmax(0,1fr) 22px; align-items:center; gap:9px; padding:8px 10px; border:1px solid #cadcdf; border-radius:12px; background:#fff; }.site-options label b { display:grid; width:34px; height:34px; place-items:center; color:var(--teal-dark); border-radius:10px; background:var(--aqua); font-size:.62rem; }.site-options label div { display:grid; min-width:0; }.site-options label strong { overflow:hidden; color:var(--navy); font-size:.72rem; text-overflow:ellipsis; white-space:nowrap; }.site-options label small { overflow:hidden; color:var(--muted); font-size:.59rem; text-overflow:ellipsis; white-space:nowrap; }.site-options label i { display:grid; width:20px; height:20px; place-items:center; color:transparent; border:1px solid #bad0d3; border-radius:50%; font-style:normal; font-size:.6rem; }.site-options input:checked + span { border-color:var(--teal); background:#edf9f7; box-shadow:inset 3px 0 0 var(--teal); }.site-options input:checked + span i { color:#fff; border-color:var(--teal); background:var(--teal); }
.build-button { min-height:53px; color:#fff; border:0; border-radius:13px; background:var(--teal); box-shadow:0 13px 28px rgba(13,148,150,.19); font-size:.84rem; font-weight:950; cursor:pointer; }.build-button:hover { background:var(--teal-dark); }.privacy-line { margin:-5px 0 0!important; color:var(--muted)!important; font-size:.66rem!important; text-align:center; }.privacy-line span { color:var(--teal); }

.card-column { display:grid; gap:12px; min-width:0; }
.card-toolbar { display:flex; min-height:70px; align-items:center; justify-content:space-between; gap:13px; padding:11px 14px; color:#fff; border-radius:18px 18px 0 0; background:var(--navy); }.card-toolbar > div { display:flex; align-items:center; gap:9px; }.card-toolbar > div:first-child > span { display:grid; width:38px; height:38px; place-items:center; color:var(--navy); border-radius:11px; background:var(--gold); font-weight:950; }.card-toolbar > div:first-child div { display:grid; }.card-toolbar small { color:#8fe1d9; font-size:.58rem; font-weight:900; letter-spacing:.1em; }.card-toolbar strong { font-size:.78rem; }.card-toolbar button { min-height:38px; padding:7px 10px; color:#fff; border:1px solid rgba(255,255,255,.22); border-radius:10px; background:rgba(255,255,255,.08); font-size:.67rem; font-weight:900; cursor:pointer; }.card-toolbar button.accent { color:var(--navy); border-color:var(--gold); background:var(--gold); }
.teaching-card { padding:clamp(22px,3vw,36px); border:1px solid var(--line); border-top:0; border-radius:0 0 23px 23px; background:#f8fbfa; box-shadow:var(--shadow); }.teaching-card > header { display:grid; grid-template-columns:52px 1fr; align-items:center; gap:13px; padding-bottom:20px; border-bottom:1px solid var(--line); }.teaching-card > header > span { display:grid; width:50px; height:50px; place-items:center; color:var(--teal-dark); border-radius:14px; background:var(--aqua); font-size:.67rem; font-weight:950; }.teaching-card > header p { margin:0; color:var(--teal-dark); font-size:.64rem; font-weight:900; letter-spacing:.08em; text-transform:uppercase; }.teaching-card h3 { margin:4px 0 0; color:var(--navy); font-size:clamp(1.7rem,3vw,2.8rem); letter-spacing:-.04em; line-height:1.08; }
.card-goal,.card-opening,.card-exit { padding:15px 17px; margin-top:13px; border-radius:13px; background:#fff; }.card-goal { border-left:4px solid var(--gold); }.card-opening { border-left:4px solid var(--teal); }.card-exit { color:#fff; background:var(--navy); }.teaching-card small { color:var(--teal-dark); font-size:.59rem; font-weight:950; letter-spacing:.09em; }.card-exit small { color:#8ee1d8; }.teaching-card p { margin:4px 0 0; font-size:.79rem; line-height:1.55; }.card-goal p { color:var(--navy); font-size:.88rem; font-weight:800; }
.card-steps { display:grid; gap:7px; padding:0; margin:13px 0 0; list-style:none; }.card-steps li { display:grid; grid-template-columns:78px minmax(0,1fr); align-items:center; gap:11px; min-height:64px; padding:10px 12px; border:1px solid var(--line); border-radius:12px; background:#fff; }.card-steps li > span { display:grid; align-self:stretch; place-content:center; color:var(--teal-dark); border-right:1px solid var(--line); font-size:.62rem; font-weight:950; }.card-steps strong { display:block; color:var(--navy); font-size:.75rem; }.card-steps p { color:#536d7b; font-size:.69rem; }
.card-outcomes { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:13px; }.card-outcomes article { padding:13px; border:1px solid var(--line); border-radius:12px; background:#fff; }.card-outcomes p { color:#466372; font-size:.7rem; }
.card-support { display:grid; gap:5px; margin-top:10px; }.card-support p { padding:8px 10px; margin:0; color:#3f6371; border-radius:9px; background:var(--aqua); font-size:.65rem; }.card-support p::before { margin-right:7px; color:var(--teal-dark); content:"✓"; font-weight:950; }.card-support details { padding:10px 12px; color:#3f6371; border-radius:10px; background:var(--aqua); font-size:.66rem; }.card-support summary { color:var(--navy); font-weight:900; cursor:pointer; }.card-support ul { display:grid; gap:5px; padding-left:20px; margin:8px 0 0; }
.selected-sites { margin-top:13px; overflow:hidden; border:1px solid var(--line); border-radius:14px; background:#fff; }.selected-sites > header { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:11px 13px; border-bottom:1px solid var(--line); }.selected-sites header div { display:grid; }.selected-sites header span { display:grid; min-width:30px; height:30px; place-items:center; color:#fff; border-radius:9px; background:var(--teal); font-size:.66rem; font-weight:900; }.selected-sites > div { display:grid; grid-template-columns:repeat(3,1fr); }.selected-sites a { display:grid; min-width:0; grid-template-columns:30px minmax(0,1fr) 12px; align-items:center; gap:7px; padding:10px; border-right:1px solid var(--line); text-decoration:none; }.selected-sites a:last-child { border-right:0; }.selected-sites a > span { display:grid; width:29px; height:29px; place-items:center; color:var(--navy); border-radius:8px; background:var(--gold); font-size:.55rem; font-weight:950; }.selected-sites a > b { color:var(--teal-dark); font-size:.7rem; }.selected-sites a div { display:grid; min-width:0; }.selected-sites a strong { overflow:hidden; color:var(--navy); font-size:.64rem; text-overflow:ellipsis; white-space:nowrap; }.selected-sites a small { overflow:hidden; color:var(--muted); font-size:.55rem; text-overflow:ellipsis; white-space:nowrap; }
.teaching-card.is-editing [data-edit],.teaching-card.is-editing [data-edit-step],.teaching-card.is-editing [data-edit-support] { border-radius:5px; outline:2px solid var(--gold); outline-offset:3px; cursor:text; }.teaching-card [contenteditable="true"]:focus { background:#fff9e9; outline-color:var(--teal); }

.route-panel { padding:18px; border-radius:20px; color:#fff; background:linear-gradient(145deg,var(--deep),#0a5367); box-shadow:var(--shadow); }.route-panel > header { display:flex; align-items:end; justify-content:space-between; gap:14px; padding:2px 3px 14px; }.route-panel header small { color:#8ee1d8; font-size:.59rem; font-weight:900; letter-spacing:.1em; }.route-panel h3 { margin:2px 0 0; font-size:1.2rem; }.route-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:7px; }.route-grid button { display:grid; min-height:96px; grid-template-columns:34px 1fr; align-content:center; align-items:center; gap:2px 8px; padding:10px; color:#fff; border:1px solid rgba(255,255,255,.14); border-radius:13px; background:rgba(255,255,255,.07); text-align:left; cursor:pointer; }.route-grid button:hover { border-color:var(--gold); background:rgba(255,255,255,.12); }.route-grid button > span { grid-row:1 / 3; display:grid; width:33px; height:33px; place-items:center; color:var(--navy); border-radius:10px; background:var(--gold); font-size:.67rem; font-weight:950; }.route-grid strong { font-size:.7rem; }.route-grid small { color:rgba(255,255,255,.59); font-size:.57rem; }.route-panel footer { display:grid; grid-template-columns:1fr 1fr; gap:7px; margin-top:8px; }.route-panel footer button { min-height:44px; color:#fff; border:1px solid rgba(255,255,255,.2); border-radius:11px; background:transparent; font-size:.68rem; font-weight:900; cursor:pointer; }.route-panel footer button:first-child { color:var(--navy); border-color:var(--gold); background:var(--gold); }

.library-section { min-height:600px; padding:clamp(76px,8vw,120px) clamp(20px,7vw,112px); background:var(--deep); }.library-list { display:grid; max-width:1500px; grid-template-columns:repeat(3,1fr); gap:10px; margin:0 auto; }.library-card { padding:18px; color:var(--navy); border-radius:17px; background:#fff; box-shadow:0 13px 36px rgba(0,0,0,.14); }.library-card > header { display:flex; align-items:start; gap:10px; }.library-card header > span { display:grid; width:38px; height:38px; flex:0 0 auto; place-items:center; color:var(--teal-dark); border-radius:11px; background:var(--aqua); font-size:.61rem; font-weight:950; }.library-card header div { min-width:0; }.library-card header small { color:var(--teal-dark); font-size:.58rem; font-weight:900; letter-spacing:.06em; }.library-card h3 { margin:3px 0; font-size:1.05rem; line-height:1.25; }.library-card > p { min-height:3.2em; margin:12px 0 0; color:var(--muted); font-size:.68rem; }.library-tags { display:flex; flex-wrap:wrap; gap:5px; margin-top:12px; }.library-tags span { padding:5px 7px; color:#476472; border-radius:999px; background:#edf6f5; font-size:.55rem; font-weight:800; }.library-card footer { display:grid; grid-template-columns:1fr 1fr auto; gap:5px; margin-top:16px; }.library-card button { min-height:39px; padding:7px 8px; color:var(--navy); border:1px solid var(--line); border-radius:9px; background:#fff; font-size:.63rem; font-weight:850; cursor:pointer; }.library-card button[data-library="open"] { color:#fff; border-color:var(--teal); background:var(--teal); }.library-card button[data-library="delete"] { color:#9b4a48; }.library-empty { display:grid; max-width:760px; min-height:260px; place-content:center; justify-items:center; padding:30px; margin:0 auto; color:rgba(255,255,255,.7); border:1px dashed rgba(255,255,255,.25); border-radius:22px; text-align:center; }.library-empty span { display:grid; width:50px; height:50px; place-items:center; color:var(--navy); border-radius:15px; background:var(--gold); font-size:1.3rem; }.library-empty h3 { margin:14px 0 4px; color:#fff; }.library-empty p { margin:0; font-size:.8rem; }

.student-dialog { width:100vw; max-width:none; height:100vh; max-height:none; padding:0; border:0; background:var(--deep); }.student-dialog::backdrop { background:rgba(2,18,30,.86); }.student-shell { min-height:100%; color:#fff; background:radial-gradient(circle at 90% 10%,rgba(47,211,196,.2),transparent 28%),var(--deep); }.student-shell > header { display:flex; min-height:82px; align-items:center; justify-content:space-between; padding:15px clamp(22px,5vw,70px); border-bottom:1px solid rgba(255,255,255,.12); }.student-shell > header div { display:flex; align-items:center; gap:10px; }.student-shell > header div span { display:grid; width:42px; height:42px; place-items:center; color:var(--navy); border-radius:12px; background:var(--gold); font-weight:950; }.student-shell > header button { display:grid; width:44px; height:44px; place-items:center; color:#fff; border:1px solid rgba(255,255,255,.25); border-radius:50%; background:transparent; font-size:1.5rem; cursor:pointer; }.student-shell > main { max-width:1320px; padding:clamp(46px,7vw,95px) clamp(22px,6vw,90px); margin:0 auto; }.student-shell > main > p { margin:0 0 8px; color:#8ee1d8; font-size:.73rem; font-weight:900; letter-spacing:.12em; }.student-shell h2 { margin:0 0 26px; font-size:clamp(2.8rem,6vw,6.7rem); letter-spacing:-.06em; line-height:.96; }.student-shell main > section { padding:19px 21px; color:var(--navy); border-radius:15px; background:var(--gold); }.student-shell main > section small,.student-bottom small { font-size:.64rem; font-weight:950; letter-spacing:.1em; }.student-shell main > section p { margin:4px 0 0; font-size:clamp(1rem,1.8vw,1.35rem); font-weight:850; }.student-shell ol { display:grid; grid-template-columns:repeat(3,1fr); gap:9px; padding:0; margin:15px 0; list-style:none; }.student-shell li { min-height:150px; padding:18px; border:1px solid rgba(255,255,255,.14); border-radius:15px; background:rgba(255,255,255,.07); }.student-shell li span { color:var(--gold); font-size:.67rem; font-weight:950; }.student-shell li strong { display:block; margin-top:10px; font-size:1.05rem; }.student-shell li p { margin:6px 0 0; color:rgba(255,255,255,.67); font-size:.78rem; }.student-bottom { display:grid; grid-template-columns:1fr 1fr; gap:9px; }.student-bottom article { padding:17px; color:var(--navy); border-radius:14px; background:#fff; }.student-bottom small { color:var(--teal-dark); }.student-bottom p { margin:5px 0 0; font-size:.8rem; }
.toast { position:fixed; right:22px; bottom:22px; z-index:300; max-width:360px; padding:12px 15px; color:#fff; border-radius:12px; background:var(--navy); box-shadow:var(--shadow); font-size:.74rem; font-weight:800; }.toast[hidden] { display:none; }
.site-footer { display:flex; justify-content:space-between; gap:20px; padding:22px clamp(20px,7vw,112px); color:#667c88; background:var(--cream); font-size:.7rem; }
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible { outline:3px solid rgba(244,187,73,.85); outline-offset:3px; }

@media (max-width:1100px) { .hero { grid-template-columns:1fr; }.core-map { width:min(680px,90vw); }.builder-layout { grid-template-columns:1fr; }.builder-form { width:min(720px,100%); justify-self:center; }.library-list { grid-template-columns:repeat(2,1fr); } }
@media (max-width:760px) { .site-header { min-height:70px; padding:9px 15px; }.site-header nav a:not(.home-link) { display:none; }.site-header nav .home-link { padding:9px 11px; font-size:.7rem; }.brand img { width:43px; height:43px; }.hero { min-height:auto; gap:40px; padding:58px 18px 75px; }.hero h1 { font-size:clamp(3rem,15vw,5rem); }.core-map { width:100%; }.map-node { min-width:90px; min-height:39px; padding:7px; font-size:.6rem; }.map-core { width:50%; padding:18px; border-width:6px; border-radius:24px; }.map-core p { display:none; }.builder-section,.library-section { padding:68px 15px; }.section-heading { grid-template-columns:1fr; gap:17px; }.section-heading h2 { font-size:clamp(2.4rem,12vw,3.7rem); }.field-row { grid-template-columns:1fr; }.needs-choice > div { grid-template-columns:1fr; }.duration-choice > div { grid-template-columns:repeat(2,1fr); }.card-toolbar { align-items:flex-start; flex-direction:column; }.card-toolbar > div:last-child { width:100%; }.card-toolbar button { flex:1; }.teaching-card { padding:18px; }.card-steps li { grid-template-columns:62px 1fr; }.card-outcomes { grid-template-columns:1fr; }.selected-sites > div { grid-template-columns:1fr; }.selected-sites a { border-right:0; border-bottom:1px solid var(--line); }.selected-sites a:last-child { border-bottom:0; }.route-grid { grid-template-columns:1fr 1fr; }.route-panel footer { grid-template-columns:1fr; }.library-list { grid-template-columns:1fr; }.student-shell ol,.student-bottom { grid-template-columns:1fr; }.site-footer { align-items:flex-start; flex-direction:column; } }
@media (max-width:420px) { .route-grid { grid-template-columns:1fr; }.core-map { transform:scale(.95); }.node-stofa { top:3%; }.node-adlogun { bottom:1%; } }
@media (max-width:760px) { .site-tools { grid-template-columns:1fr; } }
@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } *,*::before,*::after { animation:none!important; transition:none!important; scroll-behavior:auto!important; } }

@page { size:A4 portrait; margin:12mm; }
@media print { body.print-card > .site-header,body.print-card > .site-footer,body.print-card .hero,body.print-card .library-section,body.print-card .section-heading,body.print-card .builder-form,body.print-card .card-toolbar,body.print-card .route-panel { display:none!important; } body.print-card .builder-section { padding:0; } body.print-card .builder-layout,body.print-card .card-column { display:block!important; max-width:none; } body.print-card .teaching-card { display:block!important; width:100%; padding:8mm; border:0; box-shadow:none; } body.print-card .teaching-card h3 { font-size:24pt; } body.print-card .selected-sites { break-inside:avoid; } }
