:root{
  --bg:#f5f7fb;
  --bg-elevated:#eef2f8;
  --surface:#ffffff;
  --surface-soft:#f8fafc;
  --surface-strong:#f1f5f9;
  --text:#162033;
  --text-muted:#5f6c85;
  --border:#d8e0ec;
  --border-strong:#c7d3e3;
  --primary:#2f6fed;
  --primary-strong:#1f5ad1;
  --primary-contrast:#ffffff;
  --secondary:#ffffff;
  --secondary-text:#31415f;
  --danger:#d1435b;
  --danger-strong:#b52b43;
  --danger-contrast:#ffffff;
  --success-bg:#e9f8ef;
  --success-text:#1e7a41;
  --warning-bg:#fff6dd;
  --warning-text:#8a6200;
  --error-bg:#fdecef;
  --error-text:#af2843;
  --badge-green-bg:#e8f7ee;
  --badge-green-text:#1f7a43;
  --badge-red-bg:#fdecef;
  --badge-red-text:#af2843;
  --badge-yellow-bg:#fff5d6;
  --badge-yellow-text:#8d6500;
  --badge-gray-bg:#eef2f7;
  --badge-gray-text:#56657f;
  --shadow:0 18px 50px rgba(31, 52, 89, .08);
  --shadow-soft:0 8px 24px rgba(31, 52, 89, .05);
}

