:root {
    --public-ink: #102b29;
    --public-forest: #0d4b3d;
    --public-green: #2e8b68;
    --public-leaf: #a8cf5b;
    --public-clay: #c95a3f;
    --public-mist: #e8f0e9;
    --public-paper: #f9faf5;
    --public-line: rgba(16, 43, 41, 0.15);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body.public-landing { margin: 0; background: var(--public-paper); color: var(--public-ink); font-family: Georgia, 'Times New Roman', serif; line-height: 1.55; }
button, a { font: inherit; }
a { color: inherit; }

.public-skip-link { position: fixed; z-index: 20; top: -4rem; left: 1rem; padding: .65rem 1rem; background: var(--public-ink); color: #fff; text-decoration: none; }
.public-skip-link:focus { top: 1rem; }
.public-nav { min-height: 4.75rem; display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .8rem clamp(1rem, 5vw, 5rem); border-bottom: 1px solid var(--public-line); background: rgba(249, 250, 245, .96); position: relative; z-index: 5; }
.public-brand { display: inline-flex; align-items: center; gap: .62rem; font: 800 1.2rem/1 Arial, sans-serif; letter-spacing: .04em; text-decoration: none; }
.public-brand__mark { width: 2.25rem; height: 2.25rem; display: inline-grid; place-items: center; color: var(--public-forest); background: var(--public-leaf); border-radius: 50%; }
.public-nav__actions { display: flex; align-items: center; gap: .65rem; font-family: Arial, sans-serif; font-size: .86rem; }
.public-language-button, .public-login-link { border: 1px solid var(--public-line); background: transparent; min-height: 2.45rem; padding: .45rem .7rem; color: var(--public-ink); text-decoration: none; display: inline-flex; align-items: center; gap: .4rem; cursor: pointer; }
.public-language-button:hover, .public-login-link:hover { border-color: var(--public-forest); background: var(--public-mist); }
.public-language-button span { color: var(--public-clay); font-weight: 700; font-size: .7rem; }

.public-hero { position: relative; isolation: isolate; overflow: hidden; min-height: min(46rem, calc(100vh - 4.75rem)); display: grid; grid-template-columns: minmax(0, .92fr) minmax(25rem, 1.08fr); align-items: center; gap: clamp(2rem, 5vw, 7rem); padding: clamp(4rem, 10vh, 8rem) clamp(1rem, 10vw, 10rem); background: #e6eee2; }
.public-hero::before { content: ''; position: absolute; inset: 0 0 0 47%; z-index: -1; background: var(--public-forest); clip-path: polygon(16% 0,100% 0,100% 100%,0 100%); }
.public-hero__copy { max-width: 44rem; }
.public-eyebrow { margin: 0 0 1rem; color: var(--public-forest); font: 700 .72rem/1.3 Arial, sans-serif; letter-spacing: .11em; text-transform: uppercase; }
.public-eyebrow i { color: var(--public-clay); margin-right: .35rem; }
.public-hero h1, .public-section h2 { margin: 0; font-weight: 500; letter-spacing: 0; line-height: 1.03; }
.public-hero h1 { font-size: clamp(3rem, 5vw, 5.5rem); max-width: 10ch; }
.public-hero__summary { max-width: 39rem; margin: 1.6rem 0 2rem; font-size: clamp(1.05rem, 1.35vw, 1.28rem); }
.public-hero__actions, .public-contact__actions { display: flex; flex-wrap: wrap; gap: .7rem; }
.public-button { min-height: 2.85rem; padding: .72rem 1rem; display: inline-flex; align-items: center; justify-content: center; gap: .5rem; border: 1px solid transparent; text-decoration: none; font: 700 .82rem/1.2 Arial, sans-serif; letter-spacing: .02em; transition: transform .2s ease, background-color .2s ease, border-color .2s ease; }
.public-button:hover { transform: translateY(-2px); }
.public-button--primary { background: var(--public-forest); color: #fff; border-color: var(--public-forest); }
.public-button--primary:hover { background: #093e33; }
.public-button--quiet { border-color: var(--public-forest); color: var(--public-forest); background: rgba(255,255,255,.55); }

.public-network { position: relative; min-height: 25rem; color: #dbeee1; align-self: center; }
.public-network__map { width: 100%; height: auto; overflow: visible; filter: drop-shadow(0 1.2rem 2rem rgba(0, 0, 0, .15)); }
.public-map-land { fill: rgba(168, 207, 91, .11); stroke: rgba(219, 238, 225, .34); stroke-width: 1.4; }
.public-network__path { fill: none; stroke: #b8e27d; stroke-width: 2.2; stroke-dasharray: 7 11; animation: public-path 9s linear infinite; }
.public-network__path--secondary { stroke: #edac80; animation-delay: -3s; }
.public-network__path--tertiary { stroke: #dbeee1; animation-delay: -6s; }
.public-network__node { fill: #fff; stroke: #b8e27d; stroke-width: 5; transform-origin: center; animation: public-node 3.2s ease-in-out infinite; }
.public-network__node:nth-of-type(2) { animation-delay: -.8s; }
.public-network__node:nth-of-type(3) { animation-delay: -1.6s; }
.public-network__node:nth-of-type(4) { animation-delay: -2.4s; }
.public-network__caption { position: absolute; right: 0; bottom: 0; display: inline-flex; align-items: center; gap: .45rem; color: #fff; font: 700 .74rem/1.2 Arial, sans-serif; letter-spacing: .05em; text-transform: uppercase; }
.public-network__status { width: .6rem; height: .6rem; border-radius: 50%; background: var(--public-leaf); box-shadow: 0 0 0 .35rem rgba(168,207,91,.2); animation: public-node 2s ease-in-out infinite; }

.public-section { padding: clamp(4rem, 9vw, 8rem) clamp(1rem, 10vw, 10rem); }
.public-section__intro { max-width: 42rem; }
.public-section h2 { font-size: clamp(2.2rem, 4vw, 4rem); }
.public-section__intro > p:not(.public-eyebrow) { font-size: 1.12rem; margin: 1.25rem 0 0; }
.public-presence { background: var(--public-paper); display: grid; grid-template-columns: minmax(0, .8fr) minmax(24rem, 1.2fr); gap: clamp(2rem, 8vw, 10rem); align-items: center; }
.public-region-explorer { border-top: 1px solid var(--public-line); border-bottom: 1px solid var(--public-line); }
.public-region-explorer__tabs { display: flex; flex-wrap: wrap; gap: .3rem; padding: 1rem 0; }
.public-region-tab { position: relative; border: 0; background: transparent; padding: .65rem .8rem; color: rgba(16,43,41,.7); font: 700 .78rem/1.2 Arial, sans-serif; cursor: pointer; text-align: left; }
.public-region-tab::after { content: ''; position: absolute; right: .8rem; bottom: .15rem; left: .8rem; height: 2px; background: transparent; transition: background-color .2s ease; }
.public-region-tab:hover, .public-region-tab.is-active { color: var(--public-forest); }
.public-region-tab.is-active::after { background: var(--public-clay); }
.public-region-panel { min-height: 15rem; padding: 2.1rem 0; }
.public-region-panel__signal, .public-story-item__icon { width: 2.6rem; height: 2.6rem; display: inline-grid; place-items: center; border-radius: 50%; background: var(--public-mist); color: var(--public-forest); }
.public-region-panel__label { margin: 1.1rem 0 .2rem; color: var(--public-clay); font: 700 .72rem/1 Arial, sans-serif; letter-spacing: .11em; text-transform: uppercase; }
.public-region-panel h3 { margin: 0; font-size: 1.8rem; font-weight: 500; }
.public-region-panel p { max-width: 34rem; }
.public-region-panel__note { color: rgba(16,43,41,.72); font-size: .9rem; }

.public-story { background: var(--public-ink); color: #eef4eb; }
.public-story .public-eyebrow { color: var(--public-leaf); }
.public-story__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(1.5rem, 4vw, 4.5rem); margin-top: 3.2rem; }
.public-story-item { border-top: 1px solid rgba(238,244,235,.24); padding-top: 1.35rem; }
.public-story-item__icon { background: rgba(168,207,91,.13); color: var(--public-leaf); }
.public-story-item h3 { margin: 1.25rem 0 .55rem; font-size: 1.35rem; font-weight: 500; }
.public-story-item p { margin: 0; color: rgba(238,244,235,.76); }
.public-contact { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2rem; align-items: end; background: #d2e3d5; }
.public-contact__copy { max-width: 49rem; }
.public-contact__copy > p:not(.public-eyebrow) { font-size: 1.08rem; }
.public-contact__boundary { display: flex; gap: .55rem; align-items: flex-start; padding-top: .7rem; border-top: 1px solid var(--public-line); font: 700 .83rem/1.5 Arial, sans-serif; }
.public-contact__boundary i { color: var(--public-forest); }
.public-footer { display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap; padding: 1.3rem clamp(1rem, 5vw, 5rem); background: var(--public-forest); color: rgba(255,255,255,.75); font: .74rem/1.3 Arial, sans-serif; }
.public-footer span:first-child { color: #fff; font-weight: 700; letter-spacing: .08em; }

.public-reveal { opacity: 0; transform: translateY(1.25rem); transition: opacity .6s ease, transform .6s ease; }
.public-reveal.is-visible { opacity: 1; transform: translateY(0); }
@keyframes public-path { to { stroke-dashoffset: -90; } }
@keyframes public-node { 50% { transform: scale(1.18); opacity: .72; } }
@media (max-width: 900px) {
    .public-hero { grid-template-columns: 1fr; gap: 2.5rem; padding-bottom: 4rem; }
    .public-hero::before { inset: 54% 0 0; clip-path: polygon(0 12%,100% 0,100% 100%,0 100%); }
    .public-hero h1 { max-width: 13ch; }
    .public-network { width: min(100%, 38rem); min-height: 18rem; justify-self: center; }
    .public-presence { grid-template-columns: 1fr; }
    .public-story__grid { grid-template-columns: 1fr; }
    .public-contact { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
    .public-nav { align-items: flex-start; padding: .8rem 1rem; }
    .public-nav__actions { flex-direction: column; align-items: flex-end; gap: .35rem; }
    .public-language-button, .public-login-link { min-height: 2rem; padding: .35rem .45rem; font-size: .72rem; }
    .public-hero { min-height: auto; padding-top: 3.3rem; }
    .public-hero__actions, .public-contact__actions { display: grid; grid-template-columns: 1fr; }
    .public-region-explorer__tabs { flex-wrap: nowrap; overflow-x: auto; }
    .public-region-tab { flex: 0 0 auto; }
    .public-footer { flex-direction: column; }
}
@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
    .public-reveal { opacity: 1; transform: none; }
}
@media (prefers-contrast: more) {
    .public-button--quiet, .public-language-button, .public-login-link { border-width: 2px; }
    .public-network__path { stroke-width: 3px; }
}