/* Bootstrap-5-named component subset, implemented slim. Only what the site uses.
   Rules: pages use component classes from templates/components/ui.html; a short utility
   allow-list lives at the bottom. Swapping in full Bootstrap = replace this file. */

/* cards */
.card { background:#fff; border:1px solid var(--line); border-radius:8px; margin:0 0 18px; box-shadow:0 1px 2px rgba(0,0,0,.03); }
.card-header { padding:10px 16px; border-bottom:1px solid var(--line); background:#f3f3f0; font-weight:600; border-radius:8px 8px 0 0; }
.card-body { padding:14px 16px 16px; }
.card-body > :first-child { margin-top:0; } .card-body > :last-child { margin-bottom:0; }
.card-title { font-weight:600; margin:0 0 8px; font-size:16px; }
a.card { display:block; text-decoration:none; color:inherit; } a.card:hover { border-color:#c9d7dc; }

/* forms (horizontal rows) */
.row { display:flex; flex-wrap:wrap; margin:0 -8px; } .row > * { padding:0 8px; box-sizing:border-box; }
.col-sm-3 { flex:0 0 25%; max-width:25%; } .col-sm-9 { flex:0 0 75%; max-width:75%; }
.col-md-4 { flex:0 0 33.333%; max-width:33.333%; } .col-md-6 { flex:0 0 50%; max-width:50%; } .col-12 { flex:0 0 100%; max-width:100%; }
.col-form-label { font-weight:600; font-size:14px; padding-top:7px; }
.form-text { color:var(--mute); font-size:12px; font-weight:400; }
.form-label { display:block; font-weight:600; font-size:14px; margin-bottom:4px; }
.form-control, .form-select { display:block; width:100%; max-width:420px; padding:7px 9px; border:1px solid var(--line); border-radius:6px; font:inherit; color:var(--ink); background:#fff; }
.form-control:focus, .form-select:focus { outline:2px solid #bcd6e0; border-color:var(--acc); }
.form-control-sm { padding:5px 8px; font-size:13px; }
.input-group { display:flex; gap:6px; align-items:center; }
.mb-3 { margin-bottom:12px; }

/* buttons */
.btn { display:inline-block; padding:8px 14px; border:1px solid transparent; border-radius:6px; font:inherit; cursor:pointer; text-decoration:none; line-height:1.3; }
.btn-primary { background:var(--acc); border-color:var(--acc); color:#fff; } .btn-primary:hover { background:#195b73; }
.btn-success { background:var(--ok); border-color:var(--ok); color:#fff; }
.btn-outline-secondary { background:transparent; border-color:#b9b9b4; color:#444; } .btn-outline-secondary:hover { background:#f0f0ec; }
.btn-outline-primary { background:transparent; border-color:var(--acc); color:var(--acc); }
.btn-sm { padding:4px 9px; font-size:13px; }
.btn-close { background:none; border:0; font-size:16px; color:var(--mute); cursor:pointer; }

/* alerts */
.alert { padding:10px 14px; border-radius:6px; margin:12px 0; font-size:14px; border:1px solid; }
.alert-info { background:#eef5f8; border-color:#cfe3ea; color:#1f4e5f; }
.alert-warning { background:#fff8e1; border-color:#f3e2a6; color:#6b5300; }
.alert-danger { background:#fdecea; border-color:#f5c2c0; color:#8a1c14; }
.alert-success { background:#eaf5ec; border-color:#c5e2ca; color:#1f5a27; }

/* tables */
.table-responsive { overflow-x:auto; }
.table { border-collapse:collapse; width:100%; font-size:14px; margin:0; }
.table thead th { background:#eceeea; color:var(--ink); font-weight:600; text-align:left; padding:9px 10px; border-bottom:2px solid #d7d9d3; white-space:nowrap; }
.table tbody th { font-weight:500; text-align:left; padding:8px 10px; }
.table tbody td { padding:8px 10px; }
.table tbody tr { border-bottom:1px solid var(--line); }
.table-striped tbody tr:nth-child(even) { background:#f7f7f4; }
.table-hover tbody tr:hover { background:#e9f2f5; }
.table-sm th, .table-sm td { padding:6px 8px; }
.text-end { text-align:right; font-variant-numeric:tabular-nums; }
.table-metrics th[scope=row] { white-space:nowrap; }

/* tooltips: trigger + body-level box (components.js) */
.tip { display:inline-block; width:15px; height:15px; line-height:15px; padding:0; border:0; border-radius:50%; background:var(--acc); color:#fff; font-size:10px; font-weight:700; text-align:center; cursor:help; vertical-align:middle; margin-left:2px; }
.tooltip-box { display:none; position:fixed; z-index:1000; padding:8px 10px; background:#1d1d1b; color:#fff; font-size:12px; line-height:1.4; border-radius:6px; pointer-events:none; box-shadow:0 4px 14px rgba(0,0,0,.25); }

/* stat tiles */
.cta { margin:12px 0 4px; } .btn-outline-primary { border:1px solid var(--accent, #2a6fdb); color:var(--accent, #2a6fdb); background:#fff; } .btn-outline-primary:hover { background:var(--accent, #2a6fdb); color:#fff; }
.fee-view th, .fee-view td { white-space:nowrap; }
.impact-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(360px, 1fr)); gap:12px; margin:0 0 12px; } .impact-grid .card { margin:0; }
.stats { display:grid; grid-template-columns:repeat(auto-fit, minmax(150px, 1fr)); gap:8px; margin:0 0 12px; }
.stat { border:1px solid var(--line); border-radius:8px; padding:8px 10px; background:#fff; }
.stat-label { font-size:11px; color:var(--mute); } .stat-value { font-size:18px; font-weight:600; }
.stat-lead { border-color:var(--accent, #2a6fdb); border-width:2px; } .stat-lead-tag { color:var(--accent, #2a6fdb); font-weight:600; }
.badge { display:inline-block; font-size:11px; padding:2px 6px; border-radius:6px; } .text-bg-warning { background:#fff3cd; color:#664d03; } .table-warning td { background:#fff8e6; }

/* utilities (allow-list) */
.text-muted { color:var(--mute); } .text-danger { color:var(--bad); } .text-success { color:var(--ok); }
.small { font-size:13px; } .fw-semibold { font-weight:600; }
.d-flex { display:flex; } .align-items-center { align-items:center; } .gap-2 { gap:8px; } .ms-auto { margin-left:auto; } .d-block { display:block; }
.d-none { display:none !important; } .mt-3 { margin-top:12px; } .mb-0 { margin-bottom:0; } .mb-2 { margin-bottom:8px; }
@media (max-width:700px) { .col-sm-3, .col-sm-9, .col-md-4, .col-md-6 { flex:0 0 100%; max-width:100%; } .col-form-label { padding-top:0; } }
