/**
 * ============================================================
 * Mublo Core Design Tokens
 * ============================================================
 *
 * 디자인 통합의 단일 진실 공급원(Single Source of Truth).
 * 프레임 스킨 / 마이페이지 / 패키지 / auth·register 모두
 * 이 파일의 토큰을 소비한다. 값 하드코딩 금지.
 *
 * ------------------------------------------------------------
 * [2계층 모델]
 * ------------------------------------------------------------
 *
 *   Tier 1 — PRIMITIVE (원시 팔레트/스케일)
 *     · Tailwind CSS v4 기본 테마를 그대로 이식 (OKLCH).
 *     · 맥락 없음. 전체를 빠짐없이 제공 → "토큰이 모자라서 작업이
 *       역전되는" 일을 구조적으로 차단한다.
 *     · 예: --color-zinc-500, --spacing-4, --radius-lg, --text-sm
 *
 *   Tier 2 — SEMANTIC (의미/의도)
 *     · shadcn/ui (new-york · zinc) 표준명. Tier 1을 참조한다.
 *     · 컴포넌트가 "실제로" 소비하는 층. 다크모드 = 이 층만 remap.
 *     · 예: --background, --foreground, --primary, --border, --ring
 *
 * ------------------------------------------------------------
 * [규율 — 어기면 통합이 깨진다]
 * ------------------------------------------------------------
 *   1. 프레임/콘텐츠/컴포넌트 CSS는 **Tier 2(semantic)** 만 참조한다.
 *      raw 팔레트(--color-zinc-500)를 컴포넌트에서 직접 쓰지 않는다.
 *   2. 새 의도가 필요하면 → Tier 2에 semantic 1줄을 추가한다
 *      (raw 색을 컴포넌트에 박지 않는다).
 *   3. 다크모드/리테마는 Tier 2 remap으로만 끝낸다.
 *
 * ------------------------------------------------------------
 * [출처/라이선스] Tailwind CSS v4 default theme (MIT),
 *   shadcn/ui theme (MIT). 토큰 "값"만 이식 — 유틸리티 엔진은 미사용.
 * ------------------------------------------------------------
 */

/* ============================================================
 * TIER 1 — PRIMITIVE
 * Tailwind v4 default theme (OKLCH)
 * ============================================================ */

