:root {
    --bg: #0e1116;
    --panel: #161b22;
    --panel-2: #1c232d;
    --line: #2a313c;
    --ink: #e7edf3;
    --muted: #8a97a6;
    --accent: #4ade80;        /* emerald — "available" */
    --accent-ink: #052e16;
    --warn: #fbbf24;          /* amber — "caution" */
    --bad: #f87171;           /* coral — "taken" */
    --brand: #7c9cff;
    --radius: 14px;
    --mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;
    --sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}

* { box-sizing: border-box; }

body {
    margin: 0;
    font-family: var(--sans);
    background:
        radial-gradient(900px 500px at 80% -10%, #1b2740 0%, transparent 60%),
        radial-gradient(700px 400px at 0% 0%, #112019 0%, transparent 55%),
        var(--bg);
    color: var(--ink);
    line-height: 1.55;
    min-height: 100vh;
}

.wrap { width: min(960px, 92vw); margin: 0 auto; }

/* Header */
.site { border-bottom: 1px solid var(--line); }
.site .wrap { display: flex; align-items: center; justify-content: space-between; padding: 16px 0; }
.brand { font-weight: 800; font-size: 1.3rem; letter-spacing: -0.02em; color: var(--ink); text-decoration: none; }
.brand .dot { color: var(--accent); }
.caps { display: flex; gap: 8px; flex-wrap: wrap; }
.cap {
    font-size: 0.72rem; font-weight: 600; letter-spacing: 0.02em;
    padding: 4px 9px; border-radius: 999px; border: 1px solid var(--line);
    color: var(--muted); white-space: nowrap;
}
.cap.on { color: var(--accent); border-color: color-mix(in srgb, var(--accent) 40%, var(--line)); }
.cap.off { opacity: 0.5; }

/* Hero */
.hero { padding: 56px 0 24px; text-align: center; }
.hero h1 { font-size: clamp(1.9rem, 4.5vw, 3rem); line-height: 1.1; letter-spacing: -0.03em; margin: 0 0 14px; }
.sub { color: var(--muted); font-size: 1.05rem; max-width: 620px; margin: 0 auto 30px; }
.sub strong { color: var(--ink); font-weight: 600; }

/* Search bar */
.searchbar { display: flex; gap: 10px; max-width: 580px; margin: 0 auto; }
.searchbar input {
    flex: 1; background: var(--panel); border: 1px solid var(--line); color: var(--ink);
    padding: 15px 18px; border-radius: var(--radius); font-size: 1.05rem; outline: none;
    transition: border-color .15s, box-shadow .15s;
}
.searchbar input:focus { border-color: var(--brand); box-shadow: 0 0 0 3px color-mix(in srgb, var(--brand) 25%, transparent); }
.searchbar button {
    background: var(--accent); color: var(--accent-ink); border: 0; font-weight: 700;
    padding: 0 24px; border-radius: var(--radius); font-size: 1rem; cursor: pointer;
    transition: transform .05s, filter .15s;
}
.searchbar button.secondary { background: var(--brand); color: #07122e; }
.searchbar button:hover { filter: brightness(1.05); }
.searchbar button:active { transform: translateY(1px); }
.searchbar.ghost input { background: var(--panel-2); }
.hint { text-align: center; color: var(--muted); font-size: 0.88rem; margin-top: 12px; }
.hint em { color: var(--brand); font-style: normal; }

/* Result panel */
.result { margin: 30px 0; }
.card {
    background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius);
    overflow: hidden;
}
.card-head {
    display: flex; align-items: center; gap: 16px; padding: 20px 22px;
    border-bottom: 1px solid var(--line);
}
.domain { font-family: var(--mono); font-size: 1.5rem; font-weight: 600; letter-spacing: -0.01em; }
.badge {
    margin-left: auto; font-weight: 700; font-size: 0.82rem; text-transform: uppercase;
    letter-spacing: 0.05em; padding: 7px 14px; border-radius: 999px;
}
.badge.available { background: color-mix(in srgb, var(--accent) 18%, transparent); color: var(--accent); }
.badge.caution   { background: color-mix(in srgb, var(--warn) 18%, transparent); color: var(--warn); }
.badge.taken     { background: color-mix(in srgb, var(--bad) 18%, transparent); color: var(--bad); }

.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 1px; background: var(--line); }
.tile { background: var(--panel); padding: 18px 20px; }
.tile h3 { margin: 0 0 8px; font-size: 0.72rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted); }
.tile .big { font-size: 1.15rem; font-weight: 600; }
.tile .big.good { color: var(--accent); }
.tile .big.bad { color: var(--bad); }
.tile .big.warn { color: var(--warn); }
.tile dl { margin: 8px 0 0; font-size: 0.86rem; }
.tile dl div { display: flex; justify-content: space-between; gap: 10px; padding: 3px 0; border-top: 1px dashed var(--line); }
.tile dt { color: var(--muted); }
.tile dd { margin: 0; text-align: right; font-family: var(--mono); font-size: 0.8rem; }
.reasons { padding: 16px 22px; }
.reasons li { color: var(--muted); font-size: 0.9rem; margin: 4px 0; }
.taglist { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.tag { font-size: 0.74rem; font-family: var(--mono); background: var(--panel-2); border: 1px solid var(--line); padding: 3px 8px; border-radius: 6px; color: var(--muted); }
.tag.exact { color: var(--bad); border-color: color-mix(in srgb, var(--bad) 40%, var(--line)); }

/* Engine / model provenance */
.engines {
    grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
    margin-bottom: 4px; padding-bottom: 6px;
}
.engines-label { font-size: 0.72rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--muted); }
.eng {
    font-family: var(--mono); font-size: 0.74rem; padding: 4px 10px; border-radius: 999px;
    border: 1px solid var(--line); background: var(--panel-2); color: var(--muted);
}
.eng.ok { color: var(--brand); border-color: color-mix(in srgb, var(--brand) 40%, var(--line)); }
.eng.off { opacity: 0.6; }
.sources {
    padding: 0 22px 16px; font-size: 0.78rem; color: var(--muted); font-family: var(--mono);
}

