:root{--brand:#212b33;--brand-soft:#2d3a45;--brand-deep:#171f26;--accent:#26af98;--accent-deep:#1b8c79;--accent-ink:#0f7a69;--accent-wash:#e4f5f1;--ink:#212b33;--ink-soft:#55636e;--ink-faint:#808d98;--line:#e3e8ec;--surface:#fff;--page:#f5f7f9;--ok:#15803d;--ok-soft:#dcfce7;--warn:#b45309;--warn-soft:#fef3c7;--danger:#b91c1c;--danger-soft:#fee2e2;--radius:14px;--radius-sm:9px;--shadow:0 1px 2px #212b330f, 0 8px 24px #212b3312;--shadow-lg:0 24px 60px #212b3338}*{box-sizing:border-box}html{scroll-behavior:smooth}body{color:var(--ink);background:var(--page);-webkit-font-smoothing:antialiased;margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;line-height:1.6}h1,h2,h3,h4{letter-spacing:-.02em;margin:0 0 .5em;line-height:1.2}h1{font-size:clamp(2rem,5vw,3.1rem);font-weight:800}h2{font-size:clamp(1.5rem,3vw,2.1rem);font-weight:700}h3{font-size:1.18rem;font-weight:700}p{margin:0 0 1em}a{color:var(--accent-ink);text-decoration:none}a:hover{text-decoration:underline}code,.mono{font-family:JetBrains Mono,ui-monospace,monospace;font-size:.92em}.wrap{width:min(1120px,100% - 2.5rem);margin-inline:auto}.wrap-narrow{width:min(760px,100% - 2.5rem);margin-inline:auto}.muted{color:var(--ink-soft)}.small{font-size:.9rem}.tiny{font-size:.8rem}.center{text-align:center}.mt-0{margin-top:0}.mt-2{margin-top:.5rem}.mt-3{margin-top:.85rem}.mt-4{margin-top:1.2rem}.mt-5{margin-top:1.8rem}.mt-6{margin-top:2.6rem}.row{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.row-between{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.stack{gap:1rem;display:grid}.grid{grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:1.4rem;display:grid}.grid-2{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;display:grid}.btn{background:var(--brand);color:#fff;font:inherit;cursor:pointer;white-space:nowrap;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:.45rem;padding:.62rem 1.15rem;font-weight:600;transition:background .15s,transform .1s,box-shadow .15s;display:inline-flex}.btn:hover{background:var(--brand-soft);text-decoration:none}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.btn-cta{background:var(--accent);color:#0d2b26}.btn-cta:hover{background:var(--accent-deep);color:#fff}.btn-ghost{color:var(--accent-ink);border-color:var(--line);background:0 0}.btn-ghost:hover{background:var(--accent-wash)}.btn-quiet{color:var(--ink-soft);background:0 0}.btn-quiet:hover{background:#eaeef1}.btn-danger{color:var(--danger);border-color:var(--danger-soft);background:0 0}.btn-danger:hover{background:var(--danger-soft)}.btn-sm{padding:.34rem .7rem;font-size:.85rem}.btn-lg{padding:.85rem 1.7rem;font-size:1.05rem}.btn-block{width:100%}.site-header{z-index:40;background:var(--brand);color:#fff;position:sticky;top:0}.site-header a{color:#fff}.site-header .wrap{grid-template-columns:minmax(0,1fr) max-content minmax(0,1fr);align-items:center;gap:.8rem;height:68px;display:grid}.nav{display:contents}.nav-main{justify-content:center;align-items:center;gap:.3rem;display:flex}.nav-user{justify-content:flex-end;justify-self:stretch;align-items:center;gap:.3rem;min-width:0;display:flex}.nav a{opacity:.82;white-space:nowrap;border-radius:999px;padding:.45rem .6rem;font-size:.92rem;font-weight:500}.nav-name{text-overflow:ellipsis;white-space:nowrap;flex:0 auto;min-width:0;max-width:14ch;overflow:hidden}.nav a:hover{opacity:1;background:#ffffff1f;text-decoration:none}.nav a.active{opacity:1;background:#26af9838;font-weight:600}.nav-toggle{color:#fff;border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:1px solid #ffffff4d;margin-left:auto;padding:.35rem .6rem;font-size:1.1rem;display:none}@media (width<=1080px){.site-header .wrap{justify-content:space-between;display:flex}.nav-toggle{display:block}.nav{background:var(--brand-deep);flex-direction:column;align-items:stretch;gap:.1rem;padding:.6rem 1.25rem 1.1rem;display:none;position:absolute;top:68px;left:0;right:0}.nav.open{display:flex}.nav-main,.nav-user{flex-direction:column;justify-self:stretch;align-items:stretch;display:flex}.nav a{border-radius:var(--radius-sm);padding:.7rem .8rem}.nav .btn{margin-top:.5rem}}.logo{letter-spacing:-.03em;align-items:center;gap:.55rem;font-size:1.28rem;font-weight:800;display:flex}.logo:hover{text-decoration:none}.logo-mark{object-fit:contain;width:42px;height:42px}.logo-text .lab{color:var(--accent)}.hero{background:radial-gradient(920px 400px at 80% -10%, #26af9861, transparent 62%), linear-gradient(168deg, var(--brand) 0%, var(--brand-deep) 100%);color:#fff;padding:4.4rem 0 4.8rem}.hero h1{margin-bottom:.35rem}.hero .tagline{color:var(--accent);letter-spacing:.14em;text-transform:uppercase;font-size:.8rem;font-weight:600}.hero p.lead{color:#c6d0d7;max-width:46ch;font-size:1.14rem}.hero .row{margin-top:1.8rem}.hero-facts{flex-wrap:wrap;gap:2.2rem;margin-top:2.8rem;display:flex}.hero-facts div{border-left:2px solid var(--accent);padding-left:.85rem}.hero-facts b{font-size:1.05rem;display:block}.hero-facts span{color:#9fb0b9;font-size:.86rem}.section{padding:3.6rem 0}.section-head{max-width:62ch;margin-bottom:2rem}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.4rem}.card-flat{box-shadow:none}.course-card{flex-direction:column;padding-top:1.6rem;display:flex;position:relative;overflow:hidden}.course-card:before{content:"";background:var(--brand);height:5px;position:absolute;inset:0 0 auto}.course-card.accent-teal:before{background:var(--accent)}.course-card.accent-amber:before{background:#f59e0b}.course-card.accent-violet:before{background:#7c3aed}.course-card h3{margin-bottom:.15rem}.course-card .subtitle{color:var(--ink-soft);margin-bottom:.9rem;font-size:.95rem}.course-card .meta{color:var(--ink-soft);gap:.3rem;margin-bottom:1rem;font-size:.9rem;display:grid}.course-card .meta span{gap:.5rem;display:flex}.course-card .card-foot{margin-top:auto;padding-top:1rem}.photo-grid{grid-template-columns:1fr;grid-auto-flow:dense;gap:1rem;display:grid}@media (width>=560px){.photo-grid{grid-template-columns:repeat(2,1fr)}}@media (width>=900px){.photo-grid{grid-template-columns:repeat(3,1fr)}}.photo{border-radius:var(--radius);background:var(--brand-deep);aspect-ratio:4/3;margin:0;position:relative;overflow:hidden}@media (width>=720px){.photo-wide{aspect-ratio:8/3;grid-column:span 2}}.photo img{object-fit:cover;width:100%;height:100%;transition:transform .4s;display:block}.photo:hover img{transform:scale(1.04)}.photo figcaption{color:#fff;background:linear-gradient(#0000,#171f26d9);padding:1.6rem .9rem .8rem;font-size:.88rem;font-weight:500;position:absolute;inset:auto 0 0}.photo-empty{border:1px dashed var(--line);background:#eef1f3;flex-direction:column;display:flex}.photo-empty figcaption{color:var(--ink-soft);background:0 0;padding:.8rem .9rem;position:static}.photo-placeholder{color:var(--ink-faint);flex:1;place-content:center;justify-items:center;gap:.3rem;display:grid}.photo-placeholder span:first-child{font-size:1.6rem}@media (prefers-reduced-motion:reduce){.photo img{transition:none}.photo:hover img{transform:none}}.person-card{align-items:flex-start;gap:1.1rem;display:flex}.person-card h3{margin-bottom:.1rem}.person-card p:last-child{margin-bottom:0}.portrait{object-fit:cover;object-position:center 30%;background:var(--accent-wash);border-radius:50%;flex:none;width:92px;height:92px}.portrait-empty{color:var(--accent-ink);letter-spacing:.02em;place-items:center;font-size:1.6rem;font-weight:700;display:grid}@media (width<=420px){.person-card{flex-direction:column}.portrait{width:72px;height:72px}}.module-card{flex-direction:column;display:flex;overflow:hidden}.module-card h3{align-items:baseline;gap:.5rem;margin-bottom:.15rem;display:flex}.module-emoji{font-size:1.1em}.module-card .subtitle{color:var(--ink-soft);margin-bottom:.7rem;font-size:.95rem}.module-card .card-foot{margin-top:auto;padding-top:1rem}.module-image{object-fit:cover;width:calc(100% + 2.8rem);height:150px;margin:-1.4rem -1.4rem 1rem;display:block}.module-steps{gap:1rem;margin:0;padding:0;list-style:none;display:grid}.module-steps li{align-items:flex-start;gap:1rem;display:flex}.module-steps .card{flex:1}.module-step-number{background:var(--accent-wash);width:34px;height:34px;color:var(--accent-ink);border-radius:50%;flex:none;place-items:center;margin-top:1.4rem;font-size:.9rem;font-weight:700;display:grid}@media (width<=560px){.module-steps li{gap:.6rem}.module-step-number{width:28px;height:28px;margin-top:1.5rem;font-size:.8rem}}.window-note{gap:.1rem;display:grid}.picked-list{gap:.4rem;margin:0;padding:0;list-style:none;display:grid}.picked-list li{border:1px solid var(--line);border-radius:var(--radius-sm);background:#fff;justify-content:space-between;align-items:center;gap:.6rem;padding:.45rem .6rem;font-size:.9rem;display:flex}.picked-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.badge{white-space:nowrap;color:var(--ink-soft);background:#eaeef1;border-radius:999px;align-items:center;gap:.3rem;padding:.18rem .6rem;font-size:.78rem;font-weight:600;display:inline-flex}.badge-ok{background:var(--accent-wash);color:var(--accent-ink)}.badge-warn{background:var(--warn-soft);color:var(--warn)}.badge-full{background:var(--danger-soft);color:var(--danger)}.badge-grey{color:var(--ink-soft);background:#eaeef1}.badge-blue{background:var(--accent-wash);color:var(--accent-ink)}.bar{background:#e6ebee;border-radius:999px;height:7px;overflow:hidden}.bar i{background:var(--accent);border-radius:999px;height:100%;transition:width .3s;display:block}.bar i.bar-full{background:var(--danger)}.field{gap:.3rem;margin-bottom:1rem;display:grid}.field-label{font-size:.9rem;font-weight:600}.field-hint{color:var(--ink-faint);font-size:.8rem}.field-wide{grid-column:1/-1}input,select,textarea{font:inherit;color:inherit;border:1px solid var(--line);border-radius:var(--radius-sm);background:#fff;width:100%;padding:.6rem .75rem}input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #26af9838}textarea{resize:vertical;min-height:90px}.check{align-items:flex-start;gap:.55rem;font-size:.95rem;display:flex}.check input{width:auto;accent-color:var(--accent-deep);margin-top:.3rem}.form-grid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:0 1rem;display:grid}.form-grid>.field{align-content:start}.choice{cursor:pointer;border:1.5px solid var(--line);border-radius:var(--radius);background:#fff;padding:1rem 1.1rem;transition:border-color .15s,background .15s;display:block;position:relative}.choice:hover{border-color:#a8ddd3}.choice.selected{border-color:var(--accent);background:var(--accent-wash)}.choice.disabled{opacity:.55;cursor:not-allowed}.choice input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute;inset:0 auto auto 0}.list-item{border:1px solid var(--line);background:var(--page)}.media-picker{flex-wrap:wrap;align-items:flex-start;gap:1rem;display:flex}.media-controls{flex:260px}.media-preview{border-radius:var(--radius-sm);background:var(--brand-deep);flex:none;place-items:center;width:132px;height:99px;display:grid;overflow:hidden}.media-preview img{object-fit:cover;width:100%;height:100%}.media-preview.is-empty{border:1px dashed var(--line);color:var(--ink-faint);background:#eef1f3}.media-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.8rem;display:grid}.media-tile{margin:0}.media-tile>button{border:1px solid var(--line);border-radius:var(--radius-sm);cursor:pointer;aspect-ratio:4/3;background:0 0;width:100%;padding:0;display:block;overflow:hidden}.media-tile>button:hover{border-color:var(--accent)}.media-tile img{object-fit:cover;width:100%;height:100%;display:block}.media-tile figcaption{color:var(--ink-faint);justify-content:space-between;align-items:center;gap:.3rem;margin-top:.3rem;display:flex}.media-tile figcaption span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.93rem}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:.62rem .7rem}th{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);font-size:.78rem;font-weight:700}tbody tr:hover{background:#fafbfc}.notice{border-radius:var(--radius);background:var(--accent-wash);color:#10453b;border:1px solid #bfe6dd;padding:.9rem 1.1rem;font-size:.93rem}.notice-warn{background:var(--warn-soft);color:#78350f;border-color:#fcd34d}.notice-danger{background:var(--danger-soft);color:#7f1d1d;border-color:#fca5a5}.notice-ok{background:var(--ok-soft);color:#14532d;border-color:#86efac}.empty{text-align:center;color:var(--ink-soft);padding:2.8rem 1rem}.empty .emoji{margin-bottom:.5rem;font-size:2.2rem;display:block}.spinner{border:2.5px solid var(--line);border-top-color:var(--accent);border-radius:50%;width:20px;height:20px;animation:.7s linear infinite spin}.spinner-lg{border-width:3.5px;width:38px;height:38px}@keyframes spin{to{transform:rotate(360deg)}}.loading-screen{place-items:center;gap:.8rem;min-height:55vh;display:grid}.toast-stack{z-index:90;gap:.5rem;display:grid;position:fixed;bottom:1.1rem;right:1.1rem}.toast{background:var(--brand);color:#fff;border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);max-width:380px;padding:.7rem 1rem;font-size:.92rem}.toast-ok{background:var(--accent-deep)}.toast-error{background:var(--danger)}.modal-scrim{z-index:80;background:#171f268c;place-items:center;padding:1.2rem;display:grid;position:fixed;inset:0;overflow-y:auto}.modal{border-radius:var(--radius);box-shadow:var(--shadow-lg);background:#fff;width:min(560px,100%);max-height:90vh;padding:1.5rem;overflow-y:auto}.modal-wide{width:min(880px,100%)}.tabs{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:.3rem;margin-bottom:1.6rem;display:flex}.tabs button{font:inherit;color:var(--ink-soft);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:.6rem .9rem;font-weight:600}.tabs button.active{color:var(--accent-ink);border-bottom-color:var(--accent)}.site-footer{background:var(--brand-deep);color:#a9b7c0;margin-top:4rem;padding:3rem 0 2rem}.site-footer a{color:#fff}.site-footer h4{color:var(--accent);text-transform:uppercase;letter-spacing:.1em;font-size:.82rem}.site-footer .grid{gap:2rem}.site-footer ul{gap:.35rem;margin:0;padding:0;font-size:.93rem;list-style:none;display:grid}.footer-base{color:#7d8b95;border-top:1px solid #ffffff1f;margin-top:2.4rem;padding-top:1.4rem;font-size:.84rem}
