/* ═══════════════════════════════════════════════════════════════
   개발 마당 (Madang Forge) v2 — 퍼블리싱 공용 스타일
   기반: 마당 디자인 시스템 (design-system/) 토큰 그대로 사용
   원칙: 플랫 웜 화이트 · 컬러 면적은 작게 채도는 높게 · 그라데이션 금지
   ═══════════════════════════════════════════════════════════════ */
@import url('./tokens/fonts.css');
@import url('./tokens/colors.css');
@import url('./tokens/typography.css');
@import url('./tokens/spacing.css');

:root{
  /* 개발 마당 제품 액센트 (Madang Forge Teal) — 점·칩·상태 등 작은 면적 전용 */
  --forge-600:#0C8894;
  --forge-500:#0FA3B1;
  --forge-100:#D9F1F4;
  --forge-50:#ECF8F9;
  --header-h:64px;
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font:var(--text-body);color:var(--text-body);background:var(--bg);-webkit-font-smoothing:antialiased}
img,svg{display:block;max-width:100%}
button{font-family:var(--font-sans)}
::selection{background:var(--coral-100)}

/* ─── 레이아웃 ─────────────────────────────────────────────── */
.wrap{max-width:1120px;margin:0 auto;padding:0 28px}
.wrap--narrow{max-width:760px}
.wrap--wide{max-width:1280px}
.section{padding:var(--space-24) 0}
.section--tight{padding:var(--space-16) 0}
.hairline{border:none;border-top:1px solid var(--line-100);margin:0}
.grid{display:grid;gap:var(--space-6)}
.grid--2{grid-template-columns:repeat(2,1fr)}
.grid--3{grid-template-columns:repeat(3,1fr)}
.grid--4{grid-template-columns:repeat(4,1fr)}
@media(max-width:960px){.grid--3,.grid--4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.grid--2,.grid--3,.grid--4{grid-template-columns:1fr}.wrap{padding:0 20px}.section{padding:var(--space-16) 0}}

/* ─── 타이포 유틸 ──────────────────────────────────────────── */
.t-display{font:var(--text-display);letter-spacing:var(--ls-display);color:var(--text-strong)}
.t-h1{font:var(--text-h1);letter-spacing:var(--ls-h1);color:var(--text-strong)}
.t-h2{font:var(--text-h2);letter-spacing:var(--ls-h2);color:var(--text-strong)}
.t-h3{font:var(--text-h3);letter-spacing:var(--ls-h3);color:var(--text-strong)}
.t-h4{font:var(--text-h4);letter-spacing:var(--ls-h4);color:var(--text-strong)}
.t-body-lg{font:var(--text-body-lg)}
.t-sm{font:var(--text-body-sm)}
.t-caption{font:var(--text-caption);color:var(--text-muted)}
.t-mono{font-family:var(--font-mono);font-size:13px}
.t-muted{color:var(--text-muted)}
.t-center{text-align:center}
.eyebrow{display:inline-flex;align-items:center;gap:8px;font:600 13px/1 var(--font-sans);letter-spacing:.12em;color:var(--forge-600);text-transform:uppercase;margin-bottom:var(--space-4)}
.eyebrow::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--forge-500)}
@media(max-width:640px){.t-display{font-size:38px}.t-h1{font-size:32px}.t-h2{font-size:26px}}

