/** 현장 진단 예약 — 공용 스타일 (glass / depth)
 *  /visit (예약) · /visit/admin (스케줄 관리) · 로그인 화면이 함께 씁니다.
 *
 *  깊이는 세 단계로만 씁니다.
 *    e1  바닥에 놓인 판   — 패널·카드
 *    e2  판 위의 조각     — 슬롯·달력칸·칩·입력칸
 *    e3  떠 있는 것       — 팝업·선택된 요소
 *  흐림(backdrop-filter)은 큰 면에만 겁니다. 작은 칸까지 걸면 느려집니다.
 */

/* ── 색 ─────────────────────────────────────────────────────── */
:root{
  /* 바탕 */
  --bg-base:#E6EDE8;
  --bg-glow-1:rgba(11,107,79,.30);
  --bg-glow-2:rgba(78,146,192,.28);
  --bg-glow-3:rgba(212,178,118,.32);

  /* 유리면 */
  --glass:rgba(255,255,255,.58);
  --glass-strong:rgba(255,255,255,.76);
  --glass-quiet:rgba(255,255,255,.34);
  --glass-sunken:rgba(255,255,255,.30);
  --edge:rgba(255,255,255,.85);
  --edge-soft:rgba(255,255,255,.45);
  --hair:rgba(20,40,32,.10);
  --hair-strong:rgba(20,40,32,.18);
  --sheen:rgba(255,255,255,.72);

  /* 글자 */
  --ink:#0F1A16; --ink-2:#41524B; --ink-3:#5A6B64;   /* 2026-09-17 #6E7F77 → 대비 4.5:1 이상 */

  /* 강조 */
  --accent:#0B6B4F; --accent-hover:#095740; --accent-ink:#FFFFFF;
  --accent-soft:rgba(11,107,79,.13);
  --accent-line:rgba(11,107,79,.40);
  --accent-glow:rgba(11,107,79,.30);

  --signal:#8A5410; --signal-soft:rgba(214,152,52,.18); --signal-line:rgba(138,84,16,.45);
  --danger:#9E3626; --danger-soft:rgba(158,54,38,.13); --danger-line:rgba(158,54,38,.42);

  /* 그림자 — 층마다 다르게 */
  --e1:0 1px 1px rgba(16,32,26,.04), 0 6px 16px -8px rgba(16,32,26,.18), 0 24px 48px -28px rgba(16,32,26,.22);
  --e2:0 1px 2px rgba(16,32,26,.06), 0 3px 8px -4px rgba(16,32,26,.14);
  --e3:0 2px 6px rgba(16,32,26,.10), 0 18px 40px -14px rgba(16,32,26,.34), 0 44px 80px -40px rgba(16,32,26,.30);
  --inner:inset 0 1px 0 var(--sheen);
  --inner-sunken:inset 0 1px 2px rgba(16,32,26,.09), inset 0 0 0 1px rgba(255,255,255,.30);

  --radius:16px; --radius-sm:11px; --radius-xs:8px;
  --blur:blur(22px) saturate(165%);
  --blur-soft:blur(12px) saturate(140%);

  --mono:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;
  --sans:"IBM Plex Sans KR","Apple SD Gothic Neo","Malgun Gothic",system-ui,sans-serif;
}

@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg-base:#070C0A;
    --bg-glow-1:rgba(34,190,138,.42);
    --bg-glow-2:rgba(64,132,196,.36);
    --bg-glow-3:rgba(176,132,66,.28);

    --glass:rgba(255,255,255,.075);
    --glass-strong:rgba(255,255,255,.11);
    --glass-quiet:rgba(255,255,255,.05);
    --glass-sunken:rgba(0,0,0,.30);
    --edge:rgba(255,255,255,.17);
    --edge-soft:rgba(255,255,255,.10);
    --hair:rgba(255,255,255,.09);
    --hair-strong:rgba(255,255,255,.17);
    --sheen:rgba(255,255,255,.10);

    --ink:#E8EFEB; --ink-2:#AEBDB6; --ink-3:#7C8B84;

    --accent:#4FD3A4; --accent-hover:#6FE0B7; --accent-ink:#03130D;
    --accent-soft:rgba(79,211,164,.15);
    --accent-line:rgba(79,211,164,.42);
    --accent-glow:rgba(79,211,164,.34);

    --signal:#E0AC66; --signal-soft:rgba(224,172,102,.14); --signal-line:rgba(224,172,102,.40);
    --danger:#EC907B; --danger-soft:rgba(236,144,123,.14); --danger-line:rgba(236,144,123,.40);

    --e1:0 1px 1px rgba(0,0,0,.34), 0 8px 20px -10px rgba(0,0,0,.62), 0 28px 56px -30px rgba(0,0,0,.70);
    --e2:0 1px 2px rgba(0,0,0,.40), 0 4px 10px -5px rgba(0,0,0,.50);
    --e3:0 3px 8px rgba(0,0,0,.46), 0 22px 48px -16px rgba(0,0,0,.72), 0 52px 96px -44px rgba(0,0,0,.80);
    --inner:inset 0 1px 0 var(--sheen);
    --inner-sunken:inset 0 1px 3px rgba(0,0,0,.46), inset 0 0 0 1px rgba(255,255,255,.05);
  }
}
:root[data-theme="dark"]{
  --bg-base:#080D0B;
  --bg-glow-1:rgba(28,150,110,.24);
  --bg-glow-2:rgba(56,116,168,.20);
  --bg-glow-3:rgba(150,112,60,.16);
  --glass:rgba(255,255,255,.055);
  --glass-strong:rgba(255,255,255,.085);
  --glass-quiet:rgba(255,255,255,.035);
  --glass-sunken:rgba(0,0,0,.26);
  --edge:rgba(255,255,255,.13);
  --edge-soft:rgba(255,255,255,.07);
  --hair:rgba(255,255,255,.09);
  --hair-strong:rgba(255,255,255,.17);
  --sheen:rgba(255,255,255,.10);
  --ink:#E8EFEB; --ink-2:#AEBDB6; --ink-3:#7C8B84;
  --accent:#4FD3A4; --accent-hover:#6FE0B7; --accent-ink:#03130D;
  --accent-soft:rgba(79,211,164,.15);
  --accent-line:rgba(79,211,164,.42);
  --accent-glow:rgba(79,211,164,.34);
  --signal:#E0AC66; --signal-soft:rgba(224,172,102,.14); --signal-line:rgba(224,172,102,.40);
  --danger:#EC907B; --danger-soft:rgba(236,144,123,.14); --danger-line:rgba(236,144,123,.40);
  --e1:0 1px 1px rgba(0,0,0,.34), 0 8px 20px -10px rgba(0,0,0,.62), 0 28px 56px -30px rgba(0,0,0,.70);
  --e2:0 1px 2px rgba(0,0,0,.40), 0 4px 10px -5px rgba(0,0,0,.50);
  --e3:0 3px 8px rgba(0,0,0,.46), 0 22px 48px -16px rgba(0,0,0,.72), 0 52px 96px -44px rgba(0,0,0,.80);
  --inner:inset 0 1px 0 var(--sheen);
  --inner-sunken:inset 0 1px 3px rgba(0,0,0,.46), inset 0 0 0 1px rgba(255,255,255,.05);
}

