/* Admissions: public catalogue, application wizard, review, offer letter & enrollment form. */
/* ---------- public layout ---------- */
.pub{background:var(--bg)}
.pub-in{max-width:1180px;margin:0 auto;padding:0 24px}
.pub-top{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.pub-top .pub-in{display:flex;align-items:center;justify-content:space-between;height:68px;gap:16px}
.pub-logo img{height:44px;width:auto}
.pub-nav{display:flex;align-items:center;gap:8px}
.pub-nav>a:not(.btn){padding:8px 12px;color:var(--ink-2);font-weight:550;border-radius:8px}
.pub-nav>a.on{color:var(--brand)}
.pub-main{min-height:60vh}
.pub-main>.pub-in:first-child:not(:empty){padding-top:16px}
.pub-hero{background:linear-gradient(125deg,var(--rail),var(--brand) 60%,var(--brand-2));color:#fff;padding:56px 0 64px;position:relative;overflow:hidden;margin-bottom:28px}
.pub-hero::after{content:"";position:absolute;right:-120px;top:-120px;width:420px;height:420px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--accent) 50%,transparent),transparent 70%);opacity:.5}
.pub-hero .pub-in{position:relative;z-index:1}
.pub-hero h1{color:#fff;font-size:42px;max-width:760px;margin-bottom:12px}
.pub-hero p{color:rgba(255,255,255,.85);max-width:620px;font-size:17px}
.pub-hero.slim{padding:34px 0 40px}
.pub-hero.slim h1{font-size:36px}
.eyebrow.light{color:var(--accent)}
.hero-chip{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.22);color:#fff}
.hero-chip .i{width:15px;height:15px;color:var(--accent)}
.pub-crumbs{display:flex;align-items:center;gap:6px;font-size:13.5px;margin-bottom:10px;color:rgba(255,255,255,.75)}
.pub-crumbs a{color:#fff}
.pub-crumbs .i{width:14px;height:14px}
.cat-jump{display:flex;gap:8px;flex-wrap:wrap;margin:-4px 0 18px}
.cat-jump a{padding:7px 14px;border-radius:30px;background:#fff;border:1px solid var(--line);color:var(--ink-2);font-weight:600;font-size:14px}
.cat-jump a span{color:var(--muted);font-weight:500;margin-left:4px}
.cat{margin-bottom:34px;scroll-margin-top:90px}
.cat h2{margin-bottom:14px}
.crscards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px}
.crscard{background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:var(--sh-1);display:flex;flex-direction:column;transition:transform .15s,box-shadow .15s}
.crscard:hover{transform:translateY(-2px);box-shadow:var(--sh-2)}
.crscard-top{height:78px;position:relative;display:flex;align-items:flex-end;justify-content:space-between;padding:10px 14px;color:#fff}
.crscard-lvl{font-size:11.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;background:rgba(255,255,255,.18);padding:3px 9px;border-radius:20px}
.crscard-code{font-size:12px;font-weight:650;opacity:.85;letter-spacing:.05em}
.crscard-b{padding:16px;display:flex;flex-direction:column;gap:10px;flex:1}
.crscard-b h3{margin:0;font:600 18px/1.25 var(--display)}
.crscard-b h3 a{color:var(--ink)}
.crscard-b p{margin:0;color:var(--ink-2);font-size:14px}
.crscard-meta{display:flex;gap:14px;flex-wrap:wrap;font-size:13px;color:var(--muted);font-weight:550}
.crscard-meta .i{width:15px;height:15px;color:var(--brand)}
.crscard-act{display:flex;gap:8px;margin-top:auto;padding-top:4px}
.pub-cta{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:26px 28px;margin:10px 0 40px;box-shadow:var(--sh-1)}
.pub-cta h2{margin-bottom:4px}.pub-cta p{margin:0;color:var(--muted)}
.pub-foot{background:var(--rail);color:rgba(255,255,255,.75);padding:30px 0;font-size:14px}
.pub-foot .pub-in{display:grid;grid-template-columns:1.2fr 1fr auto;gap:24px}
.pub-foot b{color:#fff}.pub-foot p{margin:4px 0 0}
.pub-foot a{color:#fff}
.pub-foot .i{width:15px;height:15px;color:var(--accent)}
.pub-foot-r{display:flex;flex-direction:column;gap:6px;text-align:right}
.pub-foot .muted{color:rgba(255,255,255,.45)}
/* course detail */
.course-split{grid-template-columns:minmax(0,1fr) 360px}
.course-side{position:sticky;top:88px}
.lead-p{font-size:16.5px;color:var(--ink-2);margin:0}
.stage{border-bottom:1px solid var(--line-2)}
.stage:last-child{border-bottom:0}
.stage-h{padding:10px 18px 0;font-size:12px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--brand)}
.unit-list{list-style:none;margin:0;padding:6px 0}
.unit-list li{display:flex;align-items:center;gap:12px;padding:8px 18px;font-size:14.5px}
.ucode{font-size:12px;color:var(--muted);min-width:62px}
.ticks{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.ticks li{display:flex;gap:8px;align-items:flex-start;font-size:14.5px}
.ticks .i{width:16px;height:16px;color:var(--green);margin-top:3px}
.fee-row{display:flex;justify-content:space-between;gap:10px;padding:6px 0;font-size:14px;border-bottom:1px dashed var(--line)}
.fee-row.big{font-size:16px;border-bottom:1px solid var(--line);padding-bottom:12px;margin-bottom:6px}
.fee-row.big b{color:var(--brand)}
.fee-row.tot{border-bottom:0;border-top:1px solid var(--line);margin-top:4px;padding-top:10px;font-size:15px}
.fee-h{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-weight:650;margin-top:10px}
.adm-cal{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;width:46px;height:50px;border-radius:10px;background:var(--tint);color:var(--brand);flex:none;line-height:1}
.adm-cal b{font-size:19px}.adm-cal small{font-size:11px;text-transform:uppercase;font-weight:700;letter-spacing:.05em;margin-top:2px}
/* ---------- wizard ---------- */
.steps.wiz li a{color:inherit}
.steps.wiz li.done a{color:var(--ink-2)}
.wiz-act{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;border-top:1px solid var(--line-2);padding-top:16px;margin-top:20px}
.prog-sum{margin-top:12px;background:var(--tint);border:1px solid color-mix(in srgb,var(--brand) 18%,var(--line));border-radius:12px;padding:14px}
.prog-sum-g{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:10px}
.prog-sum-g small{display:block;color:var(--muted);font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;font-weight:650}
.prog-sum-g b{font-size:14.5px}
.intake-pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.ip{display:flex;gap:12px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:12px;cursor:pointer;background:#fff}
.ip input{position:absolute;opacity:0}
.ip span:last-child{display:flex;flex-direction:column;line-height:1.3}
.ip small{color:var(--muted);font-size:12.5px}
.ip:has(input:checked){border-color:var(--brand);box-shadow:0 0 0 3px var(--tint)}
.ip:has(input:checked) .adm-cal{background:var(--brand);color:#fff}
.ip:has(input:focus-visible){outline:2px solid var(--brand)}
.sig-input{font-family:'Segoe Script','Brush Script MT',cursive;font-size:19px!important}
.declare .check span{font-size:14.5px}
/* documents */
.docs{list-style:none;margin:0;padding:0}
.doc{display:flex;gap:14px;align-items:flex-start;padding:16px 18px;border-bottom:1px solid var(--line-2)}
.doc:last-child{border-bottom:0}
.doc-ic{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;background:var(--soft);color:var(--ink-2);flex:none}
.doc.approved .doc-ic{background:var(--green-bg);color:var(--green)}
.doc.rejected .doc-ic{background:var(--red-bg);color:var(--red)}
.doc.pending .doc-ic{background:var(--blue-bg);color:var(--blue)}
.doc-t1{font-weight:650}
.doc .t2{font-size:13px;color:var(--muted)}
.doc .t2 .i{width:14px;height:14px}
.doc-why{margin-top:8px;padding:8px 10px;font-size:13.5px}
.doc-up{display:flex;gap:8px;align-items:center;margin-top:10px;flex-wrap:wrap}
.doc-up input[type=file]{flex:1;min-width:200px;padding:6px}
.doc-st{flex:none}
/* status page / widget */
.track{margin:18px 0 6px}
.track li{min-width:70px;font-size:12.5px}
.next{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;border-radius:12px;padding:14px 16px;margin-top:10px;background:var(--soft);border:1px solid var(--line)}
.next h3{margin:0 0 2px;font-size:15.5px}.next p{margin:0;font-size:14px;color:var(--ink-2)}
.next.brand{background:var(--tint);border-color:color-mix(in srgb,var(--brand) 22%,var(--line))}
.next.warn{background:var(--amber-bg);border-color:#f2d9a8}
.next.ok{background:var(--green-bg);border-color:#bfe5d1}
.next.info{background:var(--blue-bg);border-color:#c9daf0}
.offer-box{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.offer-ic{width:46px;height:46px;border-radius:12px;display:grid;place-items:center;background:var(--amber-bg);color:var(--amber)}
.offer-ic .i{width:24px;height:24px}
.checklist{list-style:none;margin:8px 0 14px;padding:0;display:grid;gap:6px}
.checklist li{display:flex;gap:8px;align-items:center;color:var(--ink-2)}
.checklist li .i{width:16px;height:16px;color:var(--muted)}
.checklist li.ok{color:var(--green)}.checklist li.ok .i{color:var(--green)}
.sum-toggle{margin-top:4px}
.sum-toggle>summary{list-style:none;margin-bottom:16px}
.sum-toggle>summary::-webkit-details-marker{display:none}
.block-btn .btn{width:100%}
/* ---------- staff review ---------- */
.app-top-row{display:flex;gap:20px;align-items:center}
.app-meta{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:10px;font-size:14px;color:var(--ink-2)}
.app-meta .i{width:15px;height:15px;color:var(--brand)}
.dv-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
.dv{padding:16px 18px;border-bottom:1px solid var(--line-2);border-right:1px solid var(--line-2);min-width:0}
.dv:nth-child(2n){border-right:0}
.dv-h{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;margin-bottom:10px}
.dv-view{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#f4f0ee;height:230px;display:grid;place-items:center}
.dv-view img{width:100%;height:230px;object-fit:contain}
.dv-view a{display:block;width:100%}
.dv-view iframe{width:100%;height:230px;border:0;background:#fff}
.dv-file{display:flex;gap:8px;align-items:center}
.dv-act{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px;align-items:center}
.dv .note{margin-top:8px;padding:8px 10px}
.dv-up{margin-top:10px}
.dv-up summary{cursor:pointer;color:var(--brand);font-weight:550}
.dv-up summary .i{width:15px;height:15px}
.rec{display:grid;gap:8px;margin-bottom:14px}
.rec-row{display:flex;gap:10px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:10px}
.rec-row b{display:block;font-size:14px}.rec-row small{color:var(--muted);font-size:12.5px}
.rec-ic{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--soft);color:var(--muted);flex:none}
.rec-row.ok{background:var(--green-bg);border-color:#bfe5d1}
.rec-row.ok .rec-ic{background:var(--green);color:#fff}
.notes{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:12px}
.notes li{display:flex;gap:10px}
.notes p{margin:2px 0 0;font-size:14px}
.docs-mini{font-size:13px;color:var(--muted)}
.docs-mini b{color:var(--ink)}
/* ---------- print: offer letter & enrollment form ---------- */
.letter{font-size:13.5px;line-height:1.55}
.letter-top{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:12px}
.passport{width:32mm;height:40mm;border:1px solid #bbb;display:grid;place-items:center;color:#999;font-size:11px;text-align:center;flex:none;overflow:hidden;background:#fafafa}
.passport img{width:100%;height:100%;object-fit:cover}
.passport.sm{width:26mm;height:32mm}
.letter-re{font-weight:700;text-decoration:underline;margin:12px 0;letter-spacing:.02em}
.letter-body p{margin:0 0 .8em;text-align:justify}
.letter-facts{width:100%;margin:6px 0 4px;background:#faf7f5;border:1px solid #eee}
.letter-facts th,.letter-facts td{padding:5px 10px!important}
.letter-h{font:700 13px var(--font);text-transform:uppercase;letter-spacing:.06em;color:var(--brand);margin:16px 0 4px}
.req-t td.n{width:28px;color:#666}
.pay-cols{display:grid;grid-template-columns:1fr 1fr;gap:16px;font-size:13px;margin-bottom:6px}
.kit{columns:2;margin:0;padding-left:18px;font-size:13px}
.letter-sign{margin-top:22px}
.sig-space{height:38px;border-bottom:1px solid #999;width:60mm;margin-bottom:6px}
.accepted-line{margin-top:14px}
.accepted-line .i{width:14px;height:14px;color:var(--green)}
.eform{font-size:12.5px}
.eform .sec{font:700 12.5px var(--font);text-transform:uppercase;letter-spacing:.06em;background:var(--brand);color:#fff;padding:5px 10px;margin:14px 0 0;border-radius:3px}
.eform .sec small{font-weight:500;text-transform:none;opacity:.8}
.ftab{width:100%;border-collapse:collapse}
.ftab th{width:22%;text-align:left;font-weight:600;color:#444;padding:7px 8px 3px 0;vertical-align:bottom;white-space:nowrap}
.ftab td{padding:7px 12px 3px 0;vertical-align:bottom}
.fv{display:block;border-bottom:1px dotted #888;min-height:19px;padding:0 2px}
.fv.sigline{min-height:26px}
.cb{display:inline-grid;place-items:center;width:15px;height:15px;border:1.5px solid #333;font-size:12px;line-height:1;vertical-align:-2px;font-weight:700}
.office{margin-top:16px;border:1.5px dashed #aaa;border-radius:6px;padding:0 10px 10px}
.office .sec{margin-left:-10px;margin-right:-10px;border-radius:5px 5px 0 0;background:#555}
@media (max-width:1180px){
  .course-split{grid-template-columns:minmax(0,1fr)}
  .course-side{position:static}
}
@media (max-width:980px){
  .dv-list{grid-template-columns:minmax(0,1fr)}
  .dv{border-right:0}
  .pub-foot .pub-in{grid-template-columns:1fr}
  .pub-foot-r{text-align:left}
}
@media (max-width:640px){
  .pub-in{padding:0 16px}
  .pub-top .pub-in{height:60px}
  .pub-logo img{height:36px}
  .pub-hero{padding:34px 0 40px}
  .pub-hero h1,.pub-hero.slim h1{font-size:28px}
  .pub-hero p{font-size:15.5px}
  .crscards{grid-template-columns:minmax(0,1fr)}
  .prog-sum-g{grid-template-columns:1fr 1fr}
  .steps.wiz li{min-width:54px;font-size:0;padding-top:34px}
  .steps.wiz li.on{font-size:11.5px}
  .steps.wiz li::before{width:28px;height:28px}
  .steps.wiz li::after{top:13px}
  .track li{font-size:11px;min-width:56px}
  .wiz-act{flex-direction:column-reverse;align-items:stretch}
  .wiz-act .btn-row{flex-direction:column-reverse;align-items:stretch}
  .wiz-act .btn{width:100%}
  .doc{flex-wrap:wrap}
  .doc .grow{flex-basis:calc(100% - 52px)}
  .doc-st{margin-left:52px}
  .app-top-row{flex-direction:column;align-items:flex-start;gap:12px}
  .pay-cols{grid-template-columns:1fr}
  .kit{columns:1}
  .letter-top{flex-direction:column-reverse}
  .ftab th{white-space:normal;width:34%}
  .next .btn-row{width:100%}
}
@media print{
  .pub-top,.pub-foot{display:none}
}
/* Guard: another module's stylesheet defines a global .req (padding + border) that would hit required form fields. */
.field.req{padding:0;border-bottom:0}
@media (max-width:640px){.steps.wiz li::before{font-size:13px}}
@media (max-width:1180px){
  .rv-split{display:flex;flex-direction:column;gap:0}
  .rv-main,.rv-side{display:contents}
  .rv-main>*,.rv-side>*{order:5}
  .rv-split .rv-docs{order:1}
  .rv-split .rv-decision{order:2}
}