/* ─── 헤더 (마케팅/앱 공용) ────────────────────────────────── */
.site-header{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:20px;padding:0 28px;height:var(--header-h);background:rgba(253,251,247,.86);backdrop-filter:blur(10px);border-bottom:1px solid var(--line-100);transition:border-color .2s}
.site-header.is-scrolled{border-bottom-color:var(--line-200)}
.brand{display:inline-flex;align-items:center;gap:10px;text-decoration:none}
.brand:hover{text-decoration:none}
.brand__word{display:inline-flex;align-items:baseline}
.brand__name{font:800 17px/1 var(--font-sans);letter-spacing:.045em;color:var(--ink-900)}
.brand__ai{font:600 10px/1 var(--font-sans);letter-spacing:.18em;color:var(--ink-900);opacity:.55;margin-left:9px}
.site-nav{display:flex;align-items:center;gap:4px;margin-left:18px}
.site-nav a{padding:8px 12px;border-radius:var(--radius-sm);font:500 13.5px/1.4 var(--font-sans);color:var(--ink-700);text-decoration:none;white-space:nowrap;transition:background .12s}
.site-nav a:hover{background:var(--fill-100);color:var(--ink-700);text-decoration:none}
.site-nav a.is-active{background:var(--fill-100);color:var(--ink-900);font-weight:600}
.site-header__spacer{flex:1}
.site-header__link{font:500 13px/1.4 var(--font-sans);color:var(--ink-500);text-decoration:none}
.site-header__link:hover{color:var(--ink-700);text-decoration:none}
.site-header__auth{display:flex;align-items:center;gap:12px}
/* head 부트 스크립트가 설정하는 html[data-madang-auth] — /me 대기 없이 올바른 헤더를 첫 페인트에 보여 줌 */
html[data-madang-auth="1"] .site-nav--guest,
html[data-madang-auth="1"] .site-header__auth--guest{display:none!important}
html:not([data-madang-auth="1"]) .site-nav--authed,
html:not([data-madang-auth="1"]) .site-header__auth--user{display:none!important}
@media(max-width:860px){.site-nav{display:none}}

/* ─── 푸터 (마당 패밀리 2단) ───────────────────────────────── */
.site-footer{border-top:1px solid var(--line-200);background:var(--fill-100);margin-top:var(--space-24)}
.story + .site-footer{margin-top:0}
.story-prose{max-width:480px;margin:0 auto;font:var(--text-body-lg);color:var(--text-body);word-break:keep-all;overflow-wrap:break-word;text-wrap:pretty}
.story-prose p{margin:0 0 var(--space-6)}
.story-prose b{color:var(--text-strong)}
.detail-report + .site-footer{margin-top:0}
.site-footer__brand-row{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:22px 0;border-bottom:1px solid var(--line-100)}
.site-footer__brand{display:inline-flex;align-items:center;gap:9px}
.site-footer__logo{display:block;width:28px;height:28px;flex-shrink:0}
.site-footer__rule{width:1px;height:18px;background:var(--line-200);flex-shrink:0}
.site-footer__product{display:inline-flex;align-items:baseline;gap:10px}
.site-footer__product-name{font:700 14px/1 var(--font-sans);letter-spacing:.04em;color:var(--ink-900)}
.site-footer__domain{font:400 12.5px/1 var(--font-mono);color:var(--ink-500)}
.site-footer__spacer{flex:1;min-width:12px}
.site-footer__tagline{font:400 12.5px/1.5 var(--font-sans);color:var(--ink-500)}
.site-footer__tagline-muted{color:var(--ink-400)}
.site-footer__legal-row{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:16px 0 20px}
.site-footer__legal{display:inline-flex;align-items:center;gap:14px}
.site-footer__legal-item{display:inline-flex;align-items:center;gap:14px}
.site-footer__legal-text{font:400 12px/1.4 var(--font-sans);color:var(--ink-500)}
.site-footer__dot{color:var(--ink-300);font:400 11px/1 var(--font-sans)}
.site-footer__copy{font:400 12px/1.4 var(--font-sans);color:var(--ink-400)}
/* 운영자용 진입점 — 눈에 띄지 않게, 그러나 찾으면 있게 */
.site-footer__admin{font:400 12px/1.4 var(--font-sans);color:var(--ink-400);text-decoration:none;transition:color .12s}
.site-footer__admin:hover{color:var(--ink-700);text-decoration:underline}
@media(max-width:720px){
  .site-footer__tagline{width:100%;order:3}
  .site-footer__legal-row{flex-direction:column;align-items:flex-start;gap:10px}
  .site-footer__spacer{display:none}
}

