/* wGrade — one accent colour, system fonts, light + dark via prefers-color-scheme */
*,*::before,*::after{box-sizing:border-box}
:root{
  --bg:#f4f5f9;--surface:#fff;--surface-2:#f1f3f8;--text:#101626;--muted:#535d71;--border:#dde1ea;--border-strong:#c3c9d6;
  --accent:#4338ca;--accent-hover:#3730a3;--accent-ink:#fff;--accent-soft:#eceefd;--accent-line:#c9cdf7;
  --ok:#0b6e44;--ok-soft:#e6f5ee;--bad:#b42318;--bad-soft:#fdecea;
  --ring:0 0 0 3px rgba(67,56,202,.32);
  --radius:16px;--radius-sm:10px;
  --shadow:0 1px 2px rgba(16,24,40,.05),0 10px 30px -12px rgba(16,24,40,.14);
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root{
  --bg:#0b0d14;--surface:#141824;--surface-2:#1a1f2e;--text:#e9ebf1;--muted:#a3abbb;--border:#272d3e;--border-strong:#3a4257;
  --accent:#a5b4fc;--accent-hover:#c3cdfd;--accent-ink:#11142b;--accent-soft:#1d2242;--accent-line:#39427a;
  --ok:#6ee7a8;--ok-soft:#0f2a20;--bad:#fca5a5;--bad-soft:#35171a;
  --ring:0 0 0 3px rgba(165,180,252,.42);
  --shadow:0 1px 2px rgba(0,0,0,.35),0 14px 36px -14px rgba(0,0,0,.7);
  color-scheme:dark;
}}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--text);font:16px/1.6 system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif;-webkit-font-smoothing:antialiased}
a{color:var(--accent);text-underline-offset:.18em}
a:hover{color:var(--accent-hover)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
[hidden]{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip{position:absolute;left:12px;top:-60px;background:var(--accent);color:var(--accent-ink);padding:.5rem .9rem;border-radius:8px;z-index:10;text-decoration:none;font-weight:600}
.skip:focus{top:12px;color:var(--accent-ink)}
.wrap{max-width:70rem;margin:0 auto;padding-inline:16px}

/* Header + nav */
.site-head{border-bottom:1px solid var(--border);background:var(--surface)}
.site-head .wrap{display:flex;align-items:center;gap:1rem;min-height:60px;flex-wrap:wrap;padding-block:.5rem}
.brand{display:inline-flex;align-items:center;gap:.55rem;font-weight:750;font-size:1.06rem;letter-spacing:-.01em;color:var(--text);text-decoration:none;margin-right:auto}
.brand:hover{color:var(--text)}
.brand svg{flex:none}
.brand b{color:var(--accent);font-weight:750}
.nav{display:flex;gap:.25rem;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;max-width:100%}
.nav::-webkit-scrollbar{display:none}
.nav a{white-space:nowrap;text-decoration:none;color:var(--muted);font-weight:560;font-size:.93rem;padding:.42rem .78rem;border-radius:999px}
.nav a:hover{color:var(--text);background:var(--surface-2)}
.nav a[aria-current="page"]{color:var(--accent);background:var(--accent-soft)}

/* Intro */
.intro{padding-block:1.25rem .9rem}
.intro h1{font-size:clamp(1.55rem,4.6vw,2.3rem);line-height:1.15;letter-spacing:-.025em;margin:0 0 .35rem;font-weight:780}
.intro p{margin:0;color:var(--muted);max-width:42rem}

/* Tool card */
.tool{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px;display:grid;gap:14px;align-items:start}
.panel{min-width:0}
.cols,.row{display:grid;gap:.45rem;align-items:center}
.w-grid{grid-template-columns:minmax(0,1fr) 5.4rem 4.9rem 2.5rem}
.cols{font-size:.76rem;font-weight:650;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);padding:0 2px .35rem}
.rows{display:grid;gap:.45rem}
input,select{font:inherit;font-size:1rem;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);height:44px;padding:0 .7rem;width:100%;min-width:0;transition:border-color .15s,box-shadow .15s}
select{padding-right:1.6rem;appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 13px) 19px,calc(100% - 8px) 19px;background-size:5px 5px;background-repeat:no-repeat}
input::placeholder{color:var(--muted);opacity:.5}
.content strong,.example strong{font-weight:700}
.c-type select{height:38px;font-size:.92rem}
input:hover,select:hover{border-color:var(--muted)}
input:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:var(--ring)}
input.is-invalid{border-color:var(--bad);background:var(--bad-soft)}
.num{text-align:right;font-variant-numeric:tabular-nums}
.suffix{position:relative}
.suffix input{padding-right:1.6rem}
.suffix span{position:absolute;right:.65rem;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none;font-size:.95rem}
.del{height:44px;width:100%;border:0;background:transparent;color:var(--muted);border-radius:var(--radius-sm);cursor:pointer;display:grid;place-items:center}
.del:hover{background:var(--bad-soft);color:var(--bad)}
.actions{display:flex;gap:.5rem;align-items:center;margin-top:.6rem;flex-wrap:wrap}
.btn{font:inherit;font-weight:620;font-size:.95rem;height:42px;padding:0 1rem;border-radius:var(--radius-sm);cursor:pointer;display:inline-flex;align-items:center;gap:.4rem}
.btn-add{flex:1;justify-content:center;background:var(--accent-soft);color:var(--accent);border:1px dashed var(--accent-line)}
.btn-add:hover{border-style:solid;border-color:var(--accent)}
.btn-ghost{background:transparent;border:1px solid transparent;color:var(--muted)}
.btn-ghost:hover{color:var(--text);border-color:var(--border)}

