:root {
  color-scheme: light;
  --bg: #f5f5f7;
  --surface: rgba(255,255,255,.92);
  --surface-solid: #fff;
  --surface-soft: #f9f9fb;
  --ink: #1d1d1f;
  --muted: #6e6e73;
  --faint: #8e8e93;
  --line: rgba(60,60,67,.14);
  --line-strong: rgba(60,60,67,.22);
  --accent: #0071e3;
  --accent-soft: #eaf4ff;
  --green: #248a3d;
  --amber: #b25000;
  --red: #d70015;
  --shadow: 0 16px 42px rgba(0,0,0,.07), 0 2px 8px rgba(0,0,0,.035);
  --sidebar: 252px;
  --radius: 24px;
  font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", "Apple SD Gothic Neo", "Pretendard", "Noto Sans KR", sans-serif;
}
* { box-sizing: border-box; }
html { min-width:320px; min-height:100%; overflow-y:scroll; scrollbar-gutter:stable; background:var(--bg); -webkit-text-size-adjust:100%; }
body { margin:0; min-height:100vh; overflow-x:hidden; color:var(--ink); background:var(--bg); font-size:15px; line-height:1.5; letter-spacing:-.015em; }
body::before { content:""; position:fixed; inset:0; pointer-events:none; background:radial-gradient(circle at 80% -10%,rgba(0,113,227,.09),transparent 34%),radial-gradient(circle at 12% 82%,rgba(90,200,250,.07),transparent 28%); }
a { color: var(--accent); text-decoration: none; }
button, input, select, textarea { font: inherit; letter-spacing: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
svg { display:block; width:20px; height:20px; max-width:100%; max-height:100%; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }

.v4-app { position:relative; z-index:1; min-height:100vh; }
.v4-sidebar { position:fixed; inset:0 auto 0 0; z-index:50; width:var(--sidebar); display:flex; flex-direction:column; padding:22px 14px 16px; border-right:1px solid var(--line); background:rgba(247,247,249,.82); backdrop-filter:saturate(180%) blur(30px); }
.v4-brand { min-width:0; display:flex; align-items:center; gap:11px; padding:2px 7px 20px; color:var(--ink); }
.v4-brand-mark { flex:0 0 auto; width:38px; height:38px; overflow:hidden; display:grid; place-items:center; border-radius:12px; background:#111; box-shadow:0 6px 18px rgba(0,0,0,.13); }
.v4-brand-mark img { display:block; width:100%; height:100%; object-fit:contain; }
.v4-brand strong,.v4-brand small { display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.v4-brand strong { font-size:15px; line-height:1.2; letter-spacing:-.025em; }
.v4-brand small { margin-top:3px; color:var(--muted); font-size:11px; letter-spacing:.02em; }
.v4-nav { min-height:0; flex:1; overflow:auto; overscroll-behavior:contain; scrollbar-width:none; padding:2px 0 12px; }
.v4-nav::-webkit-scrollbar { display:none; }
.v4-nav section + section { margin-top:18px; }
.v4-nav h2 { margin:0 10px 7px; color:var(--faint); font-size:10px; font-weight:700; letter-spacing:.09em; text-transform:uppercase; }
.v4-nav-link { min-width:0; display:flex; align-items:center; gap:11px; min-height:42px; margin:2px 0; padding:0 11px; border-radius:12px; color:#4c4c50; font-size:13.5px; font-weight:570; transition:background .2s ease,color .2s ease,transform .2s ease; }
.v4-nav-link svg { flex:0 0 auto; width:18px; height:18px; }
.v4-nav-link:hover { background:rgba(118,118,128,.09); color:var(--ink); }
.v4-nav-link:active { transform:scale(.98); }
.v4-nav-link.active { background:var(--surface-solid); color:var(--accent); box-shadow:0 4px 14px rgba(0,0,0,.055); }
.v4-account { flex:0 0 auto; display:grid; grid-template-columns:36px minmax(0,1fr) 34px; align-items:center; gap:9px; padding:10px 9px; border:1px solid var(--line); border-radius:16px; background:rgba(255,255,255,.7); }
.v4-account strong,.v4-account small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.v4-account strong { font-size:12.5px; }
.v4-account small { color:var(--muted); font-size:10.5px; }
.v4-account form { margin:0; }
.v4-avatar { flex:0 0 auto; width:34px; height:34px; display:grid; place-items:center; border-radius:50%; background:#1d1d1f; color:#fff; font-size:13px; font-weight:650; }
.v4-icon-button { width:34px; height:34px; display:grid; place-items:center; padding:0; border:0; border-radius:50%; background:transparent; color:var(--muted); cursor:pointer; }
.v4-icon-button:hover { background:rgba(118,118,128,.11); color:var(--ink); }
.v4-icon-button svg { width:17px; height:17px; }
.command-action-icon svg { width:20px; height:20px; max-width:20px; max-height:20px; }

.v4-main { min-height:100vh; margin-left:var(--sidebar); min-width:0; padding:30px clamp(24px,4vw,58px) 64px; }
.v4-content-head { max-width:1440px; margin:0 auto 24px; min-height:64px; display:flex; align-items:center; justify-content:space-between; gap:20px; }
.v4-content-head > div:first-child > span { color:var(--accent); font-size:10px; font-weight:750; letter-spacing:.12em; }
.v4-content-head h1 { margin:4px 0 0; font-size:clamp(26px,3vw,38px); line-height:1.1; letter-spacing:-.055em; }
.v4-user-pill { display:flex; align-items:center; gap:9px; padding:6px 12px 6px 6px; border:1px solid var(--line); border-radius:999px; background:rgba(255,255,255,.72); }
.v4-user-pill strong,.v4-user-pill small { display:block; line-height:1.25; }
.v4-user-pill strong { font-size:12px; }
.v4-user-pill small { color:var(--muted); font-size:10px; }
.layout,.v4-content { width:100%; max-width:1440px; min-width:0; margin:0 auto; }
.grid,.command-center { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:18px; min-width:0; }
.span-12 { grid-column:span 12; }.span-9{grid-column:span 9}.span-8{grid-column:span 8}.span-7{grid-column:span 7}.span-6{grid-column:span 6}.span-5{grid-column:span 5}.span-4{grid-column:span 4}.span-3{grid-column:span 3}

.card,.command-hero,.command-section { min-width:0; padding:clamp(20px,2.4vw,30px); border:1px solid rgba(255,255,255,.9); border-radius:var(--radius); background:var(--surface); box-shadow:var(--shadow); }
.card h2,.command-section h2 { margin:0 0 18px; font-size:19px; line-height:1.25; letter-spacing:-.035em; }
.card h3 { margin:20px 0 10px; font-size:15px; }
.card > :first-child { margin-top:0; }
.card > :last-child { margin-bottom:0; }
.muted { color:var(--muted); }
.mono { font-family:"SFMono-Regular",Consolas,monospace; font-size:.88em; overflow-wrap:anywhere; }
.row { min-width:0; display:flex; align-items:flex-start; justify-content:space-between; gap:18px; padding:14px 0; border-bottom:1px solid var(--line); }
.row:last-child { border-bottom:0; }
.row > span { color:var(--muted); }
.row > strong { min-width:0; text-align:right; overflow-wrap:anywhere; }

.command-hero { grid-column:span 12; overflow:hidden; position:relative; padding:clamp(26px,4vw,46px); color:#fff; border:0; background:linear-gradient(135deg,#111214 0%,#20252d 58%,#073b70 130%); box-shadow:0 24px 55px rgba(0,0,0,.16); }
.command-hero::after { content:""; position:absolute; width:420px; height:420px; right:-120px; top:-210px; border-radius:50%; background:radial-gradient(circle,rgba(82,172,255,.46),transparent 68%); }
.command-hero-copy,.command-live,.command-metrics { position:relative; z-index:1; }
.command-kicker { color:#75baff; font-size:10px; font-weight:750; letter-spacing:.15em; }
.command-hero h2 { margin:8px 0 7px; font-size:clamp(29px,4vw,48px); line-height:1.05; letter-spacing:-.06em; }
.command-hero p { margin:0; color:rgba(255,255,255,.68); font-size:14px; }
.command-live { position:absolute; top:32px; right:34px; display:flex; align-items:center; gap:8px; padding:8px 12px; border:1px solid rgba(255,255,255,.16); border-radius:999px; background:rgba(255,255,255,.08); color:rgba(255,255,255,.88); font-size:11px; backdrop-filter:blur(10px); }
.command-live span { width:7px; height:7px; border-radius:50%; background:#30d158; box-shadow:0 0 0 5px rgba(48,209,88,.12); }
.command-metrics { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1px; margin-top:36px; border:1px solid rgba(255,255,255,.12); border-radius:18px; overflow:hidden; background:rgba(255,255,255,.1); }
.command-metrics > div { min-width:0; padding:18px 20px; background:rgba(10,12,16,.38); }
.command-metrics span,.command-metrics small,.command-metrics strong { display:block; }
.command-metrics span { color:rgba(255,255,255,.55); font-size:11px; }
.command-metrics strong { margin:5px 0 2px; font-size:clamp(19px,2.2vw,29px); line-height:1.1; letter-spacing:-.045em; overflow-wrap:anywhere; }
.command-metrics small { color:rgba(255,255,255,.48); font-size:10.5px; }
.command-grid { grid-column:span 12; display:grid; grid-template-columns:1fr 1fr; gap:18px; }
.bot-tile { min-width:0; min-height:124px; display:grid; grid-template-columns:58px minmax(0,1fr) auto 10px; align-items:center; gap:16px; padding:22px; border:1px solid rgba(255,255,255,.9); border-radius:22px; background:var(--surface); box-shadow:var(--shadow); color:var(--ink); transition:transform .25s cubic-bezier(.2,.8,.2,1),box-shadow .25s ease; }
.bot-tile:hover { transform:translateY(-2px); box-shadow:0 22px 50px rgba(0,0,0,.1); }
.bot-tile-icon { width:58px; height:58px; display:grid; place-items:center; border-radius:17px; background:linear-gradient(145deg,#dcecff,#f3f8ff); color:var(--accent); font-size:20px; font-weight:750; }
.bot-tile.yuja .bot-tile-icon { background:linear-gradient(145deg,#fff1c7,#fff9e8); color:#a55b00; }
.bot-tile-copy small,.bot-tile-copy strong,.bot-tile-copy span { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bot-tile-copy small,.bot-tile-copy span { color:var(--muted); font-size:11px; }
.bot-tile-copy strong { margin:2px 0; font-size:20px; letter-spacing:-.035em; }
.bot-tile-state { display:flex; align-items:center; gap:7px; color:var(--green); font-size:11px; font-weight:650; white-space:nowrap; }
.bot-tile-state i { width:7px; height:7px; border-radius:50%; background:currentColor; }
.bot-tile.offline .bot-tile-state { color:var(--red); }
.bot-tile b { color:#c7c7cc; font-size:24px; font-weight:400; }
.command-section { grid-column:span 12; }
.command-section-head span { color:var(--accent); font-size:10px; font-weight:700; letter-spacing:.12em; }
.command-section-head h2 { margin:3px 0 18px; }
.command-actions { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; }
.command-actions a { min-width:0; min-height:116px; position:relative; display:grid; grid-template-columns:42px minmax(0,1fr); align-content:center; column-gap:12px; padding:16px; border:1px solid var(--line); border-radius:18px; background:var(--surface-soft); color:var(--ink); transition:background .2s ease,transform .2s ease; }
.command-actions a:hover { background:#fff; transform:translateY(-1px); }
.command-action-icon { grid-row:span 2; width:42px; height:42px; display:grid; place-items:center; border-radius:13px; background:#fff; color:var(--accent); box-shadow:0 4px 13px rgba(0,0,0,.055); font-size:17px; }
.command-actions strong,.command-actions small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.command-actions strong { align-self:end; font-size:13.5px; }.command-actions small{align-self:start;color:var(--muted);font-size:10.5px}.command-actions b{position:absolute;right:13px;top:13px;color:#c7c7cc;font-size:18px;font-weight:400}

input,select,textarea { width:100%; min-width:0; min-height:44px; padding:10px 12px; border:1px solid var(--line-strong); border-radius:12px; outline:0; background:rgba(255,255,255,.9); color:var(--ink); transition:border-color .18s ease,box-shadow .18s ease,background .18s ease; }
textarea { min-height:120px; resize:vertical; }
input::placeholder,textarea::placeholder { color:#a1a1a6; }
input:focus,select:focus,textarea:focus { border-color:rgba(0,113,227,.65); background:#fff; box-shadow:0 0 0 4px rgba(0,113,227,.11); }
label { min-width:0; }
button,.actions a { min-height:42px; display:inline-flex; align-items:center; justify-content:center; gap:7px; padding:9px 15px; border:0; border-radius:12px; background:var(--accent); color:#fff; font-weight:650; cursor:pointer; transition:filter .18s ease,transform .18s ease,opacity .18s ease; }
button:hover,.actions a:hover { filter:brightness(.95); }
button:active,.actions a:active { transform:scale(.98); }
button:disabled { opacity:.45; cursor:not-allowed; }
button.ghost,.actions a.ghost { border:1px solid var(--line); background:#fff; color:var(--ink); }
button.red,.actions a.red { background:var(--red); color:#fff; }
button.compact,.actions a.compact { min-height:34px; padding:6px 10px; border-radius:9px; font-size:12px; }
.actions { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.actions form { margin:0; }
.actions.full > * { flex:1 1 150px; }.actions.full button,.actions.full a{width:100%}
.toolbar,.grid-form { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; align-items:end; margin:14px 0; }
.toolbar { display:flex; flex-wrap:wrap; }
.toolbar > * { flex:1 1 170px; }.toolbar button{flex:0 0 auto}
.grid-form .full { grid-column:1/-1; }

.notice { margin:0 0 16px; padding:12px 14px; border:1px solid transparent; border-radius:13px; font-size:13px; overflow-wrap:anywhere; }
.notice.ok { color:#176c2e; border-color:rgba(52,199,89,.2); background:rgba(52,199,89,.1); }
.notice.bad { color:#a3111d; border-color:rgba(255,59,48,.2); background:rgba(255,59,48,.09); }
.notice.info { color:#075ea9; border-color:rgba(0,113,227,.16); background:rgba(0,113,227,.08); }
.tag { display:inline-flex; align-items:center; min-height:24px; padding:3px 8px; border-radius:999px; background:#eeeef0; color:var(--muted); font-size:10.5px; font-weight:700; text-transform:uppercase; }
.tag.green { background:rgba(52,199,89,.12); color:var(--green); }.tag.amber{background:rgba(255,159,10,.14);color:var(--amber)}.tag.red{background:rgba(255,59,48,.11);color:var(--red)}
.sheet-stats { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.sheet-stats > div { min-width:0; padding:15px; border:1px solid var(--line); border-radius:15px; background:var(--surface-soft); }
.sheet-stats span,.sheet-stats strong,.sheet-stats small { display:block; }.sheet-stats>div>span{color:var(--muted);font-size:11px}.sheet-stats strong{margin:7px 0}.sheet-stats small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px}
.table-wrap { width:100%; max-width:100%; overflow:auto; border:1px solid var(--line); border-radius:16px; background:#fff; -webkit-overflow-scrolling:touch; }
table { width:100%; border-collapse:collapse; font-size:13px; }
th,td { min-width:110px; padding:13px 14px; text-align:left; vertical-align:top; border-bottom:1px solid var(--line); }
th { position:sticky; top:0; z-index:1; background:#f7f7f9; color:var(--muted); font-size:10.5px; font-weight:700; letter-spacing:.02em; white-space:nowrap; }
tr:last-child td { border-bottom:0; }
tbody tr:hover { background:#fafafd; }
.history-list { display:grid; gap:10px; }.history-item { min-width:0; padding:14px; border:1px solid var(--line); border-radius:14px; background:var(--surface-soft); }.history-title{font-weight:650;overflow-wrap:anywhere}.history-meta{margin-top:4px;color:var(--muted);font-size:12px;overflow-wrap:anywhere}
.autocomplete-wrap { position:relative; }.autocomplete-list{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:60;max-height:280px;overflow:auto;padding:6px;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:var(--shadow)}.autocomplete-item{width:100%;display:flex;align-items:flex-start;flex-direction:column;margin:0;padding:10px 12px;background:transparent;color:var(--ink);text-align:left}.autocomplete-item:hover{background:var(--surface-soft)}.autocomplete-item small{color:var(--muted);font-size:11px}

.section-heading { min-width:0; display:flex; align-items:flex-start; justify-content:space-between; gap:14px; margin-bottom:15px; }.section-heading h2,.section-heading h3{margin:0 0 4px}.section-heading .muted{font-size:12px}
.user-hero { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:end; gap:18px; }.user-title{display:grid;gap:6px}.user-stats,.bank-summary-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.stat-tile,.bank-summary-item{min-width:0;padding:14px;border:1px solid var(--line);border-radius:15px;background:var(--surface-soft)}.stat-tile span,.bank-summary-item span{display:block;margin-bottom:5px;color:var(--muted);font-size:11px}.stat-tile strong,.bank-summary-item strong{display:block;font-size:17px;overflow-wrap:anywhere}
.workspace-grid { display:grid; grid-template-columns:minmax(330px,.9fr) minmax(0,1.55fr); gap:18px; align-items:start; }.panel-stack,.bank-page,.bank-sidebar-panel,.bank-main-panel,.bank-toolbox{display:grid;gap:16px;min-width:0}.bank-workspace{display:grid;grid-template-columns:minmax(300px,400px) minmax(0,1fr);gap:18px;align-items:start}.bank-inline-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.bank-danger-zone,.danger-card{padding:15px;border:1px solid rgba(215,0,21,.18);border-radius:16px;background:rgba(255,59,48,.045)}
.form-section { display:grid; gap:12px; padding-top:15px; margin-top:15px; border-top:1px solid var(--line); }.form-section:first-of-type{padding-top:0;margin-top:0;border-top:0}.discord-search-results{display:grid;gap:7px;min-height:42px}.discord-result{width:100%;display:grid;gap:3px;justify-content:stretch;padding:11px 12px;border:1px solid var(--line);border-radius:13px;background:#fff;color:var(--ink);text-align:left}.discord-result small{color:var(--muted);font-size:11px;white-space:normal}.discord-result.selected{border-color:rgba(0,113,227,.42);background:var(--accent-soft)}
.dealer-workspace { display:grid; grid-template-columns:minmax(300px,400px) minmax(0,1fr); gap:22px; align-items:start; }.dealer-workspace>section{min-width:0}.dealer-list{display:grid;gap:7px;overflow:visible;padding:1px}.dealer-list-item{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:11px 12px;border:1px solid var(--line);border-radius:14px;background:var(--surface-soft);color:var(--ink);transition:border-color .18s ease,background .18s ease,box-shadow .18s ease}.dealer-list-item:hover,.dealer-list-item.active{border-color:rgba(0,113,227,.32);background:#fff;box-shadow:0 8px 22px rgba(0,0,0,.06)}.dealer-list-item strong,.dealer-list-item small{display:block;overflow-wrap:anywhere}.dealer-list-item strong{font-size:13px;line-height:1.35}.dealer-list-item small{margin-top:3px;color:var(--muted);font-size:10.5px;line-height:1.35}.dealer-list-price{color:var(--accent);font-size:11.5px;font-weight:700;white-space:nowrap}
.admin-accordion{border:1px solid var(--line);border-radius:17px;background:var(--surface-soft);overflow:hidden}.admin-accordion+.admin-accordion{margin-top:10px}.admin-accordion summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;color:var(--ink);font-weight:650}.admin-accordion summary::-webkit-details-marker{display:none}.admin-accordion summary::after{content:"펼치기";color:var(--muted);font-size:10.5px;font-weight:600}.admin-accordion[open] summary{border-bottom:1px solid var(--line)}.admin-accordion[open] summary::after{content:"접기"}.admin-section-body{display:grid;gap:14px;padding:16px}.tabbar{display:flex;gap:7px;margin:0 0 16px;padding:2px 0 12px;overflow-x:auto;border-bottom:1px solid var(--line);scrollbar-width:none}.tabbar::-webkit-scrollbar{display:none}.tabbar .tabbtn{flex:0 0 auto;min-height:34px;padding:6px 12px;border:0;border-radius:999px;background:#eeeef0;color:#55555a;font-size:11.5px;font-weight:600}.tabbar .tabbtn.active{background:var(--ink);color:#fff}.tabbar .tabbtn:hover{filter:none;background:#e3e3e7}.tabbar .tabbtn.active:hover{background:var(--ink)}
.admin-field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start}.admin-field-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.admin-field{min-width:0;display:grid;gap:6px}.admin-field>span{color:var(--muted);font-size:11px;font-weight:650}.admin-field.wide{grid-column:1/-1}.admin-option-list{display:grid;gap:11px}.admin-option-row{display:grid;gap:11px;padding:13px;border:1px solid var(--line);border-radius:14px;background:#fff}.admin-option-row.is-empty{border-style:dashed}.admin-option-row-title{font-size:12px;font-weight:700}.admin-save-bar{position:sticky;bottom:12px;z-index:5;display:flex;align-items:center;justify-content:flex-end;gap:9px;margin-top:15px;padding:12px;border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.9);box-shadow:0 12px 34px rgba(0,0,0,.1);backdrop-filter:blur(18px)}.dealership-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:start}.dealership-detail-grid .full{grid-column:1/-1}.dealer-used-upload{display:grid;gap:8px}.dealer-used-upload-preview{min-height:96px;display:grid;place-items:center;overflow:hidden;border:1px dashed var(--line-strong);border-radius:13px;background:var(--surface-soft);color:var(--muted);font-size:11px}.dealer-used-upload-preview img{width:100%;max-height:220px;object-fit:cover}
.dealer-list-tools{display:grid;grid-template-columns:minmax(0,1fr) minmax(145px,.55fr);gap:8px;margin-bottom:5px}.dealer-list-empty{display:none;padding:18px;text-align:center;border:1px dashed var(--line);border-radius:14px;color:var(--muted);font-size:12px}.vehicle-image-preview{min-height:150px;display:grid;place-items:center;overflow:hidden;border:1px solid var(--line);border-radius:16px;background:var(--surface-soft);color:var(--muted);font-size:11px}.vehicle-image-preview img{display:block;width:100%;max-height:300px;object-fit:contain;background:#fff}.admin-danger-zone{margin-top:18px;padding:16px;border:1px solid rgba(215,0,21,.18);border-radius:18px;background:rgba(255,59,48,.045)}.admin-danger-zone h3{margin:0 0 5px;color:var(--red)}.color-editor{display:grid;gap:10px}.color-editor-source{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;opacity:0;pointer-events:none}.color-editor-row{display:grid;grid-template-columns:44px minmax(120px,1fr) repeat(3,minmax(58px,.5fr)) minmax(80px,.65fr) minmax(95px,.75fr) auto;gap:7px;align-items:end;padding:11px;border:1px solid var(--line);border-radius:14px;background:#fff}.color-editor-row.interior{grid-template-columns:44px minmax(130px,1fr) minmax(130px,1fr) minmax(80px,.65fr) minmax(100px,.75fr) auto}.color-editor-row label{display:grid;gap:5px;color:var(--muted);font-size:10px;font-weight:650}.color-swatch{width:40px;height:40px;padding:2px;border-radius:10px}.color-editor-add{justify-self:start}.settings-group-panel{display:none}.settings-group-panel.active{display:grid;gap:10px}
.admin-login-card{max-width:450px;margin:64px auto;padding:28px;border:1px solid rgba(255,255,255,.9);border-radius:26px;background:rgba(255,255,255,.9);box-shadow:0 28px 70px rgba(25,42,70,.12)}.admin-login-intro{margin-bottom:22px}.admin-login-intro .eyebrow{display:block;margin-bottom:7px;color:var(--accent);font-size:11px;font-weight:700;letter-spacing:.08em}.admin-login-intro h1{margin:0;font-size:32px;letter-spacing:-.05em}.admin-login-intro p{margin:7px 0 0;color:var(--muted)}.field-label{display:grid;gap:6px;color:var(--muted);font-size:12px;font-weight:600}.password-field{position:relative}.password-field input{padding-right:70px}.password-field .password-toggle{position:absolute;right:5px;top:5px;min-height:34px;padding:0 10px;border-radius:9px;background:#f0f0f2;color:var(--accent);font-size:11px}.ops-login-shell{min-height:calc(100vh - 110px);display:grid;place-items:center;padding:28px 16px}.ops-login-shell .admin-login-card{width:min(450px,100%);margin:0}.ops-login-brand{display:flex;align-items:center;gap:10px;margin-bottom:26px}.ops-login-brand .brand-mark{width:42px;height:42px;overflow:hidden;border-radius:12px}.ops-login-brand .brand-mark img{width:100%;height:100%;object-fit:cover}.ops-login-brand strong,.ops-login-brand small{display:block}.ops-login-brand small{color:var(--muted);font-size:10px}.ops-login-foot{margin-top:20px;display:flex;align-items:center;justify-content:center;gap:7px;color:var(--muted);font-size:10px}.ops-login-foot i{width:4px;height:4px;border-radius:50%;background:#c7c7cc}

.v4-mobile-head,.v4-tabbar,.v4-sheet,.v4-sheet-backdrop { display:none; }
.v4-public { position:relative; z-index:1; min-height:100vh; padding:18px 22px 48px; }
.v4-public-head { position:sticky; top:12px; z-index:30; max-width:1180px; min-height:62px; margin:0 auto 24px; display:flex; align-items:center; justify-content:space-between; gap:20px; padding:9px 12px; border:1px solid var(--line); border-radius:20px; background:rgba(255,255,255,.8); box-shadow:var(--shadow); backdrop-filter:saturate(180%) blur(24px); }
.v4-public-head .v4-brand { padding:0; }.v4-public-head nav{display:flex;gap:6px}.v4-public-head nav a{padding:8px 12px;border-radius:10px;color:var(--muted);font-size:12px;font-weight:600}.v4-public-head nav a.active{background:#1d1d1f;color:#fff}.v4-public-main{max-width:1180px;margin:0 auto}

@media (max-width:1080px) {
  :root { --sidebar:224px; }
  .command-actions { grid-template-columns:1fr 1fr; }
  .sheet-stats { grid-template-columns:1fr 1fr; }
}

@media (max-width:820px) {
  body { padding-bottom:calc(72px + env(safe-area-inset-bottom)); overflow-x:hidden; }
  body::before { display:none; }
  .v4-sidebar,.v4-content-head { display:none; }
  .v4-main { margin:0; padding:calc(76px + env(safe-area-inset-top)) 14px 22px; }
  .v4-mobile-head { position:fixed; inset:0 0 auto; z-index:45; min-height:calc(64px + env(safe-area-inset-top)); display:flex; align-items:flex-end; justify-content:space-between; gap:12px; padding:calc(9px + env(safe-area-inset-top)) 16px 9px; border-bottom:1px solid var(--line); background:rgba(247,247,249,.88); backdrop-filter:saturate(180%) blur(24px); }
  .v4-mobile-brand { min-width:0; display:flex; align-items:center; gap:10px; color:var(--ink); }.v4-mobile-brand .v4-brand-mark{width:38px;height:38px;border-radius:11px}.v4-mobile-brand>span:last-child{min-width:0}.v4-mobile-brand small,.v4-mobile-brand strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.v4-mobile-brand small{color:var(--accent);font-size:8.5px;font-weight:750;letter-spacing:.1em}.v4-mobile-brand strong{font-size:17px;line-height:1.15;letter-spacing:-.045em}.v4-mobile-head>.v4-avatar{width:36px;height:36px}
  .v4-tabbar { position:fixed; inset:auto 0 0; z-index:70; height:calc(64px + env(safe-area-inset-bottom)); display:grid; grid-template-columns:repeat(5,1fr); padding:4px 5px env(safe-area-inset-bottom); border-top:1px solid var(--line); background:rgba(249,249,251,.91); backdrop-filter:saturate(180%) blur(28px); }
  .v4-tabbar .v4-tab { min-width:0; min-height:58px; height:58px; display:flex; flex-direction:column; justify-content:center; gap:2px; margin:0; padding:3px 1px; border:0; border-radius:9px; background:transparent; box-shadow:none; color:#8e8e93; font-size:9.5px; font-weight:600; }
  .v4-tabbar .v4-tab svg { width:22px; height:22px; }.v4-tabbar .v4-tab.active{color:var(--accent);background:transparent}.v4-tabbar button.v4-tab{font-family:inherit}
  .v4-sheet-backdrop { position:fixed; inset:0; z-index:78; display:block; pointer-events:none; opacity:0; background:rgba(0,0,0,.28); transition:opacity .28s ease; }
  .v4-sheet { position:fixed; z-index:79; inset:auto 8px calc(8px + env(safe-area-inset-bottom)); max-height:min(72vh,620px); display:block; overflow:auto; padding:8px 14px 18px; border:1px solid rgba(255,255,255,.8); border-radius:25px; background:rgba(249,249,251,.96); box-shadow:0 24px 60px rgba(0,0,0,.22); transform:translateY(calc(100% + 30px)); transition:transform .32s cubic-bezier(.22,.8,.22,1); backdrop-filter:blur(30px); }
  .v4-sheet-handle { width:38px;height:5px;margin:0 auto 8px;border-radius:99px;background:#d1d1d6}.v4-sheet header{position:sticky;top:-8px;z-index:2;display:flex;align-items:center;justify-content:space-between;padding:8px 2px 10px;background:rgba(249,249,251,.96)}.v4-sheet header strong{font-size:20px;letter-spacing:-.04em}.v4-sheet nav{display:grid;grid-template-columns:1fr 1fr;gap:7px}.v4-sheet .v4-nav-link{min-height:50px;margin:0;border:1px solid var(--line);background:#fff}.v4-sheet .v4-nav-link.active{color:var(--accent);border-color:rgba(0,113,227,.18);background:var(--accent-soft)}
.v4-sheet-open { overflow:hidden; }.v4-sheet-open .v4-sheet-backdrop{opacity:1;pointer-events:auto}.v4-sheet-open .v4-sheet{transform:translateY(0)}
.v4-sheet-account { display:grid; gap:7px; margin-top:12px; padding-top:12px; border-top:1px solid var(--line); }
.v4-sheet-account form { margin:0; }
.v4-sheet-account .v4-nav-link { width:100%; border:1px solid var(--line); background:#fff; cursor:pointer; }
.v4-mobile-account { text-decoration:none; }
  .grid,.command-center { display:block; }.grid>*+*,.command-center>*+*{margin-top:12px}
  .card,.command-hero,.command-section { padding:18px; border-radius:20px; box-shadow:0 8px 24px rgba(0,0,0,.055); }
  .command-hero { padding:24px 19px 18px; border-radius:22px; }.command-hero h2{font-size:30px}.command-hero p{font-size:12.5px;max-width:82%}.command-live{position:static;width:max-content;margin-top:16px;padding:6px 9px;font-size:10px}.command-metrics{grid-template-columns:1fr;margin-top:18px}.command-metrics>div{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;padding:12px 14px}.command-metrics span{grid-column:1}.command-metrics strong{grid-column:2;grid-row:1/3;text-align:right;font-size:20px}.command-metrics small{grid-column:1}
  .command-grid { display:grid; grid-template-columns:1fr; gap:10px; }.bot-tile{min-height:94px;grid-template-columns:48px minmax(0,1fr) auto;padding:15px;border-radius:18px;gap:12px}.bot-tile-icon{width:48px;height:48px;border-radius:14px;font-size:17px}.bot-tile-copy strong{font-size:17px}.bot-tile b{display:none}.bot-tile-state{font-size:10px}
  .command-actions { grid-template-columns:1fr 1fr; gap:8px; }.command-actions a{min-height:96px;grid-template-columns:36px minmax(0,1fr);padding:12px;border-radius:15px}.command-action-icon{width:36px;height:36px;border-radius:11px}.command-actions b{display:none}.command-actions small{white-space:normal;line-height:1.2}
  .sheet-stats { grid-template-columns:1fr 1fr; gap:8px; }.sheet-stats>div{padding:12px}
  .row { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.3fr); gap:12px; padding:12px 0; }.row>strong{text-align:right}
  .toolbar,.grid-form { grid-template-columns:1fr; }.toolbar{display:grid}.toolbar>*{width:100%}.grid-form .full{grid-column:1}.actions.full{display:grid;grid-template-columns:1fr}.actions.full>*{width:100%}
  .user-hero,.workspace-grid,.bank-workspace,.dealer-workspace{grid-template-columns:1fr}.user-stats,.bank-summary-strip{grid-template-columns:1fr 1fr}.dealer-list{max-height:330px}.dealer-list-tools{grid-template-columns:1fr}.admin-field-grid,.admin-field-grid.three,.dealership-detail-grid{grid-template-columns:1fr}.admin-field.wide,.dealership-detail-grid .full{grid-column:1}.admin-save-bar{bottom:76px;display:grid;grid-template-columns:1fr;padding:11px}.admin-save-bar>*{width:100%;max-width:none!important}.color-editor-row,.color-editor-row.interior{grid-template-columns:44px minmax(0,1fr)}.color-editor-row label{grid-column:2}.color-editor-row .color-swatch{grid-row:1;grid-column:1}.tabbar{margin-left:-2px;margin-right:-2px}.ops-login-shell{min-height:calc(100vh - 128px);padding:18px 0}.admin-login-card{margin:20px auto;padding:22px;border-radius:21px}
  .table-wrap { border-radius:14px; }.table-wrap::after{content:"좌우로 밀어 더 보기";position:sticky;left:12px;display:inline-block;padding:7px 0 9px;color:var(--faint);font-size:9px}th,td{min-width:120px;padding:11px 12px}
  .v4-public { padding:0 0 calc(72px + env(safe-area-inset-bottom)); }.v4-public-head{top:0;min-height:calc(64px + env(safe-area-inset-top));margin:0;padding:calc(9px + env(safe-area-inset-top)) 14px 9px;border-width:0 0 1px;border-radius:0;box-shadow:none;background:rgba(247,247,249,.92)}.v4-public-head .v4-brand-mark{width:36px;height:36px}.v4-public-head .v4-brand small{display:none}.v4-public-head nav{position:fixed;inset:auto 0 0;z-index:70;height:calc(64px + env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(3,1fr);gap:0;padding:4px 6px env(safe-area-inset-bottom);border-top:1px solid var(--line);background:rgba(249,249,251,.92);backdrop-filter:blur(24px)}.v4-public-head nav a{display:grid;place-items:center;padding:0;color:var(--faint);font-size:11px}.v4-public-head nav a.active{background:transparent;color:var(--accent)}.v4-public-main{padding:14px}
}

.dealer-list { max-height:none; overflow:visible; }

@media (max-width:390px) {
  .v4-main { padding-left:10px; padding-right:10px; }.card,.command-section{padding:15px}.command-actions{grid-template-columns:1fr}.sheet-stats,.user-stats,.bank-summary-strip{grid-template-columns:1fr}.v4-sheet nav{grid-template-columns:1fr}.command-hero p{max-width:100%}.bot-tile-state{display:none}
}

@media (prefers-reduced-motion:reduce) { *,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition-duration:.01ms!important} }

/* --------------------------------------------------------------------------
   Mobile: the bottom tab bar is `position:fixed; inset:auto 0 0` inside
   .v4-public-head, but that header sets backdrop-filter, which makes it a
   containing block for fixed descendants.  "Bottom" therefore resolved to the
   bottom of the 64px header, so the tab bar sat on top of the brand and hid
   it.  Dropping the blur on mobile restores the intended layout; the header
   background is already opaque enough without it.
   -------------------------------------------------------------------------- */
@media (max-width: 820px) {
  .v4-public-head {
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    background: #f7f7f9;
  }
  .v4-public-shell,
  .v4-public-body,
  body {
    padding-bottom: calc(72px + env(safe-area-inset-bottom));
  }
}

/* Greeting cards use one canonical landscape ratio everywhere.  The page-level
   editor style is intentionally kept small; these higher-specificity rules stop
   browser intrinsic image sizes and grid stretching from changing the layout. */
.v4-main .greet-events,
.v4-main .greet-previews,
.v4-main .greet-assets {
  align-items: start;
}
.v4-main .greet-event,
.v4-main .greet-preview,
.v4-main .greet-asset {
  min-width: 0;
  align-self: start;
}
.v4-main .greet-form-grid > *,
.v4-main .greet-selector,
.v4-main .greet-ai {
  min-width: 0;
}
.v4-main .greet-form-grid input,
.v4-main .greet-form-grid select,
.v4-main .greet-form-grid textarea,
.v4-main .greet-selector select,
.v4-main .greet-ai textarea {
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}
.v4-main .greet-form-grid textarea,
.v4-main .greet-ai textarea {
  resize: vertical;
  max-height: 320px;
  overflow: auto;
}
.v4-main .greet-preview img,
.v4-main .greet-asset img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 1200 / 630;
  object-fit: cover;
  object-position: center;
}

/* --- ops login: split layout (2026-08-31) ---
   A lone 480px card under a 1180px header left ~350px of dead space on each
   side and put the two elements on different width baselines.  The card now
   spans the header width and uses that space for the brand column. */
.ops-login-shell { padding-left:0; padding-right:0; }
.ops-login-shell .admin-login-card.ops-split {
  /* Matching the 1180px header width made the card a 6:1 letterbox — very wide
     and barely 200px tall.  A login card does not have to share the header's
     width baseline; it just has to look deliberate. */
  width:100%; max-width:900px; min-height:430px; margin:0; padding:0; overflow:hidden;
  display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  border-radius:28px;
}
.ops-split-aside {
  display:flex; flex-direction:column; justify-content:center; padding:44px 40px;
  background:linear-gradient(158deg,#eaf1ff 0%,#f4f7fc 58%,#f7f9fc 100%);
  border-right:1px solid rgba(60,60,67,.08);
}
.ops-split-aside .ops-login-brand { margin-bottom:34px; }
.ops-split-aside .admin-login-intro { margin-bottom:0; }
.ops-split-aside .admin-login-intro h1 { font-size:33px; line-height:1.16; }
.ops-split-aside .admin-login-intro p { max-width:34ch; line-height:1.6; }
.ops-split-main { display:flex; flex-direction:column; justify-content:center; padding:44px 40px; }
.ops-split .grid-form { grid-template-columns:1fr; gap:16px; }
.ops-split .grid-form input { width:100%; }
.ops-split .grid-form button[type=submit] { width:100%; min-height:50px; margin-top:6px; }
.ops-split-foot { margin-top:auto; padding-top:30px; display:flex; align-items:center; gap:7px; color:var(--muted); font-size:11px; }
.ops-split-foot i { width:4px; height:4px; border-radius:50%; background:#c7c7cc; }
.ops-split-foot.mobile { display:none; }

@media (max-width:900px) {
  .ops-login-shell { padding-left:16px; padding-right:16px; }
  .ops-login-shell .admin-login-card.ops-split { grid-template-columns:1fr; max-width:520px; min-height:0; border-radius:24px; }
  .ops-split-aside { padding:30px 26px 24px; border-right:0; border-bottom:1px solid rgba(60,60,67,.08); }
  .ops-split-aside .ops-login-brand { margin-bottom:22px; }
  .ops-split-aside .admin-login-intro h1 { font-size:30px; }
  .ops-split-aside .ops-split-foot { display:none; }
  .ops-split-main { padding:26px; }
  .ops-split-foot.mobile { display:flex; margin-top:24px; padding-top:0; justify-content:center; }
}

/* .ops-login-ambient is decorative but had no rules, so it sat in the grid as
   a real row (197px) and pushed the card below the optical centre. */
.ops-login-shell { position:relative; }
.ops-login-ambient { position:absolute; inset:0; pointer-events:none; z-index:0; }
.ops-login-shell > .admin-login-card { position:relative; z-index:1; }

/* --- flash toasts (2026-09-02) ---
   Replaces the inline .notice blocks that never went away because the
   ?ok=/?error= query string stayed in the URL. */
.v4-toasts { position:fixed; z-index:200; right:18px; bottom:18px; display:flex; flex-direction:column; gap:8px; align-items:flex-end; pointer-events:none; }
.v4-toast { pointer-events:auto; display:flex; align-items:center; gap:10px; min-width:min(260px,calc(100vw - 36px)); max-width:min(420px,calc(100vw - 36px));
  padding:12px 12px 12px 14px; border-left:4px solid transparent; border-radius:14px; background:#fff; color:#1d1d1f; font-size:13.5px; line-height:1.45;
  box-shadow:0 12px 34px rgba(25,42,70,.18), 0 0 0 1px rgba(60,60,67,.07);
  animation:v4-toast-in .22s cubic-bezier(.2,.8,.2,1); }
.v4-toast.ok { border-left-color:#34c759; }
.v4-toast.bad { border-left-color:#ff3b30; }
.v4-toast-text { flex:1; min-width:0; overflow-wrap:anywhere; }
.v4-toast-x { flex:0 0 auto; width:22px; height:22px; padding:0; border:0; border-radius:7px; background:transparent;
  color:#8e8e93; font-size:16px; line-height:1; cursor:pointer; }
.v4-toast-x:hover { background:#f0f0f2; color:#1d1d1f; }
.v4-toast.leaving { animation:v4-toast-out .2s ease forwards; }
@keyframes v4-toast-in { from { opacity:0; transform:translateY(10px) scale(.98); } to { opacity:1; transform:none; } }
@keyframes v4-toast-out { to { opacity:0; transform:translateY(6px) scale(.98); } }
@media (max-width:640px) {
  .v4-toasts { right:12px; left:12px; bottom:calc(12px + var(--v4-tabbar-h, 64px)); align-items:stretch; }
  .v4-toast { min-width:0; max-width:none; }
}
@media (prefers-reduced-motion:reduce) { .v4-toast, .v4-toast.leaving { animation:none; } }