/* ─── 버튼 ─────────────────────────────────────────────────── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 20px;border-radius:var(--radius-md);border:none;font:var(--text-label);cursor:pointer;text-decoration:none;transition:background .12s,transform .08s,box-shadow .12s;white-space:nowrap}
.btn:hover{text-decoration:none}
.btn:active{transform:scale(.98)}
.btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}
.btn--primary{background:var(--accent);color:var(--text-on-accent)}
.btn--primary:hover{background:var(--accent-hover);color:var(--text-on-accent)}
.btn--ink{background:var(--ink-900);color:#F5F2EA}
.btn--ink:hover{background:#33312C;color:#F5F2EA}
.btn--ghost{background:transparent;color:var(--text-body);border:1px solid var(--border)}
.btn--ghost:hover{background:var(--fill-100);color:var(--text-strong)}
.btn--subtle{background:var(--fill-100);color:var(--text-strong)}
.btn--subtle:hover{background:var(--line-100)}
.btn--danger{background:var(--danger);color:#fff}
.btn--lg{height:52px;padding:0 28px;font-size:15px}
.btn--sm{height:36px;padding:0 14px;font-size:13px;border-radius:var(--radius-sm)}
.btn--block{width:100%}
.btn[disabled],.btn.is-disabled{opacity:.45;cursor:not-allowed;pointer-events:none}

/* ─── 폼 ───────────────────────────────────────────────────── */
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:var(--space-4)}
.field label{font:var(--text-label);color:var(--text-strong)}
.field .hint{font:var(--text-caption);color:var(--text-muted)}
.input,.select,.textarea{width:100%;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--paper);font:var(--text-body-sm);color:var(--text-strong);transition:border-color .12s,box-shadow .12s}
.input::placeholder,.textarea::placeholder{color:var(--text-faint)}
.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--interactive);box-shadow:var(--focus-ring)}
.textarea{resize:vertical;min-height:96px;line-height:1.7}
.check{display:flex;align-items:center;gap:10px;font:var(--text-body-sm)}

/* ─── 카드 ─────────────────────────────────────────────────── */
.card{background:var(--surface-card);border:1px solid var(--line-200);border-radius:var(--radius-lg);box-shadow:var(--shadow-1);padding:var(--space-6);transition:box-shadow .15s,transform .15s}
.card--hover:hover{box-shadow:var(--shadow-2);transform:translateY(-2px)}
.card--sunken{background:var(--surface-sunken);border-color:var(--line-100);box-shadow:none}
.card--pad-lg{padding:var(--space-8)}
.card h3,.card h4{margin-bottom:var(--space-2)}
.card--select{cursor:pointer;position:relative}
.card--select.is-selected{border-color:var(--forge-500);box-shadow:0 0 0 2px var(--forge-100),var(--shadow-2)}
.card--select.is-selected::after{content:'✓';position:absolute;top:12px;right:12px;width:24px;height:24px;border-radius:50%;background:var(--forge-500);color:#fff;font:700 13px/24px var(--font-sans);text-align:center}

/* ─── 칩·뱃지·상태 ─────────────────────────────────────────── */
.chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border-radius:var(--radius-full);font:600 12.5px/1 var(--font-sans);background:var(--fill-100);color:var(--text-body);border:1px solid transparent}
.chip--outline{background:transparent;border-color:var(--border)}
.chip--coral{background:var(--coral-50);color:var(--coral-600)}
.chip--blue{background:var(--blue-50);color:var(--blue-600)}
.chip--green{background:var(--green-50);color:var(--green-600)}
.chip--amber{background:var(--warning-subtle);color:var(--warning-text)}
.chip--teal{background:var(--forge-50);color:var(--forge-600)}
.chip--ink{background:var(--ink-900);color:#F5F2EA}
.chip--click{cursor:pointer;transition:background .12s}
.chip--click:hover{background:var(--line-100)}
.chip--click.is-on{background:var(--forge-50);color:var(--forge-600);border-color:var(--forge-500)}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--forge-500)}
.dot--coral{background:var(--coral-500)}.dot--blue{background:var(--blue-500)}.dot--green{background:var(--green-500)}.dot--amber{background:var(--amber-500)}.dot--muted{background:var(--ink-300)}
.status{display:inline-flex;align-items:center;gap:7px;font:600 13px/1 var(--font-sans)}
.status .dot{width:7px;height:7px}
.status--live .dot{animation:pulse 1.6s ease-out infinite}
/* 진행 중임을 카드에서 바로 알아보게 — 심화 리포트 작성 중 배지 */
.dot--pulse{width:6px;height:6px;align-self:center;animation:blink 1.4s ease-in-out infinite}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.25}}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(15,163,177,.35)}70%{box-shadow:0 0 0 7px rgba(15,163,177,0)}100%{box-shadow:0 0 0 0 rgba(15,163,177,0)}}

