@charset "UTF-8";

body.up-home-webgl .gl-canvas {
    background:#040609;
    filter:saturate(1.12) contrast(1.055);
}

body.up-home-webgl .spatial-hud {
    position:fixed;
    right:24px;
    bottom:72px;
    z-index:92;
    display:grid;
    min-width:118px;
    grid-template-columns:1fr auto;
    gap:5px 14px;
    padding:13px 14px 12px;
    border:1px solid rgba(142,216,212,.2);
    border-radius:14px;
    color:#8ed8d4;
    background:rgba(4,8,11,.48);
    box-shadow:0 18px 54px rgba(0,0,0,.26),inset 0 0 28px rgba(78,184,178,.035);
    font-family:var(--upw-mono);
    pointer-events:none;
    backdrop-filter:blur(14px);
}
body.up-home-webgl .spatial-hud::before {
    position:absolute;
    right:0;
    bottom:0;
    left:0;
    height:2px;
    border-radius:0 0 14px 14px;
    background:linear-gradient(90deg,#8ed8d4 calc(var(--journey-progress,0) * 100%),rgba(142,216,212,.08) 0);
    content:"";
}
body.up-home-webgl .spatial-hud span {
    align-self:center;
    font-size:7px;
    font-weight:500;
    letter-spacing:.14em;
}
body.up-home-webgl .spatial-hud strong {
    grid-row:1/3;
    grid-column:2;
    align-self:center;
    color:#f5c184;
    font:700 19px/1 var(--upw-display);
    letter-spacing:-.04em;
}
body.up-home-webgl .spatial-hud small {
    color:#4f6870;
    font-size:6px;
    letter-spacing:.12em;
}

body.up-home-webgl .hero::before {
    position:absolute;
    inset:0;
    z-index:4;
    background:linear-gradient(90deg,rgba(4,6,9,.88) 0%,rgba(4,6,9,.56) 43%,rgba(4,6,9,.08) 70%,transparent 100%);
    content:"";
    pointer-events:none;
}
body.up-home-webgl .hero__copy,
body.up-home-webgl .hero__object-label,
body.up-home-webgl .hero__scroll { z-index:10; }
body.up-home-webgl .anatomy__sticky::before,
body.up-home-webgl .data-wave__sticky::before {
    position:absolute;
    inset:0;
    z-index:-1;
    background:linear-gradient(90deg,rgba(4,6,9,.82),rgba(4,6,9,.23) 52%,transparent 75%);
    content:"";
    pointer-events:none;
}
body.up-home-webgl .manifesto__sticky::before {
    position:absolute;
    inset:12% 8%;
    z-index:-1;
    border-radius:50%;
    background:radial-gradient(circle,rgba(4,8,11,.78),rgba(4,8,11,.22) 55%,transparent 72%);
    content:"";
    pointer-events:none;
}

body.up-home-webgl.no-webgl::after {
    position:fixed;
    top:50%;
    right:7vw;
    z-index:1;
    width:min(46vw,620px);
    aspect-ratio:1;
    border:1px solid rgba(142,216,212,.18);
    border-radius:50%;
    background:
        radial-gradient(circle at 50% 50%,rgba(142,216,212,.24) 0 2%,transparent 3% 14%,rgba(142,216,212,.08) 14.4% 15%,transparent 15.4% 29%,rgba(226,145,71,.11) 29.4% 30%,transparent 30.4%),
        repeating-conic-gradient(from 20deg,rgba(142,216,212,.12) 0 2deg,transparent 2deg 10deg),
        radial-gradient(circle,rgba(21,48,51,.28),rgba(4,6,9,.04) 63%,transparent 72%);
    box-shadow:0 0 90px rgba(78,184,178,.08),inset 0 0 70px rgba(226,145,71,.05);
    content:"";
    transform:translateY(-50%) rotate(calc(var(--journey-progress,0) * 120deg));
    animation:upf-fallback-orbit 22s linear infinite;
    pointer-events:none;
    mask-image:radial-gradient(circle,#000 0 67%,transparent 69%);
}
body.up-home-webgl.no-webgl .spatial-hud span::after { content:" / STATIC"; }

@keyframes upf-fallback-orbit { to { transform:translateY(-50%) rotate(360deg); } }

@media (max-width:900px) {
    body.up-home-webgl .spatial-hud { right:12px;bottom:62px;min-width:104px;padding:10px 11px; }
    body.up-home-webgl .hero::before { background:linear-gradient(90deg,rgba(4,6,9,.94),rgba(4,6,9,.72) 58%,rgba(4,6,9,.12)); }
    body.up-home-webgl.no-webgl::after { right:-18vw;width:82vw;opacity:.72; }
}

@media (max-width:560px) {
    body.up-home-webgl .spatial-hud { display:none; }
    body.up-home-webgl .hero::before { z-index:5;background:linear-gradient(90deg,rgba(4,6,9,.97) 0%,rgba(4,6,9,.8) 64%,rgba(4,6,9,.22) 100%); }
    body.up-home-webgl.no-webgl::after { top:42%;right:-52vw;width:132vw;opacity:.55; }
}

body.up-home-webgl {
    --upf-heading-ja:"Zen Old Mincho","Yu Mincho","Hiragino Mincho ProN",serif;
}

body.up-home-webgl .section-head,
body.up-home-webgl .data-wave__copy,
body.up-home-webgl .dashboard-section__head {
    position:relative;
    z-index:12;
}
body.up-home-webgl .section-head { max-width:min(760px,52vw); }
body.up-home-webgl .data-wave__copy { max-width:min(790px,54vw); }
body.up-home-webgl .dashboard-section__head { max-width:min(720px,48vw); }
body.up-home-webgl .section-head::after,
body.up-home-webgl .data-wave__copy::after,
body.up-home-webgl .dashboard-section__head::after {
    position:absolute;
    inset:-24px -30px;
    z-index:-1;
    border:1px solid rgba(159,208,255,.1);
    border-radius:28px;
    background:linear-gradient(110deg,rgba(4,7,11,.8),rgba(4,7,11,.5) 68%,rgba(4,7,11,.08));
    box-shadow:0 22px 70px rgba(0,0,0,.24);
    content:"";
    pointer-events:none;
    backdrop-filter:blur(14px);
}
body.up-home-webgl .display-heading {
    display:grid;
    gap:.08em;
    margin:18px 0 0;
    color:#f4f5f7;
    font-family:var(--upf-heading-ja);
    font-size:clamp(3.4rem,5.45vw,6.35rem);
    font-weight:900;
    line-height:1.01;
    letter-spacing:-.075em;
    text-shadow:0 10px 34px rgba(0,0,0,.34);
    text-wrap:balance;
}
body.up-home-webgl .dashboard-section__head .display-heading { font-size:clamp(3.2rem,4.9vw,5.8rem); }
body.up-home-webgl .reserve .display-heading { font-size:clamp(4rem,7.5vw,8.5rem); }
body.up-home-webgl .display-heading>span {
    display:block;
    width:max-content;
    max-width:100%;
    white-space:nowrap;
}

body.up-home-webgl .manifesto__text {
    width:min(22em,86vw);
    font-family:"Zen Kaku Gothic New",sans-serif;
    line-height:1.46;
    text-wrap:balance;
}
body.up-home-webgl .manifesto__text>span { margin-bottom:.22em; }
body.up-home-webgl .manifesto__text .phrase-keep {
    display:inline-block;
    white-space:nowrap;
}
body.up-home-webgl .manifesto-relation>span { display:inline; }

@media (max-width:900px) {
    body.up-home-webgl .section-head,
    body.up-home-webgl .data-wave__copy,
    body.up-home-webgl .dashboard-section__head { max-width:100%; }
    body.up-home-webgl .section-head::after,
    body.up-home-webgl .data-wave__copy::after,
    body.up-home-webgl .dashboard-section__head::after { inset:-18px -16px; }
    body.up-home-webgl .display-heading,
    body.up-home-webgl .dashboard-section__head .display-heading { font-size:clamp(2.8rem,8.6vw,4.8rem); }
    body.up-home-webgl .reserve .display-heading { font-size:clamp(3.5rem,10vw,6rem); }
    body.up-home-webgl .data-wave__sticky { gap:24px; }
    body.up-home-webgl .data-wave__meter {
        align-self:flex-start;
        margin:0;
        padding:13px 17px;
        border:1px solid rgba(159,208,255,.16);
        border-radius:20px;
        background:rgba(4,7,11,.62);
        backdrop-filter:blur(12px);
    }
}

@media (max-width:560px) {
    body.up-home-webgl .display-heading,
    body.up-home-webgl .dashboard-section__head .display-heading {
        gap:.11em;
        font-size:clamp(2.35rem,10.5vw,3.15rem);
        line-height:1.04;
        letter-spacing:-.068em;
    }
    body.up-home-webgl .section-head::after,
    body.up-home-webgl .data-wave__copy::after,
    body.up-home-webgl .dashboard-section__head::after {
        inset:-14px -11px;
        border-radius:22px;
        background:linear-gradient(120deg,rgba(4,7,11,.88),rgba(4,7,11,.63) 75%,rgba(4,7,11,.18));
        backdrop-filter:blur(10px);
    }
    body.up-home-webgl .anatomy__sticky { padding-bottom:9vh; }
    body.up-home-webgl .manifesto__sticky { padding:118px 22px 108px; }
    body.up-home-webgl .manifesto__sticky::before {
        inset:18% 4%;
        border-radius:34px;
        background:radial-gradient(circle,rgba(4,8,11,.9),rgba(4,8,11,.54) 62%,transparent 84%);
    }
    body.up-home-webgl .manifesto__text {
        width:100%;
        max-width:342px;
        margin-top:24px;
        padding:22px 16px;
        border:1px solid rgba(159,208,255,.1);
        border-radius:24px;
        background:linear-gradient(180deg,rgba(4,7,11,.78),rgba(4,7,11,.48));
        box-shadow:0 24px 64px rgba(0,0,0,.28);
        font-size:clamp(1.4rem,6.6vw,1.82rem);
        line-height:1.52;
        letter-spacing:-.035em;
        backdrop-filter:blur(10px);
    }
    body.up-home-webgl .manifesto__text>span { margin-bottom:.38em; }
    body.up-home-webgl .manifesto-relation>span {
        display:block;
        width:max-content;
        margin-inline:auto;
        white-space:nowrap;
    }
    body.up-home-webgl .manifesto-relation .relation-particle { line-height:1.05; }
    body.up-home-webgl .flow-chips { display:none; }
    body.up-home-webgl .data-wave__sticky { justify-content:center;gap:22px;padding-top:118px;padding-bottom:96px; }
    body.up-home-webgl .data-wave__copy { width:100%; }
    body.up-home-webgl .data-wave__copy>p:last-child {
        max-width:20em;
        margin-top:20px;
        font-size:.84rem;
        line-height:1.8;
    }
    body.up-home-webgl .data-wave__meter { margin-top:4px;padding:11px 15px; }
    body.up-home-webgl .data-wave__meter strong { font-size:3.2rem; }
    body.up-home-webgl .dashboard-section { gap:44px; }
    body.up-home-webgl .reserve {
        isolation:isolate;
        padding-right:22px;
        padding-left:22px;
    }
    body.up-home-webgl .reserve::before { z-index:1; }
    body.up-home-webgl .reserve::after {
        position:absolute;
        inset:13% 5% 16%;
        z-index:0;
        border:1px solid rgba(255,255,255,.18);
        border-radius:34px;
        background:linear-gradient(180deg,rgba(5,8,12,.64),rgba(5,8,12,.78));
        box-shadow:0 30px 90px rgba(0,0,0,.3);
        content:"";
        backdrop-filter:blur(16px) saturate(.82);
    }
    body.up-home-webgl .reserve>* { position:relative;z-index:2; }
    body.up-home-webgl .reserve .display-heading {
        font-size:clamp(3rem,12.2vw,4.15rem);
        line-height:1.02;
        text-shadow:0 12px 34px rgba(0,0,0,.48);
    }
    body.up-home-webgl .reserve__actions { width:min(100%,300px); }
}

body.up-home-webgl .section-head h2.display-heading,
body.up-home-webgl .data-wave h2.display-heading,
body.up-home-webgl .dashboard-section h2.display-heading,
body.up-home-webgl .reserve h2.display-heading {
    font-family:var(--upf-heading-ja);
    font-weight:900;
    font-style:normal;
    line-height:1.01;
    letter-spacing:-.075em;
}
body.up-home-webgl .section-head h2.display-heading,
body.up-home-webgl .data-wave h2.display-heading { font-size:clamp(3.4rem,5.45vw,6.35rem); }
body.up-home-webgl .dashboard-section h2.display-heading { font-size:clamp(3.2rem,4.9vw,5.8rem); }
body.up-home-webgl .reserve h2.display-heading { font-size:clamp(4rem,7vw,8rem); }

@media (max-width:900px) {
    body.up-home-webgl .section-head h2.display-heading,
    body.up-home-webgl .data-wave h2.display-heading,
    body.up-home-webgl .dashboard-section h2.display-heading { font-size:clamp(2.8rem,8.6vw,4.8rem); }
    body.up-home-webgl .reserve h2.display-heading { font-size:clamp(3.1rem,9.5vw,5.5rem); }
}

@media (max-width:560px) {
    body.up-home-webgl .section-head h2.display-heading,
    body.up-home-webgl .dashboard-section h2.display-heading {
        font-size:clamp(2.25rem,10vw,3.05rem);
        line-height:1.04;
        letter-spacing:-.068em;
    }
    body.up-home-webgl .data-wave h2.display-heading {
        font-size:clamp(2.15rem,9.2vw,2.8rem);
        line-height:1.04;
        letter-spacing:-.068em;
    }
    body.up-home-webgl .reserve h2.display-heading {
        font-size:clamp(2.25rem,9.8vw,3.6rem);
        line-height:1.03;
        letter-spacing:-.068em;
    }
}

@media (prefers-reduced-motion:reduce) {
    html:not(.force-motion) body.up-home-webgl.no-webgl::after { animation:none; }
}

/* Typography v2: remove constraining copy frames and preserve intentional line breaks. */
body.up-home-webgl .section-head::after,
body.up-home-webgl .data-wave__copy::after,
body.up-home-webgl .dashboard-section__head::after {
    display:none;
    content:none;
}

body.up-home-webgl .section-head {
    width:min(68vw,980px);
    max-width:none;
}
body.up-home-webgl .data-wave__copy {
    width:min(68vw,980px);
    max-width:none;
}
body.up-home-webgl .dashboard-section__head {
    width:min(50vw,760px);
    max-width:none;
}

body.up-home-webgl .section-head h2.display-heading,
body.up-home-webgl .data-wave h2.display-heading,
body.up-home-webgl .dashboard-section h2.display-heading,
body.up-home-webgl .reserve h2.display-heading {
    display:flex;
    width:max-content;
    max-width:none;
    flex-direction:column;
    gap:.06em;
    overflow:visible;
    font-family:"Zen Old Mincho","Yu Mincho","Hiragino Mincho ProN",serif;
    font-weight:900;
    line-height:1.03;
    letter-spacing:-.05em;
    text-wrap:nowrap;
}
body.up-home-webgl .display-heading>span {
    display:block;
    width:auto;
    max-width:none;
    white-space:nowrap;
    word-break:keep-all;
    overflow-wrap:normal;
}
body.up-home-webgl .section-head h2.display-heading {
    font-size:clamp(3.1rem,4.8vw,5.8rem);
}
body.up-home-webgl .data-wave h2.display-heading {
    font-size:clamp(3rem,4.5vw,5.35rem);
}
body.up-home-webgl .dashboard-section h2.display-heading {
    font-size:clamp(2.85rem,4vw,4.8rem);
}
body.up-home-webgl .reserve h2.display-heading {
    font-size:clamp(3.6rem,6.2vw,7.2rem);
}

@media (max-width:900px) {
    body.up-home-webgl .section-head,
    body.up-home-webgl .data-wave__copy,
    body.up-home-webgl .dashboard-section__head {
        width:calc(100vw - 44px);
        max-width:none;
    }
}

@media (max-width:560px) {
    body.up-home-webgl .section-head h2.display-heading {
        font-size:clamp(2.05rem,9.2vw,2.55rem);
    }
    body.up-home-webgl .data-wave h2.display-heading {
        font-size:clamp(1.95rem,8.45vw,2.35rem);
    }
    body.up-home-webgl .dashboard-section h2.display-heading {
        font-size:clamp(2rem,8.8vw,2.45rem);
    }
    body.up-home-webgl .reserve h2.display-heading {
        font-size:clamp(2.15rem,9.2vw,2.7rem);
    }
    body.up-home-webgl .manifesto__text {
        max-width:342px;
        padding:0;
        border:0;
        border-radius:0;
        background:none;
        box-shadow:none;
        font-size:clamp(1.22rem,5.7vw,1.52rem);
        line-height:1.58;
        letter-spacing:-.025em;
        backdrop-filter:none;
    }
}