/* ── 바탕 ───────────────────────────────────────────────────── */
*{box-sizing:border-box}
html{color-scheme:light dark}
body{
  margin:0;
  background:var(--bg-base);
  color:var(--ink);
  font-family:var(--sans);
  font-size:15px;line-height:1.6;
  -webkit-font-smoothing:antialiased;
  word-break:keep-all;
  min-height:100vh;
  position:relative;
  isolation:isolate;
}
/* 유리는 뒤에 무언가 있어야 유리로 보입니다. 고정된 빛무리를 깔아 둡니다. */
body::before{
  content:"";position:fixed;inset:-20vmax;z-index:-1;pointer-events:none;
  background:
    radial-gradient(42vmax 38vmax at 12% 6%,  var(--bg-glow-1) 0%, transparent 62%),
    radial-gradient(46vmax 40vmax at 88% 14%, var(--bg-glow-2) 0%, transparent 64%),
    radial-gradient(38vmax 34vmax at 72% 88%, var(--bg-glow-3) 0%, transparent 60%),
    radial-gradient(50vmax 44vmax at 22% 82%, var(--bg-glow-1) 0%, transparent 66%);
  filter:blur(28px);
}
/* 아주 옅은 결 — 완전히 매끈한 면은 화면 크기가 커질수록 밋밋해집니다 */
body::after{
  content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.035;
  background-image:
    linear-gradient(0deg, transparent 23%, rgba(0,0,0,.5) 24%, transparent 25%),
    linear-gradient(90deg, transparent 23%, rgba(0,0,0,.5) 24%, transparent 25%);
  background-size:56px 56px;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]) body::after{opacity:.05;
    background-image:
      linear-gradient(0deg, transparent 23%, rgba(255,255,255,.5) 24%, transparent 25%),
      linear-gradient(90deg, transparent 23%, rgba(255,255,255,.5) 24%, transparent 25%);}
}
:root[data-theme="dark"] body::after{opacity:.05;
  background-image:
    linear-gradient(0deg, transparent 23%, rgba(255,255,255,.5) 24%, transparent 25%),
    linear-gradient(90deg, transparent 23%, rgba(255,255,255,.5) 24%, transparent 25%);}

button{font-family:inherit;font-size:inherit;color:inherit}
/* 한국어 줄바꿈 — 마지막 줄에 한 낱말만 남는 모양을 줄입니다 */
p,li,dd,.sub,.why,.hint,.lede,.step-title,.card h3,.done h2,.callout{text-wrap:pretty}
/* 손가락 입력 최적화 — 누른 뒤 300ms 지연과 회색 깜빡임을 없앱니다 */
button,a,label,input,textarea,select{touch-action:manipulation}
html{-webkit-tap-highlight-color:transparent}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}
@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}
[hidden]{display:none!important}
.wrap{max-width:1080px;margin:0 auto;padding:30px 20px 72px;overflow-x:hidden}

/* 흐림을 못 쓰는 브라우저에서는 불투명도를 올려 글씨가 묻히지 않게 합니다 */
@supports not ((backdrop-filter:blur(2px)) or (-webkit-backdrop-filter:blur(2px))){
  :root{--glass:rgba(255,255,255,.90);--glass-strong:rgba(255,255,255,.95);
        --glass-quiet:rgba(255,255,255,.78);--glass-sunken:rgba(255,255,255,.86)}
  :root[data-theme="dark"],
  :root:not([data-theme="light"]){--glass:rgba(24,32,28,.94);--glass-strong:rgba(28,38,33,.97);
        --glass-quiet:rgba(22,30,26,.88);--glass-sunken:rgba(12,18,15,.92)}
}

/* ── 머리말 ─────────────────────────────────────────────────── */
.masthead{
  display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  padding:13px 20px;margin-bottom:26px;
  background:var(--glass);
  -webkit-backdrop-filter:var(--blur); backdrop-filter:var(--blur);
  border:1px solid var(--edge);border-radius:var(--radius);
  box-shadow:var(--e1),var(--inner);
  position:sticky;top:12px;z-index:20;
}
.brand{display:flex;align-items:baseline;gap:11px}
.brand a{text-decoration:none}
.brand-mark{font-family:var(--mono);font-weight:600;font-size:11.5px;letter-spacing:.16em;
  color:var(--accent);text-transform:uppercase}
.brand-name{font-size:18px;font-weight:600;letter-spacing:-.015em;color:var(--ink)}
.masthead-meta{font-family:var(--mono);font-size:11px;color:var(--ink-3);letter-spacing:.08em}
.masthead-meta a{color:var(--ink-3)}

.banner{
  background:var(--signal-soft);
  -webkit-backdrop-filter:var(--blur-soft); backdrop-filter:var(--blur-soft);
  border:1px solid var(--signal-line);border-left:3px solid var(--signal);
  border-radius:var(--radius-sm);padding:12px 16px;
  font-size:13px;color:var(--ink-2);margin-bottom:20px;
  box-shadow:var(--e2);
}
.banner b{color:var(--ink)}
.banner.bad{background:var(--danger-soft);border-color:var(--danger-line);border-left-color:var(--danger)}