*{box-sizing:border-box}
html{color-scheme:light}
body{margin:0;background:linear-gradient(180deg,var(--bg) 0%,var(--bg-elevated) 100%);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Noto Sans KR","Segoe UI","Helvetica Neue",Arial,"Malgun Gothic","맑은 고딕",system-ui,sans-serif;line-height:1.6}
a{color:var(--primary);text-decoration:none}
a:hover{text-decoration:underline}
code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}
.container{max-width:1160px;margin:0 auto;padding:0 20px}
.page-shell{min-height:100vh}
.site-header{position:sticky;top:0;backdrop-filter:blur(18px);background:rgba(255,255,255,.88);border-bottom:1px solid rgba(199,211,227,.8);box-shadow:var(--shadow-soft);z-index:20}
.header-inner{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px 20px}
.brand{font-weight:800;font-size:1.125rem;color:var(--text)}
.nav{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.link-button,.button{appearance:none;border:1px solid transparent;border-radius:14px;padding:11px 16px;font-size:.95rem;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:background-color .15s ease,border-color .15s ease,transform .15s ease,box-shadow .15s ease}
.link-button:hover,.button:hover{transform:translateY(-1px);text-decoration:none}
.link-button{background:transparent;color:var(--primary);padding:0;border:0}
.button.primary{background:var(--primary);color:var(--primary-contrast);box-shadow:0 8px 18px rgba(47,111,237,.18)}
.button.primary:hover{background:var(--primary-strong)}
.button.secondary{background:var(--secondary);color:var(--secondary-text);border-color:var(--border);box-shadow:var(--shadow-soft)}
.button.secondary:hover{background:var(--surface-soft);border-color:var(--border-strong)}
.button.danger{background:var(--danger);color:var(--danger-contrast);box-shadow:0 8px 18px rgba(209,67,91,.18)}
.button.danger:hover{background:var(--danger-strong)}
.button.small{padding:8px 12px;font-size:.85rem}
.main-content{padding:34px 20px 80px}
.auth-card,.card,.panel,.stat-card,.empty-box{background:var(--surface);border:1px solid var(--border);border-radius:22px;box-shadow:var(--shadow)}
.auth-card{max-width:520px;margin:0 auto;padding:28px}
.auth-card.wide{max-width:820px}
.card,.panel{padding:24px}
.panel.small{padding:18px}
.stat-card{padding:20px;display:flex;flex-direction:column;gap:6px}
.stat-card strong{font-size:1.5rem}
.section-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:16px}
.section-heading.compact{align-items:center}
.section-heading h1,.section-heading h2,.section-heading h3,.section-heading h4,h2{margin:0 0 4px}
h1{font-size:2rem}
h2{font-size:1.3rem}
.muted{color:var(--text-muted)}
.stack-xl>*+*{margin-top:28px}
.stack-lg>*+*{margin-top:20px}
.stack-md>*+*{margin-top:14px}
.stack-sm>*+*{margin-top:8px}
.button-row{display:flex;gap:10px;flex-wrap:wrap}
.button-row.compact-row{justify-content:flex-end}
.alert{padding:16px 18px;border-radius:16px;margin-bottom:16px;border:1px solid transparent}.alert ul{margin:8px 0 0 18px}
.alert.success{background:var(--success-bg);color:var(--success-text);border-color:#c6ead2}.alert.danger{background:var(--error-bg);color:var(--error-text);border-color:#f3c3cd}.alert.warning{background:var(--warning-bg);color:var(--warning-text);border-color:#f1df9f}
.field{display:flex;flex-direction:column;gap:8px}
.field input,.field textarea,.field select,.repeater-row input,.repeater-row select,.repeater-row textarea{width:100%;padding:12px 14px;border-radius:14px;border:1px solid var(--border);background:var(--surface);color:var(--text);box-shadow:inset 0 1px 2px rgba(16,24,40,.03)}
.field input:focus,.field textarea:focus,.field select:focus,.repeater-row input:focus,.repeater-row select:focus,.repeater-row textarea:focus{outline:none;border-color:rgba(47,111,237,.55);box-shadow:0 0 0 4px rgba(47,111,237,.12)}
.grid-form{display:grid;gap:16px}
.grid-form.two-col{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid-form.three-col{grid-template-columns:2fr 1fr 1fr}
.two-span{grid-column:1 / -1}
.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px}
.card-grid.two-col{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}
.card-link{color:inherit}
.card-link:hover{text-decoration:none;border-color:rgba(47,111,237,.35)}
.card-head{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:10px}
.badge{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;font-size:.8rem;font-weight:700;border:1px solid transparent}
.badge.green{background:var(--badge-green-bg);color:var(--badge-green-text);border-color:#c8ead4}.badge.red{background:var(--badge-red-bg);color:var(--badge-red-text);border-color:#f1c6cf}.badge.yellow{background:var(--badge-yellow-bg);color:var(--badge-yellow-text);border-color:#f0e0a8}.badge.gray{background:var(--badge-gray-bg);color:var(--badge-gray-text);border-color:#d6deea}
.data-table{width:100%;border-collapse:collapse}
.data-table th,.data-table td{padding:14px 12px;border-bottom:1px solid var(--border);vertical-align:top;text-align:left}
.data-table th{color:var(--text-muted);font-size:.92rem}
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}
.stats-grid.narrow{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}
.repeater-row{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:end}
.repeater-row.two-inputs{grid-template-columns:2fr 1.4fr}
.row-actions{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:end}
.asset-actions{grid-template-columns:1fr auto}
.asset-row{padding:16px;border:1px dashed var(--border-strong);border-radius:18px;background:var(--surface-soft)}
.checkbox-row{display:flex;align-items:center;gap:10px}
.preview-zone{display:grid;gap:14px}
.preview-sample{padding:16px;border:1px solid var(--border);border-radius:16px;background:var(--surface-soft)}
.code-block{padding:16px;border-radius:18px;background:#f7f9fc;border:1px solid var(--border);overflow:auto;white-space:pre-wrap;word-break:break-word}
.inline-list{display:flex;flex-wrap:wrap;gap:10px;list-style:none;padding:0;margin:0}
.inline-list li{padding:10px 12px;background:var(--surface-soft);border-radius:12px;border:1px solid var(--border)}
.slim-list{padding-left:18px;margin:0}
.empty-box{padding:28px;text-align:center;color:var(--text-muted)}
.small{font-size:.92rem}
.mt-8{margin-top:8px}
@media (max-width:820px){.grid-form.two-col,.grid-form.three-col,.repeater-row.two-inputs,.row-actions{grid-template-columns:1fr}.two-span{grid-column:auto}.section-heading{align-items:flex-start;flex-direction:column}.header-inner{align-items:flex-start;flex-direction:column}}
