:root{
    --ink:#1B2036;
    --ink-soft:#4A5068;
    --paper:#F2F4F7;
    --panel:#FFFFFF;
    --board:#14182B;
    --board-line:#2A3050;
    --amber:#E8A23D;
    --amber-soft:#FCEFDA;
    --amber-ink:#7A4A0C;
    --teal:#2F9E8F;
    --teal-soft:#E3F3F0;
    --teal-ink:#155349;
    --line:#DCE0E7;
    --shadow: 0 1px 2px rgba(20,24,43,0.04), 0 8px 24px rgba(20,24,43,0.06);
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
    background:var(--paper);
    color:var(--ink);
    font-family:'Work Sans',sans-serif;
    line-height:1.5;
    -webkit-font-smoothing:antialiased;
}
.mono{font-family:'IBM Plex Mono',monospace;}
a{color:inherit;}

/* ---------- NAV ---------- */
.nav{
    position:sticky; top:0; z-index:50;
    display:flex; align-items:center; justify-content:space-between;
    padding:16px 32px;
    background:rgba(242,244,247,0.88);
    backdrop-filter:blur(8px);
    border-bottom:1px solid var(--line);
}
.logo{display:flex; align-items:baseline; gap:10px;}
.logo-mark{
    font-family:'IBM Plex Mono',monospace;
    font-weight:600; font-size:20px; letter-spacing:0.02em;
    background:var(--board); color:#fff;
    padding:4px 8px; border-radius:4px;
}
.logo-tag{font-size:13px; color:var(--ink-soft);}
.nav-right{display:flex; align-items:center; gap:18px;}
.saved-pill{
    display:flex; align-items:center; gap:8px;
    font-family:'IBM Plex Mono',monospace; font-size:13px;
    background:var(--panel); border:1px solid var(--line);
    padding:8px 14px; border-radius:999px; cursor:pointer;
    box-shadow:var(--shadow);
}
.saved-pill:hover{border-color:var(--ink-soft);}
.saved-count{
    background:var(--amber); color:var(--amber-ink);
    border-radius:999px; min-width:20px; height:20px;
    display:inline-flex; align-items:center; justify-content:center;
    font-size:11px; font-weight:600; padding:0 5px;
}

/* ---------- HERO / BOARD ---------- */
.hero{
    background:var(--board);
    color:#fff;
    padding:48px 32px 40px;
}
.hero-inner{max-width:1100px; margin:0 auto;}
.eyebrow{
    font-family:'IBM Plex Mono',monospace; font-size:12px;
    letter-spacing:0.12em; text-transform:uppercase;
    color:var(--amber); margin-bottom:10px;
}
.hero h1{
    font-size:38px; font-weight:800; margin:0 0 10px;
    letter-spacing:-0.01em;
}
.hero p.sub{
    color:#B7BCD6; font-size:15px; max-width:520px; margin:0 0 28px;
}