/* ─── 탭 ───────────────────────────────────────────────────── */
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line-200)}
.tab{appearance:none;background:none;border:none;padding:12px 16px;font:var(--text-label);color:var(--text-muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .12s}
.tab:hover{color:var(--text-body)}
.tab.is-active{color:var(--text-strong);border-bottom-color:var(--ink-900)}
.tab .chip{margin-left:6px;height:20px;padding:0 8px;font-size:11px}
.tab-panel{display:none;padding-top:var(--space-6)}
.tab-panel.is-active{display:block}

/* ─── 테이블 ───────────────────────────────────────────────── */
.table-wrap{overflow-x:auto;border:1px solid var(--line-200);border-radius:var(--radius-lg);background:var(--paper)}
table.tbl{width:100%;border-collapse:collapse;font:var(--text-body-sm)}
.tbl th{font:600 12.5px/1.4 var(--font-sans);text-align:left;color:var(--text-muted);padding:12px 16px;border-bottom:1px solid var(--line-200);background:var(--fill-100);white-space:nowrap}
.tbl td{padding:14px 16px;border-bottom:1px solid var(--line-100);color:var(--text-body);vertical-align:middle}
.tbl tr:last-child td{border-bottom:none}
.tbl tr.is-click{cursor:pointer;transition:background .1s}
.tbl tr.is-click:hover{background:var(--fill-100)}

/* ─── 모달 ─────────────────────────────────────────────────── */
.modal-scrim{position:fixed;inset:0;background:rgba(31,30,28,.4);z-index:80;display:none;align-items:center;justify-content:center;padding:24px}
.modal-scrim.is-open{display:flex}
.modal{background:var(--paper);border-radius:var(--radius-xl);box-shadow:var(--shadow-4);max-width:520px;width:100%;max-height:88vh;overflow-y:auto;padding:var(--space-8)}
.modal--wide{max-width:720px}
.modal__close{float:right;background:none;border:none;font-size:20px;color:var(--text-muted);cursor:pointer;padding:4px;line-height:1}

/* ─── 진행 타임라인 (8단계) ───────────────────────────────── */
.steps{display:flex;align-items:flex-start;gap:0;overflow-x:auto;padding:var(--space-2) 0}
.step{flex:1;min-width:96px;text-align:center;position:relative}
.step::before{content:'';position:absolute;top:15px;left:calc(-50% + 16px);right:calc(50% + 16px);height:2px;background:var(--line-200)}
.step:first-child::before{display:none}
.step.is-done::before{background:var(--forge-500)}
.step__dot{width:32px;height:32px;border-radius:50%;margin:0 auto var(--space-2);display:flex;align-items:center;justify-content:center;font:600 13px/1 var(--font-sans);background:var(--fill-100);color:var(--text-faint);border:2px solid var(--line-200)}
.step.is-done .step__dot{background:var(--forge-500);border-color:var(--forge-500);color:#fff}
.step.is-active .step__dot{background:var(--paper);border-color:var(--forge-500);color:var(--forge-600)}
.step__label{font:600 12px/1.4 var(--font-sans);color:var(--text-faint)}
.step.is-done .step__label{color:var(--text-muted)}
.step.is-active .step__label{color:var(--text-strong)}
.step__badge{margin-top:4px}

/* ─── 대화(채팅) ───────────────────────────────────────────── */
.chat{display:flex;flex-direction:column;gap:var(--space-5)}
.msg{max-width:640px;display:flex;flex-direction:column;gap:8px}
.msg--bot{align-self:flex-start}
.msg--user{align-self:flex-end;align-items:flex-end}
.msg__meta{display:flex;align-items:center;gap:8px;font:var(--text-caption);color:var(--text-faint)}
.msg__bubble{padding:14px 18px;border-radius:var(--radius-lg);font:var(--text-body);line-height:1.7}
.msg--bot .msg__bubble{background:var(--paper);border:1px solid var(--line-200);border-top-left-radius:var(--radius-xs)}
.msg--user .msg__bubble{background:var(--ink-900);color:#F5F2EA;border-top-right-radius:var(--radius-xs)}
.msg__choices{display:flex;flex-wrap:wrap;gap:8px}
.msg--wide{max-width:100%;align-self:stretch}

/* ─── 라이브 로그 (백그라운드 작업) ───────────────────────── */
.livelog{background:var(--ink-900);border-radius:var(--radius-lg);padding:var(--space-5);color:#CFCAC0;font-family:var(--font-mono);font-size:12.5px;line-height:2}
.livelog__title{display:flex;align-items:center;gap:8px;font:600 12px/1 var(--font-sans);letter-spacing:.08em;color:#8F8A80;margin-bottom:var(--space-3);text-transform:uppercase}
.livelog__line{display:flex;gap:10px;align-items:baseline}
.livelog__line .t{color:#736F67}
.livelog__line.is-done .m{color:#3BD69B}
.livelog__line.is-run .m{color:#F5F2EA}
.livelog__line.is-wait .m{color:#736F67}

/* ─── 검수·수정요청 ───────────────────────────────────────── */
.revision{border:1px solid var(--line-200);border-radius:var(--radius-md);padding:var(--space-4);display:flex;gap:var(--space-4);align-items:flex-start;background:var(--paper)}
.revision__state{flex-shrink:0}
.revision__body{flex:1}
.revision__body p{margin:4px 0 0;font:var(--text-body-sm);color:var(--text-body)}
.revision__target{font:600 12px/1.4 var(--font-mono);color:var(--forge-600)}

/* ─── 가격·견적 ────────────────────────────────────────────── */
.price-bar{display:flex;align-items:center;gap:12px}
.price-bar__track{flex:1;height:10px;border-radius:var(--radius-full);background:var(--fill-100);overflow:hidden}
.price-bar__fill{height:100%;border-radius:var(--radius-full)}
.price-strike{text-decoration:line-through;color:var(--text-faint);font-weight:400}

/* ─── 어드민 셸 ────────────────────────────────────────────── */
.admin{display:grid;grid-template-columns:232px minmax(0,1fr);grid-template-rows:var(--header-h) minmax(0,1fr) auto;grid-template-areas:"top top" "side main" "foot foot";min-height:100vh;background:var(--bg)}
.admin__topbar{grid-area:top;position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:18px;height:var(--header-h);padding:0 28px;background:rgba(253,251,247,.92);backdrop-filter:blur(12px);border-bottom:1px solid var(--line-200)}
.admin__brand{flex-shrink:0}
.admin__console-badge{display:inline-flex;align-items:center;height:22px;margin-left:10px;padding:0 8px;border:1px solid var(--forge-100);border-radius:var(--radius-full);background:var(--forge-50);font:700 10px/1 var(--font-mono);letter-spacing:.08em;color:var(--forge-600)}
.admin__topbar-spacer{flex:1}
.admin__service-link{display:inline-flex;align-items:center;gap:5px;font:500 12.5px/1.4 var(--font-sans);color:var(--ink-500);text-decoration:none}
.admin__service-link:hover{color:var(--forge-600);text-decoration:none}
.admin__staff{display:flex;align-items:center;gap:9px;padding-left:18px;border-left:1px solid var(--line-200);color:var(--ink-700)}
.admin__staff-avatar{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--ink-900);font:700 12px/1 var(--font-sans);color:var(--paper)}
.admin__staff b,.admin__staff small{display:block;white-space:nowrap}
.admin__staff b{font:600 12.5px/1.35 var(--font-sans)}
.admin__staff small{font:400 10.5px/1.35 var(--font-sans);color:var(--text-muted)}
.admin__side{grid-area:side;align-self:start;border-right:1px solid var(--line-200);background:var(--paper);padding:var(--space-6) var(--space-3);position:sticky;top:var(--header-h);width:100%;height:100%;max-height:calc(100vh - var(--header-h));overflow-y:auto}
.admin__side-title{padding:0 12px;margin-bottom:var(--space-4);font:700 11px/1 var(--font-sans);letter-spacing:.1em;color:var(--ink-400);text-transform:uppercase}
.admin__group{font:600 11px/1 var(--font-sans);letter-spacing:.1em;color:var(--text-faint);text-transform:uppercase;padding:0 12px;margin:var(--space-5) 0 var(--space-2)}
.admin__nav a{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:var(--radius-sm);font:500 13.5px/1.4 var(--font-sans);color:var(--ink-700);text-decoration:none;transition:background .12s}
.admin__nav a:hover{background:var(--fill-100);text-decoration:none;color:var(--ink-900)}
.admin__nav a.is-active{background:var(--forge-50);color:var(--forge-600);font-weight:600}
.admin__main{grid-area:main;display:flex;min-width:0;min-height:0;flex-direction:column}
.admin__content{width:100%;max-width:1280px;margin:0 auto;padding:var(--space-8) var(--space-10);flex:1}
.admin__head{display:flex;align-items:center;gap:var(--space-4);margin-bottom:var(--space-8)}
.admin__head h1{font:var(--text-h2);letter-spacing:var(--ls-h2)}
.admin__head .spacer{flex:1}
.admin__footer{grid-area:foot;display:flex;align-items:center;gap:14px;min-height:64px;padding:16px var(--space-10);border-top:1px solid var(--line-200);background:var(--fill-100);font:400 11.5px/1.4 var(--font-sans);color:var(--ink-400)}
.admin__footer-brand{display:inline-flex;align-items:center;gap:7px;font:700 11px/1 var(--font-sans);letter-spacing:.04em;color:var(--ink-700)}
.admin-login{display:flex;min-height:100vh;flex-direction:column;background:var(--bg)}
.admin-login__header{position:sticky;width:100%}
.admin-login__main{display:flex;align-items:center;justify-content:center;flex:1;padding:48px 24px}
.admin-login__footer{padding-left:28px;padding-right:28px}
@media(max-width:960px){
  .admin{grid-template-columns:1fr;grid-template-rows:var(--header-h) auto minmax(0,1fr) auto;grid-template-areas:"top" "side" "main" "foot"}
  .admin__topbar{padding:0 18px;gap:12px}
  .admin__console-badge{display:none}
  .admin__staff{padding-left:0;border-left:0}
  .admin__staff>span:last-child{display:none}
  .admin__service-link{display:none}
  .admin__side{position:static;align-self:stretch;height:auto;max-height:none;padding:10px 14px;border-right:none;border-bottom:1px solid var(--line-200);overflow:visible}
  .admin__side-title,.admin__group{display:none}
  .admin__nav{display:flex;gap:4px;overflow-x:auto}
  .admin__nav a{flex:0 0 auto;padding:8px 10px;font-size:12.5px}
  .admin__content{padding:var(--space-6)}
  .admin__footer{padding:16px var(--space-6);flex-wrap:wrap}
  .admin__footer .admin__topbar-spacer{display:none}
}
@media(max-width:560px){
  .admin__brand .brand__word{display:none}
  .admin__topbar .btn{padding-left:10px;padding-right:10px}
  .admin__footer{align-items:flex-start;flex-direction:column;gap:7px}
}

/* ─── KPI 스탯 ─────────────────────────────────────────────── */
.stat{padding:var(--space-5) var(--space-6)}
.stat__label{font:var(--text-caption);color:var(--text-muted)}
.stat__value{font:700 30px/1.2 var(--font-sans);letter-spacing:-.01em;color:var(--text-strong);margin-top:4px}
.stat__value small{font:600 14px/1 var(--font-sans);color:var(--text-muted);margin-left:2px}
.stat__delta{font:600 12px/1.4 var(--font-sans);margin-top:4px}
.stat__delta.up{color:var(--positive-text)}
.stat__delta.down{color:var(--danger-text)}

/* ─── 리빌 애니메이션 ─────────────────────────────────────── */
.reveal{opacity:0;transform:translateY(14px);transition:opacity .5s ease-out,transform .5s ease-out}
.reveal.is-in{opacity:1;transform:none}
.reveal-d1{transition-delay:.08s}.reveal-d2{transition-delay:.16s}.reveal-d3{transition-delay:.24s}
@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}

/* ─── 토스트 ───────────────────────────────────────────────── */
.toast-zone{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);z-index:100;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
.toast{display:flex;align-items:center;gap:10px;background:var(--ink-900);color:#F5F2EA;font:600 13.5px/1.4 var(--font-sans);padding:12px 18px;border-radius:var(--radius-md);box-shadow:var(--shadow-3);opacity:0;transform:translateY(8px);transition:opacity .22s,transform .22s;max-width:90vw}
.toast.is-in{opacity:1;transform:none}
.toast--ok::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--green-500);flex-shrink:0}
.toast--warn::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--amber-500);flex-shrink:0}
.toast--err::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--red-500);flex-shrink:0}

/* ─── 폼 에러 상태 ─────────────────────────────────────────── */
.field.is-error .input,.field.is-error .select,.field.is-error .textarea{border-color:var(--danger);box-shadow:0 0 0 3px rgba(229,72,77,.12)}
.field.is-error .err{display:flex;align-items:center;gap:6px;font:var(--text-caption);color:var(--danger-text)}
.field .err{display:none}

/* ─── 모달 변형 ────────────────────────────────────────────── */
.modal--sm{max-width:420px}
.modal__foot{display:flex;gap:var(--space-3);margin-top:var(--space-6)}
.modal__foot .btn{flex:1}

/* ─── 기타 ─────────────────────────────────────────────────── */
.avatar{width:36px;height:36px;border-radius:50%;background:var(--forge-100);color:var(--forge-600);display:inline-flex;align-items:center;justify-content:center;font:700 14px/1 var(--font-sans);flex-shrink:0}
.kbd{font:600 11.5px/1 var(--font-mono);background:var(--fill-100);border:1px solid var(--line-200);border-bottom-width:2px;border-radius:6px;padding:4px 7px;color:var(--text-body)}
.notice{display:flex;gap:12px;padding:var(--space-4) var(--space-5);border-radius:var(--radius-md);font:var(--text-body-sm);align-items:flex-start}
.notice--info{background:var(--interactive-subtle);color:var(--blue-600)}
.notice--warn{background:var(--warning-subtle);color:var(--warning-text)}
.notice--ok{background:var(--positive-subtle);color:var(--positive-text)}
.breadcrumb{display:flex;align-items:center;gap:8px;font:var(--text-body-sm);color:var(--text-muted);margin-bottom:var(--space-4)}
.breadcrumb a{color:var(--text-muted)}
.count-lock{filter:blur(5px);pointer-events:none;user-select:none}
.sticky-cta{position:fixed;left:0;right:0;bottom:0;z-index:50;background:rgba(253,251,247,.92);backdrop-filter:blur(10px);border-top:1px solid var(--line-200);padding:14px 0}
.sticky-cta .wrap{display:flex;align-items:center;gap:var(--space-4)}

/* ─── 아코디언 행 (공용) ───────────────────────────────────── */
.acc-row{display:flex;align-items:center;gap:10px;width:100%;padding:14px 18px;background:var(--paper);cursor:pointer;font:600 14px/1.4 var(--font-sans);color:var(--text-strong);text-align:left}
.acc-row:hover{background:var(--fill-100)}