/* Suggestions */
.suggest-block { margin: 10px 0 60px; }
.suggest-title { text-align: center; font-size: 1.3rem; letter-spacing: -0.02em; margin: 40px 0 18px; }
#suggest-form { max-width: 580px; margin: 0 auto; }
.brief { display: flex; gap: 10px; margin-top: 10px; }
.brief label { flex: 1; display: flex; flex-direction: column; gap: 5px; }
.brief label span { font-size: 0.72rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--muted); padding-left: 2px; }
.brief input {
    background: var(--panel-2); border: 1px solid var(--line); color: var(--ink);
    padding: 11px 14px; border-radius: 10px; font-size: 0.95rem; outline: none;
    transition: border-color .15s, box-shadow .15s;
}
.brief input:focus { border-color: var(--brand); box-shadow: 0 0 0 3px color-mix(in srgb, var(--brand) 22%, transparent); }
.why { margin-top: 8px; font-size: 0.84rem; color: var(--ink); opacity: 0.85; line-height: 1.4; }

/* "Keep" toggle on suggestion + result cards */
.keep {
    display: inline-flex; align-items: center; gap: 7px; margin-top: 12px; cursor: pointer;
    font-size: 0.8rem; color: var(--muted); user-select: none;
}
.card-head .keep { margin-top: 0; margin-left: 14px; }
.keep input { width: 16px; height: 16px; accent-color: var(--accent); cursor: pointer; margin: 0; }
.keep.on { color: var(--accent); }
.sugg.is-kept { border-color: color-mix(in srgb, var(--accent) 55%, var(--line)); box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 35%, transparent); }

/* Shortlist */
.shortlist { margin: 28px 0 10px; }
.shortlist .count { color: var(--accent); font-weight: 600; }
.sugg.pinned { position: relative; border-color: color-mix(in srgb, var(--accent) 45%, var(--line)); padding-right: 36px; }
.pin-remove {
    position: absolute; top: 8px; right: 8px; width: 24px; height: 24px; line-height: 1;
    display: grid; place-items: center; border-radius: 7px; cursor: pointer;
    background: transparent; border: 1px solid var(--line); color: var(--muted);
    font-size: 1.15rem; transition: background .12s, color .12s, border-color .12s;
}
.pin-remove:hover { background: color-mix(in srgb, var(--bad) 16%, transparent); color: var(--bad); border-color: color-mix(in srgb, var(--bad) 45%, var(--line)); }
.flags { margin-top: 8px; display: flex; flex-wrap: wrap; gap: 5px; }
.flag { font-size: 0.7rem; color: var(--warn); background: color-mix(in srgb, var(--warn) 12%, transparent); border: 1px solid color-mix(in srgb, var(--warn) 30%, var(--line)); padding: 2px 7px; border-radius: 6px; }
.suggestions { margin-top: 22px; display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; }
.sugg {
    background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius);
    padding: 16px 18px; transition: border-color .15s, transform .1s;
}
.sugg:hover { border-color: color-mix(in srgb, var(--accent) 45%, var(--line)); transform: translateY(-2px); }
.sugg .dom { font-family: var(--mono); font-size: 1.1rem; font-weight: 600; }
.sugg .dom .tld { color: var(--accent); }
.sugg .meta { margin-top: 6px; display: flex; justify-content: space-between; font-size: 0.74rem; color: var(--muted); }
.sugg .src { text-transform: capitalize; }

/* States */
.loading { text-align: center; color: var(--muted); padding: 30px; }
.spinner {
    width: 22px; height: 22px; border: 3px solid var(--line); border-top-color: var(--brand);
    border-radius: 50%; display: inline-block; animation: spin .7s linear infinite; vertical-align: middle; margin-right: 10px;
}
@keyframes spin { to { transform: rotate(360deg); } }
.empty { color: var(--muted); text-align: center; padding: 24px; }
.error { color: var(--bad); text-align: center; padding: 16px; }

/* Footer */
.site-foot { border-top: 1px solid var(--line); margin-top: 40px; }
.site-foot .wrap { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 8px; padding: 22px 0; font-size: 0.82rem; color: var(--muted); }
.muted { color: var(--muted); }

@media (max-width: 560px) {
    .searchbar { flex-direction: column; }
    .searchbar button { padding: 14px; }
    .card-head { flex-wrap: wrap; }
    .badge { margin-left: 0; }
    .brief { flex-direction: column; }
}