:root {

    /* --------------------------------------------------------
     * 색상 팔레트 (22 계열 × 50–950)
     * Tailwind v4 OKLCH. 전체 이식 — 안 쓰는 셰이드도 보존.
     * -------------------------------------------------------- */

    --color-black: #000;
    --color-white: #fff;

    /* red */
    --color-red-50:  oklch(0.971 0.013 17.38);
    --color-red-100: oklch(0.936 0.032 17.717);
    --color-red-200: oklch(0.885 0.062 18.334);
    --color-red-300: oklch(0.808 0.114 19.571);
    --color-red-400: oklch(0.704 0.191 22.216);
    --color-red-500: oklch(0.637 0.237 25.331);
    --color-red-600: oklch(0.577 0.245 27.325);
    --color-red-700: oklch(0.505 0.213 27.518);
    --color-red-800: oklch(0.444 0.177 26.899);
    --color-red-900: oklch(0.396 0.141 25.723);
    --color-red-950: oklch(0.258 0.092 26.042);

    /* orange */
    --color-orange-50:  oklch(0.98 0.016 73.684);
    --color-orange-100: oklch(0.954 0.038 75.164);
    --color-orange-200: oklch(0.901 0.076 70.697);
    --color-orange-300: oklch(0.837 0.128 66.29);
    --color-orange-400: oklch(0.75 0.183 55.934);
    --color-orange-500: oklch(0.705 0.213 47.604);
    --color-orange-600: oklch(0.646 0.222 41.116);
    --color-orange-700: oklch(0.553 0.195 38.402);
    --color-orange-800: oklch(0.47 0.157 37.304);
    --color-orange-900: oklch(0.408 0.123 38.172);
    --color-orange-950: oklch(0.266 0.079 36.259);

    /* amber */
    --color-amber-50:  oklch(0.987 0.022 95.277);
    --color-amber-100: oklch(0.962 0.059 95.617);
    --color-amber-200: oklch(0.924 0.12 95.746);
    --color-amber-300: oklch(0.879 0.169 91.605);
    --color-amber-400: oklch(0.828 0.189 84.429);
    --color-amber-500: oklch(0.769 0.188 70.08);
    --color-amber-600: oklch(0.666 0.179 58.318);
    --color-amber-700: oklch(0.555 0.163 48.998);
    --color-amber-800: oklch(0.473 0.137 46.201);
    --color-amber-900: oklch(0.414 0.112 45.904);
    --color-amber-950: oklch(0.279 0.077 45.635);

    /* yellow */
    --color-yellow-50:  oklch(0.987 0.026 102.212);
    --color-yellow-100: oklch(0.973 0.071 103.193);
    --color-yellow-200: oklch(0.945 0.129 101.54);
    --color-yellow-300: oklch(0.905 0.182 98.111);
    --color-yellow-400: oklch(0.852 0.199 91.936);
    --color-yellow-500: oklch(0.795 0.184 86.047);
    --color-yellow-600: oklch(0.681 0.162 75.834);
    --color-yellow-700: oklch(0.554 0.135 66.442);
    --color-yellow-800: oklch(0.476 0.114 61.907);
    --color-yellow-900: oklch(0.421 0.095 57.708);
    --color-yellow-950: oklch(0.286 0.066 53.813);

    /* lime */
    --color-lime-50:  oklch(0.986 0.031 120.757);
    --color-lime-100: oklch(0.967 0.067 122.328);
    --color-lime-200: oklch(0.938 0.127 124.321);
    --color-lime-300: oklch(0.897 0.196 126.665);
    --color-lime-400: oklch(0.841 0.238 128.85);
    --color-lime-500: oklch(0.768 0.233 130.85);
    --color-lime-600: oklch(0.648 0.2 131.684);
    --color-lime-700: oklch(0.532 0.157 131.589);
    --color-lime-800: oklch(0.453 0.124 130.933);
    --color-lime-900: oklch(0.405 0.101 131.063);
    --color-lime-950: oklch(0.274 0.072 132.109);

    /* green */
    --color-green-50:  oklch(0.982 0.018 155.826);
    --color-green-100: oklch(0.962 0.044 156.743);
    --color-green-200: oklch(0.925 0.084 155.995);
    --color-green-300: oklch(0.871 0.15 154.449);
    --color-green-400: oklch(0.792 0.209 151.711);
    --color-green-500: oklch(0.723 0.219 149.579);
    --color-green-600: oklch(0.627 0.194 149.214);
    --color-green-700: oklch(0.527 0.154 150.069);
    --color-green-800: oklch(0.448 0.119 151.328);
    --color-green-900: oklch(0.393 0.095 152.535);
    --color-green-950: oklch(0.266 0.065 152.934);

    /* emerald */
    --color-emerald-50:  oklch(0.979 0.021 166.113);
    --color-emerald-100: oklch(0.95 0.052 163.051);
    --color-emerald-200: oklch(0.905 0.093 164.15);
    --color-emerald-300: oklch(0.845 0.143 164.978);
    --color-emerald-400: oklch(0.765 0.177 163.223);
    --color-emerald-500: oklch(0.696 0.17 162.48);
    --color-emerald-600: oklch(0.596 0.145 163.225);
    --color-emerald-700: oklch(0.508 0.118 165.612);
    --color-emerald-800: oklch(0.432 0.095 166.913);
    --color-emerald-900: oklch(0.378 0.077 168.94);
    --color-emerald-950: oklch(0.262 0.051 172.552);

    /* teal */
    --color-teal-50:  oklch(0.984 0.014 180.72);
    --color-teal-100: oklch(0.953 0.051 180.801);
    --color-teal-200: oklch(0.91 0.096 180.426);
    --color-teal-300: oklch(0.855 0.138 181.071);
    --color-teal-400: oklch(0.777 0.152 181.912);
    --color-teal-500: oklch(0.704 0.14 182.503);
    --color-teal-600: oklch(0.6 0.118 184.704);
    --color-teal-700: oklch(0.511 0.096 186.391);
    --color-teal-800: oklch(0.437 0.078 188.216);
    --color-teal-900: oklch(0.386 0.063 188.416);
    --color-teal-950: oklch(0.277 0.046 192.524);

    /* cyan */
    --color-cyan-50:  oklch(0.984 0.019 200.873);
    --color-cyan-100: oklch(0.956 0.045 203.388);
    --color-cyan-200: oklch(0.917 0.08 205.041);
    --color-cyan-300: oklch(0.865 0.127 207.078);
    --color-cyan-400: oklch(0.789 0.154 211.53);
    --color-cyan-500: oklch(0.715 0.143 215.221);
    --color-cyan-600: oklch(0.609 0.126 221.723);
    --color-cyan-700: oklch(0.52 0.105 223.128);
    --color-cyan-800: oklch(0.45 0.085 224.283);
    --color-cyan-900: oklch(0.398 0.07 227.392);
    --color-cyan-950: oklch(0.302 0.056 229.695);

    /* sky */
    --color-sky-50:  oklch(0.977 0.013 236.62);
    --color-sky-100: oklch(0.951 0.026 236.824);
    --color-sky-200: oklch(0.901 0.058 230.902);
    --color-sky-300: oklch(0.828 0.111 230.318);
    --color-sky-400: oklch(0.746 0.16 232.661);
    --color-sky-500: oklch(0.685 0.169 237.323);
    --color-sky-600: oklch(0.588 0.158 241.966);
    --color-sky-700: oklch(0.5 0.134 242.749);
    --color-sky-800: oklch(0.443 0.11 240.79);
    --color-sky-900: oklch(0.391 0.09 240.876);
    --color-sky-950: oklch(0.293 0.066 243.157);

    /* blue */
    --color-blue-50:  oklch(0.97 0.014 254.604);
    --color-blue-100: oklch(0.932 0.032 255.585);
    --color-blue-200: oklch(0.882 0.059 254.128);
    --color-blue-300: oklch(0.809 0.105 251.813);
    --color-blue-400: oklch(0.707 0.165 254.624);
    --color-blue-500: oklch(0.623 0.214 259.815);
    --color-blue-600: oklch(0.546 0.245 262.881);
    --color-blue-700: oklch(0.488 0.243 264.376);
    --color-blue-800: oklch(0.424 0.199 265.638);
    --color-blue-900: oklch(0.379 0.146 265.522);
    --color-blue-950: oklch(0.282 0.091 267.935);

    /* indigo */
    --color-indigo-50:  oklch(0.962 0.018 272.314);
    --color-indigo-100: oklch(0.93 0.034 272.788);
    --color-indigo-200: oklch(0.87 0.065 274.039);
    --color-indigo-300: oklch(0.785 0.115 274.713);
    --color-indigo-400: oklch(0.673 0.182 276.935);
    --color-indigo-500: oklch(0.585 0.233 277.117);
    --color-indigo-600: oklch(0.511 0.262 276.966);
    --color-indigo-700: oklch(0.457 0.24 277.023);
    --color-indigo-800: oklch(0.398 0.195 277.366);
    --color-indigo-900: oklch(0.359 0.144 278.697);
    --color-indigo-950: oklch(0.257 0.09 281.288);

    /* violet */
    --color-violet-50:  oklch(0.969 0.016 293.756);
    --color-violet-100: oklch(0.943 0.029 294.588);
    --color-violet-200: oklch(0.894 0.057 293.283);
    --color-violet-300: oklch(0.811 0.111 293.571);
    --color-violet-400: oklch(0.702 0.183 293.541);
    --color-violet-500: oklch(0.606 0.25 292.717);
    --color-violet-600: oklch(0.541 0.281 293.009);
    --color-violet-700: oklch(0.491 0.27 292.581);
    --color-violet-800: oklch(0.432 0.232 292.759);
    --color-violet-900: oklch(0.38 0.189 293.745);
    --color-violet-950: oklch(0.283 0.141 291.089);

    /* purple */
    --color-purple-50:  oklch(0.977 0.014 308.299);
    --color-purple-100: oklch(0.946 0.033 307.174);
    --color-purple-200: oklch(0.902 0.063 306.703);
    --color-purple-300: oklch(0.827 0.119 306.383);
    --color-purple-400: oklch(0.714 0.203 305.504);
    --color-purple-500: oklch(0.627 0.265 303.9);
    --color-purple-600: oklch(0.558 0.288 302.321);
    --color-purple-700: oklch(0.496 0.265 301.924);
    --color-purple-800: oklch(0.438 0.218 303.724);
    --color-purple-900: oklch(0.381 0.176 304.987);
    --color-purple-950: oklch(0.291 0.149 302.717);

    /* fuchsia */
    --color-fuchsia-50:  oklch(0.977 0.017 320.058);
    --color-fuchsia-100: oklch(0.952 0.037 318.852);
    --color-fuchsia-200: oklch(0.903 0.076 319.62);
    --color-fuchsia-300: oklch(0.833 0.145 321.434);
    --color-fuchsia-400: oklch(0.74 0.238 322.16);
    --color-fuchsia-500: oklch(0.667 0.295 322.15);
    --color-fuchsia-600: oklch(0.591 0.293 322.896);
    --color-fuchsia-700: oklch(0.518 0.253 323.949);
    --color-fuchsia-800: oklch(0.452 0.211 324.591);
    --color-fuchsia-900: oklch(0.401 0.17 325.612);
    --color-fuchsia-950: oklch(0.293 0.136 325.661);

    /* pink */
    --color-pink-50:  oklch(0.971 0.014 343.198);
    --color-pink-100: oklch(0.948 0.028 342.258);
    --color-pink-200: oklch(0.899 0.061 343.231);
    --color-pink-300: oklch(0.823 0.12 346.018);
    --color-pink-400: oklch(0.718 0.202 349.761);
    --color-pink-500: oklch(0.656 0.241 354.308);
    --color-pink-600: oklch(0.592 0.249 0.584);
    --color-pink-700: oklch(0.525 0.223 3.958);
    --color-pink-800: oklch(0.459 0.187 3.815);
    --color-pink-900: oklch(0.408 0.153 2.432);
    --color-pink-950: oklch(0.284 0.109 3.907);

    /* rose */
    --color-rose-50:  oklch(0.969 0.015 12.422);
    --color-rose-100: oklch(0.941 0.03 12.58);
    --color-rose-200: oklch(0.892 0.058 10.001);
    --color-rose-300: oklch(0.81 0.117 11.638);
    --color-rose-400: oklch(0.712 0.194 13.428);
    --color-rose-500: oklch(0.645 0.246 16.439);
    --color-rose-600: oklch(0.586 0.253 17.585);
    --color-rose-700: oklch(0.514 0.222 16.935);
    --color-rose-800: oklch(0.455 0.188 13.697);
    --color-rose-900: oklch(0.41 0.159 10.272);
    --color-rose-950: oklch(0.271 0.105 12.094);

    /* slate */
    --color-slate-50:  oklch(0.984 0.003 247.858);
    --color-slate-100: oklch(0.968 0.007 247.896);
    --color-slate-200: oklch(0.929 0.013 255.508);
    --color-slate-300: oklch(0.869 0.022 252.894);
    --color-slate-400: oklch(0.704 0.04 256.788);
    --color-slate-500: oklch(0.554 0.046 257.417);
    --color-slate-600: oklch(0.446 0.043 257.281);
    --color-slate-700: oklch(0.372 0.044 257.287);
    --color-slate-800: oklch(0.279 0.041 260.031);
    --color-slate-900: oklch(0.208 0.042 265.755);
    --color-slate-950: oklch(0.129 0.042 264.695);

    /* gray */
    --color-gray-50:  oklch(0.985 0.002 247.839);
    --color-gray-100: oklch(0.967 0.003 264.542);
    --color-gray-200: oklch(0.928 0.006 264.531);
    --color-gray-300: oklch(0.872 0.01 258.338);
    --color-gray-400: oklch(0.707 0.022 261.325);
    --color-gray-500: oklch(0.551 0.027 264.364);
    --color-gray-600: oklch(0.446 0.03 256.802);
    --color-gray-700: oklch(0.373 0.034 259.733);
    --color-gray-800: oklch(0.278 0.033 256.848);
    --color-gray-900: oklch(0.21 0.034 264.665);
    --color-gray-950: oklch(0.13 0.028 261.692);

    /* zinc — 기본 뉴트럴 (shadcn new-york 베이스) */
    --color-zinc-50:  oklch(0.985 0 0);
    --color-zinc-100: oklch(0.967 0.001 286.375);
    --color-zinc-200: oklch(0.92 0.004 286.32);
    --color-zinc-300: oklch(0.871 0.006 286.286);
    --color-zinc-400: oklch(0.705 0.015 286.067);
    --color-zinc-500: oklch(0.552 0.016 285.938);
    --color-zinc-600: oklch(0.442 0.017 285.786);
    --color-zinc-700: oklch(0.37 0.013 285.805);
    --color-zinc-800: oklch(0.274 0.006 286.033);
    --color-zinc-900: oklch(0.21 0.006 285.885);
    --color-zinc-950: oklch(0.141 0.005 285.823);

    /* neutral */
    --color-neutral-50:  oklch(0.985 0 0);
    --color-neutral-100: oklch(0.97 0 0);
    --color-neutral-200: oklch(0.922 0 0);
    --color-neutral-300: oklch(0.87 0 0);
    --color-neutral-400: oklch(0.708 0 0);
    --color-neutral-500: oklch(0.556 0 0);
    --color-neutral-600: oklch(0.439 0 0);
    --color-neutral-700: oklch(0.371 0 0);
    --color-neutral-800: oklch(0.269 0 0);
    --color-neutral-900: oklch(0.205 0 0);
    --color-neutral-950: oklch(0.145 0 0);

    /* stone */
    --color-stone-50:  oklch(0.985 0.001 106.423);
    --color-stone-100: oklch(0.97 0.001 106.424);
    --color-stone-200: oklch(0.923 0.003 48.717);
    --color-stone-300: oklch(0.869 0.005 56.366);
    --color-stone-400: oklch(0.709 0.01 56.259);
    --color-stone-500: oklch(0.553 0.013 58.071);
    --color-stone-600: oklch(0.444 0.011 73.639);
    --color-stone-700: oklch(0.374 0.01 67.558);
    --color-stone-800: oklch(0.268 0.007 34.298);
    --color-stone-900: oklch(0.216 0.006 56.043);
    --color-stone-950: oklch(0.147 0.004 49.25);

    /* --------------------------------------------------------
     * 간격 스케일 (spacing)
     * v4는 calc(var(--spacing)*n) 방식이나, 우리는 손 CSS라
     * v3식 discrete 스케일로 펼친다. base = 0.25rem.
     * -------------------------------------------------------- */
    --spacing-0:    0;
    --spacing-px:   1px;
    --spacing-0_5:  0.125rem;
    --spacing-1:    0.25rem;
    --spacing-1_5:  0.375rem;
    --spacing-2:    0.5rem;
    --spacing-2_5:  0.625rem;
    --spacing-3:    0.75rem;
    --spacing-3_5:  0.875rem;
    --spacing-4:    1rem;
    --spacing-5:    1.25rem;
    --spacing-6:    1.5rem;
    --spacing-7:    1.75rem;
    --spacing-8:    2rem;
    --spacing-9:    2.25rem;
    --spacing-10:   2.5rem;
    --spacing-11:   2.75rem;
    --spacing-12:   3rem;
    --spacing-14:   3.5rem;
    --spacing-16:   4rem;
    --spacing-20:   5rem;
    --spacing-24:   6rem;
    --spacing-28:   7rem;
    --spacing-32:   8rem;
    --spacing-36:   9rem;
    --spacing-40:   10rem;
    --spacing-44:   11rem;
    --spacing-48:   12rem;
    --spacing-52:   13rem;
    --spacing-56:   14rem;
    --spacing-60:   15rem;
    --spacing-64:   16rem;
    --spacing-72:   18rem;
    --spacing-80:   20rem;
    --spacing-96:   24rem;

    /* --------------------------------------------------------
     * 모서리 반경 (radius) — Tailwind v4 primitive 스케일
     * (shadcn semantic radius는 Tier 2의 --radius 참조)
     * -------------------------------------------------------- */
    --radius-none: 0;
    --radius-xs:   0.125rem;
    --radius-sm:   0.25rem;
    --radius-md:   0.375rem;
    --radius-lg:   0.5rem;
    --radius-xl:   0.75rem;
    --radius-2xl:  1rem;
    --radius-3xl:  1.5rem;
    --radius-4xl:  2rem;
    --radius-full: 9999px;

    /* --------------------------------------------------------
     * 타이포그래피
     * -------------------------------------------------------- */

    /* 글꼴 — 프로젝트 로드 폰트(Head.php). Latin=Jakarta, KR=Noto Sans KR */
    --font-sans:  "Plus Jakarta Sans", "Noto Sans KR", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
    --font-serif: "Noto Serif KR", ui-serif, Georgia, Cambria, "Times New Roman", serif;
    --font-mono:  "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;

    /* 글자 크기 + 짝지은 줄높이 */
    --text-xs:    0.75rem;     --text-xs-lh:   1rem;
    --text-sm:    0.875rem;    --text-sm-lh:   1.25rem;
    --text-base:  1rem;        --text-base-lh: 1.5rem;
    --text-lg:    1.125rem;    --text-lg-lh:   1.75rem;
    --text-xl:    1.25rem;     --text-xl-lh:   1.75rem;
    --text-2xl:   1.5rem;      --text-2xl-lh:  2rem;
    --text-3xl:   1.875rem;    --text-3xl-lh:  2.25rem;
    --text-4xl:   2.25rem;     --text-4xl-lh:  2.5rem;
    --text-5xl:   3rem;        --text-5xl-lh:  1;
    --text-6xl:   3.75rem;     --text-6xl-lh:  1;
    --text-7xl:   4.5rem;      --text-7xl-lh:  1;
    --text-8xl:   6rem;        --text-8xl-lh:  1;
    --text-9xl:   8rem;        --text-9xl-lh:  1;

    /* 글자 굵기 */
    --font-weight-thin:       100;
    --font-weight-extralight: 200;
    --font-weight-light:      300;
    --font-weight-normal:     400;
    --font-weight-medium:     500;
    --font-weight-semibold:   600;
    --font-weight-bold:       700;
    --font-weight-extrabold:  800;
    --font-weight-black:      900;

    /* 자간 (letter-spacing) */
    --tracking-tighter: -0.05em;
    --tracking-tight:   -0.025em;
    --tracking-normal:  0;
    --tracking-wide:    0.025em;
    --tracking-wider:   0.05em;
    --tracking-widest:  0.1em;

    /* 줄높이 (line-height 단독) */
    --leading-none:    1;
    --leading-tight:   1.25;
    --leading-snug:    1.375;
    --leading-normal:  1.5;
    --leading-relaxed: 1.625;
    --leading-loose:   2;

    /* --------------------------------------------------------
     * 그림자 (box-shadow)
     * -------------------------------------------------------- */
    --shadow-2xs:   0 1px rgb(0 0 0 / 0.05);
    --shadow-xs:    0 1px 2px 0 rgb(0 0 0 / 0.05);
    --shadow-sm:    0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
    --shadow-md:    0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
    --shadow-lg:    0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
    --shadow-xl:    0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
    --shadow-2xl:   0 25px 50px -12px rgb(0 0 0 / 0.25);
    --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);

    /* --------------------------------------------------------
     * 흐림 (blur)
     * -------------------------------------------------------- */
    --blur-xs:  4px;
    --blur-sm:  8px;
    --blur-md:  12px;
    --blur-lg:  16px;
    --blur-xl:  24px;
    --blur-2xl: 40px;
    --blur-3xl: 64px;

    /* --------------------------------------------------------
     * z-index 스케일
     * -------------------------------------------------------- */
    --z-0:    0;
    --z-10:   10;
    --z-20:   20;
    --z-30:   30;
    --z-40:   40;
    --z-50:   50;
    --z-auto: auto;

    /* 시맨틱 레이어링 (UI 요소 권장 z) */
    --z-dropdown: 1000;
    --z-sticky:   1020;
    --z-fixed:    1030;
    --z-backdrop: 1040;
    --z-modal:    1050;
    --z-popover:  1060;
    --z-toast:    1080;

    /* --------------------------------------------------------
     * 불투명도 스케일 (opacity)
     * -------------------------------------------------------- */
    --opacity-0:   0;
    --opacity-5:   0.05;
    --opacity-10:  0.1;
    --opacity-20:  0.2;
    --opacity-25:  0.25;
    --opacity-30:  0.3;
    --opacity-40:  0.4;
    --opacity-50:  0.5;
    --opacity-60:  0.6;
    --opacity-70:  0.7;
    --opacity-75:  0.75;
    --opacity-80:  0.8;
    --opacity-90:  0.9;
    --opacity-95:  0.95;
    --opacity-100: 1;

    /* --------------------------------------------------------
     * 전환 (transition) — duration / easing
     * -------------------------------------------------------- */
    --ease-linear:      linear;
    --ease-in:          cubic-bezier(0.4, 0, 1, 1);
    --ease-out:         cubic-bezier(0, 0, 0.2, 1);
    --ease-in-out:      cubic-bezier(0.4, 0, 0.2, 1);

    --duration-75:   75ms;
    --duration-100:  100ms;
    --duration-150:  150ms;
    --duration-200:  200ms;
    --duration-300:  300ms;
    --duration-500:  500ms;
    --duration-700:  700ms;
    --duration-1000: 1000ms;

    /* --------------------------------------------------------
     * 중단점 (breakpoints) — ⚠ 문서/JS 참조용
     * CSS @media 에서는 var() 사용 불가. 미디어쿼리엔 리터럴 px 사용.
     * sm 640 / md 768 / lg 1024 / xl 1280 / 2xl 1536
     * -------------------------------------------------------- */
    --breakpoint-sm:  40rem;
    --breakpoint-md:  48rem;
    --breakpoint-lg:  64rem;
    --breakpoint-xl:  80rem;
    --breakpoint-2xl: 96rem;
}


