:root{--blue:#2455e8;--ink:#172d51;--muted:#566b88;--line:#dbe4f2;--paper:#f7f9fe}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font:17px 'Source Sans 3',sans-serif;color:var(--ink);background:var(--paper)}a{color:inherit;text-decoration:none}button,input,select{font:inherit}button,a,select{cursor:pointer}button{color:inherit}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #3065ec;outline-offset:4px}::selection{background:#d4e1ff}.wrap{max-width:1480px;padding-left:5vw;padding-right:5vw;margin:auto}.skip{position:absolute;left:10px;top:-100px;background:white;padding:12px;z-index:10}.skip:focus{top:8px}.demo-bar{background:#edf1fa;border-bottom:1px solid #dce5f3;font-size:12px;color:#536985}.demo-bar .wrap{min-height:39px;display:flex;align-items:center;gap:18px;padding-top:7px;padding-bottom:7px}.demo-tag{font-weight:700;letter-spacing:1px;font-size:10px;color:#415c86;white-space:nowrap}header{height:99px;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px}.brand b{font:700 19px Manrope,sans-serif;letter-spacing:-.5px}.brand small{display:block;color:var(--muted);font-size:10px;letter-spacing:.5px;margin-top:4px}.brand-icon{background:var(--blue);border-radius:11px;display:grid;place-items:center;width:43px;height:43px;box-shadow:0 6px 16px #2455e81a}.brand-icon svg{width:29px;fill:none;stroke:white;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}nav{display:flex;align-items:center;gap:26px;font-size:13px}nav a,nav>button{min-height:44px;display:flex;align-items:center}nav>button{background:none;border:0;font-size:13px}.languages{display:flex;gap:2px}.languages button{width:40px;height:40px;border-radius:50%;border:0;background:none;font-size:11px;font-weight:600}.languages button[aria-pressed=true]{background:#e4ecfc;color:#234ccd}.hero{position:relative;overflow:hidden;border-bottom:1px solid var(--line)}.hero-inner{position:relative;z-index:1;padding-top:47px;padding-bottom:19px}.hero-copy{max-width:620px;pointer-events:none}.eyebrow{font-size:10px;letter-spacing:1.6px;font-weight:700;color:#466ba5}.hero h1{font:500 clamp(50px,5.1vw,76px)/1.09 Manrope,sans-serif;letter-spacing:-3.5px;margin:23px 0}.blue{color:var(--blue)}.lead{max-width:440px;color:var(--muted);line-height:1.7;margin:0;font-size:17px}.map-art{position:absolute;width:72%;height:100%;right:-10%;top:-10px;pointer-events:none}.map-art svg{height:100%;width:100%;min-height:540px}.map-art:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,var(--paper),#f7f9fe55 13%,transparent 36%)}.map-flow{animation:flow 9s linear infinite}.map-pulse{animation:pulse 4s ease-in-out infinite;transform-origin:405px 300px}.map-label{filter:drop-shadow(0 10px 12px #345a9410)}@keyframes flow{to{stroke-dashoffset:-270}}@keyframes pulse{50%{transform:scale(1.28);opacity:.12}}.paused .map-flow,.paused .map-pulse{animation-play-state:paused}.search-card{background:white;border:1px solid #d0ddf2;box-shadow:0 16px 36px #284b9210;border-radius:14px;max-width:760px;padding:23px 26px;margin-top:32px}.search-top{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:15px}.search-top h2{font:700 17px Manrope,sans-serif;margin:0}.search-top>span{font-size:11px;color:#537069;background:#edf5f1;padding:4px 9px;border-radius:5px}label{font-size:13px;font-weight:600;display:block;margin-bottom:8px}.search-row{display:flex;align-items:center;gap:10px;position:relative}.search-icon{position:absolute;left:14px;top:7px;font-size:30px;color:#6c80a0}.search-row input{padding-left:44px;min-width:0;flex:1}input,select{height:51px;border:1px solid #bfcee7;border-radius:7px;background:#fafcff;color:var(--ink);padding:11px 14px;width:100%;font-size:15px}input::placeholder{color:#71819a}.primary{min-height:51px;border:1px solid var(--blue);background:var(--blue);border-radius:7px;color:#fff;padding:12px 19px;font-size:14px;font-weight:600;display:inline-flex;align-items:center;justify-content:space-between;gap:22px;white-space:nowrap}.primary:hover{background:#153cc6}.search-bottom{display:flex;justify-content:space-between;gap:20px;margin-top:11px}.search-bottom button{background:none;border:0;padding:7px 0;min-height:36px;font-size:12px;color:#325caa}.search-bottom button:last-child{color:var(--muted);text-decoration:underline;text-underline-offset:3px}.error{color:#9b3645;font-size:13px;margin:8px 0 0}.error:empty{display:none}.hero-foot{display:flex;justify-content:space-between;align-items:center;margin-top:20px;gap:20px;color:#61789b;font-size:10px}.hero-foot button{background:none;border:0;min-height:40px;font-size:11px;color:var(--muted)}.shortcuts{display:grid;grid-template-columns:1fr 1fr;gap:19px;padding-top:28px;padding-bottom:32px}.shortcut{display:flex;align-items:flex-start;gap:16px;padding:23px;border-radius:11px;border:1px solid var(--line);background:white;text-align:left;font-family:inherit}.shortcut:hover{border-color:#98b4ec}.shortcut.featured{background:#edf3ff;border-color:#d0ddf6}.shortcut-icon{display:grid;place-items:center;width:39px;height:39px;flex-shrink:0;background:white;border:1px solid #d8e3f6;border-radius:9px;color:var(--blue);font-size:24px}.shortcut h2{font:600 16px Manrope,sans-serif;margin:2px 0 8px}.shortcut p{font-size:14px;line-height:1.6;color:var(--muted);margin:0;max-width:390px}.shortcut>span:last-child{margin-left:auto;color:var(--blue)}.how{padding-top:20px;padding-bottom:50px}.section-title{display:flex;align-items:end;justify-content:space-between;gap:25px}.section-title h2{font:500 29px Manrope,sans-serif;letter-spacing:-1px;margin:12px 0}.section-title>p{max-width:225px;font-size:14px;line-height:1.6;color:var(--muted)}.how-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:42px;border-top:1px solid var(--line);margin-top:17px;padding-top:24px}.how-grid article>span{font-size:12px;color:#4369b0}.how-grid h3{font:600 16px Manrope,sans-serif;margin:14px 0 10px}.how-grid p{font-size:15px;line-height:1.7;color:var(--muted);margin:0}footer{border-top:1px solid var(--line);padding-top:22px;padding-bottom:26px;display:flex;justify-content:space-between;gap:30px;align-items:center;font-size:12px;color:var(--muted)}footer b{display:block;color:var(--ink);font-weight:600}footer span{font-size:10px}footer p{max-width:470px;font-size:11px;line-height:1.6}footer button{border:0;background:none;font-size:12px;color:var(--muted);text-decoration:underline;min-height:44px}.workspace{padding-top:32px;padding-bottom:50px;min-height:65vh}.back{font-size:13px;color:#4f6c96;display:inline-flex;align-items:center;min-height:40px}.workspace-title{display:flex;justify-content:space-between;align-items:center;margin:22px 0 28px;gap:20px}.workspace h1{font:500 35px Manrope,sans-serif;letter-spacing:-1.2px;margin:12px 0}.workspace-title p{font-size:15px;color:var(--muted);margin:0;line-height:1.6}.count-pill{background:#e7eefb;padding:8px 13px;border-radius:20px;font-size:12px;white-space:nowrap}.docs-tools{display:flex;align-items:end;gap:15px;padding:20px;background:white;border:1px solid var(--line);border-radius:10px;margin-bottom:20px}.docs-tools>div:first-child{flex:1}.docs-tools>div:nth-child(2){min-width:190px}.text-button{border:0;background:none;color:#31579b;font-size:13px;text-decoration:underline;min-height:44px}.doc-results{display:grid;gap:12px}.doc-card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:20px 24px;display:flex;justify-content:space-between;align-items:center;gap:20px}.doc-card:hover{border-color:#96b2eb}.doc-card h2{font:600 17px Manrope,sans-serif;margin:8px 0}.doc-card p{font-size:13px;color:var(--muted);margin:4px 0}.doc-code{font-size:11px;color:#6480aa;letter-spacing:.5px}.doc-card .right{text-align:right;display:grid;gap:12px}.status{display:inline-flex;align-items:center;gap:7px;font-size:12px;padding:5px 10px;border-radius:5px;background:#e9effc;color:#3b5f9d;white-space:nowrap}.status:before{content:'';width:5px;height:5px;background:currentColor;border-radius:50%}.status.done{background:#e8f4ee;color:#386a53}.status.action{background:#fbf0db;color:#8b621c}.empty{padding:40px;text-align:center;color:var(--muted);background:#fff;border:1px solid var(--line);border-radius:10px}.tracking-grid{display:grid;grid-template-columns:1.7fr 1fr;gap:24px}.timeline-card,.summary-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:26px}.tracking-grid h2{font:600 19px Manrope,sans-serif;margin:0 0 18px}.timeline{list-style:none;margin:0;padding:0}.timeline li{position:relative;margin-left:12px;border-left:2px solid #dbe6f9;padding:0 0 27px 27px}.timeline li:last-child{border-left-color:transparent;padding-bottom:0}.timeline li:before{content:'✓';position:absolute;top:0;left:-12px;border:3px solid white;display:grid;place-items:center;background:#e7efff;color:#315dda;width:22px;height:22px;border-radius:50%;font-size:11px}.timeline li.current:before{content:'';background:#2b5be9;box-shadow:0 0 0 3px #e1eaff;width:19px;height:19px;left:-10px}.timeline time{font-size:11px;color:#6c819f}.timeline h3{font-size:17px;font-weight:600;margin:5px 0}.timeline p{font-size:14px;color:var(--muted);margin:4px 0}.timeline button{border:0;background:none;color:#315bae;font-size:12px;padding:9px 0;min-height:36px;text-decoration:underline}.summary-card{align-self:start}.summary-card dl{margin:0}.summary-card dt{font-size:12px;color:var(--muted);margin-top:17px}.summary-card dd{font-size:15px;margin:5px 0;overflow-wrap:anywhere}.next-step{background:#edf3ff;border:1px solid #d8e5fc;border-radius:8px;padding:16px;margin-top:22px}.next-step strong{font-size:14px}.next-step p{font-size:14px;color:var(--muted);line-height:1.6;margin:7px 0 0}.track-note{margin-top:22px;color:var(--muted);font-size:13px;line-height:1.7}.copy-button{background:none;border:1px solid #cbd9ef;border-radius:6px;padding:8px 12px;font-size:12px;margin-top:14px;min-height:40px}.copy-result{font-size:12px;color:var(--muted)}dialog{border:1px solid #d3def0;background:white;border-radius:15px;max-width:560px;width:calc(100% - 36px);padding:27px;color:var(--ink);box-shadow:0 30px 100px #15365a22}dialog::backdrop{background:#142b4a55;backdrop-filter:blur(3px)}.dialog-top{display:flex;align-items:center;justify-content:space-between}.dialog-top button{border:0;background:#eff3fa;border-radius:50%;width:38px;height:38px;font-size:24px}dialog h2{font:600 24px Manrope,sans-serif;letter-spacing:-.7px;line-height:1.4}dialog p{color:var(--muted);font-size:16px;line-height:1.7}.sample{background:#edf3ff;border:1px solid #d6e2f8;border-radius:8px;padding:14px;font-size:13px;line-height:1.8;overflow-wrap:anywhere}.sample strong{display:block;color:#345caa}body:has(dialog[open]){overflow:hidden}[hidden]{display:none!important}
@media(max-width:1050px){nav{gap:15px}.brand b{font-size:17px}.map-art{right:-23%;width:87%;opacity:.85}.hero-copy{max-width:500px}.search-card{max-width:670px}.search-row input{font-size:14px}.primary{gap:12px;padding:12px 15px}.shortcut{padding:19px}.tracking-grid{grid-template-columns:1.3fr 1fr}}
@media(max-width:760px){.wrap{padding-left:23px;padding-right:23px}.demo-bar .wrap{align-items:flex-start;gap:9px;font-size:10px;line-height:1.5;padding-top:9px;padding-bottom:9px}.demo-tag{font-size:8px;white-space:normal;max-width:95px}header{height:82px}.brand b{font-size:16px}.brand small{font-size:9px}.brand-icon{height:37px;width:37px}.brand{gap:9px}nav>a,nav>.institution-link{display:none}.languages button{width:32px;height:38px}.hero-inner{padding-top:33px}.hero h1{font-size:49px;letter-spacing:-2.7px;margin:19px 0}.eyebrow{font-size:9px;letter-spacing:1.2px}.lead{font-size:16px;line-height:1.6;max-width:340px}.map-art{width:155%;height:430px;top:95px;right:-80%;opacity:.3}.map-art:after{background:linear-gradient(90deg,var(--paper),transparent 70%)}.map-label{display:none}.search-card{margin-top:30px;padding:20px}.search-top{align-items:flex-start;gap:10px}.search-top h2{font-size:16px}.search-top>span{font-size:9px;white-space:nowrap}.search-row{flex-wrap:wrap}.search-row input{width:100%;flex:initial}.search-row .primary{width:100%;margin-top:2px}.search-bottom{display:block}.search-bottom button{display:block;min-height:40px}.search-card label{font-size:12px}.hero-foot{align-items:flex-start;gap:12px}.hero-foot>span{max-width:170px;line-height:1.6;font-size:9px}.hero-foot button{font-size:10px;white-space:nowrap}.shortcuts{grid-template-columns:1fr;gap:12px;padding-top:22px;padding-bottom:25px}.shortcut p{font-size:14px}.shortcut h2{font-size:16px}.shortcut{padding:19px;gap:12px}.section-title{display:block}.section-title h2{font-size:26px;line-height:1.4}.section-title>p{max-width:none}.how-grid{grid-template-columns:1fr;gap:24px}.how{padding-bottom:35px}.how-grid h3{margin-top:9px}.how-grid p{font-size:16px}footer{display:block;padding-top:20px}footer p{font-size:12px}.workspace{padding-top:20px}.workspace h1{font-size:28px;line-height:1.35}.workspace-title{align-items:flex-start;flex-direction:column;gap:12px}.docs-tools{flex-wrap:wrap;padding:17px}.docs-tools>div:first-child{flex:auto;width:100%}.docs-tools>div:nth-child(2){flex:1;min-width:150px}.doc-card{padding:19px;align-items:flex-start;flex-direction:column;gap:13px}.doc-card .right{width:100%;display:flex;align-items:center;justify-content:space-between}.doc-card h2{font-size:17px;line-height:1.5}.tracking-grid{grid-template-columns:1fr}.timeline-card,.summary-card{padding:21px}.timeline li{padding-left:22px}.timeline h3{font-size:16px}dialog{padding:23px}.status{font-size:11px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.map-flow,.map-pulse{animation:none}}

/* Geography-based, oversized editorial map composition. */
.hero{min-height:680px}.hero-inner{padding-top:58px}.hero-copy{max-width:570px}.hero h1{font-size:clamp(50px,5.15vw,78px);letter-spacing:-3px}.lead{max-width:430px}.map-art{width:130vw;height:auto;right:-49vw;top:-95px;opacity:1}.map-art svg{display:block;width:100%;height:auto;min-height:0}.map-art:after{background:linear-gradient(90deg,var(--paper) 0%,#f7f9fec9 14%,#f7f9fe22 33%,transparent 50%)}.hero-foot{margin-top:30px}.brand b{font-size:18px}.search-card{max-width:700px}.hero-copy .eyebrow{max-width:390px;line-height:1.8}.hero .map-pulse{transform-box:view-box}
@media(min-width:1700px){.map-art{width:125vw;right:-43vw;top:-180px}}
@media(max-width:1050px){.map-art{width:150vw;right:-68vw;top:-10px}.brand b{font-size:16px}nav{gap:12px}.hero-copy{max-width:530px}}
@media(max-width:760px){.hero{min-height:0}.hero-inner{padding-top:32px}.brand b{font-size:14px;display:block;max-width:175px;line-height:1.4}.brand small{font-size:8px}.hero h1{font-size:46px;letter-spacing:-2px}.hero-copy .eyebrow{font-size:8px;max-width:280px}.map-art{width:260vw;right:-175vw;top:50px;opacity:.48}.map-art:after{background:linear-gradient(90deg,var(--paper),#f7f9fe88 25%,transparent 65%)}.hero-foot{margin-top:18px}.hero-foot>span{max-width:165px}.search-card{position:relative}.status{white-space:normal}.doc-card .right{gap:12px}.hero h1 .blue{font-size:.95em}}

nav .admin-entry{display:inline-flex;justify-content:center;background:var(--blue);color:white;border:1px solid var(--blue);border-radius:7px;padding:12px 17px;font-weight:600;min-height:46px;text-align:center}nav .admin-entry:hover{background:#173dc2}.hero .lead{font-size:16px;max-width:460px}
.admin-main{position:relative;overflow:hidden;min-height:calc(100vh - 138px);display:grid;place-items:center;padding:48px 24px}.admin-main .map-art{top:-100px;opacity:.7}.admin-panel{position:relative;z-index:1;width:min(100%,520px);background:#fff;border:1px solid #d0ddf2;border-radius:16px;padding:42px;box-shadow:0 20px 70px #254b9614}.admin-panel h1{font:600 30px/1.3 Manrope,sans-serif;letter-spacing:-1px;margin:14px 0 32px}.admin-panel input{margin-bottom:20px;height:55px}.admin-panel .primary{width:100%;justify-content:center;min-height:54px}.admin-separator{display:flex;align-items:center;gap:15px;color:var(--muted);font-size:13px;margin:25px 0}.admin-separator:before,.admin-separator:after{content:'';height:1px;background:var(--line);flex:1}.keycloak{width:100%;min-height:54px;border:1px solid #b6c8e7;border-radius:7px;background:#f7f9fe;font-weight:600}.keycloak:hover{background:#edf2fc}.admin-note{font-size:12px;line-height:1.5;color:var(--muted);margin:22px 0 0}.login-status{font-size:14px;line-height:1.6;color:#34558a;background:#edf3ff;border-radius:6px;padding:12px;margin:18px 0 0}.login-status:empty{display:none}.admin-panel .eyebrow{font-size:10px}.admin-back{font-size:13px;min-height:44px;display:inline-flex;align-items:center}
@media(max-width:1050px){header nav{gap:12px}header nav>a:not(.admin-entry){display:none}.admin-entry{max-width:200px;font-size:12px}}
@media(max-width:760px){body>header{height:auto;min-height:92px;flex-wrap:wrap;padding-top:15px;padding-bottom:15px;gap:13px}body>header nav{width:100%;justify-content:space-between}nav .admin-entry{display:inline-flex;max-width:none;flex:1;font-size:13px}.hero .lead{font-size:15px}.admin-main{min-height:calc(100vh - 150px);padding:28px 20px}.admin-panel{padding:27px 23px}.admin-panel h1{font-size:26px}.admin-header nav{width:auto}.admin-header .admin-back{font-size:12px}.admin-main .map-art{width:260vw;right:-150vw}}

header.admin-header nav>a.admin-back{display:inline-flex}

/* The console's sign-in page sizes itself to the viewport instead of
   subtracting a fixed header height, which overflowed and produced a
   scrollbar whenever the header wrapped or the panel grew. */
.login-shell{min-height:100dvh;display:flex;flex-direction:column}
/* .wrap sets margin:auto. On a flex item auto margins absorb free space in
   both directions, so the header would otherwise shrink to its content and
   sit centred in the column. Keep the horizontal centring, drop the rest. */
.login-shell>header.wrap{width:100%;margin-top:0;margin-bottom:0;flex:none}
.login-shell>.demo-bar{flex:none}
.login-shell .admin-main{flex:1;min-height:0;padding:24px 20px}
.login-shell .map-art svg{min-height:0}
