/* KPass campus-life landing. Scoped to avoid changing other product pages. */
.kp-landing {
    --kp-blue:#0753d5;
    --kp-ink:#14274a;
    --kp-muted:#4b5b73;
    --kp-yellow:#f8ed78;
    color:var(--kp-ink);
    background:#fff;
    font-family:inherit;
    overflow-x:clip;
    overflow-y:visible;
}

.kp-landing a {
    color:inherit;
    text-decoration:none;
}

.kp-landing a:focus-visible,.kp-landing summary:focus-visible,.kp-gallery:focus-visible {
    outline:3px solid #d15015;
    outline-offset:5px;
}

.kp-landing section[id] {
    scroll-margin-top:95px;
}

.kp-wrap {
    width:min(1180px,calc(100% - 64px));
    margin-inline:auto;
}

.kp-landing h1,.kp-landing h2,.kp-landing h3 {
    text-wrap:balance;
    letter-spacing:-.035em;
}

.kp-landing h2 {
    font-size:clamp(2rem,4vw,3.65rem);
    line-height:1.42;
    font-weight:800;
}

.kp-landing h3 {
    font-size:1.3rem;
    line-height:1.6;
}

.kp-eyebrow {
    font-size:.78rem;
    font-weight:800;
    letter-spacing:.1em;
    margin-bottom:16px;
}

.kp-eyebrow::after {
    content:'';
    display:block;
    width:26px;
    height:3px;
    margin-top:7px;
    border-radius:2px;
    background:currentColor;
    opacity:.85;
    transform-origin:left;
    transition:transform .6s cubic-bezier(.22,1,.36,1) .15s;
}

.kp-note {
    font-size:.78rem;
    line-height:1.85;
    color:var(--kp-muted);
    margin-top:24px;
}

.kp-hero {
    position:relative;
    background:var(--kp-blue);
    color:#fff;
    margin-top:-80px;
    padding-top:calc(65px + 80px);
}

.kp-hero-grid {
    display:grid;
    grid-template-columns:1fr 1.05fr;
    align-items:center;
    gap:15px;
    min-height:670px;
}

.kp-hero h1 {
    font-size:clamp(3.2rem,6vw,5.6rem);
    font-weight:900;
    line-height:1.23;
    letter-spacing:-.025em;
    margin-bottom:26px;
}

.kp-hero h1 span {
    color:var(--kp-yellow);
}

.kp-lead {
    font-size:1.05rem;
    line-height:2;
    margin-bottom:30px;
}

.kp-stores {
    display:flex;
    align-items:center;
    gap:12px;
    flex-wrap:wrap;
}

.kp-stores {
    --store-badge-size:44px;
}

.kp-stores .store-badge {
    display:inline-flex;
    align-items:center;
    justify-content:center;
    height:var(--store-badge-size);
    flex-shrink:0;
    transition:transform .2s ease-out;
}

.kp-hero-note {
    font-size:.72rem;
    margin-top:16px;
    color:#e4ecff;
}

.kp-hero-art {
    height:670px;
    position:relative;
    isolation:isolate;
}

.kp-orbit {
    width:540px;
    height:540px;
    border:1px solid #ffffff50;
    border-radius:50%;
    position:absolute;
    top:55px;
    left:10px;
    z-index:-1;
}

.kp-orbit:after {
    content:'';
    position:absolute;
    inset:35px;
    border:1px solid #ffffff30;
    border-radius:50%;
}

.kp-screen {
    display:block;
    width:100%;
    height:auto;
    aspect-ratio:1206/2622;
    background:#f2f3f7;
}

.kp-hero-phone {
    position:absolute;
    width:252px;
    border:6px solid #192842;
    border-radius:39px;
    overflow:hidden;
    box-shadow:0 24px 48px #001b6240;
    transform:rotate(-9deg);
}

.kp-hero-phone-back {
    top:50px;
    right:3px;
    transform:rotate(10deg);
    width:245px;
}

.kp-hero-phone-front {
    top:5px;
    left:25px;
}

.kp-sticker {
    position:absolute;
    bottom:40px;
    right:0;
    display:grid;
    place-content:center;
    text-align:center;
    width:157px;
    height:157px;
    border-radius:50%;
    background:var(--kp-yellow);
    color:var(--kp-ink);
    font-size:1.15rem;
    font-weight:800;
    transform:rotate(10deg);
    line-height:1.6;
    box-shadow:0 7px 0 #14274a;
}