/* ============================================================
 * TIER 2 — SEMANTIC
 * shadcn/ui (new-york · zinc). 컴포넌트는 이 층만 소비한다.
 * 값은 Tier 1 primitive를 참조 → 다크모드는 이 층만 remap.
 * ============================================================ */

:root {

    /* 표면 / 텍스트 */
    --background:           var(--color-white);
    --foreground:           var(--color-zinc-950);
    --card:                 var(--color-white);
    --card-foreground:      var(--color-zinc-950);
    --popover:              var(--color-white);
    --popover-foreground:   var(--color-zinc-950);

    /* 주요 액션 (near-black, new-york) */
    --primary:              var(--color-zinc-900);
    --primary-foreground:   var(--color-zinc-50);

    /* 보조 / 약화 / 강조 표면 */
    --secondary:            var(--color-zinc-100);
    --secondary-foreground: var(--color-zinc-900);
    --muted:                var(--color-zinc-100);
    --muted-foreground:     var(--color-zinc-500);
    --accent:               var(--color-zinc-100);
    --accent-foreground:    var(--color-zinc-900);

    /* 위험 / 파괴적 액션 */
    --destructive:          var(--color-red-600);
    --destructive-foreground: var(--color-zinc-50);

    /* 상태색 (shadcn 표준엔 없으나 폼/알림에 필요 — Tier1 참조) */
    --success:              var(--color-green-600);
    --success-foreground:   var(--color-zinc-50);
    --warning:              var(--color-amber-500);
    --warning-foreground:   var(--color-zinc-950);
    --info:                 var(--color-blue-600);
    --info-foreground:      var(--color-zinc-50);

    /* 약한 틴트 표면(알림·뱃지·하이라이트·답변박스) — 라이트=옅은 틴트, 다크=어두운 틴트 자동 적응 */
    --success-subtle:            var(--color-green-50);
    --success-subtle-foreground: var(--color-green-700);
    --success-subtle-border:     var(--color-green-200);
    --warning-subtle:            var(--color-amber-50);
    --warning-subtle-foreground: var(--color-amber-800);
    --warning-subtle-border:     var(--color-amber-200);
    --danger-subtle:             var(--color-red-50);
    --danger-subtle-foreground:  var(--color-red-700);
    --danger-subtle-border:      var(--color-red-200);
    --info-subtle:               var(--color-blue-50);
    --info-subtle-foreground:    var(--color-blue-700);
    --info-subtle-border:        var(--color-blue-200);

    /* 경계 / 입력 / 포커스 링 */
    --border:               var(--color-zinc-200);
    --border-subtle:        var(--color-zinc-100);   /* 약한 구분선(내부 디바이더 등) */
    --input:                var(--color-zinc-200);
    --ring:                 var(--color-zinc-400);

    /* 차트 팔레트 (shadcn) */
    --chart-1: var(--color-blue-500);
    --chart-2: var(--color-teal-500);
    --chart-3: var(--color-amber-500);
    --chart-4: var(--color-violet-500);
    --chart-5: var(--color-rose-500);

    /* 모서리 반경 (semantic base) — shadcn new-york = 0.625rem */
    --radius: 0.625rem;

    /* 본문 타이포 기본값 */
    --font-body:        var(--font-sans);
    --font-heading:     var(--font-sans);
    --text-body:        var(--text-base);
    --text-body-lh:     var(--text-base-lh);

    /* ----------------------------------------------------
     * 레이아웃 폭 (도메인 설정이 Head.php에서 override 가능)
     * ---------------------------------------------------- */
    --site-max-width:     1280px;
    --content-max-width:  1024px;
    --sidebar-left-width:  240px;
    --sidebar-right-width: 300px;
}