.board{
    background:#0F1223;
    border:1px solid var(--board-line);
    border-radius:10px;
    padding:6px;
    overflow:hidden;
}
.board-row{
    display:grid;
    grid-template-columns:96px 1fr auto;
    align-items:center;
    gap:18px;
    padding:16px 18px;
    border-bottom:1px solid var(--board-line);
}
.board-row:last-child{border-bottom:none;}
.board-row--empty{grid-template-columns:1fr; gap:4px; padding:20px 16px;}
.flap{
    font-family:'IBM Plex Mono',monospace;
    font-weight:600; font-size:13px;
    color:var(--amber);
    background:#1B2040;
    border-radius:6px;
    padding:6px 8px;
    text-align:center;
    animation:flip 0.6s ease-out both;
}
.board-row:nth-child(2) .flap{animation-delay:0.08s;}
.board-row:nth-child(3) .flap{animation-delay:0.16s;}
.board-row:nth-child(4) .flap{animation-delay:0.24s;}
@keyframes flip{
    from{transform:rotateX(90deg); opacity:0;}
    to{transform:rotateX(0deg); opacity:1;}
}
@media (prefers-reduced-motion: reduce){
    .flap{animation:none;}
}
.board-title{font-size:14px; font-weight:600; color:#fff; line-height:1.4;}
.board-org{font-size:12px; color:#8B90AC; margin-top:3px;}
.board-tag{
    font-family:'IBM Plex Mono',monospace; font-size:11px;
    color:#B7BCD6; border:1px solid var(--board-line);
    padding:4px 10px; border-radius:999px; white-space:nowrap;
}

/* ---------- SEARCH + FILTERS ---------- */
.controls{
    max-width:1100px; margin:-24px auto 0; padding:0 32px;
    position:relative; z-index:2;
}
.search-bar{
    background:var(--panel); border:1px solid var(--line);
    border-radius:12px; box-shadow:var(--shadow);
    padding:16px 20px; display:flex; gap:12px; align-items:center;
}
.search-bar input{
    flex:1; border:none; outline:none; font-size:15px;
    font-family:'Work Sans',sans-serif; background:transparent; color:var(--ink);
}
.search-bar input::placeholder{color:#9AA0B4;}
.search-icon{color:#9AA0B4; font-size:16px;}

.filters{
    display:flex; flex-wrap:wrap; gap:10px; margin-top:18px;
}
.chip{
    font-family:'IBM Plex Mono',monospace; font-size:12px;
    padding:8px 16px; border-radius:999px;
    border:1px solid var(--line); background:var(--panel);
    cursor:pointer; color:var(--ink-soft);
    transition:all .12s ease;
}
.chip:hover{border-color:var(--ink-soft); color:var(--ink);}
.chip.active{
    background:var(--ink); border-color:var(--ink); color:#fff;
}

/* ---------- PROFILE PANEL ---------- */
.profile-panel{
    max-width:1100px; margin:24px auto 0; padding:0 32px;
}
.profile-card{
    background:var(--panel); border:1px solid var(--line);
    border-radius:12px; padding:20px 24px; box-shadow:var(--shadow);
}
.profile-head{
    display:flex; align-items:center; justify-content:space-between; cursor:pointer;
}
.profile-head h3{font-size:15px; margin:0; font-weight:700;}
.profile-head span.hint{font-size:12px; color:var(--ink-soft); font-weight:400;}
.chevron{transition:transform .2s ease; color:var(--ink-soft);}
.profile-body{
    display:none; margin-top:18px; padding-top:18px; border-top:1px solid var(--line);
}
.profile-body.open{display:block;}
.profile-panel.open .chevron{transform:rotate(180deg);}
.field-row{display:flex; gap:32px; flex-wrap:wrap;}
.field{flex:1; min-width:220px;}
.field label{
    display:block; font-family:'IBM Plex Mono',monospace; font-size:11px;
    letter-spacing:0.06em; text-transform:uppercase; color:var(--ink-soft); margin-bottom:8px;
}
select{
    width:100%; padding:9px 10px; border-radius:8px; border:1px solid var(--line);
    font-family:'Work Sans',sans-serif; font-size:14px; background:#fff; color:var(--ink);
}
.tag-select{display:flex; flex-wrap:wrap; gap:8px;}
.tag-chip{
    font-size:12.5px; padding:6px 12px; border-radius:999px;
    border:1px solid var(--line); cursor:pointer; color:var(--ink-soft);
}
.tag-chip.active{background:var(--teal); border-color:var(--teal); color:#fff;}

/* ---------- AI PERSONALIZATION ---------- */
.ai-block{
    margin-top:24px; padding-top:22px; border-top:1px solid var(--line);
}
.ai-block label{
    display:block; font-family:'IBM Plex Mono',monospace; font-size:11px;
    letter-spacing:0.06em; text-transform:uppercase; color:var(--ink-soft); margin-bottom:10px;
}
.ai-block textarea{
    width:100%; padding:14px 16px; border-radius:10px; border:1px solid var(--line);
    font-family:'Work Sans',sans-serif; font-size:14px; line-height:1.6;
    color:var(--ink); background:#fff; resize:vertical; min-height:110px;
}
.ai-block textarea:focus{outline:none; border-color:var(--teal);}
.ai-block textarea::placeholder{color:#9AA0B4; line-height:1.6;}
.ai-help{
    font-size:12.5px; color:var(--ink-soft); line-height:1.6;
    margin:12px 0 0; max-width:640px;
}
.btn-ai{
    margin-top:18px; padding:12px 22px; border-radius:8px; border:none;
    background:var(--teal); color:#fff; cursor:pointer;
    font-family:'Work Sans',sans-serif; font-size:13.5px; font-weight:600;
}
.btn-ai:hover{background:var(--teal-ink);}
.btn-ai:disabled{opacity:0.6; cursor:progress;}
.ai-status{
    font-size:12.5px; line-height:1.6; margin:14px 0 0;
    font-family:'IBM Plex Mono',monospace; color:var(--ink-soft);
}
.ai-status--ok{color:var(--teal-ink);}
.ai-status--error{color:#A63D3D;}

.match-row--ai{
    background:var(--teal-soft); align-items:stretch;
    gap:18px; padding:16px 18px;
}
/* The score keeps its own column: nowrap so "8.7/10" never breaks, and a rule
   between it and the text so the two read as separate things. */
.match-row--ai .match-score{
    display:flex; align-items:center;
    min-width:58px; white-space:nowrap;
    padding-right:18px;
    border-right:1px solid rgba(21,83,73,0.18);
}
.match-row--ai .match-explain{font-size:12.5px; line-height:1.6; padding:1px 0;}
.match-outof{font-size:11px; color:var(--ink-soft); margin-left:2px;}

/* Shown instead of a score when we know nothing about the student yet. */
.match-row--prompt{
    justify-content:space-between; gap:14px; cursor:pointer;
    border:1px dashed var(--line); background:transparent;
    transition:border-color .12s ease, background .12s ease;
}
.match-row--prompt:hover,
.match-row--prompt:focus-visible{
    border-color:var(--teal); background:var(--teal-soft); outline:none;
}
.match-row--prompt .match-explain{font-size:12.5px;}
.match-cta{
    font-family:'IBM Plex Mono',monospace; font-size:11.5px; font-weight:600;
    color:var(--teal-ink); white-space:nowrap;
}
.match-badge{
    display:block; width:fit-content;
    font-family:'IBM Plex Mono',monospace; font-size:9.5px;
    letter-spacing:0.05em; text-transform:uppercase; color:var(--teal-ink);
    border:1px solid rgba(21,83,73,0.28); border-radius:4px;
    padding:3px 7px; margin:0 0 8px;
}

/* ---------- RESULTS ---------- */
.results{max-width:1100px; margin:36px auto 80px; padding:0 32px;}
.results-head{
    display:flex; align-items:baseline; justify-content:space-between; margin-bottom:20px;
}
.results-head h2{font-size:18px; margin:0;}
.results-count{font-family:'IBM Plex Mono',monospace; font-size:12.5px; color:var(--ink-soft);}

.grid{display:grid; grid-template-columns:repeat(auto-fill, minmax(320px,1fr)); gap:20px;}

.card{
    background:var(--panel); border:1px solid var(--line); border-radius:12px;
    padding:24px; box-shadow:var(--shadow); display:flex; flex-direction:column; gap:18px;
}
.card-top{display:flex; justify-content:space-between; align-items:flex-start; gap:12px;}
.card-cat{
    font-family:'IBM Plex Mono',monospace; font-size:10.5px; letter-spacing:0.05em;
    text-transform:uppercase; padding:5px 10px; border-radius:6px;
    background:var(--teal-soft); color:var(--teal-ink); white-space:nowrap;
}
.card-deadline{
    font-family:'IBM Plex Mono',monospace; font-size:11.5px; font-weight:600;
    color:var(--amber-ink); background:var(--amber-soft);
    padding:5px 10px; border-radius:6px; white-space:nowrap;
}
.card h3{font-size:16.5px; margin:0; font-weight:700; line-height:1.4;}
.card .org{font-size:13px; color:var(--ink-soft); margin-top:5px;}
.card .summary{font-size:13.5px; color:var(--ink-soft); line-height:1.65;}
.summary-label{
    font-family:'IBM Plex Mono',monospace; font-size:10px; color:#9AA0B4;
    text-transform:uppercase; letter-spacing:0.05em; display:block; margin-bottom:7px;
}
.meta-row{display:flex; gap:8px 16px; flex-wrap:wrap; font-size:12px; color:var(--ink-soft);}
.meta-row span{display:flex; align-items:center; gap:6px;}

.match-row{
    display:flex; align-items:center; gap:14px;
    background:var(--paper); border-radius:8px; padding:14px 16px;
}
.match-score{
    font-family:'IBM Plex Mono',monospace; font-weight:600; font-size:15px;
    color:var(--teal-ink); min-width:38px;
}
.match-explain{font-size:12px; color:var(--ink-soft); line-height:1.5;}

.card-actions{display:flex; gap:12px; margin-top:auto; padding-top:4px;}
.btn{
    flex:1; text-align:center; padding:11px 14px; border-radius:8px;
    font-size:13.5px; font-weight:600; cursor:pointer; border:1px solid transparent;
    text-decoration:none; display:inline-flex; align-items:center; justify-content:center; gap:6px;
}
.btn-primary{background:var(--ink); color:#fff;}
.btn-primary:hover{background:#000;}
.btn-secondary{background:#fff; border-color:var(--line); color:var(--ink);}
.btn-secondary:hover{border-color:var(--ink-soft);}
.btn-secondary.saved{background:var(--amber-soft); border-color:var(--amber); color:var(--amber-ink);}

.empty-state{
    text-align:center; padding:60px 20px; color:var(--ink-soft);
}
.empty-state h3{color:var(--ink); margin-bottom:8px;}
.empty-state button{
    margin-top:14px; font-family:'IBM Plex Mono',monospace; font-size:12.5px;
    background:var(--ink); color:#fff; border:none; padding:9px 16px; border-radius:8px; cursor:pointer;
}

footer{
    text-align:center; padding:24px; font-size:12px; color:#9AA0B4;
    border-top:1px solid var(--line);
}

@media (max-width:640px){
    .hero h1{font-size:28px;}
    .board-row{grid-template-columns:70px 1fr; row-gap:6px;}
    .board-tag{grid-column:1/-1;}
    .field-row{flex-direction:column; gap:18px;}
}
