    /* ========================================================
    CSS Variables
    ======================================================== */
    /*
     * Z-index 스택 (낮음 → 높음)
     * dim 오버레이 1 · 내비 콘텐츠 2 · 햄버거/메뉴 래퍼 99 · 캐릭터 100 · 커서 1000 · 롯데 플로팅 9999
     */
    :root {
        --z-nav-dim: 1;
        --z-nav-layer: 2;
        --z-menu: 99;
        --z-character: 100;
        --z-cursor: 1000;
        --z-floating-ui: 9999;
        --nav-height: 64px;
        color-scheme: dark;
        --color-bg: #111;
        --color-text: #eee;
        --color-accent: #FED901;
        --color-muted: #ccc;
        --color-border: #555;
        --color-surface: #1a1a1a;
        --color-surface-raised: #222;
        --item-hover-glow: rgb(254 217 1 / 0.14);
        --badge-fg: #111;
        --item-border: rgb(255 255 255 / 0.06);
        --item-shadow: 0 8px 32px rgb(0 0 0 / 0.4);
        --item-hover-elevated: 0 16px 48px rgb(0 0 0 / 0.55);
        --item-focus-elevated: 0 12px 40px rgb(0 0 0 / 0.5);
        --color-border-subtle: rgba(255, 255, 255, 0.07);
        --nav-glass-bg: rgba(17, 17, 17, 0.72);
        --nav-glass-border: rgba(255, 255, 255, 0.07);

        /* revu 컬러 토큰 (Dark) */
        --cr-main-normal: #6A1CFF;
        --cr-main-strong: #5C19DD;
        --cr-main-light: #9584FF;
        --cr-text-normal: #EEEEEE;
        --cr-text-content: #CCCCCC;
        --cr-text-sub: #AAAAAA;
        --cr-text-light: #999999;
        --cr-text-disable: #666666;
        --cr-text-important: #9584FF;
        --cr-bg-body: #15141C;
        --cr-bg-normal: #1A1920;
        --cr-bg-strong: #232228;
        --cr-bg-heavy: #35333F;
        --cr-bg-dark: #2C2B34;
        --cr-bg-dim: rgba(0,0,0,.5);
        --cr-border-light: #232228;
        --cr-border-normal: #444444;
        --cr-border-strong: #666666;
        --cr-border-divider: #2C2B34;
        --cr-status-normal: #EEEEEE;
        --cr-status-positive: #6A1CFF;
        --cr-status-success: #48A1FF;
        --cr-status-fail: #FF7B7B;
        --cr-status-disable: #2C2B34;
        --cr-el-cobalt: #C0CEFF;
        --cr-el-blue: #B5D9FF;
        --cr-el-mint: #B3E8F9;
        --cr-el-green: #A9EEE5;
        --cr-el-yellow: #FFEBB9;
        --cr-el-orange: #FFD3BA;
        --cr-el-red: #FFBABA;
        --cr-el-pink: #FFB4C6;
        --cr-el-purple: #E5C0FF;
    }

    html[data-theme="light"] {
        color-scheme: light;
        --color-bg: #f2f2f0;
        --color-text: #161616;
        --color-muted: #5a5a58;
        --color-border: #d0d0cc;
        --color-accent: #c9a900;
        --color-surface: #ffffff;
        --color-surface-raised: #e8e8e6;
        --item-hover-glow: rgb(201 169 0 / 0.22);
        --badge-fg: #1a1a1a;
        --item-border: rgb(0 0 0 / 0.08);
        --item-shadow: 0 8px 28px rgb(0 0 0 / 0.08);
        --item-hover-elevated: 0 16px 44px rgb(0 0 0 / 0.12);
        --item-focus-elevated: 0 12px 36px rgb(0 0 0 / 0.1);
        --color-border-subtle: rgba(0, 0, 0, 0.07);
        --nav-glass-bg: rgba(242, 242, 240, 0.72);
        --nav-glass-border: rgba(0, 0, 0, 0.07);

        /* revu 컬러 토큰 (Light) */
        --cr-main-normal: #5C19DD;
        --cr-main-strong: #6A1CFF;
        --cr-main-light: #7660FF;
        --cr-text-normal: #222222;
        --cr-text-content: #333333;
        --cr-text-sub: #666666;
        --cr-text-light: #999999;
        --cr-text-disable: #C5C5C5;
        --cr-text-important: #5C19DD;
        --cr-bg-body: #FFFFFF;
        --cr-bg-normal: #F8F8F9;
        --cr-bg-strong: #F6F6F6;
        --cr-bg-heavy: #EEEEEE;
        --cr-bg-dark: #1E1E1E;
        --cr-bg-dim: rgba(0,0,0,.5);
        --cr-border-light: #EEEEEE;
        --cr-border-normal: #DDDDDD;
        --cr-border-strong: #CCCCCC;
        --cr-border-divider: #F6F6F6;
        --cr-status-normal: #222222;
        --cr-status-positive: #5C19DD;
        --cr-status-success: #1081FA;
        --cr-status-fail: #F55A5A;
        --cr-status-disable: #E5E5E5;
        --cr-el-cobalt: #4E73FB;
        --cr-el-blue: #2890FF;
        --cr-el-mint: #33B1DB;
        --cr-el-green: #2FB5A1;
        --cr-el-yellow: #FFBF1C;
        --cr-el-orange: #F36718;
        --cr-el-red: #E73333;
        --cr-el-pink: #E9356C;
        --cr-el-purple: #AF58FE;
    }

    /* ========================================================
    Global Styles
    - 기본 설정 (폰트, 색상, 커서, a 링크)
    ======================================================== */
    html,
    body {
        background: var(--color-bg);
        color: var(--color-text);
        font-family: 'SUIT', sans-serif;
        user-select: none;
        margin: 0;
        padding: 0;
        cursor: none !important;
        transition: background-color 0.35s ease, color 0.35s ease;
    }

    a {
        cursor: none !important;
        text-decoration: none;
        color: inherit;
    }

    a:not(.item) {
        transition: opacity 0.25s ease;
    }

    a:not(.item):hover {
        opacity: 0.9;
    }

    a:not(.item):focus-visible {
        outline: 2px solid var(--color-accent);
        outline-offset: 3px;
    }

    img {
        display: inline-block;
    }

    /* ========================================================
    Layout
    - 섹션, 컨테이너, 아이템, 썸네일, 라벨 등
    ======================================================== */
    .section {
        display: flex;
        flex-direction: column;
        margin: 0 auto;
        width: 100%;
        height: 100%;
        padding: 0;
        box-sizing: border-box;
        overflow: hidden;
        position: relative;
    }

    .container {
        width: 100%;
        height: 100%;
        display: flex;
        align-content: flex-start;
        flex-wrap: wrap;
        overflow-y: auto;
        overflow-x: hidden;
        padding: 0 80px;
        box-sizing: border-box;
        scrollbar-width: none;
        -ms-overflow-style: none;
        position: relative;
        justify-content: flex-start;
    }

    .container::-webkit-scrollbar {
        width: 0;
        height: 0;
        display: none;
    }

    .section__main {
        display: contents;
    }

    .visually-hidden {
        position: absolute;
        width: 1px;
        height: 1px;
        padding: 0;
        margin: -1px;
        overflow: hidden;
        clip: rect(0, 0, 0, 0);
        clip-path: inset(50%);
        white-space: nowrap;
        border: 0;
    }

    .container.about,
    .container.contact {
        display: none;
    }

    .item {
        position: relative;
        width: calc(100% / 4 - 16px);
        padding-bottom: calc(100% / 4 - 16px);
        margin: 8px;
        background: var(--color-surface);
        overflow: hidden;
        box-sizing: border-box;
        transition: width 0.6s ease, box-shadow 0.4s ease, transform 0.4s ease, border-color 0.4s ease;
        border-radius: 16px;
        border: 1px solid var(--item-border);
        box-shadow: var(--item-shadow);
    }

    .thumbnail {
        display: block;
        position: absolute;
        top: 50%;
        left: 50%;
        height: 101%;
        width: auto;
        transform: translate(-50%, -50%);
        transition: height 0.55s ease, transform 0.55s ease;
    }

    .item:hover .thumbnail {
        height: 110%;
    }

    @media (min-width: 1024px) {
        .container.work .item:hover {
            transform: translateY(-3px);
            border-color: rgb(254 217 1 / 0.22);
            box-shadow: var(--item-hover-elevated), 0 0 0 1px var(--item-hover-glow);
        }

        .container.work .item:focus-within {
            border-color: rgb(254 217 1 / 0.35);
            box-shadow: var(--item-focus-elevated), 0 0 0 1px rgb(254 217 1 / 0.2);
        }

        html[data-theme="light"] .container.work .item:hover,
        html[data-theme="light"] .container.work .item:focus-within {
            border-color: rgb(201 169 0 / 0.35);
        }

        html[data-theme="light"] .container.work .item:focus-within {
            box-shadow: var(--item-focus-elevated), 0 0 0 1px rgb(201 169 0 / 0.25);
        }

        a.item:focus-visible {
            outline: 2px solid var(--color-accent);
            outline-offset: 3px;
        }
    }

    .container .label {
        position: absolute;
        top: 8px;
        left: 8px;
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 0.15em 0;
        z-index: 1;
    }

    .container .label li {
        display: inline-flex;
        align-items: center;
        font-size: 0.8125rem;
        font-weight: 600;
        letter-spacing: 0.03em;
        color: var(--color-text);
        background: none;
        padding: 0;
        border: none;
        border-radius: 0;
        text-shadow:
            0 0 1px rgb(0 0 0 / 0.95),
            0 1px 3px rgb(0 0 0 / 0.88),
            0 0 20px rgb(0 0 0 / 0.55);
    }

    html[data-theme="light"] .container .label li {
        text-shadow:
            0 0 1px rgb(255 255 255 / 0.95),
            0 1px 3px rgb(255 255 255 / 0.85),
            0 0 16px rgb(255 255 255 / 0.65),
            0 0 24px rgb(0 0 0 / 0.25);
    }

    .container .label li + li::before {
        content: '';
        flex-shrink: 0;
        width: 1.5px;
        height: 0.78em;
        margin-right: 0.48em;
        margin-left: 0.48em;
        border-radius: 1px;
        background: color-mix(in srgb, var(--color-text) 52%, transparent);
        box-shadow: 0 0 1px rgb(0 0 0 / 0.5);
    }

    html[data-theme="light"] .container .label li + li::before {
        box-shadow: 0 0 1px rgb(255 255 255 / 0.6);
    }

    @media (min-width: 1024px) {
        .container.work .item .thumbnail {
            z-index: 0;
        }

        .container.work .item::before {
            content: '';
            position: absolute;
            inset: 0;
            z-index: 2;
            border-radius: inherit;
            background: rgb(0 0 0 / 0.62);
            opacity: 0;
            transition: opacity 0.35s ease;
            pointer-events: none;
        }

        html[data-theme="light"] .container.work .item::before {
            background: rgb(0 0 0 / 0.55);
        }

        .container.work .item:hover::before,
        .container.work .item:focus-within::before {
            opacity: 1;
        }

        .container.work .item .label {
            position: absolute;
            inset: 0;
            margin: 0;
            display: flex;
            flex-direction: column;
            flex-wrap: nowrap;
            align-items: center;
            justify-content: center;
            gap: 0.4em;
            padding: 1rem 1.25rem;
            box-sizing: border-box;
            z-index: 3;
            max-width: 100%;
            text-align: center;
            opacity: 0;
            visibility: hidden;
            transition: opacity 0.35s ease, visibility 0.35s ease;
            pointer-events: none;
        }

        .container.work .item:hover .label,
        .container.work .item:focus-within .label {
            opacity: 1;
            visibility: visible;
        }

        .container.work .item .label li {
            color: #fff;
            font-size: clamp(0.8125rem, 0.55vw + 0.68rem, 1rem);
            font-weight: 600;
            letter-spacing: 0.04em;
            text-align: center;
            text-shadow: 0 1px 14px rgb(0 0 0 / 0.55);
        }

        html[data-theme="light"] .container.work .item .label li {
            color: #fff;
            text-shadow: 0 1px 14px rgb(0 0 0 / 0.55);
        }

        .container.work .item .label li + li::before {
            content: none;
        }
    }

    @media (max-width: 1023px) {
        .container.work {
            gap: 16px;
        }

        .container.work .item {
            display: flex;
            flex-direction: column;
            margin: 0;
            padding-bottom: 0;
            height: auto;
            overflow: hidden;
            background: var(--color-surface-raised);
            border-color: var(--item-border);
        }

        .container.work .item .thumbnail {
            position: relative;
            order: 1;
            top: auto;
            left: auto;
            transform: none;
            width: 100%;
            height: auto;
            aspect-ratio: 1;
            object-fit: cover;
            flex-shrink: 0;
        }

        .container.work .item:hover .thumbnail {
            height: auto;
        }

        .container.work .item .label {
            position: relative;
            order: 2;
            top: auto;
            left: auto;
            margin: 0;
            padding: 10px 12px 12px;
            flex-wrap: wrap;
            align-content: flex-start;
            align-items: center;
            background: transparent;
        }

        .container.work .item .label li {
            font-size: 0.78rem;
            font-weight: 600;
            text-shadow: none;
        }

        .container.work .item .label li + li::before {
            box-shadow: none;
        }
    }


    /* ========================================================
    iPhone Frame Component
    - 반응형 아이폰 프레임 UI (노치, 화면 포함)
    ======================================================== */
    .iphone {
        height: 100vh;
        width: 100%;
        overflow: hidden;
        margin: 0 auto;
        display: flex;
        justify-content: center;
        align-items: center;
    }

    /* ========================================================
    Nav, Logo, Hamburger Menu
    ======================================================== */
    .nav {
        width: 100%;
        height: var(--nav-height);
        flex-shrink: 0;
        padding: 0 80px;
        box-sizing: border-box;
        display: flex;
        align-items: center;
        z-index: var(--z-menu);
        background: var(--nav-glass-bg);
        backdrop-filter: blur(20px) saturate(160%);
        -webkit-backdrop-filter: blur(20px) saturate(160%);
        border-bottom: 1px solid var(--nav-glass-border);
    }

    .nav::after {
        content: '';
        position: fixed;
        top: 0;
        left: 0;
        width: 100vw;
        height: 100vh;
        background: var(--color-bg);
        opacity: 0;
        visibility: hidden;
        z-index: var(--z-nav-dim);
        transition: opacity 1s ease, visibility 1s ease;
    }

    .nav-bar {
        position: relative;
        z-index: var(--z-nav-layer);
        display: flex;
        align-items: center;
        gap: 12px;
        min-height: 40px;
        flex: 1;
    }

    .theme-toggle {
        flex-shrink: 0;
        width: 40px;
        height: 40px;
        padding: 0;
        margin: 0;
        border: 1px solid var(--item-border);
        border-radius: 12px;
        background: var(--color-surface);
        color: var(--color-text);
        cursor: inherit;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        transition: border-color 0.25s ease, background 0.25s ease, transform 0.2s ease;
        box-sizing: border-box;
    }

    .theme-toggle:hover {
        border-color: rgb(254 217 1 / 0.45);
        background: var(--color-surface-raised);
    }

    .theme-toggle:focus-visible {
        outline: 2px solid var(--color-accent);
        outline-offset: 3px;
    }

    .theme-toggle svg {
        display: block;
        width: 20px;
        height: 20px;
    }

    .theme-toggle__sun {
        stroke: currentColor;
        fill: none;
    }

    .theme-toggle__moon path {
        stroke: none;
    }

    html:not([data-theme="light"]) .theme-toggle .theme-toggle__moon {
        display: none;
    }

    html[data-theme="light"] .theme-toggle .theme-toggle__sun {
        display: none;
    }

    .theme-toggle--bar {
        display: none;
    }

    .nav__theme {
        list-style: none;
        padding: 0 4px;
    }

    .nav__theme .theme-toggle {
        vertical-align: middle;
    }

    .logo {
        display: inline-block;
        height: 24px;
    }

    .nav-bar .logo {
        flex: 1;
        display: flex;
        justify-content: flex-start;
        align-items: center;
        min-width: 0;
    }

    .logo img {
        height: 100%;
        width: auto;
    }

    .nav-menu {
        display: none;
        width: 40px;
        height: 40px;
        position: relative;
        background: var(--color-surface);
        border: 1px solid var(--item-border);
        border-radius: 12px;
        box-sizing: border-box;
        z-index: var(--z-menu);
        flex-shrink: 0;
        transition: border-color 0.25s ease, background 0.25s ease;
        cursor: inherit;
    }

    .nav-menu:hover {
        border-color: rgb(254 217 1 / 0.45);
        background: var(--color-surface-raised);
    }

    .sub-nav .nav-bar .nav-menu {
        display: block;
        margin-left: auto;
    }

    .sub-nav .nav-bar .logo {
        position: absolute;
        left: 50%;
        transform: translateX(-50%);
        flex: none;
    }

    #menu-wrapper {
        position: absolute;
        left: 50%;
        top: 50%;
        transform: translate(-50%, -50%);
        max-width: 100%;
    }

    #hamburger-menu {
        position: relative;
        width: 20px;
        height: 14px;
    }

    #hamburger-menu span {
        display: block;
        position: absolute;
        width: 100%;
        height: 1.5px;
        border-radius: 10px;
        background: var(--color-text);
        transition: 0.4s ease-in-out;
    }

    #hamburger-menu span:nth-child(1) {
        top: 0;
    }

    #hamburger-menu span:nth-child(2) {
        top: 6px;
    }

    #hamburger-menu span:nth-child(3) {
        top: 12px;
    }

    #hamburger-menu.open span:nth-child(1) {
        transform: translateY(6px) rotate(135deg);
    }

    #hamburger-menu.open span:nth-child(2) {
        opacity: 0;
        transform: translateX(-40px);
    }

    #hamburger-menu.open span:nth-child(3) {
        transform: translateY(-6px) rotate(-135deg);
    }

    .nav-items {
        display: flex;
        flex-direction: row;
        align-items: center;
        margin: 0 0 0 auto;
        gap: 20px;
    }

    .nav-items > li {
        margin-top: 0;
    }

    .nav-items > li:not(.nav__theme) > button {
        display: inline-block;
        margin: 0;
        padding: 0;
        border: none;
        background: none;
        font: inherit;
        cursor: inherit;
        font-size: 13px;
        font-weight: 700;
        letter-spacing: 0.06em;
        color: var(--color-muted);
        -webkit-text-stroke: 0;
        transition: color 0.3s;
    }

    .nav-items > li:not(.nav__theme) > button:hover,
    .nav-items > li:not(.nav__theme) > button.active {
        color: var(--color-text);
    }

    .nav-items > li:not(.nav__theme) > button:focus-visible {
        outline: 2px solid var(--color-accent);
        outline-offset: 4px;
        border-radius: 4px;
    }

    .nav-items > li > button.nav__badge {
        position: relative;
        margin-right: 24px;
    }

    .nav-items > li > button.nav__badge::after {
        content: var(--work-project-count, "12");
        position: absolute;
        top: -6px;
        right: -24px;
        width: 22px;
        height: 16px;
        background: var(--color-accent);
        color: var(--badge-fg);
        font-size: 11px;
        font-weight: 900;
        line-height: 16px;
        text-align: center;
        border-radius: 32px;
        -webkit-text-stroke: 0;
    }

    /* ========================================================
    About / Contact Section
    ======================================================== */

    .container.about {
        overflow: hidden;
        padding: 0;
    }

    .container.about .video {
        position: absolute;
        top: 50%;
        left: 50%;
        width: 100%;
        height: 100%;
        transform: translate(-50%, -50%);
        pointer-events: none;
        border: 0;
    }

    .container.contact {
        overflow: hidden;
        padding: 0;
    }

    /* ── Wave ── */
    #contact-wave-wrap {
        position: absolute;
        bottom: 0; left: 0;
        width: 100%; height: 190px;
        overflow: hidden;
        pointer-events: none;
        z-index: 0;
    }

    .contact-wave-svg {
        position: absolute;
        bottom: 0; left: 0;
        width: 200%; height: 100%;
    }

    .contact-wave-svg--back  { opacity: .4; animation: cwscroll 18s linear infinite; }
    .contact-wave-svg--front {              animation: cwscroll 11s linear infinite; animation-delay: -3s; }

    @keyframes cwscroll {
        from { transform: translateX(0); }
        to   { transform: translateX(-50%); }
    }

    /* ── Physics keywords ── */
    #kw-container {
        position: absolute;
        inset: 0;
        z-index: 1;
    }

    .keyword {
        position: absolute;
        top: 0; left: 0;
        display: inline-flex;
        align-items: center;
        white-space: nowrap;
        font-weight: 800;
        letter-spacing: .05em;
        line-height: 1;
        cursor: none;
        user-select: none;
        will-change: transform;
        transition: box-shadow .2s ease, filter .2s ease;
    }

    .keyword:hover {
        box-shadow: 0 10px 30px rgba(0, 0, 0, .2);
        filter: brightness(1.06);
        z-index: 20;
    }

    .kw-filled  { background: var(--color-text); color: var(--color-bg); }
    .kw-outline { background: var(--color-bg);   color: var(--color-text); border: 2.5px solid var(--color-text); }

    .kw-pill  { border-radius: 999px; }
    .kw-block { border-radius: 14px; }

    .kw-avatar {
        position: absolute;
        top: 0; left: 0;
        border-radius: 50%;
        overflow: hidden;
        will-change: transform;
        cursor: none;
        user-select: none;
        box-shadow: 0 4px 20px rgba(0, 0, 0, .28);
        transition: box-shadow .2s ease;
    }

    .kw-avatar:hover {
        box-shadow: 0 10px 32px rgba(0, 0, 0, .38);
        z-index: 20;
    }

    .kw-avatar img {
        width: 100%; height: 100%;
        object-fit: cover;
        pointer-events: none;
        user-select: none;
        display: block;
    }

    .kw-boat {
        position: absolute;
        top: 0; left: 0;
        will-change: transform;
        cursor: none;
        user-select: none;
        color: var(--color-text);
        filter: drop-shadow(0 4px 8px rgba(0, 0, 0, .28));
        transition: filter .2s ease;
    }

    .kw-boat:hover {
        filter: drop-shadow(0 8px 16px rgba(0, 0, 0, .38));
        z-index: 20;
    }

    .kw-sm { font-size: 13px; padding:  9px 22px; }
    .kw-md { font-size: 19px; padding: 13px 28px; }
    .kw-lg { font-size: 27px; padding: 17px 42px; }

    .info {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        z-index: 2;
        max-width: 1000px;
        width: 100%;
        padding: 0 20px 80px;
        box-sizing: border-box;
        pointer-events: none;
        text-align: center;
    }

    .info__quote {
        font-size: 32px;
        font-weight: 500;
        line-height: 150%;
        color: var(--color-text);
    }


    /* ========================================================
    Sub / lotte
    ======================================================== */
    .floating-button {
        position: fixed;
        bottom: 16px;
        left: 50%;
        transform: translateX(-50%);
        background: var(--color-surface-raised);
        border: 1px solid var(--item-border);
        border-radius: 40px;
        z-index: var(--z-floating-ui);
        padding: 4px;
        display: flex;
        pointer-events: auto;
        box-shadow: var(--item-shadow);
        transition: opacity 0.6s ease-in-out;
        opacity: 1;
        visibility: visible;
    }

    .floating-button.hide {
        opacity: 0;
        pointer-events: none;
    }

    .tab {
        color: var(--color-muted);
        cursor: pointer;
        border: none;
        background: none;
        font-weight: 600;
        font-size: 14px;
        width: 80px;
        height: 36px;
        border-radius: 20px;
        transition: color 0.25s ease, background 0.25s ease;
    }

    .tab:hover:not(.active) {
        color: var(--color-text);
        background: rgb(128 128 128 / 0.12);
    }

    html[data-theme="light"] .tab:hover:not(.active) {
        background: rgb(0 0 0 / 0.06);
    }

    .tab:focus-visible {
        outline: 2px solid var(--color-accent);
        outline-offset: 2px;
    }

    .tab.active {
        color: var(--badge-fg);
        background: var(--color-accent);
    }

    .tab-content {
        width: 100%;
        display: none;
        position: absolute;
        top: 0;
        left: 0;
    }

    .tab-content.active {
        display: block;
    }


    .fade-in-section {
        opacity: 0;
        transform: translateY(24px);
        transition: opacity 0.8s ease-out, transform 0.8s ease-out;
        will-change: opacity, transform;
    }

    .fade-in-section.visible {
        opacity: 1;
        transform: translateY(0);
    }

    .sub-fade {
        opacity: 0;
        transform: translateY(24px);
        transition: opacity 0.8s ease-out, transform 0.8s ease-out;
    }

    .sub-fade.visible {
        opacity: 1;
        transform: translateY(0);
    }


    /* ========================================================
    Sub / revu — 섹션 구조
    ======================================================== */
    .revu-section {
        width: 100%;
        margin-bottom: 140px;
    }

    .revu-section:last-child {
        margin-bottom: 0;
    }

    .revu-section__header {
        margin-bottom: 32px;
    }

    .revu-section__headline {
        font-size: clamp(2rem, 3.5vw, 3rem);
        font-weight: 900;
        line-height: 1.08;
        letter-spacing: -0.025em;
        color: var(--color-text);
        margin-bottom: 14px;
        word-break: keep-all;
        overflow-wrap: break-word;
    }

    .revu-section__headline--sub {
        margin-top: 80px;
    }

    .revu-section__desc {
        font-size: 0.875rem;
        line-height: 1.75;
        color: var(--color-muted);
        font-weight: 300;
        max-width: 520px;
        margin-bottom: 32px;
        word-break: keep-all;
        overflow-wrap: break-word;
    }

    .revu-section__empty {
        padding: 36px 0;
        text-align: center;
        font-size: 0.75rem;
        color: var(--color-border);
        border: 1px dashed var(--color-border);
        border-radius: 12px;
        letter-spacing: 0.04em;
    }

    @media (max-width: 767px) {
        .revu-section__headline {
            font-size: clamp(1.75rem, 8vw, 2.5rem);
        }

        .revu-section__desc {
            font-size: 0.8125rem;
        }
    }

    /* 아이콘 · 일러스트: 기본 4열, 와이드 6열 Lottie 그리드 */
    .quick-grid {
        display: grid;
        grid-template-columns: repeat(4, 1fr);
        gap: 16px;
        width: 100%;
    }

    @media (min-width: 1400px) {
        .quick-grid {
            grid-template-columns: repeat(6, 1fr);
        }
    }

    .quick-grid dotlottie-wc {
        display: block;
        width: 100%;
        aspect-ratio: 1;
        border-radius: 20px;
        overflow: hidden;
    }

    .category-card {
        aspect-ratio: 1;
        border-radius: 20px;
        overflow: hidden;
        background: #ffffff;
        padding: 14px;
        display: flex;
        align-items: center;
        justify-content: center;
    }

    html[data-theme="light"] .category-card {
        background: var(--color-surface-raised);
    }

    .category-card dotlottie-wc {
        display: block;
        width: 100%;
        height: 100%;
    }

    /* 카테고리 아이콘: 기본 4열, 와이드 8열(1줄) */
    .category-grid {
        display: grid;
        grid-template-columns: repeat(4, 1fr);
        gap: 16px;
        width: 100%;
    }

    @media (min-width: 1400px) {
        .category-grid {
            grid-template-columns: repeat(8, 1fr);
        }
    }

    /* 씬 배너: 기본 1열, 와이드(1024px+) 2열 */
    .thin-banner-grid {
        display: grid;
        grid-template-columns: 1fr;
        gap: 12px;
        width: 100%;
    }

    @media (min-width: 1981px) {
        .thin-banner-grid {
            grid-template-columns: repeat(2, 1fr);
        }
    }

    .thin-banner-grid img {
        width: 100%;
        display: block;
        border-radius: 5px;
    }

    /* 웹 · 모바일 나란히 */
    .device-pair {
        display: grid;
        grid-template-columns: 3.849fr 1fr;
        gap: 24px;
    }

    @media (max-width: 767px) {
        .device-pair {
            grid-template-columns: 1fr;
        }
    }

    /* Before / After 비교 */
    .ba-compare {
        display: flex;
        flex-direction: column;
        gap: 40px;
    }

    .ba-pair {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 24px;
    }

    .ba-pair--mobile {
        max-width: 480px;
    }

    .ba-label {
        display: block;
        font-size: 0.6875rem;
        font-weight: 700;
        letter-spacing: 0.12em;
        text-transform: uppercase;
        color: var(--color-muted);
        margin-bottom: 10px;
    }

    .premier-frame {
        border: 2px solid #ffffff;
        border-radius: 20px;
        overflow: hidden;
        cursor: pointer;
    }

    html[data-theme="light"] .premier-frame {
        border-color: var(--color-border);
    }

    .premier-frame--web {
        aspect-ratio: 1280 / 720;
    }

    .premier-frame--mo {
        aspect-ratio: 375 / 812;
    }

    .premier-frame:empty {
        background: var(--color-surface-raised);
    }

    .premier-frame img {
        width: 100%;
        height: auto;
        display: block;
        transform: translateY(0);
        transition: transform 0.8s ease;
        will-change: transform;
    }

    @media (max-width: 767px) {
        .ba-pair {
            grid-template-columns: 1fr;
        }

        .ba-pair--mobile {
            max-width: 100%;
        }

        /* 모바일: 크롭 해제 → 전체 이미지 표시 */
        .premier-frame--web,
        .premier-frame--mo {
            aspect-ratio: unset;
        }

        .premier-frame img {
            transition: none;
        }
    }

    @media (min-width: 768px) and (max-width: 1023px) {
        .quick-grid {
            grid-template-columns: repeat(3, 1fr);
        }

        .category-grid {
            grid-template-columns: repeat(4, 1fr);
        }
    }

    @media (max-width: 767px) {
        .revu-section {
            margin-bottom: 64px;
        }

        .quick-grid {
            grid-template-columns: repeat(2, 1fr);
            gap: 10px;
        }

        .category-grid {
            grid-template-columns: repeat(4, 1fr);
            gap: 10px;
        }

    }

    /* ========================================================
    Sub / revu — 컬러 토큰 시스템
    ======================================================== */
    .guide-cols {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 48px;
        align-items: start;
        margin-bottom: 40px;
    }

    .guide-col {
        min-width: 0;
    }

    @media (max-width: 1199px) {
        .guide-cols {
            grid-template-columns: 1fr;
        }
    }

    .guide-sub-label {
        font-size: 0.625rem;
        font-weight: 700;
        letter-spacing: 0.16em;
        text-transform: uppercase;
        color: var(--cr-main-normal);
        margin-bottom: 20px;
    }

    .guide-sub-label--spaced {
        margin-top: 60px;
    }

    .color-system {
        width: 100%;
        margin-bottom: 0;
        border: 1px solid var(--color-border);
        border-radius: 20px;
        overflow: hidden;
    }

    .color-group {
        padding: 24px 28px;
        border-bottom: 1px solid var(--color-border-subtle);
    }

    .color-group:last-child {
        border-bottom: none;
    }

    .color-group__label {
        font-size: 0.6875rem;
        font-weight: 700;
        letter-spacing: 0.12em;
        text-transform: uppercase;
        color: var(--color-muted);
        margin-bottom: 16px;
    }

    .color-swatches {
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(68px, 1fr));
        gap: 10px;
    }

    .color-swatch__chip {
        width: 100%;
        aspect-ratio: 1;
        border-radius: 12px;
        border: 1px solid rgba(128, 128, 128, 0.15);
        transition: background-color 0.35s ease;
    }

    .color-swatch__name {
        display: block;
        font-size: 0.5625rem;
        letter-spacing: 0.04em;
        color: var(--color-muted);
        margin-top: 6px;
        text-align: center;
        opacity: 0.7;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    @media (max-width: 767px) {
        .color-swatches {
            grid-template-columns: repeat(auto-fill, minmax(56px, 1fr));
            gap: 8px;
        }

        .color-swatch__name {
            font-size: 0.5rem;
        }
    }

    /* ========================================================
    Sub / revu — 타이포그래피 토큰 시스템
    ======================================================== */
    .type-system {
        width: 100%;
        margin-bottom: 40px;
        border: 1px solid var(--color-border);
        border-radius: 20px;
        overflow: hidden;
    }

    .type-system__group {
        padding: 24px 28px;
        border-bottom: 1px solid var(--color-border-subtle);
    }

    .type-system__group:last-child {
        border-bottom: none;
    }

    .type-system__group-label {
        font-size: 0.6875rem;
        font-weight: 700;
        letter-spacing: 0.12em;
        text-transform: uppercase;
        color: var(--color-muted);
        margin-bottom: 16px;
    }

    .type-row {
        display: flex;
        align-items: baseline;
        gap: 20px;
        padding: 10px 0;
        border-bottom: 1px solid var(--color-border-subtle);
    }

    .type-row:last-child {
        border-bottom: none;
        padding-bottom: 0;
    }

    .type-row__name {
        font-size: 0.625rem;
        font-family: 'SF Mono', 'Fira Code', 'Courier New', monospace;
        color: var(--color-muted);
        width: 36px;
        flex-shrink: 0;
        letter-spacing: 0.04em;
        opacity: 0.6;
    }

    .type-row__sample {
        flex: 1;
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
        color: var(--color-text);
        font-family: 'Pretendard Variable', 'SUIT', sans-serif;
    }

    .type-row__meta {
        font-size: 0.625rem;
        color: var(--color-muted);
        white-space: nowrap;
        font-family: 'SF Mono', 'Fira Code', 'Courier New', monospace;
        opacity: 0.5;
        letter-spacing: 0.04em;
        flex-shrink: 0;
    }

    @media (max-width: 767px) {
        .type-system__group {
            padding: 20px 16px;
        }

        .type-row {
            gap: 12px;
        }

        .type-row__meta {
            display: none;
        }
    }

    /* ========================================================
    Sub / versus
    ======================================================== */
    .revu-section__meta {
        display: flex;
        align-items: center;
        gap: 8px;
        margin-bottom: 12px;
    }

    .revu-section__title {
        font-size: 0.6875rem;
        font-weight: 700;
        letter-spacing: 0.12em;
        text-transform: uppercase;
        color: var(--color-muted);
    }

    .revu-section__badge {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-width: 20px;
        height: 18px;
        padding: 0 6px;
        border-radius: 99px;
        background: var(--cr-main-normal);
        color: #fff;
        font-size: 0.625rem;
        font-weight: 700;
        letter-spacing: 0.02em;
        line-height: 1;
    }

    /* ── iPhone 히어로 목업 ── */
    .vs-hero {
        width: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
        gap: 48px;
        padding: 60px 0;
        position: relative;
        isolation: isolate;
        min-height: calc(100svh - var(--nav-height));
        background:
            radial-gradient(ellipse 65% 50% at 50% 50%, rgba(200, 35, 35, 0.1), transparent 65%),
            radial-gradient(ellipse 120% 100% at 50% 50%, transparent 45%, rgba(0, 0, 0, 0.45) 100%);
    }

    /* phone 뒤 red glow */
    .vs-glow {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        width: 560px;
        height: 720px;
        background: radial-gradient(ellipse at 50% 45%,
            rgba(220, 38, 38, 0.55) 0%,
            rgba(180, 20, 20, 0.25) 40%,
            transparent 70%
        );
        filter: blur(48px);
        pointer-events: none;
        z-index: 0;
    }

    /* 히어로 단어 drop-in */
    .vs-word {
        display: inline-block;
        opacity: 0;
        animation: vs-word-in 0.6s cubic-bezier(0.22, 1, 0.36, 1) both;
    }

    .vs-word-block {
        opacity: 0;
        animation: vs-word-in 0.6s cubic-bezier(0.22, 1, 0.36, 1) both;
    }

    @keyframes vs-word-in {
        from { opacity: 0; transform: translateY(-18px); }
        to   { opacity: 1; transform: translateY(0); }
    }

    @media (prefers-reduced-motion: reduce) {
        .vs-word, .vs-word-block { animation: none; opacity: 1; }
    }

    .vs-scroll-hint {
        position: absolute;
        bottom: 24px;
        left: 50%;
        transform: translateX(-50%);
        color: var(--color-muted);
        opacity: 0.4;
        animation: vs-bounce 2.2s ease-in-out infinite;
        pointer-events: none;
        z-index: 1;
    }

    @keyframes vs-bounce {
        0%, 100% { transform: translateX(-50%) translateY(0); }
        50%       { transform: translateX(-50%) translateY(7px); }
    }

    @media (max-width: 767px) {
        .vs-scroll-hint { display: none; }
    }

    /* dot grid */
    .vs-hero::before {
        content: '';
        position: absolute;
        inset: 0;
        background-image: radial-gradient(circle, rgba(255, 255, 255, 0.07) 1px, transparent 1px);
        background-size: 28px 28px;
        pointer-events: none;
        z-index: -1;
    }

    /* large "VS" background letterform */
    .vs-hero::after {
        content: 'VS';
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        font-size: clamp(22rem, 42vw, 44rem);
        font-weight: 900;
        letter-spacing: -0.06em;
        line-height: 1;
        color: transparent;
        -webkit-text-stroke: 1px rgba(255, 255, 255, 0.045);
        pointer-events: none;
        user-select: none;
        white-space: nowrap;
        z-index: -1;
    }

    .vs-hero__text {
        flex: 1;
        display: flex;
        flex-direction: column;
        justify-content: center;
        min-width: 0;
    }

    .vs-hero__right {
        flex: 1;
        display: flex;
        flex-direction: column;
        justify-content: center;
        min-width: 0;
    }

    .vs-desc-group {
        display: grid;
    }

    .vs-hero__meta {
        margin-top: 32px;
        display: flex;
        flex-direction: column;
    }

    .vs-hero__meta-row {
        display: grid;
        grid-template-columns: 72px 1fr;
        gap: 12px;
        align-items: baseline;
        padding: 12px 0;
        border-top: 1px solid rgba(255, 255, 255, 0.08);
    }

    .vs-hero__meta-row dt {
        font-size: 0.625rem;
        font-weight: 700;
        letter-spacing: 0.1em;
        text-transform: uppercase;
        color: var(--color-muted);
        opacity: 0.6;
        white-space: nowrap;
    }

    .vs-hero__meta-row dd {
        font-size: 0.8125rem;
        line-height: 1.6;
        color: var(--color-muted);
    }

    .vs-hero__label {
        font-size: 0.6875rem;
        font-weight: 700;
        letter-spacing: 0.14em;
        text-transform: uppercase;
        color: var(--color-muted);
        margin-bottom: 20px;
        display: inline-flex;
        align-items: center;
        gap: 8px;
        padding: 5px 12px 5px 8px;
        border: 1px solid rgba(255, 255, 255, 0.1);
        border-radius: 100px;
        width: fit-content;
        background: rgba(255, 255, 255, 0.04);
    }

    .vs-hero__label::before {
        content: '';
        width: 6px;
        height: 6px;
        border-radius: 50%;
        background: #dc2626;
        flex-shrink: 0;
    }

    .vs-hero__title {
        font-size: clamp(3rem, 8vw, 6rem);
        font-weight: 800;
        line-height: 1;
        letter-spacing: -0.04em;
        background: linear-gradient(135deg, var(--color-text) 45%, rgba(220, 45, 45, 0.75) 100%);
        -webkit-background-clip: text;
        -webkit-text-fill-color: transparent;
        background-clip: text;
        margin-bottom: 24px;
    }

    .vs-hero__desc {
        grid-area: 1 / 1;
        font-size: clamp(1.125rem, 2.5vw, 1.625rem);
        font-weight: 400;
        line-height: 1.5;
        color: var(--color-muted);
    }

    .vs-hero__desc--a {
        animation: vs-text-swap 9s ease-in-out infinite;
    }

    .vs-hero__desc--b {
        animation: vs-text-swap 9s ease-in-out infinite;
        animation-delay: -4.5s;
    }

    @keyframes vs-text-swap {
        0%   { opacity: 1; transform: translateY(0); }
        35%  { opacity: 1; transform: translateY(0); }
        45%  { opacity: 0; transform: translateY(-10px); }
        46%  { opacity: 0; transform: translateY(10px); }
        90%  { opacity: 0; transform: translateY(10px); }
        100% { opacity: 1; transform: translateY(0); }
    }

    @media (prefers-reduced-motion: reduce) {
        .vs-hero__desc--a { animation: none; opacity: 1; }
        .vs-hero__desc--b { animation: none; opacity: 0; }
    }

    @media (max-width: 767px) {
        .vs-hero {
            flex-direction: column;
            align-items: stretch;
            gap: 32px;
            padding: 40px 0 48px;
            min-height: 0;
        }
        .vs-hero__text {
            align-items: flex-start;
        }
        .vs-phone-wrap {
            align-self: center;
        }
        .vs-hero__right {
            order: 2;
            display: flex;
            flex-direction: row;
            align-items: center;
            justify-content: space-between;
            gap: 16px;
        }
        .vs-phone-wrap {
            order: 3;
        }
        .vs-proto-link {
            margin-top: 0;
            flex-shrink: 0;
        }
        .vs-glow {
            width: 320px;
            height: 440px;
        }
        #vs-iframe {
            pointer-events: none;
        }
    }

    .vs-phone {
        position: relative;
        aspect-ratio: 390 / 844;
        width: 26%;
        max-width: 260px;
        flex-shrink: 0;
        background: #0f0f0f;
        border-radius: 44px;
        border: 2px solid rgba(255, 255, 255, 0.1);
        box-shadow:
            0 0 0 6px #1a1a1a,
            0 0 0 7px rgba(255, 255, 255, 0.07),
            0 40px 80px rgba(0, 0, 0, 0.7);
        overflow: hidden;
    }

    .vs-phone-wrap {
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 20px;
        flex-shrink: 0;
    }

    .vs-proto-link {
        display: inline-flex;
        align-items: center;
        gap: 7px;
        margin-top: 24px;
        padding: 9px 18px;
        border: 1px solid rgba(255, 255, 255, 0.14);
        border-radius: 100px;
        font-size: 0.75rem;
        font-weight: 600;
        letter-spacing: 0.05em;
        color: var(--color-muted);
        text-decoration: none;
        background: rgba(255, 255, 255, 0.05);
        backdrop-filter: blur(10px);
        -webkit-backdrop-filter: blur(10px);
        transition: border-color 0.2s, color 0.2s, background 0.2s;
        width: fit-content;
    }

    .vs-proto-link:hover {
        border-color: rgba(255, 255, 255, 0.32);
        color: var(--color-text);
        background: rgba(255, 255, 255, 0.1);
    }

    [data-theme="light"] .vs-proto-link {
        border-color: rgba(0, 0, 0, 0.12);
        background: rgba(0, 0, 0, 0.04);
    }

    [data-theme="light"] .vs-proto-link:hover {
        border-color: rgba(0, 0, 0, 0.28);
        background: rgba(0, 0, 0, 0.08);
    }

    .vs-phone--center {
        width: 32%;
        max-width: 320px;
    }

    .vs-phone--single {
        width: 340px;
        max-width: min(340px, 72vw);
        box-shadow:
            0 0 0 6px #1a1a1a,
            0 0 0 7px rgba(255, 255, 255, 0.08),
            0 40px 100px rgba(0, 0, 0, 0.65),
            0 60px 120px rgba(190, 30, 30, 0.2);
        animation: vs-float 5s ease-in-out infinite;
    }

    @keyframes vs-float {
        0%, 100% { transform: translateY(0); }
        50%       { transform: translateY(-14px); }
    }

    @media (prefers-reduced-motion: reduce) {
        .vs-phone--single { animation: none; }
    }

    .vs-phone iframe {
        border: none;
        display: block;
    }

    /* Dynamic Island */
    .vs-phone::before {
        content: '';
        position: absolute;
        top: 14px;
        left: 50%;
        transform: translateX(-50%);
        width: 32%;
        height: 30px;
        background: #0f0f0f;
        border-radius: 20px;
        z-index: 3;
        pointer-events: none;
    }

    .vs-phone img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        display: block;
    }

    @media (max-width: 767px) {
        .vs-phone {
            width: 29%;
            border-radius: 28px;
        }
        .vs-phone--single {
            width: min(260px, 72vw);
        }
        .vs-phone--center {
            width: 36%;
        }
        .vs-phone::before {
            height: 22px;
            top: 10px;
        }
    }

    .versus-slides {
        display: flex;
        flex-direction: column;
        gap: 4px;
        width: 100%;
    }

    .versus-slides img {
        width: 100%;
        border-radius: 12px;
        display: block;
    }

    .versus-screens {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        gap: 12px;
    }

    .versus-screens img {
        width: 100%;
        border-radius: 20px;
        display: block;
    }

    @media (max-width: 767px) {
        .versus-screens {
            grid-template-columns: repeat(2, 1fr);
        }
    }

    body:has(#vs-phone-single) .revu-section {
        margin-bottom: 0;
    }

    [data-theme="light"] .vs-hero {
        background:
            radial-gradient(ellipse 65% 50% at 50% 50%, rgba(200, 35, 35, 0.05), transparent 65%),
            radial-gradient(ellipse 120% 100% at 50% 50%, transparent 45%, rgba(0, 0, 0, 0.06) 100%);
    }

    [data-theme="light"] .vs-hero::before {
        background-image: radial-gradient(circle, rgba(0, 0, 0, 0.08) 1px, transparent 1px);
    }

    [data-theme="light"] .vs-hero::after {
        -webkit-text-stroke: 1px rgba(0, 0, 0, 0.05);
    }

    [data-theme="light"] .vs-hero__label {
        border-color: rgba(0, 0, 0, 0.1);
        background: rgba(0, 0, 0, 0.03);
    }

    [data-theme="light"] .vs-hero__meta-row {
        border-top-color: rgba(0, 0, 0, 0.08);
    }

    /* ========================================================
    Spline character & cursor
    ======================================================== */
    .character {
        position: fixed;
        left: 50%;
        transform: translateX(-50%);
        bottom: 0;
        width: 33vh;
        height: 33vh;
        z-index: var(--z-character);
    }


    .cursor-line {
        position: fixed;
        top: 0;
        left: 0;
        width: 40px;
        height: 40px;
        border-radius: 50%;
        border: 1.5px solid var(--color-text);
        background: transparent;
        pointer-events: none;
        z-index: var(--z-cursor);
        will-change: transform;
        transition: width 0.3s ease, height 0.3s ease;
    }

    .cursor-line--active {
        width: 60px;
        height: 60px;
    }

    /* ========================================================
    Responsive Media Queries
    ======================================================== */
    @media (min-width: 1600px) {
        .item {
            width: calc(100% / 6 - 16px);
            padding-bottom: calc(100% / 6 - 16px);
        }
    }

    @media (min-width: 1024px) and (max-width:1279px) {
        .nav {
            padding: 0 40px;
        }

        .container {
            padding: 0 40px;
        }

        .item {
            width: calc(100%/3 - 16px);
            padding-bottom: calc(100%/3 - 16px);
        }
    }

    @media (min-width: 768px) and (max-width:1023px) {
        .nav {
            padding: 0 40px;
        }

        .container {
            padding: 0 40px;
        }

        .item {
            width: calc(100%/2 - 16px);
            padding-bottom: calc(100%/2 - 16px);
        }
    }

    @media (max-width:767px) {
        body {
            font-size: 14px;
        }

        .nav {
            height: auto;
            padding: 12px 16px;
        }

        .nav .nav-bar {
            display: flex;
            flex-direction: row;
            align-items: center;
            justify-content: flex-start;
            gap: 12px;
            width: 100%;
            box-sizing: border-box;
        }

        .theme-toggle--bar {
            display: inline-flex;
        }

        .nav__theme {
            display: none !important;
        }

        .nav .nav-bar .theme-toggle--bar {
            flex-shrink: 0;
        }

        .nav .nav-bar .logo {
            justify-content: center;
        }

        .logo {
            height: 26px;
            padding: 0;
        }

        .theme-toggle {
            width: 36px;
            height: 36px;
            border-radius: 10px;
        }

        .theme-toggle svg {
            width: 18px;
            height: 18px;
        }

        .nav-bar .nav-menu {
            display: block;
            width: 36px;
            height: 36px;
            border-radius: 10px;
            margin-left: auto;
        }

        .nav-items {
            position: absolute;
            top: -220px;
            left: 0;
            width: 100%;
            padding: 16px;
            margin: 0;
            opacity: 0;
            transition: opacity 0.4s ease, top 0.4s ease;
            z-index: var(--z-nav-layer);
            background: var(--color-bg);
            flex-direction: column;
            align-items: flex-start;
            gap: 0;
        }

        .nav-items > li {
            margin-top: 16px;
        }

        .nav-items > li:not(.nav__theme) > button {
            font-size: 28px;
            font-weight: 900;
            padding: 0;
            letter-spacing: 0;
            color: var(--color-muted);
        }

        .nav-items.is-open {
            opacity: 1;
            top: 50px;
        }

        .nav.dim::after {
            opacity: 0.8;
            visibility: visible;
        }

        .nav-items > li > button.nav__badge::after {
            line-height: 20px;
            width: 24px;
            height: 20px;
            font-size: 12px;
            right: -28px;
            top: -4px;
        }

        .container {
            width: 100%;
            padding: 0 16px;
            box-sizing: border-box;
        }

        .container.contact {
            padding: 0;
        }

        .kw-lg { font-size: 18px; padding: 11px 24px; }
        .kw-md { font-size: 15px; padding:  9px 20px; }
        .kw-sm { font-size: 12px; padding:  7px 16px; }

        .item {
            width: 100%;
            margin: 0;
            padding-bottom: 100%;
        }

        .item span {
            font-size: 12px;
        }

        .character {
            display: none;
        }



        .cursor-line {
            display: none;
        }

        .info {
            max-width: 100%;
            padding: 0 16px 80px;
        }

        .info__quote {
            font-size: 18px;
            line-height: 1.6;
        }

        /* 롯데 (Story / Try It): 탭 콘텐츠가 absolute-only라 모바일에서 컨테이너 높이가 무너짐 → 스크롤·페이드인 오류 */
        .section:has(> .container .floating-button) {
            min-height: 100dvh;
            min-height: -webkit-fill-available;
        }

        .section:has(> .container .floating-button) > .container {
            flex: 1 1 auto;
            min-height: calc(100dvh - 48px);
            padding-bottom: 96px;
            box-sizing: border-box;
        }

        .section:has(> .container .floating-button) .tab-content {
            position: relative;
            top: auto;
            width: 100%;
        }

        .section:has(> .container .floating-button) .tab-content.active {
            display: block;
        }

        .section:has(> .container .floating-button) .iphone {
            height: min(80dvh, 640px);
            min-height: min(80dvh, 640px);
            max-height: 85dvh;
        }
    }

    @media (prefers-reduced-motion: reduce) {
        .item,
        .thumbnail,
        .container .label,
        .container .label li,
        .container.work .item::before,
        .tab,
        .nav-items > li:not(.nav__theme) > button {
            transition-duration: 0.01ms !important;
        }

        .container.work .item:hover {
            transform: none;
        }

        .item:hover .thumbnail {
            height: 101%;
        }
    }

    /* ========================================================
    서브 페이지 — 레이아웃 & 커서
    ======================================================== */
    body:has(.sub-nav) .container {
        max-width: 1440px;
        margin-left: auto;
        margin-right: auto;
    }

    body:has(.sub-nav) {
        cursor: auto !important;
    }

    body:has(.sub-nav) a {
        cursor: pointer !important;
    }

    /* ========================================================
    카카오톡 인앱 브라우저 (WebGL·뷰포트 이슈)
    ======================================================== */
    html.env-kakao,
    html.env-kakao body {
        height: auto;
        min-height: 100%;
        min-height: -webkit-fill-available;
        min-height: 100dvh;
        overflow-x: hidden;
        overflow-y: auto;
        cursor: auto !important;
    }

    html.env-kakao .section {
        height: auto;
        min-height: 100vh;
        min-height: -webkit-fill-available;
        overflow: visible;
    }

    html.env-kakao .container {
        height: auto;
        min-height: 40vh;
    }

    html.env-kakao .character {
        display: none;
    }