/* ============================================================
 * 다크모드 — Tier 2 semantic remap only
 * 활성화: 루트 엘리먼트에 .dark 또는 [data-theme="dark"]
 * (현재 frame 스킨은 토글 미도입 → 무해/inert. 토글 붙이면 즉시 적용)
 * ============================================================ */

.dark,
[data-theme="dark"] {
    --background:           var(--color-zinc-950);
    --foreground:           var(--color-zinc-50);
    --card:                 var(--color-zinc-900);
    --card-foreground:      var(--color-zinc-50);
    --popover:              var(--color-zinc-900);
    --popover-foreground:   var(--color-zinc-50);

    --primary:              var(--color-zinc-200);
    --primary-foreground:   var(--color-zinc-900);

    --secondary:            var(--color-zinc-800);
    --secondary-foreground: var(--color-zinc-50);
    --muted:                var(--color-zinc-800);
    --muted-foreground:     var(--color-zinc-400);
    --accent:               var(--color-zinc-800);
    --accent-foreground:    var(--color-zinc-50);

    --destructive:          var(--color-red-500);
    --destructive-foreground: var(--color-zinc-50);

    --success:              var(--color-green-500);
    --success-foreground:   var(--color-zinc-950);
    --warning:              var(--color-amber-400);
    --warning-foreground:   var(--color-zinc-950);
    --info:                 var(--color-blue-500);
    --info-foreground:      var(--color-zinc-950);

    --success-subtle:            var(--color-green-950);
    --success-subtle-foreground: var(--color-green-300);
    --success-subtle-border:     var(--color-green-800);
    --warning-subtle:            var(--color-amber-950);
    --warning-subtle-foreground: var(--color-amber-300);
    --warning-subtle-border:     var(--color-amber-800);
    --danger-subtle:             var(--color-red-950);
    --danger-subtle-foreground:  var(--color-red-300);
    --danger-subtle-border:      var(--color-red-900);
    --info-subtle:               var(--color-blue-950);
    --info-subtle-foreground:    var(--color-blue-300);
    --info-subtle-border:        var(--color-blue-800);

    --border:               oklch(1 0 0 / 0.15);
    --border-subtle:        oklch(1 0 0 / 0.1);
    --input:                oklch(1 0 0 / 0.18);
    --ring:                 var(--color-zinc-500);
}