/* ── 예약 화면 레이아웃 ─────────────────────────────────────── */
.stage{display:grid;gap:24px;grid-template-columns:minmax(0,1fr)}
.stage > *{min-width:0}
@media (min-width:920px){.stage{grid-template-columns:300px minmax(0,1fr);gap:30px;align-items:start}}

.brief{
  display:flex;flex-direction:column;gap:20px;
  background:var(--glass-quiet);
  -webkit-backdrop-filter:var(--blur); backdrop-filter:var(--blur);
  border:1px solid var(--edge-soft);border-radius:var(--radius);
  padding:24px 22px;box-shadow:var(--e1),var(--inner);
}
@media (min-width:920px){.brief{position:sticky;top:96px}}
.brief h1{margin:0;font-size:22px;line-height:1.42;font-weight:600;letter-spacing:-.022em;
  text-wrap:pretty}
.brief p.lede{margin:0;color:var(--ink-2);font-size:13.5px;max-width:38ch;line-height:1.78;
  text-wrap:pretty}
/* 한국어는 띄어쓰기마다 줄이 끊깁니다. 뜻이 붙어 있는 덩어리는 통째로 넘기게 묶습니다. */
.nb{display:inline-block}
@media (min-width:920px){
  /* 사이드바가 좁을 때 제목이 세 줄로 갈라지지 않도록 조금 줄입니다 */
  .brief h1{font-size:21px}
}
@media (min-width:1040px){
  .brief h1{font-size:23px}
}
.eyebrow{font-family:var(--mono);font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--ink-3);margin:0 0 10px}

.agenda{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.agenda li{display:grid;grid-template-columns:24px 1fr;gap:11px;align-items:baseline;
  padding:9px 0;border-bottom:1px solid var(--hair);font-size:13.5px;color:var(--ink-2)}
.agenda li:last-child{border-bottom:0}
.agenda li span:first-child{font-family:var(--mono);font-size:10.5px;font-weight:600;color:var(--accent);
  letter-spacing:.06em}

.factsheet{border-top:1px solid var(--hair);padding-top:16px;display:flex;flex-direction:column;gap:10px;margin:0}
.fact{display:grid;grid-template-columns:70px 1fr;gap:12px;font-size:13px;align-items:baseline}
.fact dt{color:var(--ink-3);font-family:var(--mono);font-size:11px;letter-spacing:.07em}
.fact dd{margin:0;color:var(--ink-2)}
.freetag{display:inline-block;font-family:var(--mono);font-size:11px;letter-spacing:.06em;
  color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-line);
  border-radius:6px;padding:2px 9px}

/* ── 단계 패널 ──────────────────────────────────────────────── */
.panel{
  background:var(--glass);
  -webkit-backdrop-filter:var(--blur); backdrop-filter:var(--blur);
  border:1px solid var(--edge);border-radius:var(--radius);
  box-shadow:var(--e1),var(--inner);
  overflow:hidden;
}
.step{border-bottom:1px solid var(--hair)}
.step:last-child{border-bottom:0}
.step-head{display:flex;align-items:center;gap:11px;padding:16px 20px 0;flex-wrap:wrap}
.step-no{font-family:var(--mono);font-size:10.5px;font-weight:600;color:var(--accent);
  background:var(--accent-soft);border:1px solid var(--accent-line);
  border-radius:6px;padding:3px 7px;letter-spacing:.1em}
.step-title{font-size:13.5px;font-weight:600;letter-spacing:-.005em}
.step-note{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--ink-3);text-align:right}
.step-body{padding:14px 20px 20px;min-width:0;overflow:hidden}

/* ── 보기 전환 ──────────────────────────────────────────────── */
.viewtabs{
  display:flex;margin-left:12px;padding:3px;
  background:var(--glass-sunken);border:1px solid var(--hair);
  border-radius:10px;box-shadow:var(--inner-sunken);
}
.viewtabs button{
  border:0;background:transparent;padding:5px 13px;font-size:12.5px;cursor:pointer;
  color:var(--ink-2);border-radius:7px;transition:background .16s,color .16s,box-shadow .16s;
}
.viewtabs button[aria-pressed="true"]{
  background:var(--glass-strong);color:var(--ink);font-weight:600;
  box-shadow:var(--e2),var(--inner);
}

/* ── 월 달력 ────────────────────────────────────────────────── */
.calbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.calbar .m{font-family:var(--mono);font-size:15.5px;font-weight:600;font-variant-numeric:tabular-nums;
  letter-spacing:.01em}
.calnav{display:flex;gap:7px}
.calnav button{
  border:1px solid var(--hair);background:var(--glass-strong);border-radius:9px;
  width:34px;height:32px;cursor:pointer;color:var(--ink-2);font-size:16px;line-height:1;
  box-shadow:var(--e2),var(--inner);transition:transform .14s,color .14s,border-color .14s;
}
.calnav button:hover:not(:disabled){border-color:var(--accent-line);color:var(--accent);transform:translateY(-1px)}
.calnav button:active:not(:disabled){transform:translateY(0)}
.calnav button:disabled{opacity:.3;cursor:not-allowed;box-shadow:none}

.calhead{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:6px}
.calhead span{text-align:center;font-size:11px;color:var(--ink-3);padding:3px 0;
  font-family:var(--mono);letter-spacing:.06em}
.calhead span.s{color:var(--danger)}

.calgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.cell{
  min-height:66px;border:1px solid var(--hair);border-radius:var(--radius-sm);
  background:var(--glass-strong);
  padding:7px 4px 6px;display:flex;flex-direction:column;align-items:center;gap:3px;
  cursor:pointer;box-shadow:var(--e2),var(--inner);
  transition:transform .14s,box-shadow .14s,border-color .14s,background .14s;
}
.cell.blank{background:transparent;cursor:default;min-height:0;border:0;box-shadow:none}
.cell .n{font-family:var(--mono);font-size:16.5px;font-weight:600;line-height:1.15}
.cell .t{font-family:var(--mono);font-size:10px;color:var(--accent);line-height:1.2;font-weight:600}
.cell .r{font-size:9.5px;color:var(--ink-3);line-height:1.2;text-align:center;
  max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cell:hover:not(:disabled):not(.blank){
  transform:translateY(-2px);border-color:var(--accent-line);
  box-shadow:var(--e1),var(--inner);
}
.cell:disabled{
  background:var(--glass-quiet);border-color:transparent;box-shadow:none;
  opacity:.55;cursor:not-allowed;
}
.cell.sun .n,.cell.hol .n{color:var(--danger)}
.cell.sat .n{color:var(--ink-2)}
.cell.hol .r{color:var(--danger)}
.cell[aria-pressed="true"]{
  background:linear-gradient(160deg,var(--accent-hover),var(--accent));
  border-color:transparent;transform:translateY(-2px);
  box-shadow:var(--e1), 0 0 0 3px var(--accent-glow), inset 0 1px 0 rgba(255,255,255,.28);
}
.cell[aria-pressed="true"] .n,.cell[aria-pressed="true"] .t,.cell[aria-pressed="true"] .r{color:var(--accent-ink)}

.callegend{display:flex;gap:16px;flex-wrap:wrap;margin-top:14px;font-size:11.5px;color:var(--ink-3)}
.callegend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;
  vertical-align:middle;box-shadow:var(--e2)}

/* ── 주간 스트립 ────────────────────────────────────────────── */
.daystrip{
  display:flex;gap:9px;overflow-x:auto;padding:6px 2px 12px;scrollbar-width:thin;
  /* 가로로 끝까지 밀었을 때 브라우저 뒤로가기가 걸리지 않게 합니다 */
  overscroll-behavior-x:contain;
  scroll-snap-type:x proximity;
}
.daystrip .day{scroll-snap-align:center}
.day{
  flex:0 0 auto;width:78px;border:1px solid var(--hair);border-radius:var(--radius-sm);
  background:var(--glass-strong);padding:10px 6px;cursor:pointer;text-align:center;
  display:flex;flex-direction:column;gap:3px;box-shadow:var(--e2),var(--inner);
  transition:transform .14s,box-shadow .14s,border-color .14s,background .14s;
}
.day:hover:not(:disabled){transform:translateY(-2px);border-color:var(--accent-line);box-shadow:var(--e1),var(--inner)}
.day .dow{font-size:11px;color:var(--ink-3);font-family:var(--mono);letter-spacing:.06em}
.day .dnum{font-family:var(--mono);font-size:20px;font-weight:600;line-height:1.1}
.day .cnt{font-family:var(--mono);font-size:10.5px;color:var(--accent);white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;font-weight:600}
.day:disabled{background:var(--glass-quiet);border-color:transparent;box-shadow:none;opacity:.55;cursor:not-allowed}
.day:disabled .cnt{color:var(--ink-3);font-weight:400}
.day.hol:disabled .cnt{color:var(--danger)}
.day[aria-pressed="true"]{
  background:linear-gradient(160deg,var(--accent-hover),var(--accent));
  border-color:transparent;transform:translateY(-2px);
  box-shadow:var(--e1), 0 0 0 3px var(--accent-glow), inset 0 1px 0 rgba(255,255,255,.28);
}
.day[aria-pressed="true"] .dow,.day[aria-pressed="true"] .dnum,.day[aria-pressed="true"] .cnt{color:var(--accent-ink)}
.day.sat .dnum{color:var(--ink-2)}
.day.sun .dnum,.day.hol .dnum{color:var(--danger)}
.day[aria-pressed="true"].sun .dnum,.day[aria-pressed="true"].sat .dnum{color:var(--accent-ink)}

/* ── 시간 슬롯 ──────────────────────────────────────────────── */
.slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:9px}
.slot{
  font-family:var(--mono);font-size:13.5px;font-variant-numeric:tabular-nums;font-weight:500;
  background:var(--glass-strong);border:1px solid var(--hair);border-radius:var(--radius-sm);
  padding:11px 4px;cursor:pointer;box-shadow:var(--e2),var(--inner);
  transition:transform .14s,box-shadow .14s,border-color .14s,color .14s,background .14s;
}
.slot:hover{transform:translateY(-2px);border-color:var(--accent-line);color:var(--accent);
  box-shadow:var(--e1),var(--inner)}
.slot[aria-pressed="true"]{
  background:linear-gradient(160deg,var(--accent-hover),var(--accent));
  border-color:transparent;color:var(--accent-ink);font-weight:600;transform:translateY(-2px);
  box-shadow:var(--e1), 0 0 0 3px var(--accent-glow), inset 0 1px 0 rgba(255,255,255,.28);
}
.empty{font-size:13.5px;color:var(--ink-3);padding:16px 0;margin:0}

/* ── 폼 ─────────────────────────────────────────────────────── */
.form{display:grid;gap:14px;grid-template-columns:1fr}
@media (min-width:640px){.form{grid-template-columns:1fr 1fr}}
.field{display:flex;flex-direction:column;gap:6px;min-width:0}
.field.full{grid-column:1/-1}
.field label{font-size:12px;color:var(--ink-2);font-weight:600;letter-spacing:-.005em}
.field label .req{color:var(--danger);margin-left:3px}
.field label .sub{display:block;font-weight:400;font-size:11.5px;color:var(--ink-3);margin-top:3px;line-height:1.5}
.field input,.field textarea,.field select{
  font-family:inherit;font-size:14px;color:var(--ink);
  background:var(--glass-sunken);
  border:1px solid var(--hair);border-radius:var(--radius-sm);
  padding:11px 13px;width:100%;
  box-shadow:var(--inner-sunken);
  transition:border-color .14s,box-shadow .14s;
}
.field textarea{resize:vertical;min-height:78px;line-height:1.6}
.field input::placeholder,.field textarea::placeholder{color:var(--ink-3)}
.field input:focus,.field textarea:focus,.field select:focus{
  border-color:var(--accent-line);outline:none;
  box-shadow:var(--inner-sunken), 0 0 0 3px var(--accent-glow);
}

.divider{grid-column:1/-1;display:flex;align-items:center;gap:12px;margin:8px 0 0}
.divider span{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--ink-3);white-space:nowrap}
.divider::after{content:"";flex:1;height:1px;
  background:linear-gradient(90deg,var(--hair-strong),transparent)}