/* Result */
.result{background:var(--surface-2);border:1px solid var(--border);border-radius:calc(var(--radius) - 4px);padding:14px 16px;position:sticky;bottom:calc(10px + env(safe-area-inset-bottom,0px));z-index:2;box-shadow:0 -6px 24px -12px rgba(16,24,40,.25)}
.result-label{font-size:.78rem;font-weight:650;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin:0}
.result-main{display:flex;align-items:center;gap:.8rem;margin:.1rem 0 .15rem}
.big{font-size:clamp(2.1rem,9vw,3.1rem);font-weight:780;letter-spacing:-.035em;line-height:1.05;font-variant-numeric:tabular-nums}
.badge{display:inline-grid;place-items:center;min-width:2.9rem;height:2.9rem;padding:0 .6rem;border-radius:999px;background:var(--accent);color:var(--accent-ink);font-weight:760;font-size:1.25rem}
.note{margin:.2rem 0 0;color:var(--muted);font-size:.9rem;line-height:1.45}
.meter{margin-top:.75rem}
.meter-track{height:6px;border-radius:99px;background:var(--border);overflow:hidden}
.meter-fill{height:100%;width:0;background:var(--accent);border-radius:99px;transition:width .25s}
.meter-label{font-size:.8rem;color:var(--muted);margin-top:.3rem;display:block}
.next{display:inline-block;margin-top:.6rem;font-weight:620;font-size:.92rem}
.side{display:contents}
.result-extra{padding:0 4px}

/* Final grade tool */
.fields{display:grid;gap:.85rem}
.field{display:flex;flex-direction:column;justify-content:flex-end}
.field input{height:50px;font-size:1.15rem;text-align:left}
.field label{display:block;font-weight:620;font-size:.95rem;margin-bottom:.3rem}
.field .hint{display:block;font-weight:400;color:var(--muted);font-size:.84rem}
.result[data-status="impossible"] .big{color:var(--bad)}
.result[data-status="secured"] .big{color:var(--ok)}
.result[data-status="impossible"]{border-color:var(--bad);background:var(--bad-soft)}
.result[data-status="secured"]{border-color:var(--ok);background:var(--ok-soft)}
.targets{width:100%;border-collapse:collapse;margin-top:.7rem;font-size:.92rem;font-variant-numeric:tabular-nums}
.targets caption{text-align:left;font-size:.78rem;font-weight:650;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);padding-bottom:.25rem}
.targets th,.targets td{padding:.38rem 0;border-top:1px solid var(--border);text-align:left;font-weight:560}
.targets th span{color:var(--muted);font-weight:400}
.targets td{text-align:right}
.targets tr[data-status="impossible"] td{color:var(--bad)}
.targets tr[data-status="secured"] td{color:var(--ok)}

