@font-face{font-family:Lato;src:url('/static/fonts/Lato-Light.ttf') format('truetype');font-weight:300;font-style:normal;font-display:swap}
@font-face{font-family:Lato;src:url('/static/fonts/Lato-Regular.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Lato;src:url('/static/fonts/Lato-Italic.ttf') format('truetype');font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:Lato;src:url('/static/fonts/Lato-Bold.ttf') format('truetype');font-weight:700;font-style:normal;font-display:swap}
:root{--brand:#007c72;--brand-hover:#006b63;--brand-tint:#effaf8;--rail:#003f3b;--ink:#17201f;--muted:#556562;--bg:#f5f8f7;--surface:#fff;--line:rgba(0,124,114,.18);--focus:#00a99a;--warning:#8a6300;--warning-bg:#fff8dc;--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--shadow:0 18px 50px -38px rgba(0,63,59,.55);--radius:12px;--fast:160ms cubic-bezier(.16,1,.3,1)}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;min-width:320px;min-height:100dvh;background:var(--bg);color:var(--ink);font:400 1rem/1.6 Lato,system-ui,sans-serif;-webkit-font-smoothing:antialiased}
img,svg{display:block;max-width:100%}
a{color:inherit;text-underline-offset:.2em}
button,input{font:inherit}
html :focus-visible{outline:3px solid var(--surface);outline-offset:3px;box-shadow:0 0 0 6px var(--brand)}
.skip-link{position:fixed;z-index:100;left:1rem;top:1rem;padding:.7rem 1rem;background:var(--surface);color:var(--rail);border-radius:6px;transform:translateY(-180%)}
.skip-link:focus{transform:none}
.eyebrow{margin:0 0 .55rem;color:var(--brand);font:700 .72rem/1.3 var(--mono);letter-spacing:.11em;text-transform:uppercase}
h1,h2,h3,h4,p{margin-top:0}
h1{max-width:16ch;font-size:clamp(2.2rem,5vw,4.7rem);font-weight:300;line-height:1.02;letter-spacing:-.035em}
h2{font-size:clamp(1.5rem,2.8vw,2.3rem);line-height:1.15}
h3{font-size:1.1rem;line-height:1.3}
h4{font-size:1rem;line-height:1.3}
.button{display:inline-flex;min-height:44px;align-items:center;justify-content:center;gap:.5rem;padding:.65rem 1rem;border:1px solid transparent;border-radius:6px;background:var(--brand);color:#fff;font-weight:700;text-decoration:none;transition:background var(--fast),transform var(--fast)}
.button:hover{background:var(--brand-hover);transform:translateY(-1px)}
.button--quiet{border-color:var(--line);background:transparent;color:inherit}
.button--quiet:hover{background:rgba(255,255,255,.1)}
.public-page{display:grid;min-height:100dvh;grid-template-rows:1fr auto;background:radial-gradient(circle at 85% 15%,rgba(0,124,114,.15),transparent 30%),linear-gradient(135deg,#f7fbfa,#edf5f3)}
.public-main{display:grid;place-items:center;padding:clamp(2rem,8vw,7rem)}
.public-hero{width:min(1040px,100%);padding:clamp(1.5rem,5vw,4rem);border:1px solid var(--line);border-radius:var(--radius);background:rgba(255,255,255,.86);box-shadow:var(--shadow)}
.public-logo{width:240px;height:auto;margin-bottom:clamp(3rem,8vw,7rem)}
.public-copy{max-width:58ch;color:var(--muted);font-size:1.1rem}
.public-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:2rem}
.policy-page{min-height:100dvh;background:radial-gradient(circle at 85% 8%,rgba(0,124,114,.12),transparent 28%),var(--bg)}
.policy-wrap{width:min(1040px,100%);margin:0 auto;padding-inline:clamp(1.25rem,5vw,4rem)}
.policy-hero{padding:clamp(2rem,6vw,5rem) 0;background:var(--rail);color:#effffb}
.policy-logo{width:220px;height:auto;margin-bottom:clamp(2.5rem,6vw,5rem)}
.policy-hero .eyebrow{color:#66ded1}
.policy-hero h1{max-width:18ch;margin-bottom:1rem;font-size:clamp(2.1rem,5vw,4rem);overflow-wrap:anywhere}
.policy-summary{max-width:58ch;color:#d8efeb;font-size:1.1rem}
.policy-hero .button--quiet{margin-top:1rem;border-color:rgba(255,255,255,.35)}
.policy-main{padding:clamp(2.5rem,6vw,5rem) 0}
.policy-content{max-width:1040px}
.policy-lead{max-width:70ch;color:var(--muted);font-size:1.18rem}
.policy-content h2{margin:clamp(2.5rem,5vw,4rem) 0 1rem;padding-bottom:.65rem;border-bottom:1px solid var(--line);color:var(--rail);text-wrap:balance}
.policy-content p,.policy-content ul{max-width:78ch}
.policy-content a{color:var(--brand-hover)}
.policy-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin:1.5rem 0}
.policy-card{padding:1.35rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow)}
.policy-card h3{margin-bottom:.35rem;color:var(--rail)}
.policy-card p{margin:0;color:var(--muted)}
.policy-regions{display:flex;flex-wrap:wrap;gap:.6rem;margin:1rem 0;padding:0;list-style:none}
.policy-regions li{margin:0;padding:.35rem .8rem;border:1px solid var(--line);border-radius:999px;background:var(--brand-tint);color:var(--rail);font-weight:700}
.policy-note{max-width:78ch;margin:2rem 0;padding:1rem 1.25rem;border-left:4px solid var(--brand);border-radius:0 8px 8px 0;background:var(--brand-tint);color:var(--muted)}
.policy-footer{max-width:78ch;margin-top:clamp(3rem,6vw,5rem);padding-top:1.5rem;border-top:1px solid var(--line);color:var(--muted);font-size:.9rem}
.portal-shell{display:grid;min-height:100dvh;grid-template-columns:216px minmax(0,1fr)}
.portal-rail{position:sticky;top:0;display:flex;height:100dvh;flex-direction:column;padding:1.4rem;background:var(--rail);color:#effffb}
.portal-logo{width:170px;height:auto;margin:.2rem 0 2.2rem}
.portal-nav{display:grid;gap:.35rem}
.portal-nav a{display:flex;min-height:44px;align-items:center;padding:.55rem .7rem;border-left:2px solid transparent;border-radius:4px;color:#d8efeb;text-decoration:none}
.portal-nav a:hover,.portal-nav a[aria-current=page]{border-left-color:#66ded1;background:rgba(255,255,255,.08);color:#fff}
.portal-rail__account{margin-top:auto;display:grid;gap:.75rem}
.portal-user{overflow-wrap:anywhere;color:#b9d7d2;font-size:.9rem}
.portal-stage{min-width:0}
.portal-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem clamp(1.25rem,4vw,4rem);border-bottom:1px solid var(--line);background:rgba(245,248,247,.9)}
.portal-header p{margin:0;color:var(--muted)}
.portal-main{width:min(1480px,100%);margin:0 auto;padding:clamp(2rem,5vw,5rem) clamp(1.25rem,4vw,4rem)}
.page-intro{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(240px,.7fr);gap:2rem;align-items:end;margin-bottom:clamp(2.5rem,6vw,5rem)}
.page-intro p{max-width:55ch;color:var(--muted);font-size:1.08rem}
.featured-grid,.catalog-grid,.docs-grid{display:grid;gap:1rem}
.featured-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.catalog-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.docs-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.guide-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.service-card,.doc-card{position:relative;display:flex;min-width:0;flex-direction:column;padding:1.35rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);text-decoration:none;transition:transform var(--fast),border-color var(--fast),box-shadow var(--fast)}
.doc-card{overflow-wrap:anywhere;hyphens:auto}
.doc-card h2{font-size:clamp(1.2rem,1.8vw,1.55rem);hyphens:none;overflow-wrap:normal}
.service-card:hover,.doc-card:hover{transform:translateY(-2px);border-color:var(--brand);box-shadow:0 22px 55px -38px rgba(0,63,59,.8)}
.service-card--featured{min-height:260px;padding:clamp(1.35rem,3vw,2.2rem)}
.service-card__mark{width:34px;height:4px;margin-bottom:auto;background:var(--brand)}
.service-card p,.doc-card p{color:var(--muted)}
.service-card__link{margin-top:auto;color:var(--brand);font-weight:700}
.environment-badge{align-self:flex-start;margin-bottom:.8rem;padding:.2rem .45rem;border:1px solid #d7b65c;border-radius:999px;background:var(--warning-bg);color:var(--warning);font:700 .7rem/1.4 var(--mono);text-transform:uppercase}
.section{scroll-margin-top:1rem;margin-top:clamp(3rem,7vw,6rem)}
.section-heading{display:flex;align-items:end;justify-content:space-between;gap:1rem;margin-bottom:1.25rem;border-bottom:1px solid var(--line)}
.section-heading p{color:var(--muted)}
.catalog-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(2rem,4vw,4rem)}
.docs-band{padding:clamp(1.4rem,3vw,2.5rem);border-radius:var(--radius);background:var(--rail);color:#effffb}
.docs-band p{color:#b9d7d2}
.docs-band .doc-card{color:var(--ink)}
.docs-band .doc-card p{color:var(--muted)}
.site-footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem;padding:1.25rem clamp(1.25rem,4vw,4rem);border-top:1px solid var(--line);color:var(--muted);font-size:.88rem}
.site-footer__links{display:flex;flex-wrap:wrap;gap:1rem}
.site-footer a,.article-nav a,.article-toc a,.breadcrumb a{display:inline-flex;min-height:44px;align-items:center}
.article-layout{display:grid;grid-template-columns:minmax(0,1fr) 240px;gap:clamp(2rem,5vw,5rem)}
.article-layout>div{min-width:0}
.article-prose{min-width:0;max-width:78ch}
.article-prose pre{max-width:100%;overflow:auto}
.article-prose table{display:block;width:max-content;max-width:100%;overflow-x:auto}
.article-prose pre{padding:1rem;border-radius:8px;background:#12211f;color:#eafffb}
.article-prose pre.mermaid{overflow-x:auto;overscroll-behavior-inline:contain}
.article-prose pre.mermaid{background:#fff;color:var(--ink);border:1px solid var(--line)}
.article-prose code{font-family:var(--mono)}
.article-prose :not(pre)>code{overflow-wrap:anywhere;padding:.12em .3em;border-radius:4px;background:#e8f1ef}
.article-toc{position:sticky;top:1rem;align-self:start}
.search-form{display:flex;gap:.5rem;margin-bottom:1.5rem}
.search-form input{width:min(460px,100%);min-height:44px;padding:.55rem .75rem;border:1px solid var(--muted);border-radius:6px;background:#fff}
@media(max-width:1152px){.catalog-columns{grid-template-columns:minmax(0,1fr)}.docs-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:960px){.portal-shell{grid-template-columns:1fr}.portal-rail{position:static;height:auto}.portal-logo{margin-bottom:1rem}.portal-nav{grid-template-columns:repeat(4,minmax(0,1fr))}.portal-rail__account{margin-top:1rem;grid-template-columns:1fr auto;align-items:center}.featured-grid,.docs-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.article-layout{grid-template-columns:minmax(0,1fr)}.article-toc{position:static}}
@media(max-width:640px){h1{font-size:clamp(2.1rem,12vw,3.1rem)}.portal-nav{grid-template-columns:repeat(2,minmax(0,1fr))}.portal-header,.page-intro{display:block}.portal-header .button{margin-top:.75rem}.featured-grid,.catalog-grid,.docs-grid,.policy-grid{grid-template-columns:1fr}.service-card--featured{min-height:220px}.site-footer{display:grid}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
.article-nav{display:grid;grid-template-columns:1fr auto 1fr;gap:1rem;margin-top:3rem;padding-top:1rem;border-top:1px solid var(--line)}
.article-nav :last-child{text-align:right}
.article-toc ol{margin:0;padding-left:1.2rem}.article-toc a{text-decoration:none}.toc-subsection{margin-left:1rem}
.code-block-wrapper{position:relative;min-width:0}.code-block-wrapper pre{padding-top:3.75rem}.copy-button{position:absolute;top:.5rem;right:.5rem;min-height:44px;padding:.35rem .6rem;border:1px solid rgba(255,255,255,.25);border-radius:5px;background:#20332f;color:#fff}.copy-button.copied{background:var(--brand)}
@media(max-width:640px){.article-nav{grid-template-columns:1fr}.article-nav :last-child{text-align:left}.search-form{display:grid}}
.lang-switch{display:flex;gap:.75rem}.lang-switch button{display:inline-flex;min-height:44px;align-items:center;background:none;border:0;padding:0;font:inherit;color:inherit;cursor:pointer;text-decoration:underline;text-underline-offset:.2em}.lang-switch button[aria-current="true"]{font-weight:700;text-decoration:none}
/* leaderboard.html — reuses the surface/line/muted tokens above so the page is
   recognisably the same portal. Two shapes are new: the level ladder and the
   presence calendar. Values are set in --mono: they are data, and they line up. */
.lb-month{margin:0 0 1.25rem;color:var(--muted);font:700 .78rem/1.3 var(--mono);letter-spacing:.08em}

/* The ladder: six named rungs, the current one raised. Scrolls sideways on
   narrow screens rather than wrapping into an unreadable second row. */
.lb-ladder{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(6.5rem,1fr);gap:.35rem;margin:0 0 1.1rem;padding:0;overflow-x:auto;list-style:none;counter-reset:rung}
.lb-rung{position:relative;padding:.7rem .75rem .75rem;border-top:3px solid var(--line);color:var(--muted)}
.lb-rung__name{display:block;font-size:.9rem;text-transform:capitalize;white-space:nowrap}
.lb-rung__xp{display:block;font:.74rem/1.4 var(--mono)}
.lb-rung--done{border-top-color:var(--brand);color:var(--ink)}
.lb-rung--here{border-top-color:var(--brand);border-top-width:3px;background:var(--brand-tint);border-radius:0 0 8px 8px;color:var(--rail)}
.lb-rung--here .lb-rung__name{font-weight:700;color:var(--brand)}
.lb-rung--here::after{content:"";position:absolute;top:-3px;left:0;width:100%;height:3px;background:var(--rail)}

.lb-progress{margin:0 0 1.75rem}
.lb-bar{overflow:hidden;height:8px;border-radius:999px;background:var(--brand-tint)}
.lb-bar__fill{display:block;height:100%;border-radius:inherit;background:var(--brand)}
.lb-next{margin:.55rem 0 0;color:var(--muted);font-size:.94rem}
.lb-next strong{color:var(--ink);font:700 1rem/1 var(--mono)}
.lb-next__target{text-transform:capitalize}

.lb-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.1rem 1.5rem;margin:0 0 2rem;padding:1.35rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow)}
.lb-stats>div{min-width:0}
.lb-stats dt{color:var(--muted);font-size:.8rem;letter-spacing:.01em}
.lb-stats dd{margin:.2rem 0 0;font:700 1.45rem/1.2 var(--mono);font-variant-numeric:tabular-nums}
.lb-stats dd.lb-level{font-family:Lato,system-ui,sans-serif;color:var(--brand);text-transform:capitalize}
.lb-unit,.lb-scope{color:var(--muted);font:400 .78rem/1 Lato,system-ui,sans-serif}
.lb-scope{display:block;opacity:.85}

/* Presence calendar: one cell per day, filled when the person worked with AI.
   Binary on purpose — the gateway reports no per-day amount to shade. */
.lb-calendar{display:flex;gap:.6rem;margin:0 0 2rem;padding:1.1rem 1.2rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);overflow-x:auto}
.lb-calendar__meta{margin:0 0 .8rem;color:var(--muted);font-size:.9rem}
.lb-calendar__meta strong{color:var(--ink);font:700 1rem/1 var(--mono)}
.lb-calendar__days{display:grid;grid-template-rows:repeat(7,1fr);gap:3px;padding-top:1.15rem;color:var(--muted);font:.66rem/1 var(--mono)}
.lb-calendar__days span{display:flex;align-items:center}
.lb-calendar__days span:nth-child(1){grid-row:1}
.lb-calendar__days span:nth-child(2){grid-row:3}
.lb-calendar__days span:nth-child(3){grid-row:5}
.lb-calendar__grid{flex:1;min-width:0}
.lb-calendar__months,.lb-calendar__cells{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(7px,1fr);gap:3px}
.lb-calendar__months{height:1.15rem;color:var(--muted);font:.66rem/1 var(--mono)}
.lb-calendar__cells{grid-template-rows:repeat(7,auto)}
.lb-cell{aspect-ratio:1;border-radius:3px;background:rgba(0,124,114,.1)}
.lb-cell--void{background:none}
.lb-cell--on{background:var(--brand)}
.lb-cell--streak{background:var(--rail)}

.lb-models{display:grid;gap:.55rem;margin:0 0 2rem;padding:0;list-style:none}
.lb-models li{display:grid;grid-template-columns:minmax(8rem,14rem) minmax(0,1fr) 3.5rem;gap:.75rem;align-items:center}
.lb-models__name{font:.9rem/1.4 var(--mono);overflow-wrap:anywhere}
.lb-models__track{overflow:hidden;height:14px;border-radius:3px;background:var(--brand-tint)}
.lb-models__fill{display:block;height:100%;background:var(--brand)}
.lb-models__value{color:var(--muted);font:.82rem/1 var(--mono);text-align:right;font-variant-numeric:tabular-nums}
.lb-tag{margin-left:.35rem;padding:.1rem .4rem;border-radius:999px;background:var(--brand-tint);color:var(--brand);font:700 .66rem/1.5 Lato,system-ui,sans-serif;text-transform:uppercase;letter-spacing:.06em}

/* Earned badges as certificate marks: a hexagon face with the number the badge
   stands for, a name band, and the issuer band. Two nested hexagons because a
   clip-path cuts a border off — the outer one IS the border, and its colour
   carries the tier. clip-path and backgrounds only: no image to ship. */
.lb-badges{display:flex;flex-wrap:wrap;gap:1.1rem;margin:0;padding:0;list-style:none}
.lb-badge-item{display:grid;justify-items:center;gap:.4rem}
.lb-badge{--hex:polygon(50% 0,100% 20%,100% 80%,50% 100%,0 80%,0 20%);width:7.5rem;aspect-ratio:1/1.22;padding:3px;clip-path:var(--hex);background:var(--brand)}
.lb-badge__face{display:grid;grid-template-rows:1fr auto auto;height:100%;clip-path:var(--hex);background:var(--surface);text-align:center}
.lb-badge__mark{display:grid;place-items:center;padding:.9rem .5rem .35rem;color:var(--brand);font:700 2rem/1 var(--mono)}
.lb-badge__name{display:grid;place-items:center;min-height:2.4rem;padding:.3rem .55rem;background:var(--rail);color:#fff;font-size:.72rem;font-weight:700;line-height:1.25;text-transform:capitalize}
.lb-badge__brand{padding:.22rem .5rem 1rem;background:var(--brand);color:#fff;font-size:.55rem;font-weight:700;letter-spacing:.12em}
.lb-badge__date{color:var(--muted);font:.72rem/1 var(--mono);font-variant-numeric:tabular-nums}
/* A first step, a habit, a year. Only the frame and the mark change — the bands
   stay put so a wall of badges still reads as one set. */
.lb-badge--t1{background:#9fc9c5}
.lb-badge--t1 .lb-badge__mark{color:#4f8a85}
.lb-badge--t3{background:var(--rail)}
.lb-badge--t3 .lb-badge__mark{color:var(--rail)}
.lb-badge--t3 .lb-badge__name{background:#00524d}
.lb-empty,.lb-caveat{color:var(--muted)}
.lb-caveat{max-width:70ch;margin:0 0 1.25rem;font-size:.92rem}
.lb-notice{max-width:70ch;margin:0;padding:.9rem 1.1rem;border:1px solid var(--line);border-left:3px solid var(--warning);border-radius:var(--radius);background:var(--warning-bg);color:var(--ink)}

.lb-board{width:100%;border-collapse:collapse}
.lb-board th,.lb-board td{padding:.65rem .9rem;border-bottom:1px solid var(--line);text-align:left}
.lb-board th{color:var(--muted);font-size:.8rem;font-weight:700;letter-spacing:.02em}
.lb-board__rank{width:3.5rem;color:var(--brand);font:700 1rem/1 var(--mono);font-variant-numeric:tabular-nums}
.lb-board__model{color:var(--muted);font:.86rem/1.4 var(--mono)}
.lb-board tbody tr:hover{background:var(--brand-tint)}

.lb-policy{max-width:70ch;margin:1rem 0 1.5rem;color:var(--muted);font-size:.92rem}
.lb-modes fieldset{display:grid;gap:.9rem;margin:0 0 1.25rem;padding:1.35rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}
.lb-modes legend{padding:0 .4rem;color:var(--muted);font-size:.8rem;letter-spacing:.02em;text-transform:uppercase}
.lb-modes label{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.15rem .75rem;align-items:baseline;cursor:pointer}
.lb-modes input{grid-row:span 2;width:20px;height:20px;accent-color:var(--brand)}
.lb-mode__name{font-weight:700}
.lb-mode__hint{grid-column:2;color:var(--muted);font-size:.9rem}
@media (min-width:900px){.lb-stats{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:720px){.lb-board__model{display:none}.lb-models li{grid-template-columns:minmax(0,1fr) 3.5rem}.lb-models__track{grid-column:1/-1}}