.divider .why{font-family:var(--sans);font-size:12px;letter-spacing:0;text-transform:none;
  color:var(--ink-3);white-space:normal}

.choices{display:flex;flex-wrap:wrap;gap:9px}
.choices label{
  display:inline-flex;align-items:center;gap:8px;font-size:13.5px;color:var(--ink);font-weight:500;
  background:var(--glass-strong);border:1px solid var(--hair);border-radius:var(--radius-sm);
  padding:9px 14px;cursor:pointer;box-shadow:var(--e2),var(--inner);
  transition:transform .14s,border-color .14s,box-shadow .14s;
}
.choices label:hover{transform:translateY(-1px);border-color:var(--accent-line)}
.choices input{width:auto;padding:0;accent-color:var(--accent)}
.choices label:has(input:checked){
  border-color:transparent;background:var(--accent-soft);color:var(--accent);
  box-shadow:var(--e2), 0 0 0 2px var(--accent-glow), var(--inner);
}

.summary{
  grid-column:1/-1;
  background:var(--accent-soft);
  -webkit-backdrop-filter:var(--blur-soft); backdrop-filter:var(--blur-soft);
  border:1px solid var(--accent-line);border-radius:var(--radius-sm);padding:13px 15px;
  font-family:var(--mono);font-size:13px;color:var(--ink-2);display:flex;gap:12px;flex-wrap:wrap;
  font-variant-numeric:tabular-nums;box-shadow:var(--e2),var(--inner);
}
.summary b{color:var(--ink);font-weight:600}

/* ── 단추 ───────────────────────────────────────────────────── */
.actions{grid-column:1/-1;display:flex;gap:11px;align-items:center;flex-wrap:wrap;margin-top:4px}
.btn{
  border:1px solid transparent;
  background:linear-gradient(160deg,var(--accent-hover),var(--accent));
  color:var(--accent-ink);
  border-radius:var(--radius-sm);padding:11px 22px;font-weight:600;font-size:14px;cursor:pointer;
  text-decoration:none;display:inline-block;
  box-shadow:var(--e2), 0 8px 20px -10px var(--accent-glow), inset 0 1px 0 rgba(255,255,255,.28);
  transition:transform .14s,box-shadow .14s,filter .14s;
}
.btn:hover{transform:translateY(-2px);filter:brightness(1.06);
  box-shadow:var(--e1), 0 14px 30px -12px var(--accent-glow), inset 0 1px 0 rgba(255,255,255,.28)}
.btn:active{transform:translateY(0)}
.btn:disabled{opacity:.42;cursor:not-allowed;transform:none;box-shadow:none;filter:none}
.btn.ghost{
  background:var(--glass-strong);color:var(--ink);border-color:var(--hair-strong);
  box-shadow:var(--e2),var(--inner);
}
.btn.ghost:hover{border-color:var(--accent-line);color:var(--accent);filter:none}
.btn.sm{padding:7px 14px;font-size:12.5px;border-radius:var(--radius-xs)}
.hint{font-size:12.5px;color:var(--ink-3)}
.err{font-size:13px;color:var(--danger);font-weight:500}

/* ── 완료 화면 ──────────────────────────────────────────────── */
.done{padding:34px 26px;display:flex;flex-direction:column;gap:18px;align-items:flex-start}
.done .tick{font-family:var(--mono);font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-line);
  padding:4px 11px;border-radius:6px}
.done h2{margin:0;font-size:23px;font-weight:600;letter-spacing:-.02em}
.done .when{font-family:var(--mono);font-size:18px;font-variant-numeric:tabular-nums;color:var(--ink);
  font-weight:600}
.done p{margin:0;color:var(--ink-2);font-size:14px;max-width:54ch;line-height:1.72}
.callout{
  background:var(--accent-soft);
  -webkit-backdrop-filter:var(--blur-soft); backdrop-filter:var(--blur-soft);
  border:1px solid var(--accent-line);border-radius:var(--radius-sm);
  padding:15px 17px;font-size:14px;color:var(--ink);max-width:54ch;line-height:1.7;
  box-shadow:var(--e2),var(--inner);
}
.callout b{color:var(--accent)}
.code{font-family:var(--mono);font-size:13px;letter-spacing:.08em;color:var(--ink-2)}
.done-links{display:flex;gap:11px;flex-wrap:wrap;align-items:center}
a.linkbtn,button.linkbtn{
  border:1px solid var(--hair-strong);border-radius:var(--radius-sm);padding:10px 17px;
  font-size:13.5px;text-decoration:none;color:var(--ink);
  background:var(--glass-strong);cursor:pointer;
  box-shadow:var(--e2),var(--inner);
  transition:transform .14s,border-color .14s,color .14s;
}
a.linkbtn:hover,button.linkbtn:hover{transform:translateY(-2px);border-color:var(--accent-line);color:var(--accent)}
#draftBox{
  width:100%;min-height:200px;font-family:var(--mono);font-size:12.5px;line-height:1.75;
  background:var(--glass-sunken);border:1px solid var(--hair);border-radius:var(--radius-sm);
  padding:14px;color:var(--ink);box-shadow:var(--inner-sunken);
}

/* ── 회수 안내 팝업 ─────────────────────────────────────────── */
.linkish{background:none;border:0;padding:0;font:inherit;font-size:12.5px;color:var(--accent);
  text-decoration:underline;text-underline-offset:3px;cursor:pointer;font-weight:500}
