/* South Park design system (source: yyp_portal/assets/southpark.css). Palette sampled from the show:
   sky #92d6e6, pine #306545, snow #f8f8f8, Stan #4e61a2/#d5203f, Kyle #55c421/#fd5e09, Cartman #d72043/#4fb6bf/#fee505,
   Kenny #ff7a1f, Wendy #a95cc0/#ff81ea, Butters #5cc9b5/#f3e33c, Randy #3fa9a8.
   The gateway links this file AFTER each page's own <style>, so it also restyles report pages built with the older
   house CSS; rules aimed at those pages are prefixed with `html` to outrank older rules of the same shape.
   Night: southpark-night.css only changes the variables below. */
:root{
  --sky:#92d6e6;--sky-2:#c9eef6;--cloud:#ffffff;
  --page:#eef6f9;--card:#ffffff;--card-2:#f3f9fb;--card-3:#e6f2f6;
  --ink:#1d1d22;--ink-2:#3a3e48;--ink-3:#687083;--line:#1d1d22;--rule:#d5e2e7;
  --pine:#306545;--snow:#f8f8f8;
  --stan:#4e61a2;--stan-red:#d5203f;--kyle:#55c421;--kyle-orange:#fd5e09;--cartman:#d72043;--cartman-cyan:#4fb6bf;--yellow:#fee505;
  --kenny:#ff7a1f;--wendy:#a95cc0;--pink:#ff81ea;--butters:#5cc9b5;--butters-hair:#f3e33c;--randy:#3fa9a8;--wood:#b98d68;--wood-dark:#3a2418;
  --link:#2f58b8;--note:#fff4a6;
  --accent:var(--sky);--accent-on:var(--ink);--cast:none;
  --display:"SP Rye","Rye",Georgia,serif;
  --sans:"SP Nunito","Nunito","Segoe UI",system-ui,sans-serif;
  --mono:"SP Plex Mono",ui-monospace,Consolas,monospace;
  --pop:4px 4px 0 var(--line);--pop-sm:2px 2px 0 var(--line);--pop-lg:6px 6px 0 var(--line);
  --scene:url(/assets/sp-scene.svg);
  --clouds:url(/assets/sp-cloud.svg) 7% 30px/150px auto no-repeat,url(/assets/sp-cloud.svg) 64% 70px/112px auto no-repeat;
  --section-name:none;
  --sky-fill:linear-gradient(180deg,var(--sky-2) 0%,var(--sky) 62%);
}
/* each section wears its character (the active top-bar item tells which section a page belongs to) */
body:has(#sp-bar [data-s=home][aria-current]){--accent:var(--sky)}
body:has(#sp-bar [data-s=study][aria-current]){--section-name:"Study";--accent:var(--stan);--accent-on:#fff;--cast:url(/assets/sp-stan.webp)}
body:has(#sp-bar [data-s=schools][aria-current]){--section-name:"Schools";--accent:var(--pink);--cast:url(/assets/sp-mackey.webp)}
body:has(#sp-bar [data-s=travel][aria-current]){--section-name:"Travel";--accent:var(--kenny);--cast:url(/assets/sp-kenny.webp)}
body:has(#sp-bar [data-s=auctions][aria-current]){--section-name:"Auctions";--accent:var(--cartman);--accent-on:#fff;--cast:url(/assets/sp-timmy.webp)}
body:has(#sp-bar [data-s=work][aria-current]){--section-name:"Work";--accent:var(--randy);--cast:url(/assets/sp-randy.webp)}
body:has(#sp-bar [data-s=chemistry][aria-current]){--section-name:"Chemistry";--accent:var(--kyle);--cast:url(/assets/sp-kyle.webp)}
body:has(#sp-bar [data-s=ib][aria-current]){--section-name:"IB";--accent:var(--yellow);--cast:url(/assets/sp-cartman.webp)}
body:has(#sp-bar .spb-acct [aria-current]){--section-name:"Account";--accent:var(--pink);--cast:url(/assets/sp-stan.webp)}

/* ---------- base ---------- */
html{background:var(--page);-webkit-text-size-adjust:100%}
html body{margin:0;color:var(--ink);font:500 16.5px/1.62 var(--sans);-webkit-font-smoothing:antialiased;
  background:var(--page) radial-gradient(circle at 12px 12px,rgba(146,214,230,.28) 0 2px,transparent 2.6px) 0 0/46px 46px}
html body *{box-sizing:border-box}
::selection{background:var(--yellow);color:#1d1d22}
:focus-visible{outline:3px solid var(--kenny);outline-offset:3px}
.sp-skip{position:fixed;left:14px;top:-60px;z-index:2147483647;background:var(--card);color:var(--ink);padding:10px 14px;border:3px solid var(--line);border-radius:12px;font:800 14px var(--sans)}
.sp-skip:focus{top:calc(var(--spb-h,64px) + 10px)}
[hidden]{display:none!important}
@keyframes sp-rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes sp-hop{0%,100%{transform:translateY(0)}40%{transform:translateY(-10px) rotate(-2deg)}70%{transform:translateY(0) rotate(1deg)}}
@keyframes sp-drift{from{transform:translateX(0)}to{transform:translateX(60px)}}

/* ---------- scene hero (landing pages, account, 404) ---------- */
.sp-hero{position:relative;overflow:hidden;border-bottom:3px solid var(--line);
  background:var(--scene) 50% 100%/auto 250px repeat-x,var(--sky-fill)}
.sp-hero::before,.sp-hero::after{content:"";position:absolute;z-index:0;height:46px;border-radius:40px;background:var(--cloud);opacity:.95;
  box-shadow:34px -18px 0 6px var(--cloud),74px 0 0 -2px var(--cloud);animation:sp-drift 40s ease-in-out infinite alternate}
.sp-hero::before{width:120px;top:42px;left:8%}
.sp-hero::after{width:90px;top:96px;left:62%;transform:scale(.8);animation-duration:55s}
.sp-hero-in{position:relative;z-index:2;max-width:1240px;margin:0 auto;padding:54px 44px 262px}
.sp-hero .sp-eyebrow{display:inline-block;padding:5px 12px;border:2px solid var(--line);border-radius:999px;background:var(--card);box-shadow:var(--pop-sm);
  font:900 12px/1.2 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--ink)}
.sp-display{margin:18px 0 0;max-width:780px;font:400 clamp(44px,6.2vw,86px)/1.02 var(--display);letter-spacing:.005em;color:var(--ink)}
.sp-display em{font-style:normal;color:var(--cartman)}
.sp-lede{max-width:600px;margin:20px 0 0;padding:14px 18px;border:3px solid var(--line);border-radius:18px;background:var(--card);box-shadow:var(--pop);
  font-size:17.5px;font-weight:600;color:var(--ink-2)}
.sp-cast{position:absolute;z-index:3;right:max(24px,calc(50% - 600px));bottom:14px;display:flex;align-items:flex-end;gap:2px;pointer-events:none}
.sp-cast img{display:block;height:228px;width:auto;filter:drop-shadow(0 6px 0 rgba(0,0,0,.12));transform-origin:50% 100%;
  animation:sp-rise .7s cubic-bezier(.2,.8,.3,1.2) both}
.sp-cast img:nth-child(2){animation-delay:.08s}.sp-cast img:nth-child(3){animation-delay:.16s}.sp-cast img:nth-child(4){animation-delay:.24s}
.sp-cast img.sp-tall{height:270px}
.sp-cast img.sp-small{height:170px}
.sp-hero--slim .sp-hero-in{padding-bottom:230px}

/* ---------- landing pages (yyp_portal/build.py) ---------- */
.sp-main{max-width:1240px;margin:0 auto;padding:46px 44px 84px}
.sp-main>*{animation:sp-rise .6s cubic-bezier(.2,.7,.2,1) both}
.sp-main>*:nth-child(2){animation-delay:.06s}.sp-main>*:nth-child(3){animation-delay:.12s}.sp-main>*:nth-child(n+4){animation-delay:.18s}
.sp-head{display:flex;align-items:baseline;justify-content:space-between;gap:24px;margin:56px 0 20px}
.sp-main>.sp-head:first-child{margin-top:0}
.sp-head h2{margin:0;font:400 34px/1.1 var(--display);color:var(--ink)}
.sp-head a{font:900 13px var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--link);text-decoration:none}
.sp-head a:hover{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:4px}

.sp-btn{display:inline-flex;align-items:center;gap:12px;padding:12px 20px;border:3px solid var(--line);border-radius:14px;background:var(--yellow);color:#1d1d22;
  font:900 15px/1.2 var(--sans);text-decoration:none;cursor:pointer;box-shadow:var(--pop);transition:transform .12s,box-shadow .12s}
.sp-btn:hover{transform:translate(-2px,-2px);box-shadow:var(--pop-lg)}
.sp-btn:active{transform:translate(2px,2px);box-shadow:var(--pop-sm)}
.sp-btn .sp-arr{transition:transform .2s}
.sp-btn:hover .sp-arr{transform:translate(2px,-2px)}
.sp-btn.sp-light{background:var(--card)}
.sp-btn.sp-quiet{background:var(--card);box-shadow:var(--pop-sm)}

/* section cards on Home */
.sp-spaces{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
.sp-space{--c:var(--sky);--band:156px;position:relative;display:flex;flex-direction:column;min-height:286px;padding:16px 18px 16px;border:3px solid var(--line);border-radius:22px;
  background:linear-gradient(180deg,color-mix(in srgb,var(--c) 30%,var(--card)) 0 var(--band),var(--line) var(--band) calc(var(--band) + 3px),var(--card) calc(var(--band) + 3px));
  color:var(--ink);text-decoration:none;overflow:hidden;box-shadow:var(--pop);transition:transform .15s,box-shadow .15s}
.sp-space:hover{transform:translate(-3px,-3px);box-shadow:var(--pop-lg)}
.sp-space[data-s=study]{--c:var(--stan)}.sp-space[data-s=schools]{--c:var(--pink)}.sp-space[data-s=travel]{--c:var(--kenny)}
.sp-space[data-s=auctions]{--c:var(--cartman)}.sp-space[data-s=work]{--c:var(--randy)}.sp-space[data-s=chemistry]{--c:var(--kyle)}
.sp-space[data-s=ib]{--c:var(--yellow)}.sp-space[data-s=accounting]{--c:var(--wendy)}
.sp-space .sp-num{position:relative;z-index:2;display:flex;justify-content:space-between;align-items:center;margin-bottom:calc(var(--band) - 28px)}
.sp-space .sp-num span:first-child{display:inline-grid;place-items:center;min-width:34px;height:26px;padding:0 6px;border:2px solid var(--line);border-radius:999px;background:var(--card);font:900 12px var(--sans)}
.sp-space .sp-go{display:inline-grid;place-items:center;width:30px;height:30px;border:2px solid var(--line);border-radius:50%;background:var(--card);font-weight:900;transition:transform .2s}
.sp-space:hover .sp-go{transform:rotate(45deg)}
.sp-space h3{position:relative;z-index:2;margin:0 0 6px;font:400 26px/1.05 var(--display);color:var(--ink)}
.sp-space p{position:relative;z-index:2;flex:1;margin:0;font-size:13.5px;font-weight:600;line-height:1.45;color:var(--ink-2)}
.sp-space .sp-meta{position:relative;z-index:2;margin-top:12px;padding-top:9px;border-top:2px dashed var(--rule);font:800 12px var(--sans);color:var(--ink-3)}
.sp-space-cast{position:absolute;z-index:1;left:50%;top:calc(var(--band) - 128px);height:130px;width:auto;translate:-50% 0;transform-origin:50% 100%;transition:transform .25s}
.sp-space:hover .sp-space-cast{animation:sp-hop .6s ease}
.sp-space-cast.sp-tall{height:150px;top:calc(var(--band) - 148px)}

/* featured trip (Travel) */
.sp-feature{position:relative;display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:26px;padding:34px 34px 200px;border:3px solid var(--line);border-radius:28px;
  overflow:hidden;box-shadow:var(--pop-lg);background:var(--scene) 50% 100%/auto 210px repeat-x,var(--sky-fill)}
.sp-feature>*{position:relative;z-index:2}
.sp-feature .sp-eyebrow{display:inline-block;padding:5px 12px;border:2px solid var(--line);border-radius:999px;background:var(--kenny);font:900 12px var(--sans);letter-spacing:.1em;text-transform:uppercase}
.sp-feature h2{margin:16px 0 14px;font:400 clamp(34px,4.2vw,54px)/1.05 var(--display);color:var(--ink)}
.sp-feature h2 em{font-style:normal;color:var(--cartman)}
.sp-feature p{margin:0;max-width:470px;font-weight:700;color:var(--ink-2)}
.sp-feature-foot{display:flex;align-items:center;flex-wrap:wrap;gap:14px 20px;margin-top:24px}
.sp-feature-foot small{padding:4px 10px;border-radius:999px;background:rgba(255,255,255,.7);font:800 13px var(--sans);color:var(--ink-2)}
.sp-feature-cast{position:absolute;z-index:3;left:38%;bottom:12px;height:190px;pointer-events:none}
.sp-sheet{align-self:start;padding:24px 26px;border:3px solid var(--line);border-radius:18px;background:var(--card);box-shadow:var(--pop);transform:rotate(1.2deg)}
.sp-sheet .sp-date{font:400 26px/1.15 var(--display);color:var(--ink)}
.sp-sheet .sp-eyebrow{margin:8px 0 14px;background:var(--yellow)}
.sp-stop{display:flex;align-items:baseline;gap:12px;padding:7px 0;font-weight:700;color:var(--ink)}
.sp-stop span{flex:none;display:inline-grid;place-items:center;width:26px;height:26px;border:2px solid var(--line);border-radius:50%;background:var(--kenny);font:900 12px var(--sans)}
.sp-sheet .sp-note{margin-top:12px;padding-top:12px;border-top:2px dashed var(--rule);font-size:14px;color:var(--ink-2)}

/* library */
.sp-tools{display:flex;align-items:flex-end;flex-wrap:wrap;gap:14px;margin:0 0 14px}
.sp-search{flex:1;min-width:240px}
.sp-search label{display:block;margin-bottom:7px;font:900 12px var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
.sp-search input{width:100%;padding:13px 16px 13px 46px;border:3px solid var(--line);border-radius:16px;color:var(--ink);font:700 16px var(--sans);box-shadow:var(--pop-sm);
  background:var(--card) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Ccircle cx='7' cy='7' r='4.6' fill='none' stroke='%231d1d22' stroke-width='2'/%3E%3Cpath d='m10.6 10.6 3.4 3.4' stroke='%231d1d22' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") 16px center/17px no-repeat;transition:box-shadow .12s,transform .12s}
.sp-search input::placeholder{color:var(--ink-3);font-weight:600}
.sp-search input:focus{outline:none;transform:translate(-2px,-2px);box-shadow:var(--pop)}
.sp-filters{display:flex;flex-wrap:wrap;gap:7px}
.sp-filter{padding:8px 14px;border:2px solid var(--line);border-radius:999px;background:var(--card);color:var(--ink);font:800 13.5px var(--sans);cursor:pointer;transition:transform .12s,box-shadow .12s,background-color .12s}
.sp-filter:hover{transform:translate(-1px,-1px);box-shadow:var(--pop-sm)}
.sp-filter[aria-pressed=true]{background:var(--yellow);box-shadow:var(--pop-sm)}
.sp-count{margin:0 0 14px;font:800 13px var(--sans);color:var(--ink-3)}
.sp-catalog{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.sp-item{--c:var(--sky);display:flex;flex-direction:column;min-height:226px;padding:18px 20px 14px;border:3px solid var(--line);border-radius:20px;background:var(--card);box-shadow:var(--pop);transition:transform .15s,box-shadow .15s}
.sp-item:hover{transform:translate(-2px,-2px);box-shadow:var(--pop-lg)}
.sp-item[data-category=study]{--c:var(--stan)}.sp-item[data-category=schools]{--c:var(--pink)}.sp-item[data-category=travel]{--c:var(--kenny)}
.sp-item[data-category=auctions]{--c:var(--cartman)}.sp-item[data-category=work]{--c:var(--randy)}.sp-item[data-category=chemistry]{--c:var(--kyle)}.sp-item[data-category=ib]{--c:var(--yellow)}
.sp-item-top{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:16px}
.sp-tag{display:inline-block;padding:3px 10px;border:2px solid var(--line);border-radius:999px;background:var(--c);font:900 11px/1.3 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:#1d1d22}
.sp-item[data-category=study] .sp-tag,.sp-item[data-category=auctions] .sp-tag{color:#fff}
.sp-status{padding:3px 9px;border-radius:999px;background:var(--card-3);font:800 12px/1.3 var(--sans);color:var(--ink-2);white-space:nowrap}
.sp-status.archive{background:#f1e7da;color:#6b4f35}
.sp-item h3{margin:0 0 8px;font:900 21px/1.2 var(--sans);letter-spacing:-.01em}
.sp-item h3 a{color:var(--ink);text-decoration:none;background:linear-gradient(var(--c),var(--c)) 0 100%/0 5px no-repeat;transition:background-size .25s}
.sp-item h3 a:hover{background-size:100% 5px}
.sp-item p{flex:1;margin:0;font-size:14.5px;font-weight:600;line-height:1.5;color:var(--ink-2)}
.sp-item-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:16px;padding-top:10px;border-top:2px dashed var(--rule);font:800 12.5px var(--sans);color:var(--ink-3)}
.sp-item-foot a{color:var(--link);text-decoration:none;white-space:nowrap}
.sp-item-foot a:hover{text-decoration:underline;text-underline-offset:3px}
.sp-empty{padding:26px;border:3px dashed var(--line);border-radius:20px;background:var(--card);font-weight:700;color:var(--ink-2)}

/* study reader panel and course list */
.sp-panel{position:relative;display:flex;justify-content:space-between;align-items:center;gap:30px;padding:30px 230px 30px 32px;border:3px solid var(--line);border-radius:26px;
  background:color-mix(in srgb,var(--stan) 20%,var(--card));box-shadow:var(--pop-lg);overflow:hidden}
.sp-panel .sp-eyebrow{display:inline-block;padding:4px 11px;border:2px solid var(--line);border-radius:999px;background:var(--stan);font:900 12px var(--sans);letter-spacing:.1em;text-transform:uppercase;color:#fff}
.sp-panel h2{margin:12px 0 8px;font:400 36px/1.08 var(--display);color:var(--ink)}
.sp-panel p{margin:0;max-width:600px;font-weight:600;color:var(--ink-2)}
.sp-panel-cast{position:absolute;right:28px;bottom:-6px;height:190px}
.sp-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 18px}
.sp-list a{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:13px 16px;border:2px solid var(--line);border-radius:14px;background:var(--card);
  color:var(--ink);font-weight:800;font-size:15px;text-decoration:none;transition:transform .12s,box-shadow .12s,background-color .12s}
.sp-list a span{display:inline-grid;place-items:center;flex:none;width:28px;height:28px;border-radius:50%;background:var(--card-3);transition:transform .2s,background-color .2s}
.sp-list a:hover{transform:translate(-2px,-2px);box-shadow:var(--pop);background:color-mix(in srgb,var(--stan) 12%,var(--card))}
.sp-list a:hover span{background:var(--stan);color:#fff;transform:rotate(45deg)}
.sp-callout{position:relative;margin:4px 0 26px;padding:16px 20px;border:3px solid var(--line);border-radius:16px;background:var(--note);box-shadow:var(--pop);
  font-weight:700;color:#3a3218;transform:rotate(-.4deg)}

/* footer: a snow bank with pines */
.sp-footer{position:relative;margin-top:30px;padding:120px 44px 34px;border-top:3px solid var(--line);
  background:var(--scene) 50% 0/auto 120px repeat-x,var(--sky-fill);font:800 13px var(--sans);color:var(--ink)}
.sp-footer>*{max-width:1240px}
.sp-footer{display:flex;justify-content:space-between;gap:20px}
.sp-footer span{font:400 18px var(--display)}
.sp-footer a{color:var(--ink);text-decoration:none;padding:4px 12px;border:2px solid var(--line);border-radius:999px;background:var(--card)}
.sp-footer a:hover{background:var(--yellow)}
.sp-footer nav{display:flex;gap:10px}

/* 404 */
.sp-lost .sp-btn{margin-top:26px}

@media (max-width:1050px){
  .sp-main{padding:38px 26px 64px}
  .sp-hero-in{padding:44px 26px 250px}
  .sp-spaces{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sp-catalog{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sp-cast img{height:190px}.sp-cast img.sp-tall{height:220px}
}
@media (max-width:720px){
  .sp-main{padding:28px 16px 52px}
  .sp-hero{background-size:auto 170px,auto}
  .sp-hero-in{padding:28px 18px 186px}
  .sp-display{font-size:40px}
  .sp-lede{font-size:15.5px}
  .sp-cast{right:8px;bottom:8px}
  .sp-cast img{height:104px}.sp-cast img.sp-tall{height:128px}.sp-cast img.sp-small{height:86px}
  .sp-hero-in{padding-bottom:150px}
  .sp-feature{grid-template-columns:1fr;padding:24px 18px 170px}
  .sp-feature-cast{left:auto;right:14px;height:140px}
  .sp-spaces{grid-template-columns:1fr 1fr;gap:12px}
  .sp-space{--band:112px;min-height:190px;padding:11px 11px 11px}
  .sp-space h3{font-size:20px}
  .sp-space p{display:none}
  .sp-space-cast{height:90px;top:calc(var(--band) - 88px)}.sp-space-cast.sp-tall{height:104px;top:calc(var(--band) - 102px)}
  .sp-catalog{grid-template-columns:1fr}
  .sp-head h2{font-size:27px}
  .sp-panel{display:block;padding:24px 20px 150px}
  .sp-panel .sp-btn{margin-top:18px}
  .sp-panel-cast{height:140px}
  .sp-list{grid-template-columns:1fr}
  .sp-footer{flex-direction:column;gap:12px;padding:100px 18px 26px;background-size:auto 96px,auto}
}

/* ---------- section pages: ONE layout for every report-style page (Work, Schools, Chemistry, IB, case files) ----------
   Markup (yyp_portal/southpark_page.py builds it; older generators produce the same shape):
     <div class="wrap">
       <div class="hero"><h1>..</h1><p>..</p><span class="tag">..</span></div>
       <nav class="toc">..</nav>                      optional left contents column (a horizontal div.toc becomes one too)
       <main id="main"><article>..</article>..<div class="foot">..</div></main>
     </div>
   The banner is full-width like the landing pages; the content area is 1240px like the landing pages; the contents
   column is always 260px. Job cards (.job, Chemistry) show two per row. */
html{overflow-x:clip}
html .skip{position:absolute;left:-999px}
html .wrap{display:grid;grid-template-columns:minmax(0,1fr);gap:0 44px;align-items:start;max-width:1240px;margin:0 auto;padding:0 44px 84px}
html .wrap:has(> nav.toc),html .wrap:has(> div.toc){grid-template-columns:260px minmax(0,1fr)}
html .wrap > .hero,html .wrap > .foot{grid-column:1/-1}
html .wrap:has(> nav.toc) > main,html .wrap:has(> div.toc) > :not(.hero,.toc,.foot){grid-column:2}
html .wrap > nav.toc,html .wrap > div.toc{grid-column:1;grid-row:2/span 80;position:sticky;top:calc(var(--spb-h,64px) + 24px);
  max-height:calc(100vh - var(--spb-h,64px) - 44px);overflow:auto;margin:0;scrollbar-width:thin}
html .wrap > main:has(> .job){display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;align-items:start}
html .wrap > main:has(> .job) > :not(.job){grid-column:1/-1}
html .wrap > main{min-width:0}

/* banner: full width, sky + landscape + the section's character (set by the active top-bar item) */
html .wrap > .hero{position:relative;overflow:hidden;margin:0 calc(50% - 50vw) 40px;padding:46px max(24px,calc(50vw - 576px)) 222px;
  border:0;border-bottom:3px solid var(--line);border-radius:0;box-shadow:none;color:var(--ink);
  background:var(--clouds),var(--scene) 50% 100%/auto 230px repeat-x,var(--sky-fill);animation:none}
html .wrap > .hero::before{content:var(--section-name);display:block;width:max-content;margin:0 0 16px;padding:5px 12px;border:2px solid var(--line);border-radius:999px;
  background:var(--card);box-shadow:var(--pop-sm);font:900 12px/1.2 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--ink)}
html .wrap > .hero::after{content:"";position:absolute;right:max(24px,calc(50% - 600px));bottom:14px;width:210px;height:236px;
  background:var(--cast) 50% 100%/contain no-repeat;pointer-events:none;animation:sp-rise .7s cubic-bezier(.2,.8,.3,1.2) both}
html .wrap > .hero h1{max-width:820px;margin:0 0 18px;font:400 clamp(34px,4vw,58px)/1.06 var(--display);letter-spacing:.005em;color:var(--ink);text-shadow:none}
html .wrap > .hero p{max-width:760px;margin:0 0 12px;padding:14px 18px;border:3px solid var(--line);border-radius:18px;background:var(--card);box-shadow:var(--pop);
  font-size:16.5px;font-weight:600;line-height:1.55;color:var(--ink-2)}
html .wrap > .hero p strong,html .wrap > .hero p b{color:var(--ink)}
html .wrap > .hero p code{font-family:var(--mono);font-size:.85em;background:var(--card-3);padding:1px 5px;border-radius:5px}
html .wrap > .hero .tag{display:inline-block;margin:8px 8px 0 0;padding:6px 14px;border:2px solid var(--line);border-radius:999px;background:var(--accent);color:var(--accent-on);
  font:900 13px/1.3 var(--sans);letter-spacing:.02em;text-transform:none;text-decoration:none;box-shadow:var(--pop-sm);transition:transform .12s,box-shadow .12s}
html .wrap > .hero a.tag{background:var(--card);color:var(--ink)}
html .wrap > .hero a.tag:hover{transform:translate(-1px,-1px);box-shadow:var(--pop)}

/* contents column */
html nav.toc{font-size:14px;font-weight:700}
html nav.toc .lbl{margin:22px 0 8px;font:900 11.5px/1.4 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}
html nav.toc .lbl:first-child{margin-top:0}
html nav.toc a,html .wrap > div.toc a{display:block;margin:2px 0;padding:6px 12px;border:2px solid transparent;border-radius:12px;background:none;
  font:700 14px/1.35 var(--sans);letter-spacing:normal;text-transform:none;color:var(--ink-2);text-decoration:none;transition:background-color .12s,border-color .12s}
html nav.toc a:hover,html .wrap > div.toc a:hover{background:var(--card);border-color:var(--line)}
html nav.toc a.top{font-weight:900;color:var(--ink)}
html nav.toc a.here{background:var(--accent);border-color:var(--line);color:var(--accent-on);box-shadow:var(--pop-sm)}
html .wrap > div.toc{display:flex;flex-direction:column;gap:0;padding:0;border:0;border-radius:0;background:none;box-shadow:none;
  font:900 11.5px/1.4 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}

/* content blocks: articles, panels, case cards and job cards share one look */
html article,html .panel,html section.card,html div.card{background:var(--card);border:3px solid var(--line);border-radius:24px;box-shadow:var(--pop-lg);color:var(--ink);margin:0 0 28px}
html article{padding:16px 50px 42px}
html .panel,html section.card,html div.card{padding:24px 36px 30px}
html .verdict{border-left-width:12px;border-left-color:var(--cartman)}
html article h1{margin:30px 0 12px;padding-bottom:12px;border-bottom:0;background:linear-gradient(var(--accent),var(--accent)) 0 100%/80px 6px no-repeat;
  font:900 29px/1.18 var(--sans);letter-spacing:-.015em;color:var(--ink)}
html :is(article,.panel,section.card,div.card) h2{margin:30px 0 10px;padding-top:2px;font:900 22px/1.28 var(--sans);letter-spacing:-.01em;color:var(--ink)}
html :is(.panel,section.card,div.card) h2:first-child{margin-top:4px}
html :is(article,.panel,section.card,div.card) h3{margin:22px 0 6px;font:800 17px/1.4 var(--sans);color:var(--ink)}
html :is(article,.panel,section.card,div.card) p{margin:10px 0}
html :is(article,.panel,section.card,div.card) li{margin:5px 0}
html :is(article,.panel,section.card,div.card) li::marker{color:var(--ink-3)}
html :is(article,.panel,section.card,div.card) strong{color:var(--ink);font-weight:800}
html :is(article,.panel,section.card,div.card,.job) a:not(.card):not(.tag){color:var(--link);border-bottom:0;font-weight:700;text-decoration:underline;text-decoration-thickness:2px;
  text-underline-offset:3px;text-decoration-color:color-mix(in srgb,var(--link) 35%,transparent)}
html :is(article,.panel,section.card,div.card,.job) a:not(.card):not(.tag):hover{text-decoration-color:currentColor}
html :is(article,.panel,section.card,div.card) code,html code{font-family:var(--mono);font-size:.84em;background:var(--card-3);color:var(--ink);padding:2px 6px;border-radius:6px}
html :is(article,.panel,section.card,div.card) hr{border:0;border-top:2px dashed var(--rule);margin:28px 0}
html article blockquote{margin:16px 0;padding:12px 18px;border:2px solid var(--line);border-left-width:6px;border-radius:12px;background:var(--card-2);color:var(--ink-2)}
html .card h2 .num{display:inline-grid;place-items:center;min-width:32px;height:32px;margin-right:10px;padding:0 6px;border:2px solid var(--line);border-radius:10px;
  background:var(--accent);color:var(--accent-on);font:900 15px var(--sans);box-shadow:var(--pop-sm);vertical-align:middle}
html .lbl{margin:16px 0 4px;font:900 11.5px/1.4 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
html :is(.q,.says){margin:8px 0;padding:10px 16px;border:2px solid var(--line);border-left-width:6px;border-radius:12px;background:var(--card-2);color:var(--ink-2)}
html .q{font-style:italic}
html .req{margin:8px 0;padding:10px 16px;border:2px solid var(--line);border-left-width:6px;border-left-color:var(--kyle);border-radius:12px;background:color-mix(in srgb,var(--kyle) 12%,var(--card))}
html .reply{margin:10px 0;padding:16px 22px;border:3px dashed var(--line);border-radius:16px;background:var(--card-2);font:500 16px/1.6 var(--sans);color:var(--ink)}
html .badge{display:inline-block;margin:0 6px 0 0;padding:3px 10px;border:2px solid var(--line);border-radius:999px;font:900 11px/1.3 var(--sans);letter-spacing:.06em;
  text-transform:uppercase;color:#1d1d22;vertical-align:middle}
html :is(.b-ver,.scope){background:#c8efb8}
html :is(.b-hyp,.sev-m,.scope3){background:#ffef9a}
html :is(.b-hot,.sev-h){background:#ffc2cc}
html .sev-l{background:#e1e4ea}
html .scope2{background:#e3d7ff}
html :is(.panel,section.card,div.card) figure img{border:2px solid var(--line);border-radius:10px;background:#fff}
html :is(.panel,section.card,div.card) figcaption{font-size:13px;color:var(--ink-2)}
html .src,html td.srcname{color:var(--ink)}

/* tables */
html .tablewrap,html .tw{margin:16px 0;border:3px solid var(--line);border-radius:16px;background:var(--card);box-shadow:var(--pop-sm);overflow-x:auto}
html table{border-collapse:collapse;width:100%;font-size:14px;background:transparent;font-variant-numeric:tabular-nums;margin:0}
html th,html td{padding:10px 14px;border-bottom:2px solid var(--rule);vertical-align:top;text-align:left;color:var(--ink)}
html thead th,html :is(table.mini,table.sum) th{background:var(--stan);color:#fff;font:900 13px/1.35 var(--sans);letter-spacing:.02em;border-bottom:3px solid var(--line)}
html tbody tr:nth-child(even){background:var(--card-2)}
html tbody tr:hover{background:color-mix(in srgb,var(--yellow) 22%,var(--card))}
html tbody tr:last-child td{border-bottom:0}

/* link cards (Schools "pages in this section") */
html .cards{gap:16px}
html a.card{background:var(--card);border:3px solid var(--line)!important;border-radius:18px;padding:16px 18px;text-decoration:none!important;color:var(--ink);box-shadow:var(--pop);transition:transform .15s,box-shadow .15s}
html a.card:hover{transform:translate(-2px,-2px);box-shadow:var(--pop-lg)}
html a.card b{margin-bottom:6px;font:900 18px/1.25 var(--sans);color:var(--ink)}
html a.card span{font-size:14px;font-weight:600;color:var(--ink-2)}

html .urgent{margin:18px 0;padding:14px 20px;border:3px solid var(--line);border-radius:16px;background:var(--note);color:#3a3218;box-shadow:var(--pop);transform:rotate(-.3deg)}
html .urgent strong{color:#3a3218}
html .recs{gap:14px}
html .rec{background:var(--card);border:2px solid var(--line);border-radius:16px;padding:16px 18px;box-shadow:var(--pop-sm)}
html .rec h4{margin:0 0 10px;font:900 17px/1.3 var(--sans);color:var(--ink)}
html .rec dt{font:900 11px/1.9 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
html .rec .kind{font:900 11px/1.5 var(--sans);letter-spacing:.04em;border:2px solid var(--line)}
html .group,html .report-tag,html .pill{display:inline-block;padding:4px 11px;border:2px solid var(--line);border-radius:999px;font:900 11.5px/1.2 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:#1d1d22}
html .ev{font:800 11.5px/1.6 var(--sans);letter-spacing:.01em;padding:0 8px;border-radius:999px;color:#1d1d22}
html .g-short,html .tag-supp,html .pill-open,html .ev-v{background:#c8efb8}
html .g-also,html .ev-c{background:#ffef9a}
html .g-out,html .tag-comp,html .pill-due,html .ev-u{background:#ffc2cc}
html .g-closed{background:#e1e4ea}
html .pill-unv{background:#efe4d4}
html .pill-new{background:var(--kenny);color:#1d1d22}
html .ev-i{background:#cfd8ff}
html .ev-o{background:#c4eef0}
html .evn{color:var(--ink-3)}
html figure.slide{background:var(--card-2);border:2px solid var(--line);border-radius:14px;padding:8px}
html figure.slide img{border-radius:8px}
html figure.slide figcaption{color:var(--ink-2)}
html figure.slide .ts,html .gallery .g b{font-family:var(--mono);color:var(--link)}
html .gallery .g{border:2px solid var(--line);border-radius:12px;background:var(--card);color:var(--ink-2);transition:transform .15s,box-shadow .15s}
html .gallery .g:hover{transform:translate(-2px,-2px);box-shadow:var(--pop)}

/* job cards (Chemistry) */
html .job{background:var(--card);border:3px solid var(--line);border-radius:24px;padding:22px 28px;margin:0;box-shadow:var(--pop-lg);color:var(--ink);animation:sp-rise .6s cubic-bezier(.2,.7,.2,1) both}
html .job h2{margin:2px 0 8px;font:900 21px/1.28 var(--sans)}
html .job h2 a{color:var(--ink)!important;text-decoration-thickness:3px!important;text-underline-offset:4px;text-decoration-color:var(--accent)!important}
html .job h2 a:hover{color:var(--link)!important}
html .job strong{color:var(--ink)}
html .meta{font-size:13px;font-weight:700;color:var(--ink-3)}
html .forE{margin:14px 0 2px;padding:10px 18px;border:2px solid var(--line);border-left-width:6px;border-left-color:var(--accent);border-radius:12px;background:color-mix(in srgb,var(--accent) 14%,var(--card))}
html .forE .lbl{margin:0;font:900 11.5px var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2)}
html .foot{margin-top:26px;padding-top:16px;border-top:2px dashed var(--rule);text-align:center;font:700 13px/1.6 var(--sans);color:var(--ink-3)}

@media (max-width:900px){
  html .wrap,html .wrap:has(> nav.toc),html .wrap:has(> div.toc),html .wrap > main:has(> .job){grid-template-columns:minmax(0,1fr)}
  html .wrap{padding:0 16px 56px}
  html .wrap > *,html .wrap:has(> nav.toc) > main,html .wrap:has(> div.toc) > :not(.hero,.toc,.foot){grid-column:1}
  html .wrap > nav.toc,html .wrap > div.toc{grid-row:auto;position:static;max-height:min(46vh,380px);overflow:auto;margin:0 0 22px;padding:12px 14px 14px;border:3px solid var(--line);border-radius:18px;background:var(--card);box-shadow:var(--pop)}
  html .wrap > .hero{padding:26px 18px 168px;margin-bottom:26px;background-size:auto,auto,auto 170px,auto}
  html .wrap > .hero::after{width:110px;height:146px;right:12px}
  html .wrap > .hero h1{font-size:32px;max-width:100%}
  html article{padding:8px 20px 26px;border-radius:20px}
  html :is(.panel,section.card,div.card){padding:16px 18px 20px;border-radius:20px}
  html .job{padding:16px 18px}
}

/* ---------- sign-in service pages (/login, /account) ---------- */
html body.sp-nobar{padding-top:0!important}
.sp-auth{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.45fr) minmax(380px,1fr)}
.sp-auth-art{position:relative;display:flex;align-items:flex-start;padding:30px 34px;border-right:3px solid var(--line);
  background:#8be5e5 url(/assets/sp-busstop.webp) 50% 100%/100% auto no-repeat}
.sp-auth-art::before,.sp-auth-art::after{content:"";position:absolute;height:44px;border-radius:40px;background:#fff;opacity:.95;box-shadow:32px -18px 0 6px #fff,70px 0 0 -2px #fff;animation:sp-drift 40s ease-in-out infinite alternate}
.sp-auth-art::before{width:110px;top:170px;left:12%}.sp-auth-art::after{width:86px;top:110px;left:58%;animation-duration:55s}
.sp-sign{position:relative;z-index:1;display:inline-grid;justify-items:center;padding:9px 18px 7px;border:3px solid var(--wood-dark);border-radius:4px;
  background:var(--wood) repeating-linear-gradient(180deg,transparent 0 18px,rgba(58,36,24,.28) 18px 20px);color:var(--wood-dark);
  font:400 34px/1 var(--display);letter-spacing:.04em;text-transform:uppercase;transform:rotate(-3deg);box-shadow:4px 5px 0 var(--wood-dark)}
.sp-sign span{display:block;line-height:1.02}
.sp-auth-pane{display:flex;align-items:center;justify-content:center;padding:44px 28px}
.sp-auth-card{width:100%;max-width:410px;padding:28px 30px 30px;border:3px solid var(--line);border-radius:24px;background:var(--card);box-shadow:var(--pop-lg);animation:sp-rise .6s cubic-bezier(.2,.7,.2,1) both}
.sp-auth-card h1{margin:0 0 22px;font:400 44px/1 var(--display);color:var(--ink)}
.sp-form{display:grid;gap:16px}
.sp-field label{display:block;margin-bottom:6px;font:900 12px var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2)}
.sp-field input{width:100%;padding:13px 15px;border:3px solid var(--line);border-radius:14px;background:var(--card-2);color:var(--ink);font:700 16.5px var(--sans);transition:transform .12s,box-shadow .12s}
.sp-field input:focus{outline:none;background:var(--card);transform:translate(-2px,-2px);box-shadow:var(--pop)}
.sp-field small{display:block;margin-top:7px;font-size:13px;font-weight:600;color:var(--ink-3)}
.sp-form .sp-btn{justify-content:center;width:100%;padding:14px 20px;font-size:16px;margin-top:6px}
.sp-alert{padding:11px 15px;border:2px solid var(--line);border-radius:14px;font-size:15px;font-weight:700;line-height:1.4}
.sp-alert.sp-bad{background:#ffc9d2;color:#5d0d1c}
.sp-alert.sp-good{background:#c8efb8;color:#1f4a12}
.sp-account-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:22px;align-items:start}
.sp-box{padding:26px 28px;border:3px solid var(--line);border-radius:24px;background:var(--card);box-shadow:var(--pop-lg)}
.sp-box h2{margin:0 0 16px;font:400 27px/1.1 var(--display);color:var(--ink)}
.sp-facts{margin:0;display:grid;grid-template-columns:auto 1fr;gap:10px 20px;font-size:15.5px}
.sp-facts dt{font:900 11.5px/2 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
.sp-facts dd{margin:0;font-weight:700;color:var(--ink)}
.sp-box form{margin-top:20px}
.sp-box .sp-alert{margin-bottom:16px}
@media (max-width:900px){
  .sp-auth{grid-template-columns:1fr;grid-template-rows:auto 1fr}
  .sp-auth-art{min-height:calc(100vw * .5625 + 40px);border-right:0;border-bottom:3px solid var(--line);padding:14px 16px}
  .sp-sign{font-size:24px;padding:7px 13px 5px}
  .sp-auth-pane{align-items:flex-start;padding:28px 16px 44px}
  .sp-auth-card h1{font-size:38px}
  .sp-account-grid{grid-template-columns:1fr}
  .sp-box{padding:20px 18px}
}

@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
@media print{html body{background:#fff}.sp-tools,.sp-filters,.sp-skip,.sp-cast,.sp-hero::before,.sp-hero::after{display:none}.sp-item,.sp-space{break-inside:avoid;box-shadow:none}}

.sp-hero:last-of-type+.sp-footer{margin-top:0}
.sp-hero+.sp-footer{margin-top:0;padding-top:30px;background:var(--sky-fill);border-top:0}
