﻿/* ========== Theme tokens ========== */
    html[data-theme="light"] {
      --brand: #E6007E;
      --brand-2: #F06AAE;
      --brand-pale: #FDEFF6;
      --brand-dim: rgba(230, 0, 126, 0.12);
      --ink: #2B2429;
      --ink-2: #6A6169;
      --ink-3: #9C949B;
      --bg: #FBFAF9;
      --bg-soft: #F1EFEE;
      --surface: #FFFFFF;
      --sidebar: #FFFFFF;
      --text: #2B2429;
      --muted: #6A6169;
      --line: #E7E3E4;
      --header-bg: rgba(255,255,255,.9);
      --header-text: #2B2429;
      --header-border: #E7E3E4;
      --login-shadow: none;
      --hero-bg:
        radial-gradient(ellipse 60% 80% at 88% 20%, #FDEFF6, transparent 62%),
        radial-gradient(ellipse 50% 60% at 10% 90%, #F4F2F1, transparent 60%),
        #FFFFFF;
      --hero-sub: #9C949B;
      --panel-hover-shadow: 0 10px 26px rgba(43,36,41,.06);
      --thumb-bg: linear-gradient(140deg, #FDEFF6 0%, #F4F2F1 55%, #EFECEB 100%);
      --tag-bg: rgba(255,255,255,.92);
      --notice-bg: #FFFFFF;
      --notice-border: #E7E3E4;
      --font-display: "Noto Serif JP", "Noto Sans TC", serif;
      --font-body: "Noto Sans JP", "Noto Sans TC", "Microsoft JhengHei", sans-serif;
      --radius-nav: 8px;
      --header-h: 72px;
      --line-height: 1.85;
      --letter: .02em;
    }

    html[data-theme="dark"] {
      --brand: #E6007E;
      --brand-2: #FF2E9A;
      --brand-pale: rgba(230, 0, 126, 0.22);
      --brand-dim: rgba(230, 0, 126, 0.18);
      --ink: #f5f5f5;
      --ink-2: #c8c0c5;
      --ink-3: #9a9a9a;
      --bg: #070707;
      --bg-soft: #121212;
      --surface: #121212;
      --sidebar: #0d0d0d;
      --text: #f5f5f5;
      --muted: #9a9a9a;
      --line: rgba(255,255,255,.1);
      --header-bg: linear-gradient(90deg, #1a0612, #E6007E 55%, #ff4da6);
      --header-text: #ffffff;
      --header-border: transparent;
      --login-shadow: 0 8px 20px rgba(230,0,126,.35);
      --hero-bg:
        linear-gradient(120deg, rgba(0,0,0,.75), rgba(230,0,126,.35)),
        radial-gradient(circle at 80% 40%, rgba(255,46,154,.45), transparent 45%),
        #1a0812;
      --hero-sub: #e8d0de;
      --panel-hover-shadow: 0 12px 28px rgba(0,0,0,.35);
      --thumb-bg:
        linear-gradient(135deg, rgba(230,0,126,.35), rgba(0,0,0,.2)),
        #2a1020;
      --tag-bg: var(--brand);
      --notice-bg: #161016;
      --notice-border: rgba(230,0,126,.35);
      --font-display: Outfit, "Noto Sans TC", sans-serif;
      --font-body: "Noto Sans TC", "Microsoft JhengHei", sans-serif;
      --radius-nav: 10px;
      --header-h: 64px;
      --line-height: 1.65;
      --letter: .01em;
    }

    * { box-sizing: border-box; }
    html, body { margin: 0; min-height: 100%; }
    body {
      font-family: var(--font-body);
      background: var(--bg);
      color: var(--text);
      line-height: var(--line-height);
      letter-spacing: var(--letter);
      transition: background .35s ease, color .35s ease;
      -webkit-font-smoothing: antialiased;
    }
    a { color: inherit; text-decoration: none; }
    button { font-family: inherit; cursor: pointer; }

    /* Header */
    .header {
      position: sticky; top: 0; z-index: 50;
      height: var(--header-h);
      display: flex; align-items: center; justify-content: space-between;
      padding: 0 18px 0 14px;
      background: var(--header-bg);
      color: var(--header-text);
      border-bottom: 1px solid var(--header-border);
      backdrop-filter: blur(12px);
      transition: background .35s ease, color .35s ease, height .25s ease;
    }
    html[data-theme="dark"] .header {
      box-shadow: 0 8px 28px rgba(230,0,126,.25);
    }
    .header-brand-wrap { display: flex; align-items: center; gap: 10px; min-width: 0; }
    .header-brand { display: flex; align-items: center; gap: 12px; }
    a.header-brand {
      color: inherit;
      text-decoration: none;
      border-radius: 10px;
    }
    a.header-brand:hover .name { color: var(--brand-2); }
    html[data-theme="dark"] a.header-brand:hover .name { color: #fff; opacity: .95; }
    a.header-brand:focus-visible {
      outline: 2px solid var(--brand-2);
      outline-offset: 3px;
    }
    .header-brand img {
      width: 44px; height: 44px; border-radius: 50%;
      object-fit: cover;
      border: 2px solid rgba(255,255,255,.55);
    }
    html[data-theme="light"] .header-brand img {
      border-color: var(--line);
    }
    .brand-text .name {
      font-family: var(--font-display);
      font-weight: 700; font-size: 1.2rem;
      letter-spacing: .08em; line-height: 1.2;
    }
    html[data-theme="dark"] .brand-text .name {
      font-family: Outfit, "Noto Sans TC", sans-serif;
      font-weight: 800; letter-spacing: .02em;
    }
    .brand-text .kana {
      font-size: .66rem; letter-spacing: .28em;
      opacity: .85;
    }
    html[data-theme="dark"] .brand-text .kana { display: none; }
    html[data-theme="light"] .brand-text .kana { color: var(--brand); }

    .header-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; justify-content: flex-end; }

    /* Theme switcher */
    .theme-switch {
      display: inline-flex;
      align-items: center;
      gap: 2px;
      padding: 3px;
      border-radius: 999px;
      border: 1px solid rgba(255,255,255,.35);
      background: rgba(0,0,0,.18);
    }
    html[data-theme="light"] .theme-switch {
      border-color: var(--line);
      background: var(--bg-soft);
    }
    .theme-switch button {
      border: none; background: transparent;
      color: inherit; opacity: .75;
      border-radius: 999px;
      padding: 6px 11px;
      font-size: .74rem;
      letter-spacing: .04em;
      transition: all .2s ease;
      white-space: nowrap;
    }
    .theme-switch button:hover { opacity: 1; }
    .theme-switch button.active {
      opacity: 1;
      background: #fff;
      color: #111;
      font-weight: 700;
      box-shadow: 0 2px 8px rgba(0,0,0,.12);
    }
    html[data-theme="dark"] .theme-switch button.active {
      background: #fff; color: #111;
    }
    html[data-theme="light"] .theme-switch button.active {
      background: var(--brand); color: #fff;
    }
    .theme-hint {
      font-size: .7rem;
      opacity: .85;
      letter-spacing: .04em;
    }
    html[data-theme="light"] .theme-hint { color: var(--ink-3); }
    .pill {
      border: 1px solid rgba(255,255,255,.35);
      background: rgba(0,0,0,.15);
      color: inherit; border-radius: 999px;
      padding: 6px 12px; font-size: .76rem;
    }
    html[data-theme="light"] .pill {
      border-color: var(--line);
      background: #fff;
      color: var(--ink-2);
    }
    .pill:hover { border-color: var(--brand-2); }
    .menu-toggle {
      display: none;
      width: 40px; height: 40px; border-radius: 10px;
      border: 1px solid rgba(255,255,255,.35);
      background: rgba(0,0,0,.2); color: inherit;
    }
    html[data-theme="light"] .menu-toggle {
      border-color: var(--line); background: #fff; color: var(--ink);
    }

    /* Layout */
    .shell { display: flex; min-height: calc(100vh - var(--header-h)); }
    .sidebar {
      width: 228px; flex-shrink: 0;
      background: var(--sidebar);
      border-right: 1px solid var(--line);
      padding: 22px 14px;
      position: sticky; top: var(--header-h);
      height: calc(100vh - var(--header-h)); overflow: auto;
      transition: background .35s ease, border-color .35s ease;
    }
    .login-btn {
      display: block; width: 100%; text-align: center;
      background: var(--brand); color: #fff; font-weight: 700;
      border: none; border-radius: 999px; padding: 12px;
      margin-bottom: 16px;
      letter-spacing: .08em;
      box-shadow: var(--login-shadow);
      transition: filter .15s ease, transform .15s ease;
    }
    .login-btn:hover { filter: brightness(1.06); transform: translateY(-1px); }
    .side-label {
      margin: 8px 0 8px;
      font-size: .66rem; color: var(--ink-3);
      letter-spacing: .22em;
    }
    .nav-item {
      display: flex; align-items: center; gap: 10px;
      padding: 10px 12px; border-radius: var(--radius-nav);
      color: var(--ink-2); font-size: .9rem; margin-bottom: 2px;
      transition: background .15s ease, color .15s ease;
    }
    .nav-item .ico {
      width: 24px; height: 24px; flex-shrink: 0;
      display: grid; place-items: center;
      border-radius: 50%;
      background: var(--bg-soft);
      color: var(--brand-2);
      font-size: .8rem;
    }
    .nav-item:hover, .nav-item.active {
      background: var(--brand-pale); color: var(--text);
    }
    html[data-theme="light"] .nav-item.active { color: var(--brand); font-weight: 500; }
    .nav-note {
      margin-top: 18px; padding: 12px;
      border-radius: 12px;
      background: var(--bg-soft);
      border: 1px dashed color-mix(in srgb, var(--brand) 40%, transparent);
      color: var(--muted); font-size: .72rem; line-height: 1.7;
    }
    .nav-note strong { color: var(--brand); }

    .main {
      flex: 1; min-width: 0;
      padding: 24px 28px 70px;
      background:
        radial-gradient(ellipse 70% 40% at 50% 0%, color-mix(in srgb, var(--brand) 14%, transparent), transparent 55%),
        var(--bg);
      transition: background .35s ease;
    }

    .notice {
      display: flex; gap: 12px; align-items: flex-start;
      background: var(--notice-bg);
      border: 1px solid var(--notice-border);
      border-left: 3px solid var(--brand-2);
      border-radius: 4px 14px 14px 4px;
      padding: 14px 16px; margin-bottom: 22px;
      font-size: .86rem; color: var(--muted);
    }
    .notice .n-tag {
      flex-shrink: 0;
      background: var(--brand-pale); color: var(--brand);
      font-size: .68rem; letter-spacing: .1em;
      padding: 3px 10px; border-radius: 999px; margin-top: 2px;
    }
    html[data-theme="dark"] .notice .n-tag {
      background: rgba(230,0,126,.25); color: var(--brand-2);
    }

    /* Hero */
    .hero {
      position: relative;
      border-radius: 18px;
      overflow: hidden;
      min-height: 260px;
      padding: 42px 40px;
      background: var(--hero-bg);
      border: 1px solid var(--line);
      animation: fade .7s ease both;
      transition: background .35s ease, border-color .35s ease;
    }
    html[data-theme="light"] .hero::before {
      content: "";
      position: absolute; right: 44px; top: 42px;
      width: 110px; height: 110px; border-radius: 50%;
      border: 1px solid var(--brand-2); opacity: .45;
    }
    .hero .eyebrow {
      font-size: .7rem; letter-spacing: .3em; color: var(--brand);
      margin-bottom: 12px;
    }
    html[data-theme="dark"] .hero .eyebrow { color: #ffd0e8; }
    .hero h1 {
      font-family: var(--font-display);
      font-size: clamp(1.55rem, 3.2vw, 2.35rem);
      font-weight: 700; margin: 0 0 8px; line-height: 1.35;
      letter-spacing: .04em;
    }
    html[data-theme="dark"] .hero h1 { font-weight: 900; letter-spacing: .02em; }
    .hero .sub-jp {
      font-size: .8rem; color: var(--hero-sub);
      letter-spacing: .14em; margin-bottom: 14px;
    }
    .hero p {
      margin: 0 0 22px; color: var(--hero-sub);
      max-width: 30rem; font-size: .92rem;
    }
    .cta-row { display: flex; flex-wrap: wrap; gap: 10px; }
    .btn {
      display: inline-flex; align-items: center;
      padding: 10px 20px; border-radius: 999px;
      font-size: .88rem; font-weight: 700;
      border: 1px solid transparent;
      transition: all .18s ease;
    }
    .btn-primary { background: var(--brand); color: #fff; }
    html[data-theme="dark"] .btn-primary { background: #fff; color: #111; }
    .btn-primary:hover { filter: brightness(1.05); transform: translateY(-1px); }
    .btn-quiet {
      background: transparent; color: var(--text);
      border-color: var(--line);
    }
    html[data-theme="dark"] .btn-quiet {
      color: #fff; border-color: rgba(255,255,255,.45);
    }
    .btn-quiet:hover { border-color: var(--brand-2); color: var(--brand); }

    /* Shortcuts */
    .shortcuts {
      display: grid; grid-template-columns: repeat(4, 1fr);
      gap: 12px; margin: 20px 0 36px;
      animation: fade .7s ease .08s both;
    }
    .shortcut {
      background: var(--surface);
      border: 1px solid var(--line);
      border-radius: 14px;
      padding: 18px 10px; text-align: center;
      transition: all .2s ease;
    }
    .shortcut:hover {
      border-color: var(--brand-2);
      transform: translateY(-2px);
      box-shadow: var(--panel-hover-shadow);
    }
    .shortcut .s-ico {
      width: 44px; height: 44px; margin: 0 auto 10px;
      border-radius: 50%;
      display: grid; place-items: center;
      background: var(--brand-pale); color: var(--brand);
      font-size: 1rem;
    }
    html[data-theme="dark"] .shortcut .s-ico { border-radius: 14px; color: var(--brand-2); }
    .shortcut span { font-size: .84rem; color: var(--ink-2); font-weight: 600; }

    /* Sections */
    .section { margin-bottom: 42px; animation: fade .7s ease .12s both; }
    .section-head {
      display: flex; align-items: flex-end; justify-content: space-between;
      gap: 12px; margin-bottom: 16px;
      padding-bottom: 10px;
      border-bottom: 1px solid var(--line);
    }
    .section-head .t { display: flex; align-items: baseline; gap: 12px; }
    .section-head h2 {
      margin: 0;
      font-family: var(--font-display);
      font-size: 1.25rem; font-weight: 700;
      letter-spacing: .06em;
    }
    html[data-theme="dark"] .section-head h2 {
      background: linear-gradient(90deg, #fff, var(--brand-2));
      -webkit-background-clip: text; background-clip: text; color: transparent;
      border: none; font-weight: 900;
    }
    .section-head .jp {
      font-size: .66rem; color: var(--brand-2); letter-spacing: .22em;
    }
    html[data-theme="dark"] .section-head .jp { opacity: .75; }
    .section-head .more { font-size: .8rem; color: var(--ink-3); }
    .section-head .more:hover { color: var(--brand); }

    .event-grid, .card-grid, .media-grid, .creator-grid { display: grid; gap: 14px; }
    .event-grid { grid-template-columns: repeat(2, 1fr); }
    .card-grid { grid-template-columns: repeat(4, 1fr); }
    .media-grid { grid-template-columns: repeat(3, 1fr); }
    .creator-grid { grid-template-columns: repeat(4, 1fr); }

    .panel {
      background: var(--surface);
      border: 1px solid var(--line);
      border-radius: 14px;
      overflow: hidden;
      transition: all .22s ease;
    }
    .panel:hover {
      border-color: color-mix(in srgb, var(--brand) 45%, var(--line));
      transform: translateY(-2px);
      box-shadow: var(--panel-hover-shadow);
    }
    .thumb {
      aspect-ratio: 16/10;
      background: var(--thumb-bg);
      position: relative;
      display: grid; place-items: center;
      transition: background .35s ease;
      overflow: hidden;
    }
    .thumb.portrait { aspect-ratio: 3/4; }
    /* 前台寬圖（Banner／活動）維持上傳比例，但預設顯示略扁以利瀏覽 */
    .thumb.wide-ratio { aspect-ratio: 2500 / 1686; }
    .thumb img {
      position: absolute; inset: 0; width: 100%; height: 100%;
      object-fit: cover; display: block;
    }
    .thumb .ph { font-size: .66rem; color: var(--ink-3); letter-spacing: .18em; }
    .tagline {
      position: absolute; left: 10px; top: 10px;
      background: var(--tag-bg);
      color: var(--brand);
      font-size: .68rem; font-weight: 700; letter-spacing: .08em;
      padding: 4px 10px; border-radius: 999px;
    }
    html[data-theme="dark"] .tagline { color: #fff; }
    .panel-body { padding: 14px 16px 16px; }
    .panel-body h3 {
      margin: 0 0 6px; font-size: .94rem; font-weight: 600;
      display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
    }
    .meta { margin: 0; font-size: .78rem; color: var(--ink-3); }
    .price {
      margin-top: 8px; color: var(--brand);
      font-size: .98rem; font-weight: 700;
    }
    html[data-theme="dark"] .price { color: var(--brand-2); }
    .chip {
      display: inline-block; margin-left: 8px;
      font-size: .68rem; color: var(--ink-2);
      background: var(--bg-soft); border-radius: 6px;
      padding: 2px 8px; border: 1px solid var(--line);
    }

    .adp {
      background: var(--surface);
      border: 1px solid var(--line);
      border-radius: 14px; padding: 22px 16px;
      text-align: center;
      transition: all .2s ease;
    }
    .adp:hover { border-color: var(--brand-2); transform: translateY(-2px); }
    .adp .amount {
      font-family: var(--font-display);
      font-size: 1.3rem;
    }
    .adp .amount small { font-size: .7rem; color: var(--ink-3); margin-left: 4px; }
    .adp .yen { margin-top: 6px; color: var(--brand); font-size: .9rem; font-weight: 700; }
    html[data-theme="dark"] .adp .yen { color: var(--brand-2); }
    .adp .note { margin-top: 8px; font-size: .72rem; color: var(--ink-3); }

    /* 現場剪影 */
    .snap-intro {
      margin: 0 0 16px;
      font-size: .88rem;
      color: var(--muted);
      max-width: 40rem;
    }
    .snap-event {
      background: var(--surface);
      border: 1px solid var(--line);
      border-radius: 16px;
      padding: 18px 18px 14px;
      margin-bottom: 18px;
    }
    .snap-event h3 {
      margin: 0 0 4px;
      font-size: 1rem;
      font-weight: 700;
    }
    .snap-event .meta { margin-bottom: 14px; }
    .snap-grid {
      display: grid;
      gap: 12px;
      grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    }
    .snap-item {
      position: relative;
      border-radius: 12px;
      overflow: hidden;
      border: 1px solid var(--line);
      background: var(--bg-soft);
      aspect-ratio: 1;
      cursor: default;
      user-select: none;
    }
    .snap-item.selectable { cursor: pointer; }
    .snap-item.selectable:hover { border-color: var(--brand-2); }
    .snap-item.selected { border-color: var(--brand); box-shadow: 0 0 0 2px var(--brand-dim); }
    .snap-item .preview {
      position: absolute; inset: 0;
      display: flex; align-items: center; justify-content: center;
      background: var(--thumb-bg);
      font-size: .72rem;
      letter-spacing: .08em;
      color: var(--ink-3);
      font-weight: 700;
    }
    .snap-item.locked .preview::after {
      content: "aduo event";
      position: absolute;
      inset: 0;
      display: flex;
      align-items: center;
      justify-content: center;
      background: rgba(10, 10, 10, .38);
      color: rgba(255,255,255,.88);
      font-size: .78rem;
      font-weight: 800;
      letter-spacing: .12em;
      text-transform: lowercase;
      transform: rotate(-18deg);
      pointer-events: none;
    }
    .snap-badge {
      position: absolute;
      top: 8px; left: 8px;
      z-index: 2;
      font-size: .65rem;
      padding: 2px 8px;
      border-radius: 6px;
      font-weight: 700;
      background: var(--tag-bg);
      color: var(--brand);
      border: 1px solid var(--line);
    }
    html[data-theme="dark"] .snap-badge { color: #fff; border-color: transparent; }
    .snap-badge.gift { background: var(--brand); color: #fff; border-color: transparent; }
    .snap-item .price-tag {
      position: absolute;
      bottom: 8px; right: 8px;
      z-index: 2;
      font-size: .68rem;
      font-weight: 700;
      padding: 2px 8px;
      border-radius: 6px;
      background: rgba(255,255,255,.92);
      color: var(--brand);
    }
    html[data-theme="dark"] .snap-item .price-tag {
      background: rgba(0,0,0,.65);
      color: var(--brand-2);
    }
    .snap-item .check {
      position: absolute;
      top: 8px; right: 8px;
      z-index: 2;
      width: 20px; height: 20px;
      border-radius: 6px;
      border: 1.5px solid rgba(255,255,255,.85);
      background: rgba(0,0,0,.25);
      display: none;
      align-items: center;
      justify-content: center;
      color: #fff;
      font-size: .7rem;
    }
    .snap-item.selectable .check { display: flex; }
    .snap-item.selected .check {
      background: var(--brand);
      border-color: var(--brand);
    }
    .snap-bar {
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      justify-content: space-between;
      gap: 12px;
      margin-top: 14px;
      padding-top: 12px;
      border-top: 1px solid var(--line);
    }
    .snap-bar .sum {
      font-size: .9rem;
      color: var(--ink-2);
    }
    .snap-bar .sum strong { color: var(--brand); }
    html[data-theme="dark"] .snap-bar .sum strong { color: var(--brand-2); }
    .snap-bar .actions { display: flex; gap: 8px; flex-wrap: wrap; }
    .snap-bar .btn { padding: 8px 14px; font-size: .82rem; }
    .snap-toast {
      display: none;
      margin-top: 10px;
      padding: 10px 12px;
      border-radius: 10px;
      background: var(--brand-pale);
      color: var(--ink);
      font-size: .82rem;
      border: 1px solid var(--line);
    }
    .snap-toast.show { display: block; }

    .footer {
      margin-top: 48px; padding-top: 24px;
      border-top: 1px solid var(--line);
      display: flex; flex-wrap: wrap; justify-content: space-between;
      gap: 14px; font-size: .78rem; color: var(--ink-3);
    }
    .footer a { color: var(--ink-2); }
    .footer a:hover { color: var(--brand); }

    /* Back to top */
    .back-top {
      position: fixed;
      right: 16px;
      bottom: 16px;
      z-index: 70;
      width: 48px;
      height: 48px;
      border-radius: 50%;
      border: 1px solid var(--line);
      display: grid;
      place-items: center;
      cursor: pointer;
      opacity: 0;
      visibility: hidden;
      pointer-events: none;
      transform: translateY(10px);
      transition: opacity .25s ease, transform .25s ease, visibility .25s ease,
        background .35s ease, border-color .35s ease, box-shadow .25s ease, color .35s ease;
      font-size: 1.15rem;
      line-height: 1;
      text-decoration: none;
    }
    .back-top.show {
      opacity: 1;
      visibility: visible;
      pointer-events: auto;
      transform: translateY(0);
    }
    html[data-theme="light"] .back-top {
      background: #FFFFFF;
      color: var(--brand);
      border-color: var(--line);
      box-shadow: 0 8px 22px rgba(43, 36, 41, 0.12);
    }
    html[data-theme="light"] .back-top:hover {
      background: var(--brand-pale);
      border-color: var(--brand-2);
      color: var(--brand);
    }
    html[data-theme="dark"] .back-top {
      background: linear-gradient(145deg, #E6007E, #FF2E9A);
      color: #ffffff;
      border-color: rgba(255, 255, 255, 0.18);
      box-shadow: 0 8px 24px rgba(230, 0, 126, 0.4);
    }
    html[data-theme="dark"] .back-top:hover {
      filter: brightness(1.08);
      box-shadow: 0 10px 28px rgba(255, 46, 154, 0.5);
    }
    .back-top:focus-visible {
      outline: 2px solid var(--brand-2);
      outline-offset: 3px;
    }

    @media (max-width: 900px) {
      .back-top {
        right: 14px;
        bottom: 18px;
        width: 52px;
        height: 52px;
      }
    }

    /* Language switcher */
    .lang-wrap { position: relative; }
    .lang-btn {
      display: inline-flex; align-items: center; gap: 6px;
      border: 1px solid rgba(255,255,255,.35);
      background: rgba(0,0,0,.15);
      color: inherit; border-radius: 999px;
      padding: 6px 12px; font-size: .76rem;
      letter-spacing: .02em;
    }
    html[data-theme="light"] .lang-btn {
      border-color: var(--line);
      background: #fff;
      color: var(--ink-2);
    }
    .lang-btn:hover { border-color: var(--brand-2); }
    .lang-btn .globe { font-size: 1rem; line-height: 1; }
    .lang-btn .lang-code { font-weight: 700; min-width: 2.2em; }
    .lang-menu {
      display: none;
      position: absolute; right: 0; top: calc(100% + 8px);
      min-width: 180px;
      background: var(--surface);
      border: 1px solid var(--line);
      border-radius: 14px;
      padding: 6px;
      box-shadow: 0 14px 36px rgba(0,0,0,.18);
      z-index: 80;
    }
    .lang-menu.open { display: block; }
    .lang-menu button {
      display: flex; width: 100%; align-items: center; justify-content: space-between;
      gap: 12px; border: none; background: transparent;
      color: var(--text); text-align: left;
      padding: 10px 12px; border-radius: 10px;
      font-size: .84rem;
    }
    .lang-menu button:hover { background: var(--brand-pale); }
    .lang-menu button.active {
      background: var(--brand-pale);
      color: var(--brand);
      font-weight: 700;
    }
    .lang-menu .native { color: var(--ink-3); font-size: .72rem; }

    @keyframes fade {
      from { opacity: 0; transform: translateY(10px); }
      to { opacity: 1; transform: translateY(0); }
    }

    @media (max-width: 1100px) {
      .card-grid, .creator-grid { grid-template-columns: repeat(3, 1fr); }
    }
    @media (max-width: 900px) {
      .menu-toggle { display: inline-grid; place-items: center; }
      .sidebar {
        position: fixed; left: 0; top: var(--header-h); z-index: 40;
        transform: translateX(-105%);
        transition: transform .26s ease, background .35s ease;
        box-shadow: 12px 0 36px rgba(0,0,0,.2);
      }
      .sidebar.open { transform: translateX(0); }
      .main { padding: 16px 14px 90px; }
      .hero { padding: 28px 22px; min-height: 220px; }
      .hero::before { display: none !important; }
      .event-grid, .media-grid { grid-template-columns: 1fr; }
      .card-grid, .creator-grid, .shortcuts { grid-template-columns: repeat(2, 1fr); }
      .theme-hint { display: none; }
    }