.linkish:hover{color:var(--accent-hover)}
dialog#retDlg{
  border:1px solid var(--edge);border-radius:var(--radius);padding:0;max-width:450px;
  width:calc(100% - 32px);
  background:var(--glass-strong);
  -webkit-backdrop-filter:var(--blur); backdrop-filter:var(--blur);
  color:var(--ink);box-shadow:var(--e3),var(--inner);
}
dialog#retDlg::backdrop{
  background:rgba(8,16,13,.42);
  -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px);
}
.dlg-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:22px 22px 0}
.dlg-head h3{margin:0;font-size:17.5px;font-weight:600;letter-spacing:-.015em}
.dlg-head h3 .sub{display:block;font-weight:400;font-size:12.5px;color:var(--ink-3);margin-top:5px;line-height:1.6}
.dlg-x{border:0;background:transparent;color:var(--ink-3);font-size:21px;line-height:1;cursor:pointer;padding:2px 5px;border-radius:6px}
.dlg-x:hover{color:var(--ink);background:var(--glass-sunken)}
.dlg-body{padding:16px 22px 22px;display:flex;flex-direction:column;gap:16px}
.retbox{
  background:var(--glass-sunken);border:1px solid var(--hair);border-radius:var(--radius-sm);
  padding:15px 17px;display:flex;flex-direction:column;gap:9px;box-shadow:var(--inner-sunken);
}
.retrow{display:grid;grid-template-columns:62px 1fr;gap:12px;font-size:13.5px;align-items:baseline}
.retrow dt{color:var(--ink-3);font-family:var(--mono);font-size:11px;letter-spacing:.07em}
.retrow dd{margin:0;color:var(--ink)}
.retrow dd.addr{font-weight:600;line-height:1.55}
.retrow dd .zip{font-family:var(--mono);color:var(--ink-2);font-size:12.5px;font-weight:400}
.retsteps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:0}
.retsteps li{display:grid;grid-template-columns:22px 1fr;gap:11px;font-size:13.5px;color:var(--ink-2);
  padding:8px 0;border-bottom:1px solid var(--hair)}
.retsteps li:last-child{border-bottom:0}
.retsteps li span:first-child{font-family:var(--mono);font-size:10.5px;font-weight:600;color:var(--accent);letter-spacing:.06em}
.dlg-actions{display:flex;gap:11px;flex-wrap:wrap;align-items:center}

/* ── 스케줄 관리 화면 ───────────────────────────────────────── */
.admin-grid{display:grid;gap:22px;grid-template-columns:1fr}
.admin-grid > *{min-width:0}
@media (min-width:920px){.admin-grid{grid-template-columns:minmax(0,1fr) 350px;align-items:start}}
.card{
  background:var(--glass);
  -webkit-backdrop-filter:var(--blur); backdrop-filter:var(--blur);
  border:1px solid var(--edge);border-radius:var(--radius);
  padding:22px;display:flex;flex-direction:column;gap:16px;margin-bottom:22px;
  box-shadow:var(--e1),var(--inner);
}
.card h3{margin:0;font-size:15.5px;font-weight:600;letter-spacing:-.015em}
.card h3 .sub{display:block;font-weight:400;font-size:12.5px;color:var(--ink-3);margin-top:5px;line-height:1.6}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
.dows{display:flex;gap:7px;flex-wrap:wrap}
.dow-chip{
  font-family:var(--mono);font-size:13px;font-weight:600;width:40px;padding:9px 0;text-align:center;
  border:1px solid var(--hair);border-radius:10px;background:var(--glass-strong);cursor:pointer;
  box-shadow:var(--e2),var(--inner);transition:transform .14s,box-shadow .14s,background .14s,color .14s;
}
.dow-chip:hover{transform:translateY(-1px)}
.dow-chip[aria-pressed="true"]{
  background:linear-gradient(160deg,var(--accent-hover),var(--accent));
  border-color:transparent;color:var(--accent-ink);
  box-shadow:var(--e2), 0 0 0 2px var(--accent-glow), inset 0 1px 0 rgba(255,255,255,.28);
}
.chiplist{display:flex;flex-wrap:wrap;gap:8px}
.chip{
  display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:12px;
  background:var(--glass-strong);border:1px solid var(--hair);border-radius:9px;padding:6px 10px;
  box-shadow:var(--e2),var(--inner);
}
.chip button{border:0;background:transparent;color:var(--danger);cursor:pointer;font-size:15px;line-height:1;padding:0 2px}
.chip .memo{font-family:var(--sans);color:var(--ink-3)}
.holgrid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(152px,1fr));gap:5px 14px;
  font-size:12.5px;color:var(--ink-2);max-height:180px;overflow-y:auto;padding:12px 14px;
  background:var(--glass-sunken);border:1px solid var(--hair);border-radius:var(--radius-sm);
  box-shadow:var(--inner-sunken);
}
.holgrid b{font-family:var(--mono);color:var(--ink);font-weight:600;margin-right:7px}
.preview{display:flex;flex-direction:column;gap:0}
.pv-row{display:flex;justify-content:space-between;gap:12px;font-size:13.5px;
  padding:9px 0;border-bottom:1px solid var(--hair)}
.pv-row:last-child{border-bottom:0}
.pv-row .k{color:var(--ink-2)}
.pv-row .v{font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:600;color:var(--ink)}
.linkout{
  width:100%;font-family:var(--mono);font-size:12px;
  background:var(--glass-sunken);border:1px solid var(--hair);border-radius:var(--radius-sm);
  padding:12px;min-height:80px;color:var(--ink);resize:vertical;box-shadow:var(--inner-sunken);
}
.statline{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:22px}
.stat{
  display:flex;flex-direction:column;gap:3px;flex:1 1 160px;
  background:var(--glass);
  -webkit-backdrop-filter:var(--blur); backdrop-filter:var(--blur);
  border:1px solid var(--edge);border-radius:var(--radius-sm);padding:14px 16px;
  box-shadow:var(--e1),var(--inner);
}
.stat .k{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}
.stat .v{font-family:var(--mono);font-size:26px;font-weight:600;font-variant-numeric:tabular-nums;
  letter-spacing:-.02em;line-height:1.2}

/* ── 로그인 ─────────────────────────────────────────────────── */
.login-wrap{max-width:400px;margin:0 auto;padding:13vh 20px 60px}
.login-card{
  background:var(--glass);
  -webkit-backdrop-filter:var(--blur); backdrop-filter:var(--blur);
  border:1px solid var(--edge);border-radius:20px;
  box-shadow:var(--e3),var(--inner);
  padding:32px 28px;display:flex;flex-direction:column;gap:18px;
}
.login-card h1{margin:0;font-size:20px;font-weight:600;letter-spacing:-.02em}
.login-card h1 .sub{display:block;font-weight:400;font-size:13px;color:var(--ink-3);margin-top:7px;line-height:1.65}
.login-card form{display:flex;flex-direction:column;gap:14px}
.login-card .btn{width:100%;text-align:center}
.login-card a{color:var(--accent)}