.kp-hero-bottom {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:20px;
    border-top:1px solid #ffffff50;
    min-height:72px;
    font-size:.72rem;
    font-weight:700;
    letter-spacing:.08em;
}

.kp-hero-bottom a span {
    margin-left:25px;
}

.kp-intro {
    padding-block:100px 75px;
}

.kp-index {
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:26px;
    margin-top:45px;
}

.kp-index a {
    display:flex;
    align-items:center;
    gap:15px;
    padding-block:20px;
    border-top:2px solid var(--kp-ink);
    font-weight:700;
    font-size:.91rem;
}

.kp-index a>span:first-child {
    color:var(--kp-blue);
    font-size:.75rem;
}

.kp-index a>span:last-child {
    margin-left:auto;
    font-size:1.25rem;
}

.kp-study {
    padding-bottom:80px;
}

.kp-feature-grid {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:85px;
    align-items:center;
}

.kp-feature-visual {
    position:relative;
    min-height:670px;
    border-radius:20px;
    overflow:hidden;
    display:flex;
    justify-content:center;
    align-items:flex-end;
}

.kp-study-visual {
    background:#ece8fa;
}

.kp-feature-phone {
    width:253px;
    border:5px solid var(--kp-ink);
    border-radius:36px;
    overflow:hidden;
    box-shadow:0 20px 40px #14274a20;
    margin-bottom:35px;
    z-index:1;
}

.kp-study-visual .kp-feature-phone {
    transform:rotate(-5deg);
}

.kp-visual-word {
    position:absolute;
    top:27px;
    left:22px;
    font-size:clamp(2rem,4vw,3.4rem);
    font-weight:900;
    color:#4c3d88;
    letter-spacing:-.04em;
}

.kp-mini-note {
    position:absolute;
    right:15px;
    bottom:95px;
    z-index:2;
    background:var(--kp-yellow);
    padding:20px;
    font-size:1rem;
    font-weight:700;
    transform:rotate(6deg);
}

.kp-feature-copy>p:not(.kp-eyebrow):not(.kp-note) {
    margin-top:25px;
    font-size:1rem;
    line-height:2;
}

.kp-feature-list {
    list-style:none;
    margin-top:30px;
}

.kp-feature-list li {
    padding:19px 0;
    border-bottom:1px solid #dce2ec;
}

.kp-feature-list strong {
    display:block;
    font-size:.96rem;
    margin-bottom:6px;
}

.kp-feature-list span {
    font-size:.86rem;
    color:var(--kp-muted);
    line-height:1.8;
    display:block;
}

.kp-study-extras {
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:40px;
    margin-top:60px;
}

.kp-study-extras h3 {
    margin:12px 0;
}

.kp-study-extras p {
    color:var(--kp-muted);
    font-size:.9rem;
    line-height:1.9;
}

.kp-icon {
    font-size:2rem;
    color:var(--kp-blue);
}

.kp-campus {
    background:#dff1e8;
    padding-block:90px;
}

.kp-campus-grid {
    gap:70px;
}

.kp-campus-visual {
    background:#b9dec9;
}

.kp-campus-visual .kp-feature-phone {
    transform:rotate(5deg);
    margin-bottom:50px;
}

.kp-map-label {
    position:absolute;
    z-index:2;
    padding:13px 20px;
    background:#fff;
    border-radius:35px;
    font-size:.9rem;
    font-weight:700;
    box-shadow:0 8px 20px #163b2420;
}

.kp-map-label-one {
    left:12px;
    top:180px;
    transform:rotate(-8deg);
}

.kp-map-label-two {
    bottom:40px;
    right:12px;
    transform:rotate(-4deg);
}

.kp-campus-items {
    margin-top:28px;
}

.kp-campus-items article {
    padding:14px 0;
}

.kp-campus-items h3 {
    font-size:1.08rem;
}

.kp-campus-items p {
    font-size:.88rem;
    line-height:1.8;
    margin-top:5px;
}

.kp-connect {
    padding-block:100px;
}

.kp-connect-grid {
    display:grid;
    grid-template-columns:1.1fr 1fr;
    gap:64px;
    margin-top:42px;
}