/* GPA tool */
.g-grid{grid-template-columns:minmax(0,1fr) 4.9rem 4.1rem 2.5rem;grid-template-areas:"name grade credits del" "type type type ."}
.g-grid>.c-name{grid-area:name}.g-grid>.c-grade{grid-area:grade}.g-grid>.c-credits{grid-area:credits}.g-grid>.c-type{grid-area:type}.g-grid>.c-del{grid-area:del}
.c-type{display:none}
.is-weighted .c-type{display:block}
.row.g-grid{row-gap:.35rem}
.is-weighted .row.g-grid{padding-bottom:.45rem;border-bottom:1px solid var(--border)}
.cols.g-grid{grid-template-areas:"name grade credits del"}
.cols.g-grid .c-type{display:none}
.toggle{display:flex;align-items:center;gap:.6rem;margin:.9rem 0 0;font-weight:560;cursor:pointer}
.toggle input{width:1.15rem;height:1.15rem;accent-color:var(--accent);margin:0;flex:none}
.toggle small{color:var(--muted);font-weight:400}
fieldset.prior{border:1px solid var(--border);border-radius:var(--radius-sm);margin:1rem 0 0;padding:.6rem .85rem .9rem}
fieldset.prior legend{font-weight:650;padding:0 .35rem;font-size:.95rem}
.prior-grid{display:grid;grid-template-columns:1fr 1fr;gap:.7rem}
.prior-grid label{font-size:.88rem;color:var(--muted);display:block;margin-bottom:.25rem}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-top:.7rem;padding-top:.7rem;border-top:1px solid var(--border)}
.stat b{display:block;font-size:1.35rem;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.stat span{font-size:.8rem;color:var(--muted)}

/* Ad placeholders: empty until an ad network is added. Always below the tool. */
.ad-slot{max-width:728px;margin:1.5rem auto}
.ad-slot:empty{margin:0}

/* Article */
.content{max-width:46rem;margin:0 auto;padding-block:2rem 1rem}
.content h2{font-weight:720;font-size:1.4rem;letter-spacing:-.015em;line-height:1.25;margin:2.2rem 0 .6rem}
.content h2:first-child{margin-top:0}
.content h3{font-size:1.05rem;margin:1.4rem 0 .4rem}
.content p,.content li{color:var(--text)}
.formula{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius-sm);padding:.8rem 1rem;font-size:1.02rem;overflow-x:auto}
.formula code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.95em;white-space:nowrap}
.example{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.9rem 1.1rem}
.example p{margin:.4rem 0}
.table-wrap{overflow-x:auto}
.scale{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums;font-size:.95rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}
.scale th,.scale td{padding:.45rem .8rem;border-bottom:1px solid var(--border);text-align:left}
.scale thead th{background:var(--surface-2);font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.scale tr:last-child td{border-bottom:0}
.faq details{border-bottom:1px solid var(--border)}
.faq summary{cursor:pointer;list-style:none;padding:.9rem 2rem .9rem 0;font-weight:640;position:relative}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";position:absolute;right:.25rem;top:.7rem;font-size:1.3rem;color:var(--accent);font-weight:500}
.faq details[open] summary::after{content:"\2212"}
.faq details>div{padding:0 0 1rem;color:var(--text)}
.faq details>div p{margin:.3rem 0}
.more{display:grid;gap:.6rem;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));margin-top:.8rem}
.more a{display:block;text-decoration:none;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.85rem 1rem;color:var(--text)}
.more a:hover{border-color:var(--accent)}
.more strong{display:block;color:var(--accent)}
.more span{font-size:.9rem;color:var(--muted)}

/* Footer */
.site-foot{border-top:1px solid var(--border);margin-top:2.5rem;padding-block:1.5rem 2rem;color:var(--muted);font-size:.9rem}
.site-foot .wrap{display:flex;flex-wrap:wrap;gap:.6rem 1.5rem;justify-content:space-between}
.site-foot nav{display:flex;gap:1rem;flex-wrap:wrap}
.site-foot a{color:var(--muted)}
.site-foot a:hover{color:var(--text)}
.site-foot p{margin:0}

@media (min-width:640px){
  .tool{padding:20px}
  .w-grid{grid-template-columns:minmax(0,1fr) 7rem 6rem 2.5rem}
  .g-grid,.cols.g-grid{grid-template-columns:minmax(0,1fr) 6rem 5rem 2.5rem;grid-template-areas:"name grade credits del"}
  .is-weighted .g-grid{grid-template-columns:minmax(0,1fr) 6rem 5rem 8.5rem 2.5rem;grid-template-areas:"name grade credits type del"}
  .is-weighted .cols.g-grid .c-type{display:block}
  .is-weighted .row.g-grid{padding-bottom:0;border-bottom:0}
  .c-type select{height:44px;font-size:1rem}
  .fields{grid-template-columns:repeat(3,1fr)}
}
@media (min-width:920px){
  .tool{grid-template-columns:minmax(0,1fr) 19rem;padding:24px;gap:24px}
  .side{display:block;position:sticky;top:1rem}
  .result{position:static;box-shadow:none;padding:18px 20px}
  .result-extra{padding:0 2px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