/* ── 꼬리말 ─────────────────────────────────────────────────── */
.foot{
  margin-top:40px;padding:14px 20px;
  background:var(--glass-quiet);
  -webkit-backdrop-filter:var(--blur-soft); backdrop-filter:var(--blur-soft);
  border:1px solid var(--edge-soft);border-radius:var(--radius-sm);
  display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;
  font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--ink-3);
  box-shadow:var(--e2);
}
.foot a{color:var(--ink-3)}


/* ═══════════════════════════════════════════════════════════════
   인터랙션
   ═══════════════════════════════════════════════════════════════ */

/* 끝난 단계는 번호가 채워집니다 */
.step-no.ok{
  background:linear-gradient(160deg,var(--accent-hover),var(--accent));
  color:var(--accent-ink);border-color:transparent;
  box-shadow:0 0 0 2px var(--accent-glow), inset 0 1px 0 rgba(255,255,255,.28);
}

/* 잘못 입력한 칸은 그 자리에서 알려 줍니다 */
.field.bad input,.field.bad textarea{
  border-color:var(--danger-line);
  box-shadow:var(--inner-sunken), 0 0 0 3px var(--danger-soft);
}
.field .fieldmsg{font-size:11.5px;color:var(--danger);font-weight:500;margin-top:-1px}
.choices.bad{
  border-radius:var(--radius-sm);
  box-shadow:0 0 0 3px var(--danger-soft);
}

/* 보내는 중 */
.spin{
  display:inline-block;width:13px;height:13px;border-radius:50%;
  border:2px solid rgba(255,255,255,.32);border-top-color:currentColor;
  animation:spin .7s linear infinite;vertical-align:-2px;margin-right:8px;
}
@keyframes spin{to{transform:rotate(360deg)}}

/* 짧은 알림 */
.toastwrap{
  position:fixed;left:50%;transform:translateX(-50%);z-index:60;
  bottom:calc(22px + env(safe-area-inset-bottom,0px));
  display:flex;flex-direction:column;gap:9px;align-items:center;pointer-events:none;
  width:max-content;max-width:calc(100vw - 32px);
}
.toastwrap.lifted{bottom:calc(96px + env(safe-area-inset-bottom,0px))}
.toast{
  background:var(--glass-strong);
  -webkit-backdrop-filter:var(--blur); backdrop-filter:var(--blur);
  border:1px solid var(--edge);border-radius:13px;
  padding:12px 20px;font-size:13.5px;font-weight:500;color:var(--ink);
  box-shadow:var(--e3),var(--inner);
  animation:toast-in .22s cubic-bezier(.2,.8,.3,1) both;
}
.toast.ok{border-color:var(--accent-line)}
.toast.ok::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;
  background:var(--accent);margin-right:9px;vertical-align:1px;
  box-shadow:0 0 0 3px var(--accent-glow)}
.toast.out{animation:toast-out .2s ease-in both}
@keyframes toast-in{from{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:none}}
@keyframes toast-out{to{opacity:0;transform:translateY(6px) scale(.98)}}

/* 시간을 고르면 아래에 붙는 확인 막대 — 좁은 화면에서만 */
.mobilebar{
  position:fixed;left:0;right:0;bottom:0;z-index:50;display:none;
  align-items:center;gap:12px;
  padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px));
  background:var(--glass-strong);
  -webkit-backdrop-filter:var(--blur); backdrop-filter:var(--blur);
  border-top:1px solid var(--edge);
  box-shadow:0 -8px 28px -14px rgba(16,32,26,.35);
  animation:bar-in .24s cubic-bezier(.2,.8,.3,1) both;
}
@keyframes bar-in{from{transform:translateY(100%)}to{transform:none}}
.mobilebar .mb-when{
  flex:1;min-width:0;font-family:var(--mono);font-size:13px;font-weight:600;
  color:var(--ink);font-variant-numeric:tabular-nums;line-height:1.35;
}
.mobilebar .mb-when small{display:block;font-family:var(--sans);font-weight:400;
  font-size:11.5px;color:var(--ink-3);letter-spacing:0}
.mobilebar .btn{padding:11px 18px;font-size:13.5px;white-space:nowrap}

/* 달력에서 화살표 키로 옮겨 다닐 때 지금 칸이 어디인지 */
.cell:focus-visible,.day:focus-visible,.slot:focus-visible{
  outline:none;
  box-shadow:var(--e1), 0 0 0 3px var(--accent-glow), var(--inner);
  border-color:var(--accent-line);
}

/* 투명 효과를 줄이도록 설정한 기기에서는 불투명하게 */
@media (prefers-reduced-transparency: reduce){
  :root{--glass:rgba(255,255,255,.92);--glass-strong:rgba(255,255,255,.96);
        --glass-quiet:rgba(255,255,255,.84);--glass-sunken:rgba(255,255,255,.88)}
  :root[data-theme="dark"],:root:not([data-theme="light"]){
        --glass:rgba(24,32,28,.94);--glass-strong:rgba(30,40,35,.97);
        --glass-quiet:rgba(20,28,24,.90);--glass-sunken:rgba(10,16,13,.94)}
  body::before{opacity:.5}
}


/* ═══════════════════════════════════════════════════════════════
   반응형
   ═══════════════════════════════════════════════════════════════ */

/* 태블릿 — 두 칸 배치가 풀리기 직전 */
@media (max-width:919px){
  .wrap{padding:20px 16px 64px}
  .masthead{top:8px;padding:11px 16px}
  .brief{padding:20px 18px;gap:18px}
  .brief h1{font-size:23px}
  .statline{gap:10px}
  .stat{flex:1 1 calc(50% - 5px);padding:12px 14px}
  .stat .v{font-size:23px}
}