.kp-connect-circle {
    background:var(--kp-yellow);
    padding:42px;
    border-radius:16px;
    position:relative;
}

.kp-connect-circle h3 {
    font-size:1.9rem;
}

.kp-connect-circle>p:last-child {
    font-size:.94rem;
    line-height:2;
    margin-top:25px;
    max-width:37ch;
}

.kp-connect-symbol {
    position:absolute;
    top:24px;
    right:32px;
    font-size:3rem;
    line-height:1;
}

.kp-connect-more {
    display:grid;
    gap:32px;
}

.kp-connect-more article {
    border-bottom:1px solid #cad3e1;
    padding:5px 0 28px;
}

.kp-connect-more .kp-eyebrow {
    color:var(--kp-blue);
    margin-bottom:13px;
}

.kp-connect-more p:last-child {
    font-size:.93rem;
    color:var(--kp-muted);
    margin-top:12px;
    line-height:1.9;
}

.kp-inline-note {
    display:block;
    font-size:.77rem;
    margin-top:9px;
}

.kp-talk-mock {
    display:flex;
    flex-direction:column;
    gap:8px;
    margin-top:20px;
    max-width:330px;
}

.kp-talk-mock span {
    align-self:flex-start;
    max-width:82%;
    padding:9px 14px;
    border-radius:16px 16px 16px 4px;
    background:#eff4ff;
    color:var(--kp-ink);
    font-size:.82rem;
    line-height:1.6;
}

.kp-talk-mock .kp-talk-mine {
    align-self:flex-end;
    border-radius:16px 16px 4px 16px;
    background:var(--kp-blue);
    color:#fff;
}

.kp-gallery-section {
    background:#eff4ff;
    padding-block:80px;
}

.kp-gallery-heading {
    display:flex;
    justify-content:space-between;
    align-items:flex-end;
    gap:30px;
    margin-bottom:40px;
}

.kp-gallery-heading>p {
    font-size:.85rem;
    line-height:1.9;
    color:var(--kp-muted);
}

.kp-gallery {
    display:flex;
    gap:30px;
    overflow-x:auto;
    padding:6px 3px 25px;
    scroll-snap-type:x mandatory;
    scrollbar-color:#849dc9 #e0e8f7;
    scrollbar-width:thin;
}

.kp-gallery figure {
    flex:0 0 225px;
    scroll-snap-align:start;
}

.kp-gallery .kp-screen {
    border:3px solid #c4cedd;
    border-radius:28px;
}

.kp-gallery figcaption {
    padding:17px 2px 0;
}

.kp-gallery figcaption strong {
    display:block;
    font-size:.97rem;
}

.kp-gallery figcaption span {
    display:block;
    font-size:.75rem;
    color:var(--kp-muted);
    margin-top:5px;
}

.kp-plans {
    padding-block:95px 65px;
}

.kp-plan-grid {
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:22px;
    margin-top:42px;
}

.kp-plan-grid article {
    background:#f2f5fa;
    padding:32px;
    border-radius:16px;
    display:flex;
    flex-direction:column;
}

.kp-plan-grid h3 {
    font-size:2rem;
    letter-spacing:-.025em;
}

.kp-plan-tagline {
    font-size:.88rem;
    margin-top:8px;
}

.kp-plan-grid ul {
    list-style:none;
    margin:25px 0;
    font-size:.88rem;
    line-height:2.4;
}

.kp-plan-grid li:before {
    content:'✓';
    margin-right:10px;
}

.kp-plan-foot {
    font-size:.8rem;
    font-weight:700;
    border-top:1px solid #b7c3d4;
    padding-top:17px;
    margin-top:auto;
}

.kp-plan-grid .kp-plan-pro {
    background:var(--kp-ink);
    color:white;
}

.kp-faq {
    padding-block:45px 95px;
    display:grid;
    grid-template-columns:1fr 1.6fr;
    gap:70px;
}

.kp-faq details {
    border-bottom:1px solid #cad3e1;
    padding:23px 0;
}

.kp-faq summary {
    display:flex;
    gap:22px;
    align-items:center;
    justify-content:space-between;
    cursor:pointer;
    font-weight:700;
    font-size:.94rem;
    list-style:none;
    border-radius:10px;
    margin:-8px -12px;
    padding:8px 12px;
    transition:color .2s, background-color .2s;
}

