:root{--primary:#2f6cf6;--bg:#f7f8fb;--card:#ffffff;--text:#1f2937;--muted:#6b7280;--border:#e5e7eb;--accent:#10b981}
*{box-sizing:border-box}html,body{height:100%}
html{scroll-behavior:smooth}
body{margin:0;font-family:Inter,system-ui,Segoe UI,Roboto,Arial,sans-serif;background:var(--bg);color:var(--text)}
.container{max-width:1100px;margin:0 auto;padding:16px}
header{padding-top:24px}
h1{margin:0 0 6px 0;font-size:28px}
.subtitle{margin:0;color:var(--muted)}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.config-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}

/* Inputs */
label{display:block;font-weight:600;margin-bottom:6px}
input[type=file],select,textarea,input[type=text],input[type=number]{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--text)}
select:disabled, input:disabled, textarea:disabled{opacity:.6}
.file-group small,.select-group small{display:block;color:var(--muted);margin-top:6px}
input::placeholder,textarea::placeholder{color:#6b7280}
.btn{appearance:none;border:none;background:var(--primary);color:#fff;padding:10px 14px;border-radius:8px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:8px;transition:transform .18s ease, box-shadow .18s ease, opacity .18s ease}
.btn:hover{opacity:.95;transform:translateY(-1px);box-shadow:0 6px 14px rgba(0,0,0,.08)}
.btn:disabled{opacity:.6;cursor:not-allowed}
.btn.secondary{background:#fff;border:1px solid var(--border);color:var(--text)}
.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}

/* Preview */
.preview{display:grid;grid-template-columns:1fr;gap:12px;margin-top:12px}
.preview .card{margin:0;transition:transform .2s ease, box-shadow .2s ease}
.preview .card:hover{transform:translateY(-2px);box-shadow:0 10px 20px rgba(0,0,0,.06)}
.table-wrap{overflow:auto;border:1px dashed var(--border);border-radius:10px;background:#fff}
.table{border-collapse:collapse;width:100%;min-width:540px}
.table td,.table th{border:1px solid var(--border);padding:6px 8px;text-align:center;font-size:12px}
.table th{background:#f3f4f6;color:inherit}
.footer-note{margin-top:8px;color:var(--muted);font-size:12px}
.summary-card{border:1px dashed var(--border);border-radius:10px;padding:12px;background:#fff}
.summary-table{border-collapse:collapse;width:100%}
.summary-table th,.summary-table td{border:1px solid var(--border);padding:6px 8px;text-align:left;font-size:12px}
.summary-table th{background:#f3f4f6}
.page-break{break-after:page}

/* Template Mapping */
#templateMappingSection .table{min-width:480px}
#templatePreview td{cursor:pointer}

/* Step headers */
section.card > h2{display:flex;align-items:center;gap:8px;margin-top:4px}
section.card > h2::before{content:"";display:inline-block;width:8px;height:8px;border-radius:999px;background:var(--accent)}

/* Responsive */
@media (max-width:1000px){.grid-3{grid-template-columns:1fr}.config-grid{grid-template-columns:1fr 1fr}.preview{grid-template-columns:1fr}}

/* Navbar */
.navbar{position:sticky;top:0;z-index:50;background:#ffffffd9;backdrop-filter:saturate(140%) blur(6px);border-bottom:1px solid var(--border)}
.nav-inner{display:flex;align-items:center;justify-content:space-between;padding:10px 16px}
.brand{font-weight:800;letter-spacing:.3px}
.nav-links{display:flex;gap:14px}
.nav-links a{position:relative;display:inline-block;padding:8px 10px;border-radius:8px;color:var(--text);transition:background-color .2s ease}
.nav-links a:hover{background:#f3f4f6}
.nav-links a::after{content:"";position:absolute;left:10px;right:10px;bottom:6px;height:2px;background:transparent;border-radius:2px;transition:background-color .25s ease}
.nav-links a:hover::after{background:var(--accent)}

/* Anchor offset so sticky navbar doesn't cover headings */
[id]{scroll-margin-top:72px}

/* Respect reduced motion preferences */
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  .btn,.preview .card,.nav-links a{transition:none}
}

@media (max-width:700px){
  .nav-inner{flex-wrap:wrap;gap:8px}
  .nav-links{width:100%;justify-content:space-between}
}