/* 휴대폰 */
@media (max-width:640px){
  .wrap{padding:16px 13px 28px}
  .masthead{
    padding:10px 14px;border-radius:14px;top:6px;
    /* 좁은 화면에서는 시간대 표시가 자리만 차지합니다 */
  }
  .masthead-meta{font-size:10px;letter-spacing:.06em}
  .brand-name{font-size:16px}
  .brand-mark{font-size:10.5px}

  .brief h1{font-size:21px;line-height:1.35}
  .brief p.lede{font-size:13px}

  .step-head{padding:14px 15px 0;gap:9px}
  .step-body{padding:12px 15px 16px}
  .step-title{font-size:13px}
  .step-note{font-size:10.5px;width:100%;margin-left:0;text-align:left;
    order:3;color:var(--ink-3)}
  .viewtabs{margin-left:auto}
  .viewtabs button{padding:5px 11px;font-size:12px}

  /* 달력 — 7칸이 좁아지므로 군더더기를 뺍니다 */
  .calbar{margin-bottom:10px}
  .calbar .m{font-size:14.5px}
  .calnav button{width:36px;height:34px}
  .calhead{gap:4px}
  .calhead span{font-size:10px}
  .calgrid{gap:4px}
  .cell{min-height:54px;padding:6px 2px 5px;border-radius:9px;gap:1px}
  .cell .n{font-size:15px}
  .cell .t{font-size:9.5px}
  .cell .r{display:none}          /* 이유는 길게 누르면 나오는 설명으로 남깁니다 */
  .callegend{gap:10px;font-size:11px;margin-top:12px}

  .daystrip{gap:7px}
  .day{width:68px;padding:9px 4px}
  .day .dnum{font-size:18px}

  .slots{grid-template-columns:repeat(auto-fill,minmax(102px,1fr));gap:7px}
  .slot{font-size:12.5px;padding:12px 2px}

  .form{gap:12px}
  .field input,.field textarea{font-size:16px;padding:12px 13px}  /* 16px 미만이면 iOS가 화면을 확대합니다 */
  .field textarea{min-height:88px}
  .choices label{font-size:13px;padding:10px 13px}

  .actions .btn{width:100%;text-align:center}
  .actions .btn.sm{width:auto}
  .actions .hint,.actions .err{width:100%}

  .done{padding:26px 18px;gap:14px}
  .done h2{font-size:19px}
  .done .when{font-size:16px}
  .done-links{gap:8px;width:100%}
  .done-links .btn,.done-links a.linkbtn,.done-links button.linkbtn{
    flex:1 1 calc(50% - 4px);text-align:center;padding:11px 10px;font-size:13px}
  .done-links .btn{flex-basis:100%}

  .card{padding:17px;gap:14px;border-radius:14px}
  .row2,.row3{grid-template-columns:1fr;gap:11px}
  .stat{flex:1 1 100%}
  .holgrid{max-height:150px}

  dialog#retDlg{border-radius:16px}
  .dlg-head{padding:20px 18px 0}
  .dlg-body{padding:14px 18px 18px}
  .retrow{grid-template-columns:56px 1fr;gap:10px;font-size:13px}

  .foot{flex-direction:column;gap:6px;padding:13px 16px;font-size:10.5px}

  /* 아래 확인 막대가 뜨면 그만큼 자리를 비웁니다 */
  body.has-bar .wrap{padding-bottom:100px}
  .mobilebar{display:flex}
}

/* 아주 좁은 화면 */
@media (max-width:380px){
  .cell{min-height:48px}
  .cell .n{font-size:14px}
  .cell .t{font-size:9px}
  .slots{grid-template-columns:1fr 1fr}
  .brief h1{font-size:20px}
}

/* 가로로 눕힌 휴대폰 — 세로 여백을 줄입니다 */
@media (max-height:520px) and (orientation:landscape){
  .wrap{padding-top:12px}
  .masthead{position:static}
  .brief{position:static}
  .login-wrap{padding-top:5vh}
}

/* 마우스가 없는 기기에서는 hover로 뜨는 효과를 끕니다 */
@media (hover:none){
  .cell:hover:not(:disabled):not(.blank),
  .day:hover:not(:disabled),
  .slot:hover,
  .choices label:hover,
  .btn:hover,
  a.linkbtn:hover,button.linkbtn:hover,
  .dow-chip:hover{transform:none}
  .cell:active:not(:disabled):not(.blank),
  .day:active:not(:disabled),
  .slot:active{transform:scale(.97)}
}

/* ── 프로모션 신청에서 넘어온 경우 (2026-09-17) ──
   /promo/consulting 에서 신청한 뒤 들어오면 위쪽에 이어지는 단계를 보여 주고,
   이미 받은 회사·담당자·연락처는 한 줄 요약으로 접습니다. */
.handoff{
  display:grid;gap:12px;margin-bottom:20px;padding:16px 18px;
  border-radius:var(--radius);border:1px solid var(--accent-line);border-left:3px solid var(--accent);
  background:var(--accent-soft);box-shadow:var(--e2);
  -webkit-backdrop-filter:var(--blur-soft);backdrop-filter:var(--blur-soft);
  animation:hoIn .35s ease both;
}
.handoff[hidden]{display:none}
.handoff .ho-t{font-size:15px;font-weight:700;color:var(--ink);line-height:1.45}
.handoff .ho-s{font-size:13px;color:var(--ink-2);line-height:1.6}
.ho-steps{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0;padding:0}
.ho-steps li{display:inline-flex;flex-direction:row;align-items:center;gap:6px;white-space:nowrap;padding:5px 10px;border-radius:999px;
  font-family:var(--mono);font-size:11px;font-weight:600;color:var(--ink-3);
  border:1px solid var(--hair-strong);background:var(--glass-quiet)}
.ho-steps li.done{color:var(--accent);border-color:var(--accent-line)}
.ho-steps li.done::before{content:"✓"}
.ho-steps li.now{color:var(--accent-ink);background:var(--accent);border-color:var(--accent)}
@keyframes hoIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}

.knownbox{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;
  grid-column:1/-1;padding:12px 14px;border-radius:var(--radius-sm);
  border:1px solid var(--hair-strong);background:var(--glass-sunken);box-shadow:var(--inner-sunken)}
.knownbox[hidden]{display:none}
.knownbox .kb-l{font-size:13px;color:var(--ink-2);line-height:1.55;min-width:0}
.knownbox .kb-l b{display:block;font-size:14px;color:var(--ink)}
.knownbox .kb-l span{overflow-wrap:anywhere}
.form.is-known .known-f{display:none}
@media (prefers-reduced-motion:reduce){.handoff{animation:none}}