@media(hover: hover) and (pointer: fine) {
    .kp-motion-enabled .kp-faq summary:hover { color:var(--kp-blue); background:#eff4ff; }
}

.kp-faq summary::-webkit-details-marker {
    display:none;
}

.kp-faq summary span {
    font-size:1.5rem;
    transition:transform .2s;
}

.kp-faq details[open] summary span {
    transform:rotate(45deg);
    color:var(--kp-blue);
}

/* Open/close height animation is driven by kpass-motion.js (WAAPI): a native
   <details> can't be smoothly closed with CSS alone, since the browser stops
   rendering its content the instant the "open" attribute is removed. Without
   JS this still works natively, just without the animated height change.
   This browser keeps a closed answer's own box sized to its full content
   (invisible but still occupying space) instead of collapsing it, so force
   it away explicitly for the resting (non-animating) closed state. */
.kp-faq details:not([open]) .kp-faq-a {
    display:none;
}

.kp-faq-a {
    overflow:hidden;
}

.kp-faq-a p {
    font-size:.88rem;
    color:var(--kp-muted);
    line-height:2;
    margin:0;
    padding-top:17px;
}

.kp-download {
    background:var(--kp-blue);
    color:white;
    text-align:center;
    padding:75px 0 80px;
}

.kp-download-icon {
    border-radius:19px;
    margin-bottom:25px;
}

.kp-download h2 {
    font-size:clamp(2.5rem,5vw,4.5rem);
}

.kp-download .kp-stores {
    justify-content:center;
    margin:30px 0 15px;
}

.kp-download .kp-wrap>p:last-child {
    font-size:.75rem;
    color:#e4ecff;
}

.kp-download .kp-stores {
    --store-badge-size:48px;
}

.kp-download .kp-eyebrow::after {
    margin-inline:auto;
    transform-origin:center;
}

.kp-download-legal {
    margin-top:38px;
    padding-top:22px;
    border-top:1px solid #ffffff40;
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:14px 25px;
    flex-wrap:wrap;
    font-size:.72rem;
    color:#e4ecff;
    text-align:left;
}

.kp-download-legal nav {
    display:flex;
    gap:10px 20px;
    flex-wrap:wrap;
}

.kp-download-legal a {
    text-decoration:underline;
    text-underline-offset:3px;
    text-decoration-color:#ffffff60;
}

@media(min-width:900px) {
    .kp-hero-copy>* {
        animation:kp-arrive .65s cubic-bezier(.22,1,.36,1) both;
    }
    .kp-hero-copy>:nth-child(2) { animation-delay:.08s; }
    .kp-hero-copy>:nth-child(3) { animation-delay:.16s; }
    .kp-hero-copy>:nth-child(4) { animation-delay:.24s; }
    .kp-hero-copy>:nth-child(5) { animation-delay:.3s; }
    .kp-hero-art {
        animation:kp-arrive .85s cubic-bezier(.22,1,.36,1) .1s both;
    }
}

@keyframes kp-arrive {
    from {
        transform:translateY(18px);
        opacity:0;
    }
    to {
        transform:translateY(0);
        opacity:1;
    }
}

@media(max-width:1050px) {
    .kp-hero-phone {
        width:215px;
    }
    .kp-hero-phone-back {
        width:210px;
        right:5px;
        top:80px;
    }
    .kp-hero-phone-front {
        left:0;
        top:35px;
    }
    .kp-hero-art {
        height:600px;
    }
    .kp-hero-grid {
        min-height:600px;
    }
    .kp-orbit {
        width:430px;
        height:430px;
        left:-15px;
    }
    .kp-feature-grid {
        gap:40px;
    }
    .kp-connect-grid {
        gap:32px;
    }
    .kp-plan-grid article {
        padding:25px;
    }
    .kp-sticker {
        bottom:40px;
        width:135px;
        height:135px;
        font-size:1rem;
    }
}

@media(max-width:760px) {
    .kp-wrap {
        width:calc(100% - 40px);
    }
    .kp-hero {
        margin-top:-80px;
        padding-top:calc(42px + 80px);
    }
    .kp-hero-grid {
        grid-template-columns:1fr;
        gap:35px;
    }
    .kp-hero h1 {
        font-size:clamp(3.4rem,11.5vw,5.4rem);
    }
    .kp-lead {
        font-size:.93rem;
        line-height:1.9;
    }
    .kp-hero-art {
        width:min(460px,100%);
        height:560px;
        margin-inline:auto;
    }
    .kp-hero-phone-front {
        width:220px;
        left:13px;
        top:10px;
    }
    .kp-hero-phone-back {
        width:207px;
        right:10px;
        top:55px;
    }
    .kp-orbit {
        width:390px;
        height:390px;
        top:60px;
    }
    .kp-sticker {
        right:2px;
        bottom:24px;
    }
    .kp-hero-bottom {
        font-size:.6rem;
        letter-spacing:0;
        min-height:62px;
    }
    .kp-intro {
        padding-block:65px 45px;
    }
    .kp-index {
        grid-template-columns:1fr;
        gap:0;
        margin-top:28px;
    }
    .kp-index a {
        padding-block:17px;
        border-width:1px;
    }
    .kp-feature-grid {
        grid-template-columns:1fr;
        gap:35px;
    }
    .kp-feature-copy {
        order:-1;
    }
    .kp-feature-visual {
        min-height:640px;
    }
    .kp-study-extras {
        grid-template-columns:1fr;
        gap:25px;
        margin-top:35px;
    }
    .kp-study-extras article {
        padding-bottom:25px;
        border-bottom:1px solid #dce2ec;
    }
    .kp-study-extras h3 {
        display:inline-block;
        margin:0 0 10px 14px;
    }
    .kp-study-extras .kp-icon {
        font-size:1.5rem;
    }
    .kp-study {
        padding-bottom:45px;
    }
    .kp-campus {
        padding-block:55px;
    }
    .kp-campus-visual {
        min-height:650px;
    }
    .kp-connect {
        padding-block:60px;
    }
    .kp-connect-grid {
        grid-template-columns:1fr;
        gap:35px;
        margin-top:30px;
    }
    .kp-connect-circle {
        padding:30px;
    }
    .kp-connect-circle h3 {
        font-size:1.65rem;
    }
    .kp-connect-symbol {
        right:20px;
    }
    .kp-connect-more {
        gap:25px;
    }
    .kp-gallery-section {
        padding-block:55px;
    }
    .kp-gallery-heading {
        display:block;
        margin-bottom:25px;
    }
    .kp-gallery-heading>p {
        margin-top:20px;
    }
    .kp-gallery {
        gap:20px;
    }
    .kp-gallery figure {
        flex-basis:215px;
    }
    .kp-plans {
        padding-block:60px 30px;
    }
    .kp-plan-grid {
        grid-template-columns:1fr;
        gap:15px;
        margin-top:25px;
    }
    .kp-plan-grid article {
        padding:28px;
    }
    .kp-faq {
        grid-template-columns:1fr;
        gap:12px;
        padding-block:35px 55px;
    }
    .kp-download {
        padding-block:55px;
    }
    .kp-download-legal {
        flex-direction:column;
        align-items:flex-start;
        margin-top:30px;
    }
    .kp-landing h2 {
        font-size:clamp(1.85rem,7.1vw,2.7rem);
    }
}

@media(max-width:380px) {
    .kp-wrap {
        width:calc(100% - 32px);
    }
    .kp-stores {
        gap:8px;
    }
    .kp-hero-phone-front {
        width:195px;
        left:5px;
    }
    .kp-hero-phone-back {
        width:185px;
        right:4px;
    }
    .kp-hero-art {
        height:510px;
    }
    .kp-hero-bottom>span {
        font-size:.5rem;
    }
}

@media(prefers-reduced-motion:reduce) {
    html {
        scroll-behavior:auto;
    }
    .kp-landing *, .kp-landing *::before,.kp-landing *::after {
        animation:none!important;
        transition:none!important;
        scroll-behavior:auto!important;
    }
}

/* Scroll choreography: individual transforms preserve the static phone rotations. */
.kp-landing {
    --kp-depth: 1;
}
.kp-scroll-meter {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 4px;
    z-index: 100;
    pointer-events: none;
    display: none;
}
.kp-motion-enabled .kp-scroll-meter { display: block; }
.kp-scroll-meter span {
    display: block;
    height: 100%;
    background: var(--kp-yellow);
    transform-origin: left;
    transform: scaleX(var(--kp-page-progress, 0));
}
.kp-motion-toggle {
    position: fixed;
    bottom: max(18px, env(safe-area-inset-bottom));
    right: 18px;
    z-index: 90;
    display: flex;
    align-items: center;
    gap: 8px;
    min-height: 44px;
    padding: 10px 15px;
    border: 1px solid #d7deea;
    border-radius: 30px;
    color: var(--kp-ink);
    background: #fff;
    box-shadow: 0 4px 16px #14274a18;
    font: inherit;
    font-size: .73rem;
    font-weight: 700;
    cursor: pointer;
}
.kp-motion-toggle[hidden] { display: none; }
.kp-motion-toggle:disabled { cursor: default; }
.kp-motion-toggle:focus-visible { outline: 3px solid #d15015; outline-offset: 4px; }
.kp-motion-toggle-icon { font-size: 1rem; line-height: 1; }
.kp-confetti { position: absolute; pointer-events: none; z-index: -1; }
.kp-confetti-star { font-size: 108px; color: #f8ed78; top: -36px; right: 28px; line-height: 1; rotate: -12deg; }
.kp-confetti-star .tp-icon-spark { display: block; }
.kp-confetti-plus { font-size: 90px; line-height: 1; color: #b8ead4; bottom: 20px; left: 42px; rotate: 12deg; }
.kp-confetti-loop { width: 65px; height: 65px; border: 12px solid #efadc5; border-radius: 50%; top: 210px; left: -42px; }
.kp-orbit::before { content: ''; position: absolute; width: 19px; height: 19px; border-radius: 50%; background: var(--kp-yellow); left: 45px; top: 95px; }
.kp-ribbon { overflow: hidden; background: var(--kp-yellow); color: var(--kp-ink); padding: 23px 0; }
.kp-ribbon-track { display: flex; width: max-content; margin-left: -130px; }
.kp-ribbon-track>span { display: flex; align-items: center; gap: 30px; padding-right: 30px; white-space: nowrap; font-size: clamp(1.3rem, 2.4vw, 2rem); font-weight: 800; letter-spacing: -.02em; }
.kp-ribbon-track b { color: var(--kp-blue); font-size: 1.2em; }
/* Base scroll motion: translation only. Scroll-linked rotation is added for fine pointers below. */
.kp-motion-enabled .kp-hero-phone-front {
    translate: calc(var(--kp-pointer-x, 0) * -18px) calc(var(--kp-scroll, 0) * -100px * var(--kp-depth) + var(--kp-pointer-y, 0) * -16px);
}
.kp-motion-enabled .kp-hero-phone-back {
    translate: calc(var(--kp-pointer-x, 0) * 25px) calc(var(--kp-scroll, 0) * 90px * var(--kp-depth) + var(--kp-pointer-y, 0) * 22px);
}
.kp-motion-enabled .kp-sticker { translate: calc(var(--kp-scroll, 0) * -25px * var(--kp-depth)) calc(var(--kp-scroll, 0) * -110px * var(--kp-depth)); }
.kp-motion-enabled .kp-confetti-star { translate: 0 calc(var(--kp-scroll, 0) * 80px * var(--kp-depth)); }
.kp-motion-enabled .kp-confetti-plus { translate: 0 calc(var(--kp-scroll, 0) * -50px * var(--kp-depth)); }
.kp-motion-enabled .kp-confetti-loop { translate: calc(var(--kp-scroll, 0) * 60px * var(--kp-depth)) calc(var(--kp-scroll, 0) * 130px * var(--kp-depth)); }
.kp-motion-enabled .kp-ribbon-track { translate: calc(var(--kp-scroll, 0) * -210px * var(--kp-depth)) 0; }
.kp-motion-enabled .kp-study-visual .kp-feature-phone { translate: 0 calc(var(--kp-scroll, 0) * -72px * var(--kp-depth)); }
.kp-motion-enabled .kp-visual-word { translate: calc(var(--kp-scroll, 0) * 65px * var(--kp-depth)) 0; }
.kp-motion-enabled .kp-mini-note { translate: 0 calc(var(--kp-scroll, 0) * 100px * var(--kp-depth)); }
.kp-motion-enabled .kp-campus-visual .kp-feature-phone { translate: 0 calc(var(--kp-scroll, 0) * -60px * var(--kp-depth)); }
.kp-motion-enabled .kp-map-label-one { translate: calc(var(--kp-scroll, 0) * 45px * var(--kp-depth)) calc(var(--kp-scroll, 0) * 55px * var(--kp-depth)); }
.kp-motion-enabled .kp-map-label-two { translate: calc(var(--kp-scroll, 0) * -30px * var(--kp-depth)) calc(var(--kp-scroll, 0) * -80px * var(--kp-depth)); }
.kp-connect-circle { isolation: isolate; }
.kp-connect-symbol { color: var(--kp-blue); transform-origin: center; }
.kp-motion-enabled .kp-connect-symbol { scale: calc(1 + var(--kp-scroll, 0) * .09); }
.kp-gallery { padding-top: 24px; padding-bottom: 42px; }
.kp-motion-enabled .kp-gallery figure:nth-child(odd) { translate: 0 calc(var(--kp-scroll, 0) * -18px * var(--kp-depth)); }
.kp-motion-enabled .kp-gallery figure:nth-child(even) { translate: 0 calc(var(--kp-scroll, 0) * 18px * var(--kp-depth)); }
.kp-gallery .kp-screen { transition: transform .35s cubic-bezier(.22,1,.36,1), box-shadow .35s ease-out; }
.kp-download { position: relative; isolation: isolate; overflow: hidden; }
.kp-download>.kp-wrap { position: relative; z-index: 1; }
.kp-download-decor { position: absolute; inset: 0; pointer-events: none; z-index: -1; }
.kp-download-decor span { position: absolute; font-weight: 900; line-height: 1; }
.kp-download-decor span:nth-child(1) { color: #f8ed78; font-size: 190px; left: 4%; top: 60px; }
.kp-download-decor span:nth-child(2) { color: #b8ead4; font-size: 160px; right: 6%; bottom: 150px; rotate: -15deg; }
.kp-download-decor span:nth-child(3) { color: #efadc5; font-size: 60px; right: 18%; top: 40px; }
.kp-motion-enabled .kp-download-decor span:nth-child(1) { translate: 0 calc(var(--kp-scroll, 0) * -110px * var(--kp-depth)); }
.kp-motion-enabled .kp-download-decor span:nth-child(2) { translate: 0 calc(var(--kp-scroll, 0) * 100px * var(--kp-depth)); }
.kp-motion-enabled .kp-download-icon { translate: 0 calc(var(--kp-scroll, 0) * -20px); }
/* Eyebrow underline grows once its heading or card has popped in (JS sets data-kp-entered). */
.kp-motion-enabled .kp-eyebrow:has(+ h2:not([data-kp-entered]))::after,
.kp-motion-enabled [data-kp-order]:not([data-kp-entered]) .kp-eyebrow::after { transform: scaleX(0); }
.kp-index a, .kp-plan-grid article { transition: transform .28s cubic-bezier(.22,1,.36,1), background-color .28s; }
.kp-index a>span:last-child { transition: transform .28s cubic-bezier(.22,1,.36,1); }
.kp-stores .store-badge:active { transform: scale(.96); }
@media(hover: hover) and (pointer: fine) {
    /* Scroll-linked rotation: desktop only, about half the earlier amplitude. */
    .kp-motion-enabled .kp-hero-phone-front { rotate: calc(var(--kp-scroll, 0) * -8deg); }
    .kp-motion-enabled .kp-hero-phone-back { rotate: calc(var(--kp-scroll, 0) * 7deg); }
    .kp-motion-enabled .kp-sticker { rotate: calc(var(--kp-scroll, 0) * 18deg); }
    .kp-motion-enabled .kp-orbit { rotate: calc(var(--kp-scroll, 0) * 45deg); }
    .kp-motion-enabled .kp-confetti-star { rotate: calc(-12deg + var(--kp-scroll, 0) * 55deg); }
    .kp-motion-enabled .kp-confetti-plus { rotate: calc(12deg + var(--kp-scroll, 0) * -45deg); }
    .kp-motion-enabled .kp-study-visual .kp-feature-phone { rotate: calc(var(--kp-scroll, 0) * 8deg); }
    .kp-motion-enabled .kp-mini-note { rotate: calc(var(--kp-scroll, 0) * -11deg); }
    .kp-motion-enabled .kp-campus-visual .kp-feature-phone { rotate: calc(var(--kp-scroll, 0) * -7deg); }
    .kp-motion-enabled .kp-map-label-one { rotate: calc(var(--kp-scroll, 0) * 6deg); }
    .kp-motion-enabled .kp-map-label-two { rotate: calc(var(--kp-scroll, 0) * -5deg); }
    .kp-motion-enabled .kp-connect-symbol { rotate: calc(var(--kp-scroll, 0) * 40deg); }
    .kp-motion-enabled .kp-download-decor span:nth-child(1) { rotate: calc(var(--kp-scroll, 0) * 75deg); }
    .kp-motion-enabled .kp-download-decor span:nth-child(2) { rotate: calc(-15deg + var(--kp-scroll, 0) * -30deg); }
    .kp-motion-enabled .kp-download-decor span:nth-child(3) { rotate: calc(var(--kp-scroll, 0) * -90deg); }
    .kp-motion-enabled .kp-download-icon { rotate: calc(var(--kp-scroll, 0) * -9deg); }
    /* Hover feedback: only where a real hover exists. */
    .kp-motion-enabled .kp-stores .store-badge:hover { transform: translateY(-3px); }
    .kp-motion-enabled .kp-download-legal a:hover { text-decoration-color: currentColor; }
    .kp-motion-enabled .kp-index a:hover { transform: translateY(-4px); }
    .kp-motion-enabled .kp-index a:hover>span:last-child { transform: translate(4px, 4px) rotate(-10deg); }
    .kp-motion-enabled .kp-plan-grid article:hover { transform: translateY(-8px) rotate(-1deg); }
    .kp-motion-enabled .kp-plan-grid article:nth-child(2):hover { transform: translateY(-8px) rotate(1deg); }
    .kp-motion-enabled .kp-gallery figure:hover .kp-screen { transform: translateY(-8px) rotate(-2deg); box-shadow: 0 15px 22px #14274a20; }
}
@media(max-width:760px) {
    .kp-landing { --kp-depth: .4; }
    .kp-confetti-star { font-size: 70px; top: -28px; right: 8px; }
    .kp-confetti-plus { font-size: 65px; left: 15px; bottom: 0; }
    .kp-confetti-loop { width: 40px; height: 40px; border-width: 8px; left: 0; top: 220px; }
    .kp-ribbon { padding-block: 17px; }
    .kp-ribbon-track>span { gap: 20px; padding-right: 20px; }
    .kp-download-decor span:nth-child(1) { font-size: 75px; left: -22px; top: 30px; }
    .kp-download-decor span:nth-child(2) { font-size: 75px; right: -10px; top: 110px; bottom: auto; }
    /* Keep the fixed motion toggle off the shared footer's last line. */
    .page-template-page-kpass .site-footer { padding-bottom: calc(52px + env(safe-area-inset-bottom, 0px)); }
    .kp-download-decor span:nth-child(3) { font-size: 35px; right: 10%; top: 30px; }
    .kp-motion-toggle { font-size: .65rem; right: 10px; bottom: max(10px, env(safe-area-inset-bottom)); padding-inline: 12px; }
}
.kp-motion-paused *, .kp-motion-paused *::before, .kp-motion-paused *::after { animation: none !important; transition: none !important; }
.kp-motion-paused .kp-stores .store-badge:active { transform: none; }
html:has(.kp-motion-paused) { scroll-behavior: auto; }
@media(prefers-reduced-motion:reduce) {
    .kp-landing *, .kp-landing *::before, .kp-landing *::after { animation: none !important; transition: none !important; }
    .kp-landing .kp-stores .store-badge:active { transform: none; }
}
/* Keep both phone screens inside small viewports even at the ends of travel. */
@media(max-width:760px) {
    .kp-hero-phone-front { width: 205px; left: 25px; transform: rotate(-6deg); }
    .kp-hero-phone-back { width: 195px; right: 20px; transform: rotate(5deg); }
}
@media(max-width:380px) {
    .kp-hero-phone-front { width: 180px; left: 20px; }
    .kp-hero-phone-back { width: 174px; right: 16px; }
}
