/* Accepted visual-07i presentation; legacy routes/controls keep their contracts. */
:root {--surface:#13212d;--surface-soft:#192d3a;--line:#365063;--accent:#7bdddf;--focus:#8bbfff;--page-inset:max(24px,calc((100vw - 1272px)/2));}
html[data-theme=light] {--surface:#fff;--surface-soft:#edf2f4;--line:#cedbe1;--accent:#006c72;--focus:#0068ff;}
.skip-link {position:fixed;top:-80px;left:16px;z-index:50;padding:12px;background:var(--surface);color:var(--txt);}
.skip-link:focus {top:8px;}
.ecosystem-header {position:relative;z-index:15;padding:12px var(--page-inset);min-height:80px;gap:16px;background:var(--surface);border-bottom:1px solid var(--line);}
.ecosystem-header .logo {font-size:26px;letter-spacing:-.045em;font-weight:800;white-space:nowrap;}
.ecosystem-header .logo b {color:var(--accent);background:none;}
.ecosystem-header .logo small {font-size:11px;letter-spacing:.04em;margin-left:12px;border-left:1px solid var(--line);padding-left:12px;color:var(--mut);}
.ecosystem-header .btn-ghost,.project-switch summary {display:inline-flex;align-items:center;justify-content:center;min-height:44px;font-size:14px;padding:10px 14px;color:var(--txt);border-color:transparent;}
.ecosystem-header .btn-ghost:hover {background:var(--surface-soft);}
.project-switch {position:relative;}
.project-switch summary {gap:8px;cursor:pointer;border-radius:8px;background:var(--surface-soft);list-style:none;}
.project-switch summary::-webkit-details-marker {display:none;}
.switch-list {position:absolute;right:0;top:52px;width:min(260px,calc(100vw - 40px));max-height:60vh;overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:8px;box-shadow:0 12px 32px #0003;}
.switch-list a {display:block;padding:12px;color:var(--txt);text-decoration:none;overflow-wrap:anywhere;}
.switch-list a:hover {background:var(--surface-soft);}
.ecosystem-nav {display:flex;gap:30px;padding:0 var(--page-inset);background:var(--surface);border-bottom:1px solid var(--line);overflow-x:auto;}
.ecosystem-nav a {display:flex;align-items:center;min-height:52px;padding:14px 0;color:var(--mut);text-decoration:none;font-size:13px;white-space:nowrap;border-bottom:2px solid transparent;}
.ecosystem-nav a[aria-current] {color:var(--txt);font-weight:650;border-bottom-color:var(--accent);}
.ecosystem-header :focus-visible,.ecosystem-nav :focus-visible,.portal-home :focus-visible {outline:3px solid var(--focus);outline-offset:3px;}
.portal-home {--bg:#0a151e;--txt:#edf4f8;--mut:#aec1ce;background:var(--bg);-webkit-font-smoothing:antialiased;}
html[data-theme=light] .portal-home {--bg:#f3f6f7;--txt:#142a38;--mut:#4d6371;}
.portal-home .glow {display:none;}
.portal-home .page {max-width:none;padding:0;}
.portal-home h1,.portal-home h2,.portal-home h3 {font-weight:720;}
.portal-home .hero {position:relative;isolation:isolate;overflow:clip;background:#091f2d;color:#f3f9fc;display:flex;align-items:center;text-align:left;padding:56px var(--page-inset);--scene-height:clamp(480px,min(45vw,calc(100svh - 240px)),720px);min-height:var(--scene-height);}
.portal-home .hero::before {content:"";position:absolute;inset:-40px;z-index:-3;background:var(--hero-image) center/cover no-repeat;filter:blur(36px);opacity:.45;}
.portal-home .hero::after {content:"";position:absolute;inset:0;z-index:-1;}
.hero-copy {width:72%;max-width:940px;position:relative;}
.portal-home .hero .eyebrow {font-size:11px;letter-spacing:2px;font-weight:650;max-width:none;color:#7cdfe0;text-transform:uppercase;}
.portal-home .hero .hero-headline {font-size:calc(clamp(30px,3.1vw,48px) - 4px);line-height:1.12;letter-spacing:-.045em;margin:24px 0 22px;}
.portal-home .hero h1 span {background:none;color:#a0efde;}
.hero-headline .hero-line {display:block;white-space:nowrap;}
.portal-home .hero h1 .hero-line:first-child {color:inherit;}
.portal-home .hero-copy>p:not(.eyebrow) {font-size:16px;line-height:1.7;color:#b9d0dc;max-width:470px;}
.hero-actions {display:flex;gap:10px;margin-top:28px;flex-wrap:wrap;}
.portal-home .hero-actions a,.portal-home .hero button {display:inline-flex;align-items:center;justify-content:center;padding:12px 20px;border-radius:9px;font-size:14px;font-weight:600;background:#b2f5e3;color:#092b32;min-height:48px;text-decoration:none;border:0;}
.portal-home .hero-actions a.secondary,.portal-home .hero button.motion-toggle {border:1px solid #648894;background:rgba(9,31,45,.6);color:#d5e9ee;}
.hero-meta {display:flex;margin-top:36px;gap:32px;font:10px/1.5 ui-monospace,monospace;color:#a7c2d1;}
.hero-meta b {display:block;font-size:11px;font-weight:550;margin-bottom:4px;color:#dce9ef;}
.hero-caption {position:absolute;right:var(--page-inset);bottom:24px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:11px;color:#a7c6d3;}
.hero-caption-text {background:rgba(9,31,45,.65);padding:6px 10px;border-radius:6px;}
.portal-home .hero .motion-toggle {font-size:11px;padding:9px 12px;min-height:44px;}
.hero button:disabled {opacity:.65;cursor:not-allowed;}
.work-wrap {max-width:1320px;margin:auto;padding:34px 24px 48px;}
.section-heading {display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:22px;}
.eyebrow {color:var(--accent);font-size:11px;font-weight:750;letter-spacing:1.6px;text-transform:uppercase;margin-bottom:8px;}
.section-heading h2 {font-size:29px;letter-spacing:-1px;margin:6px 0 0;}
.section-heading .muted {font-size:12px;}
.project-grid {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;}
.project-card {display:flex;flex-direction:column;position:relative;text-decoration:none;color:var(--txt);padding:22px;background:var(--surface);border:1px solid var(--line);border-radius:16px;min-height:340px;transition:transform .18s,border-color .18s;overflow:hidden;}
a.project-card:hover {transform:translateY(-3px);border-color:var(--accent);color:var(--txt);}
.project-top {display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;}
.project-symbol {width:50px;height:50px;display:grid;place-items:center;border:1px solid var(--line);border-radius:12px;background:var(--surface-soft);font-size:24px;flex-shrink:0;}
.project-symbol img {width:32px;height:32px;object-fit:contain;}
.project-kind {font-size:10px;line-height:1.4;color:var(--mut);}
.project-card h3 {font-size:22px;letter-spacing:-.6px;line-height:1.2;margin:0;overflow-wrap:anywhere;}
.project-card p {color:var(--mut);font-size:13px;line-height:1.7;margin:8px 0 0;}
.project-visual {width:100%;height:100px;margin-top:20px;color:var(--accent);}
.project-visual svg {width:100%;height:100%;}
.project-bottom {margin-top:auto;padding-top:20px;display:flex;justify-content:space-between;gap:12px;font-size:13px;color:var(--accent);}
.note-strip {display:flex;gap:24px;margin-top:22px;padding:20px 0;border-top:1px solid var(--line);font-size:12px;color:var(--mut);}
.note-strip strong {color:var(--txt);}
.portal-home .public-note {max-width:1320px;margin:auto;padding:32px 24px;display:flex;justify-content:space-between;gap:40px;}
.public-note h2 {font-size:22px;max-width:330px;}
.public-note p {max-width:530px;color:var(--mut);font-size:14px;}
.login-wrap {max-width:480px;margin:0 auto 48px;padding:0 20px;scroll-margin-top:24px;}
.portal-home .auth {background:var(--surface);border-color:var(--line);border-radius:16px;}
.project-tools {display:flex;gap:12px;align-items:center;margin-bottom:24px;}
.project-tools label {font-size:13px;max-width:480px;width:100%;}
.project-tools input {display:block;margin:6px 0 0;}
.project-tools p {font-size:12px;color:var(--mut);}
.project-card[hidden],#searchEmpty[hidden] {display:none;}
.project-empty {padding:24px;border:1px solid var(--line);border-radius:12px;background:var(--surface);}
.portal-home .foot {padding:22px var(--page-inset);text-align:left;}
.portal-home #volsWidget {background:var(--surface);border-color:var(--line);}
html[data-theme=light] .hero {background:#d5edf5;}
html[data-theme=light] .hero h1,html[data-theme=light] .hero h1 .hero-line:first-child {color:#142a38;}
html[data-theme=light] .hero h1 .hero-line,html[data-theme=light] .hero .eyebrow {color:#006c72;}
html[data-theme=light] .hero-copy>p:not(.eyebrow),html[data-theme=light] .hero-meta,html[data-theme=light] .hero-meta b {color:#344f60;}
html[data-theme=light] .hero-actions a:not(.secondary) {background:#006c72;color:#fff;}
html[data-theme=light] .hero-actions a.secondary {background:rgba(249,253,255,.92);border-color:#718795;color:#142a38;}
@media(max-width:1100px) {.project-grid {grid-template-columns:repeat(2,minmax(0,1fr));}.ecosystem-header .user-name {display:none;}}
@media(max-width:767px) {
 :root {--page-inset:20px;}
 .ecosystem-header {padding:10px 20px;min-height:68px;gap:8px;}.ecosystem-header .logo {font-size:22px;}.ecosystem-header .logo small {display:none;}.ecosystem-header .btn-ghost,.project-switch summary {font-size:12px;padding:9px 10px;}.ecosystem-nav {gap:24px;}
 .portal-home .hero {flex-direction:column;align-items:stretch;padding:0 20px;min-height:0;}.portal-home .hero::before,.portal-home .hero::after {display:none;}.hero-copy {width:100%;max-width:580px;z-index:1;}
 .portal-home .hero .eyebrow {font-size:9px;letter-spacing:1.4px;padding-top:28px;}.portal-home .hero .hero-headline {font-size:calc(clamp(28px,7.4vw,34px) - 4px);margin:16px 0;}.hero-headline .hero-line {white-space:normal;}.portal-home .hero-copy>p:not(.eyebrow) {font-size:13px;}.hero-actions {margin-top:20px;gap:8px;}.portal-home .hero-actions a {font-size:12px;padding:11px 14px;min-height:44px;}.hero-meta {gap:24px;margin-top:24px;font-size:9px;}.hero-meta b {font-size:10px;}
 .hero-caption {position:relative;right:auto;bottom:auto;align-self:center;padding:12px 0 20px;font-size:9px;}.portal-home .hero .motion-toggle {font-size:10px;}.hero-caption-text {display:none;}
 .project-grid {grid-template-columns:minmax(0,1fr);gap:12px;}.project-card {min-height:0;border-radius:12px;padding:20px;}.project-card h3 {font-size:21px;}.project-visual {height:80px;}.section-heading {flex-direction:column;align-items:start;gap:8px;}.section-heading h2 {font-size:26px;}.work-wrap {padding:26px 20px 36px;}.note-strip,.portal-home .public-note {flex-direction:column;gap:12px;}.project-tools {align-items:start;flex-direction:column;}.login-wrap {margin-bottom:36px;}
 html[data-theme=light] .hero {background:#edf9fc;}
}
@media(max-width:359px) {.ecosystem-header {flex-wrap:wrap;}.ecosystem-header .top-actions {gap:4px;}.hero-actions a {flex:1 1 auto;}.hero-caption {gap:6px;}}
@media(prefers-reduced-motion:reduce) {.ecosystem-header *, .portal-home * {transition:none!important;animation:none!important;scroll-behavior:auto!important;}a.project-card:hover {transform:none;}}

/* Accepted decorative project previews, with no operational claims. */
.route-track {stroke:var(--line);stroke-width:2;}
.route-active {stroke:currentColor;stroke-width:2;}
.route-node {fill:var(--surface);stroke:currentColor;stroke-width:2;}
.route-check {stroke:currentColor;stroke-width:1.5;}
.mini-duty {display:flex;flex-direction:column;gap:8px;font-size:10px;}
.duty-question {align-self:flex-end;padding:8px;border:1px solid var(--line);border-radius:8px;background:var(--surface-soft);}
.duty-answer {display:flex;gap:8px;flex-wrap:wrap;padding:8px;border:1px solid var(--line);border-radius:8px;}
.duty-answer b {width:100%;font-weight:600;}.duty-answer span {display:flex;gap:5px;}.duty-answer i {font-style:normal;}
.hero-art:not([src]) {visibility:hidden;}
html:not([data-motion-active]) .hero-atmosphere,html:not([data-motion-active]) .motion-toggle {display:none;}

.project-game {--project-tone:#ffce86;}.project-bots {--project-tone:#9bc5ff;}
.project-symbol,.project-bottom,.project-visual {color:var(--project-tone,var(--accent));}
a.project-card:hover {border-color:var(--project-tone,var(--accent));}
html[data-theme=light] .project-game {--project-tone:#835313;}html[data-theme=light] .project-bots {--project-tone:#0055ca;}
.mini-reys {border-radius:8px;}.project-kind {text-align:right;max-width:110px;}
.mini-duty {display:grid;justify-items:start;gap:6px;}.duty-question {justify-self:end;border-radius:8px 8px 2px 8px;padding:6px 10px;color:var(--mut);background:none;}
.duty-answer {display:block;padding:8px 12px;border:0;border-radius:2px 8px 8px 8px;background:var(--surface-soft);width:85%;}
.duty-answer b {display:block;font-size:10px;margin-bottom:4px;}.duty-answer span {gap:8px;align-items:center;font-size:10px;}.duty-answer i {color:var(--accent);font-weight:600;}

/* Auth inherits the accepted portal controls; business handlers remain unchanged. */
:is(.portal-home,.portal-auth) {--action-fill:#b2f5e3;--action-text:#092b32;--action-hover:#c5faed;--auth-control-line:#648894;}
html[data-theme=light] :is(.portal-home,.portal-auth) {--action-fill:#006c72;--action-text:#fff;--action-hover:#00595f;--auth-control-line:#718795;}
.portal-auth {--bg:#0a151e;--txt:#edf4f8;--mut:#aec1ce;background:var(--bg);-webkit-font-smoothing:antialiased;}
html[data-theme=light] .portal-auth {--bg:#f3f6f7;--txt:#142a38;--mut:#4d6371;}
.portal-auth .glow {display:none;}
.portal-auth .page {max-width:1320px;padding:48px 24px;}
.auth-route {max-width:440px;margin:0 auto 32px;}
:is(.portal-home,.portal-auth) #authBox {padding:28px;border:1px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:none;backdrop-filter:none;scroll-margin-top:24px;}
:is(.portal-home,.portal-auth) #authBox h2 {font-size:22px;font-weight:720;line-height:1.25;letter-spacing:-.6px;margin:0 0 8px;color:var(--txt);}
:is(.portal-home,.portal-auth) #authBox .sub {font-size:13px;line-height:1.65;margin-bottom:24px;color:var(--mut);}
:is(.portal-home,.portal-auth) #authBox .sr-only {position:static;width:auto;height:auto;margin:0 0 8px;clip:auto;overflow:visible;white-space:normal;display:block;font-size:13px;font-weight:550;color:var(--txt);}
:is(.portal-home,.portal-auth) #authBox .inp {min-height:48px;margin-bottom:16px;padding:12px 14px;border:1px solid var(--auth-control-line);border-radius:9px;background:var(--surface-soft);color:var(--txt);font-size:15px;line-height:1.5;box-shadow:none;}
:is(.portal-home,.portal-auth) #authBox .inp::placeholder {color:var(--mut);opacity:1;}
:is(.portal-home,.portal-auth) #authBox .inp:focus {border-color:var(--accent);outline:3px solid var(--focus);outline-offset:2px;box-shadow:none;}
:is(.portal-home,.portal-auth) #authBox :is(.btn-main,.btn-sec) {display:flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:12px 16px;border-radius:9px;font-size:14px;line-height:1.5;font-weight:650;box-shadow:none;filter:none;transform:none;transition:background-color .18s,border-color .18s;}
:is(.portal-home,.portal-auth) #authBox .btn-main {background:var(--action-fill);color:var(--action-text);border:1px solid transparent;}
:is(.portal-home,.portal-auth) #authBox .btn-main:hover:not(:disabled) {background:var(--action-hover);}
:is(.portal-home,.portal-auth) #authBox .btn-sec {margin-top:0;background:transparent;color:var(--txt);border:1px solid var(--auth-control-line);}
:is(.portal-home,.portal-auth) #authBox .btn-sec:hover:not(:disabled) {background:var(--surface-soft);border-color:var(--accent);}
:is(.portal-home,.portal-auth) #authBox :is(.btn-main,.btn-sec):disabled {opacity:.65;cursor:wait;}
:is(.portal-home,.portal-auth) #authBox :is(button,a):focus-visible {outline:3px solid var(--focus);outline-offset:3px;}
:is(.portal-home,.portal-auth) #authBox .or {margin:18px 0;color:var(--mut);gap:12px;}
:is(.portal-home,.portal-auth) #authBox .or::before,:is(.portal-home,.portal-auth) #authBox .or::after {background:var(--line);}
:is(.portal-home,.portal-auth) #authBox .links {gap:8px 16px;flex-wrap:wrap;margin-top:18px;font-size:13px;}
:is(.portal-home,.portal-auth) #authBox .links a {display:inline-flex;align-items:center;min-height:44px;color:var(--mut);}
:is(.portal-home,.portal-auth) #authBox .links a:hover {color:var(--accent);text-decoration:underline;text-underline-offset:3px;}
:is(.portal-home,.portal-auth) #authBox .alert-box {font-size:13px;line-height:1.6;overflow-wrap:anywhere;}
:is(.portal-home,.portal-auth) #authBox input[type=checkbox] {accent-color:var(--accent);}
.auth-send-icon {width:18px;height:18px;flex-shrink:0;color:var(--accent);}
@media(max-width:767px) {.portal-auth .page {padding:28px 20px;}:is(.portal-home,.portal-auth) #authBox {padding:24px 20px;}.login-wrap {padding:0 20px;}}
@media(prefers-reduced-motion:reduce) {:is(.portal-home,.portal-auth) #authBox * {transition:none!important;}}

/* Shared home link: 44px hit area; official wordmark size is unchanged. */
.ecosystem-header > a.logo { min-height: 44px; }


/* Mobile section rail: preserve swipe/keyboard scrolling without a desktop bar. */
@media(max-width:767px) {
 .ecosystem-nav {scrollbar-width:none;-ms-overflow-style:none;overscroll-behavior-inline:contain;}
 .ecosystem-nav::-webkit-scrollbar {display:none;}
}

/* Mobile continuation cue occupies its own lane; it never covers a nav link. */
.ecosystem-nav-shell {display:flex;align-items:stretch;background:var(--surface);border-bottom:1px solid var(--line);}
.ecosystem-nav-shell .ecosystem-nav {flex:1 1 auto;min-width:0;border-bottom:0;}
.ecosystem-nav-cue {display:none;}
@media(max-width:767px) {
 .ecosystem-nav-cue {display:flex;flex:0 0 76px;align-items:center;justify-content:center;gap:4px;box-sizing:border-box;padding-inline:8px;color:var(--accent);background:var(--surface-soft);border-inline-start:1px solid var(--line);font-size:11px;font-weight:700;letter-spacing:.02em;white-space:nowrap;pointer-events:none;}
 .ecosystem-nav-cue svg {width:16px;height:16px;flex:0 0 16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
 .ecosystem-nav-shell[data-scroll-edge="fit"] .ecosystem-nav-cue {display:none;}
 .ecosystem-nav-shell[data-scroll-edge="end"] .ecosystem-nav-cue svg {transform:rotate(180deg);}
}
