/* GradeLab — scoped page + calculator styles. Every selector lives under .gradelab. v1.0.0 */
.gradelab{
  --gl-brand:#4F46E5;--gl-brand-700:#4338CA;--gl-brand-500:#6366F1;--gl-brand-50:#EEF2FF;
  --gl-ink:#0F172A;--gl-body:#334155;--gl-muted:#64748B;--gl-line:#E2E8F0;
  --gl-surface:#FFFFFF;--gl-surface-2:#F8FAFC;--gl-surface-3:#F1F5F9;--gl-accent:#0EA5E9;
  --gl-a:#15803D;--gl-a-bg:#DCFCE7;--gl-b:#4D7C0F;--gl-b-bg:#ECFCCB;--gl-c:#A16207;--gl-c-bg:#FEF9C3;--gl-d:#C2410C;--gl-d-bg:#FFEDD5;--gl-f:#DC2626;--gl-f-bg:#FEE2E2;
  --gl-r-md:12px;--gl-r-lg:16px;
  --gl-shadow:0 1px 3px rgba(15,23,42,.06),0 8px 24px rgba(15,23,42,.05);--gl-shadow-lg:0 10px 40px rgba(15,23,42,.12);
  --gl-fd:'Space Grotesk',system-ui,-apple-system,'Segoe UI',sans-serif;--gl-fb:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif;
  font-family:var(--gl-fb);color:var(--gl-body);line-height:1.6;font-feature-settings:"tnum";
}
.gradelab *,.gradelab *::before,.gradelab *::after{box-sizing:border-box;}
.gradelab .gl-container{max-width:1120px;margin:0 auto;padding:0 20px;}
.gradelab .gl-narrow{max-width:760px;margin-left:auto;margin-right:auto;}
.gradelab h1,.gradelab h2,.gradelab h3{font-family:var(--gl-fd);color:var(--gl-ink);line-height:1.2;font-weight:700;}
.gradelab h1{font-size:clamp(30px,5vw,40px);margin:0 0 8px;}
.gradelab h2{font-size:clamp(23px,3.5vw,28px);margin:36px 0 12px;}
.gradelab h3{font-size:19px;margin:22px 0 8px;}
.gradelab p{margin:0 0 16px;}
.gradelab a{color:var(--gl-brand);text-decoration:underline;text-underline-offset:2px;}
.gradelab a:hover{color:var(--gl-brand-700);}
.gradelab .gl-hero{background:linear-gradient(180deg,var(--gl-brand-50),var(--gl-surface-2));padding:36px 0 20px;text-align:center;}
.gradelab .gl-lede{font-size:18px;color:var(--gl-muted);max-width:60ch;margin:0 auto 22px;}
.gradelab .gl-trust{display:flex;gap:6px 20px;justify-content:center;flex-wrap:wrap;color:var(--gl-muted);font-size:14px;margin-top:16px;}
.gradelab .gl-trust b{color:var(--gl-ink);}
.gradelab .gl-calc{background:var(--gl-surface);border:1px solid var(--gl-line);border-radius:var(--gl-r-lg);box-shadow:var(--gl-shadow);max-width:720px;margin:0 auto;text-align:left;}
.gradelab .gl-calc-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--gl-line);flex-wrap:wrap;}
.gradelab .gl-calc-title{font-family:var(--gl-fd);font-weight:600;color:var(--gl-ink);font-size:15px;}
.gradelab .gl-toggle{font-size:13px;color:var(--gl-muted);display:inline-flex;align-items:center;gap:6px;cursor:pointer;}
.gradelab .gl-rows{padding:12px 20px 0;}
.gradelab .gl-row{display:grid;grid-template-columns:1fr 92px 92px 40px;gap:8px;align-items:center;margin-bottom:8px;}
.gradelab .gl-row-head span{font-size:11px;color:var(--gl-muted);font-weight:700;text-transform:uppercase;letter-spacing:.05em;}
.gradelab .gl-input{width:100%;padding:10px 12px;border:1px solid var(--gl-line);border-radius:var(--gl-r-md);font:inherit;font-size:15px;color:var(--gl-ink);background:var(--gl-surface);min-height:44px;}
.gradelab .gl-input:focus{outline:2px solid var(--gl-brand-500);outline-offset:1px;border-color:var(--gl-brand-500);}
.gradelab .gl-rm{border:none;background:var(--gl-surface-3);color:var(--gl-muted);border-radius:var(--gl-r-md);height:44px;cursor:pointer;font-size:20px;line-height:1;padding:0;width:40px;min-width:0;}
.gradelab .gl-rm:hover{background:var(--gl-f-bg);color:var(--gl-f);}
.gradelab .gl-add{margin:4px 20px 16px;background:var(--gl-brand-50);color:var(--gl-brand-700);border:1px dashed var(--gl-brand-500);border-radius:var(--gl-r-md);padding:11px 14px;cursor:pointer;font:inherit;font-weight:600;min-height:44px;width:calc(100% - 40px);}
.gradelab .gl-add:hover{background:#e0e7ff;}
.gradelab .gl-result{margin:0 20px 20px;border-radius:var(--gl-r-md);padding:20px;text-align:center;background:var(--gl-surface-2);border:1px solid var(--gl-line);transition:background .2s,border-color .2s;}
.gradelab .gl-result-label{font-size:12px;color:var(--gl-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:2px;}
.gradelab .gl-result-num{font-family:var(--gl-fd);font-size:clamp(48px,12vw,72px);font-weight:700;line-height:1.05;color:var(--gl-ink);}
.gradelab .gl-result-letter{display:none;font-weight:700;font-size:18px;padding:4px 16px;border-radius:999px;margin-top:10px;background:var(--gl-surface-3);color:var(--gl-ink);}
.gradelab .gl-result-sub{font-size:13px;color:#475569;margin-top:10px;}
.gradelab .gl-btn-row{display:flex;gap:8px;justify-content:center;margin-top:14px;}
.gradelab .gl-btn{font:inherit;font-weight:600;border-radius:var(--gl-r-md);padding:9px 16px;cursor:pointer;min-height:40px;border:1px solid var(--gl-line);background:var(--gl-surface);color:var(--gl-body);}
.gradelab .gl-btn:hover{border-color:var(--gl-brand-500);color:var(--gl-brand-700);}
.gradelab .gl-result.band-a .gl-result-num{color:var(--gl-a);}.gradelab .gl-result.band-a{background:var(--gl-a-bg);border-color:#bbf7d0;}.gradelab .gl-result.band-a .gl-result-letter{background:var(--gl-a);color:#fff;}
.gradelab .gl-result.band-b .gl-result-num{color:var(--gl-b);}.gradelab .gl-result.band-b{background:var(--gl-b-bg);border-color:#d9f99d;}.gradelab .gl-result.band-b .gl-result-letter{background:var(--gl-b);color:#fff;}
.gradelab .gl-result.band-c .gl-result-num{color:var(--gl-c);}.gradelab .gl-result.band-c{background:var(--gl-c-bg);border-color:#fde68a;}.gradelab .gl-result.band-c .gl-result-letter{background:var(--gl-c);color:#fff;}
.gradelab .gl-result.band-d .gl-result-num{color:var(--gl-d);}.gradelab .gl-result.band-d{background:var(--gl-d-bg);border-color:#fed7aa;}.gradelab .gl-result.band-d .gl-result-letter{background:var(--gl-d);color:#fff;}
.gradelab .gl-result.band-f .gl-result-num{color:var(--gl-f);}.gradelab .gl-result.band-f{background:var(--gl-f-bg);border-color:#fecaca;}.gradelab .gl-result.band-f .gl-result-letter{background:var(--gl-f);color:#fff;}
.gradelab .gl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:16px;margin:18px 0;}
.gradelab .gl-card{display:block;background:var(--gl-surface);border:1px solid var(--gl-line);border-radius:var(--gl-r-lg);padding:18px;text-decoration:none;color:var(--gl-ink);box-shadow:var(--gl-shadow);transition:transform .15s,box-shadow .15s;}
.gradelab .gl-card:hover{transform:translateY(-2px);box-shadow:var(--gl-shadow-lg);color:var(--gl-ink);}
.gradelab .gl-card-title{display:block;font-family:var(--gl-fd);font-weight:600;font-size:16px;margin-bottom:4px;color:var(--gl-brand-700);}
.gradelab .gl-card-desc{display:block;font-size:14px;color:var(--gl-muted);line-height:1.5;}
.gradelab .gl-steps{counter-reset:s;list-style:none;padding:0;margin:0;}
.gradelab .gl-steps li{position:relative;padding:2px 0 14px 46px;}
.gradelab .gl-steps li::before{counter-increment:s;content:counter(s);position:absolute;left:0;top:0;width:32px;height:32px;border-radius:999px;background:var(--gl-brand);color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center;font-family:var(--gl-fd);}
.gradelab .gl-callout{background:var(--gl-brand-50);border-left:4px solid var(--gl-brand);border-radius:var(--gl-r-md);padding:16px 20px;margin:16px 0;}
.gradelab .gl-formula{background:var(--gl-surface-3);border-radius:var(--gl-r-md);padding:14px 18px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--gl-ink);overflow-x:auto;margin:12px 0;}
.gradelab .gl-table-wrap{overflow-x:auto;}
.gradelab table.gl-scale{width:100%;border-collapse:collapse;margin:14px 0;font-size:15px;min-width:460px;}
.gradelab table.gl-scale th,.gradelab table.gl-scale td{padding:10px 14px;text-align:left;border-bottom:1px solid var(--gl-line);}
.gradelab table.gl-scale th{background:var(--gl-surface-3);font-family:var(--gl-fd);color:var(--gl-ink);}
.gradelab .gl-pill{display:inline-block;font-weight:700;padding:2px 12px;border-radius:999px;color:#fff;}
.gradelab details.gl-faq{border:1px solid var(--gl-line);border-radius:var(--gl-r-md);margin-bottom:10px;background:var(--gl-surface);overflow:hidden;}
.gradelab details.gl-faq summary{cursor:pointer;padding:15px 20px;font-weight:600;color:var(--gl-ink);font-family:var(--gl-fd);list-style:none;display:flex;justify-content:space-between;align-items:center;gap:12px;}
.gradelab details.gl-faq summary::-webkit-details-marker{display:none;}
.gradelab details.gl-faq summary::after{content:"+";font-size:24px;color:var(--gl-brand);line-height:1;}
.gradelab details.gl-faq[open] summary::after{content:"\2013";}
.gradelab details.gl-faq .gl-faq-body{padding:0 20px 16px;}
.gradelab details.gl-faq .gl-faq-body p{margin:0;}
.gradelab .gl-ad{margin:26px auto;max-width:728px;min-height:90px;display:flex;align-items:center;justify-content:center;background:var(--gl-surface-3);border:1px dashed var(--gl-line);border-radius:var(--gl-r-md);color:var(--gl-muted);font-size:12px;}
.gradelab .gl-why{background:var(--gl-surface-2);border:1px solid var(--gl-line);border-radius:var(--gl-r-lg);padding:24px;}
.gradelab .gl-byline{font-size:14px;color:var(--gl-muted);margin-top:6px;}
.gradelab .gl-disclaimer{font-size:13px;color:var(--gl-muted);font-style:italic;margin-top:14px;border-top:1px solid var(--gl-line);padding-top:12px;}
.gradelab .gl-section{padding:6px 0;}
.gradelab .gl-eyebrow{font-family:var(--gl-fd);font-weight:600;color:var(--gl-brand);font-size:13px;letter-spacing:.05em;text-transform:uppercase;}
@media (max-width:640px){
  .gradelab .gl-row{grid-template-columns:1fr 64px 64px 40px;}
  .gradelab .gl-hero{padding:24px 0 12px;}
  .gradelab .gl-result.gl-sticky{position:sticky;bottom:0;z-index:5;box-shadow:var(--gl-shadow-lg);}
}

/* Override theme content-link underline on cards */
.gradelab a.gl-card,.gradelab a.gl-card:hover,.gradelab .gl-card .gl-card-title,.gradelab .gl-card .gl-card-desc{text-decoration:none !important;}

/* v2: input-type modes, GPA badge, letter dropdown */
.gradelab .gl-modes{display:inline-flex;background:var(--gl-surface-3);border-radius:var(--gl-r-md);padding:3px;gap:2px;}
.gradelab .gl-mode{border:none;background:transparent;color:#475569;font:inherit;font-weight:600;font-size:13px;padding:6px 12px;border-radius:9px;cursor:pointer;min-height:34px;}
.gradelab .gl-mode.is-active{background:var(--gl-surface);color:var(--gl-brand-700);box-shadow:0 1px 2px rgba(15,23,42,.10);}
.gradelab select.gl-input{-webkit-appearance:menulist;appearance:menulist;background:var(--gl-surface);cursor:pointer;}
.gradelab .gl-result-badges{display:flex;gap:8px;justify-content:center;align-items:center;margin-top:10px;flex-wrap:wrap;}
.gradelab .gl-result-letter{margin-top:0;}
.gradelab .gl-result-gpa{display:none;font-weight:700;font-size:14px;padding:5px 13px;border-radius:999px;background:var(--gl-surface-3);color:var(--gl-ink);}
.gradelab .gl-pmwrap{display:inline-flex;margin:0 20px 14px;}
@media (max-width:640px){.gradelab .gl-modes{width:100%;}.gradelab .gl-mode{flex:1;}}

/* Coming-soon cards (unbuilt pages) + neutralized inline links */
.gradelab .gl-card-soon{cursor:default;box-shadow:none;}
.gradelab .gl-card-soon:hover{transform:none;box-shadow:none;}
.gradelab .gl-card-soon .gl-card-title{color:#334155;}.gradelab .gl-card-soon .gl-card-desc{color:#475569;}
.gradelab .gl-soon{display:inline-block;margin-top:10px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#4338CA;background:#EEF2FF;padding:2px 9px;border-radius:999px;}
.gradelab .gl-ilink{color:inherit;}

/* Grade-goal planner */
.gradelab .gl-goal{margin:0 20px 18px;padding:14px 16px;background:var(--gl-brand-50);border-radius:var(--gl-r-md);font-size:14px;color:var(--gl-body);}
.gradelab .gl-goal-q{font-weight:700;color:var(--gl-brand-700);display:block;margin-bottom:6px;font-family:var(--gl-fd);}
.gradelab .gl-goal-input{width:64px;padding:6px 8px;border:1px solid var(--gl-line);border-radius:8px;font:inherit;text-align:center;min-height:36px;margin:0 2px;}
.gradelab .gl-goal-out{margin-top:8px;color:var(--gl-ink);}
.gradelab .gl-goal-out strong{color:var(--gl-brand-700);}

/* UX: larger touch targets for the mode toggle and goal input */
.gradelab .gl-mode{min-height:40px;}
.gradelab .gl-goal-input{min-height:44px;}

.gradelab .gl-legal{max-width:768px;margin:0 auto;padding:8px 4px 36px;color:#334155;font-size:16px;line-height:1.72;}
.gradelab .gl-legal h1{font-family:'Space Grotesk',sans-serif;font-size:2.1rem;line-height:1.2;color:#0f172a;margin:0 0 6px;}
.gradelab .gl-legal .gl-legal-meta{color:#475569;font-size:.9rem;margin:0 0 22px;}
.gradelab .gl-legal h2{font-family:'Space Grotesk',sans-serif;font-size:1.35rem;line-height:1.3;color:#0f172a;margin:36px 0 10px;padding-top:20px;border-top:1px solid #E2E8F0;}
.gradelab .gl-legal h3{font-size:1.05rem;color:#1e293b;margin:22px 0 6px;}
.gradelab .gl-legal p{margin:0 0 14px;}
.gradelab .gl-legal ul{margin:0 0 16px;padding-left:22px;}
.gradelab .gl-legal li{margin:0 0 9px;}
.gradelab .gl-legal a{color:#4338CA;text-decoration:underline;}
.gradelab .gl-legal a:hover{color:#3730A3;}
.gradelab .gl-legal strong{color:#1e293b;}
.gradelab .gl-legal-tldr{background:#EEF2FF;border:1px solid #C7D2FE;border-radius:12px;padding:16px 20px;margin:0 0 26px;}
.gradelab .gl-legal-tldr p{margin:0;color:#3730A3;}
.gradelab .gl-legal-toc{background:#F8FAFC;border:1px solid #E2E8F0;border-radius:12px;padding:16px 20px;margin:0 0 30px;}
.gradelab .gl-legal-toc-title{font-family:'Space Grotesk',sans-serif;font-weight:700;color:#0f172a;margin:0 0 10px;font-size:1rem;}
.gradelab .gl-legal-toc ul{margin:0;padding-left:20px;columns:2;column-gap:30px;}
.gradelab .gl-legal-toc li{margin:0 0 6px;}
@media(max-width:560px){.gradelab .gl-legal-toc ul{columns:1;}.gradelab .gl-legal h1{font-size:1.7rem;}}
.gradelab .gl-about{max-width:768px;margin:0 auto;padding:8px 4px 36px;color:#334155;font-size:16px;line-height:1.72;}
.gradelab .gl-about h1{font-family:'Space Grotesk',sans-serif;font-size:2.1rem;line-height:1.18;color:#0f172a;margin:0 0 12px;}
.gradelab .gl-about .gl-about-lede{font-size:1.15rem;line-height:1.6;color:#1e293b;margin:0 0 28px;}
.gradelab .gl-about h2{font-family:'Space Grotesk',sans-serif;font-size:1.4rem;line-height:1.3;color:#0f172a;margin:34px 0 12px;}
.gradelab .gl-about p{margin:0 0 14px;}
.gradelab .gl-about ul{margin:0 0 16px;padding-left:22px;}
.gradelab .gl-about li{margin:0 0 9px;}
.gradelab .gl-about a{color:#4338CA;text-decoration:underline;}
.gradelab .gl-about a:hover{color:#3730A3;}
.gradelab .gl-about strong{color:#1e293b;}
.gradelab .gl-founder{display:flex;gap:22px;align-items:flex-start;background:#F8FAFC;border:1px solid #E2E8F0;border-radius:16px;padding:22px 24px;margin:4px 0 14px;}
.gradelab .gl-founder-photo{flex:0 0 auto;}
.gradelab .gl-founder-photo img{width:128px;height:128px;border-radius:14px;object-fit:cover;display:block;}
.gradelab .gl-monogram{width:128px;height:128px;border-radius:14px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#4F46E5,#6366F1);color:#fff;font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:2.6rem;letter-spacing:1px;}
.gradelab .gl-founder-name{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:1.2rem;color:#0f172a;margin:0 0 2px;}
.gradelab .gl-founder-role{color:#475569;font-size:.95rem;margin:0 0 12px;}
.gradelab .gl-founder-body p{margin:0 0 10px;}
.gradelab .gl-founder-link{display:inline-flex;align-items:center;gap:6px;font-weight:600;text-decoration:none;color:#4338CA;}
.gradelab .gl-founder-link:hover{text-decoration:underline;}
@media(max-width:560px){.gradelab .gl-founder{flex-direction:column;gap:16px;}.gradelab .gl-founder-photo img,.gradelab .gl-monogram{width:96px;height:96px;font-size:2rem;}.gradelab .gl-about h1{font-size:1.7rem;}}.gradelab .gl-breakdown{margin:12px 0 0}.gradelab .gl-bd-wrap>summary{cursor:pointer;font-weight:600;color:#4338CA;font-size:.9rem;list-style:none}.gradelab .gl-bd-wrap>summary::-webkit-details-marker{display:none}.gradelab .gl-bd-wrap[open]>summary{margin-bottom:8px}.gradelab .gl-bd-table{width:100%;border-collapse:collapse;font-size:.9rem}.gradelab .gl-bd-table th,.gradelab .gl-bd-table td{text-align:left;padding:6px 10px;border-bottom:1px solid #E2E8F0;color:#334155}.gradelab .gl-bd-table th{color:#475569;font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.02em}.gradelab .gl-bd-table .gl-bd-total td{font-weight:700;color:#0f172a;border-top:2px solid #CBD5E1;border-bottom:none}.gradelab .gl-remember{display:flex;align-items:center;gap:8px;font-size:.85rem;color:#475569;margin:10px 0 0;cursor:pointer}.gradelab .gl-remember input{width:auto;margin:0}.gradelab .gl-bd-chart{margin-top:14px;display:grid;gap:8px}.gradelab .gl-bar-row{display:grid;grid-template-columns:92px 1fr 50px;align-items:center;gap:10px;font-size:.85rem;color:#334155}.gradelab .gl-bar-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gradelab .gl-bar-track{background:#E2E8F0;border-radius:6px;height:14px;overflow:hidden}.gradelab .gl-bar-fill{display:block;height:100%;border-radius:6px}.gradelab .gl-bar-fill.band-a{background:#15803D}.gradelab .gl-bar-fill.band-b{background:#4D7C0F}.gradelab .gl-bar-fill.band-c{background:#A16207}.gradelab .gl-bar-fill.band-d{background:#C2410C}.gradelab .gl-bar-fill.band-f{background:#DC2626}.gradelab .gl-bar-val{text-align:right;font-variant-numeric:tabular-nums;color:#0f172a;font-weight:600}.gradelab .gl-bd-wrap>summary::after{content:"▸";margin-left:6px;font-size:.8em;display:inline-block;transition:transform .15s ease;color:#6366F1;}.gradelab .gl-bd-wrap[open]>summary::after{transform:rotate(90deg);}.gradelab .gl-crumbs-wrap{max-width:1120px;margin:0 auto;padding:18px 20px 14px}.gradelab .gl-crumbs-wrap.gl-crumbs-narrow{max-width:768px;padding:18px 4px 14px}.gradelab .gl-crumbs{font-size:.85rem;line-height:1.4;color:#475569}.gradelab .gl-crumbs a{color:#4338CA;text-decoration:none}.gradelab .gl-crumbs a:hover{text-decoration:underline}.gradelab .gl-crumbs-sep{margin:0 7px;color:#94A3B8}.gradelab .gl-crumbs-cur{color:#475569}.gradelab .gl-ez{background:var(--gl-surface);border:1px solid var(--gl-line);border-radius:var(--gl-r-lg);box-shadow:var(--gl-shadow);max-width:720px;margin:0 auto;text-align:left;}.gradelab .gl-ez-pane{padding:20px;}.gradelab .gl-ez-inputs{display:grid;grid-template-columns:1fr 1fr;gap:14px;}.gradelab .gl-ez-field{display:flex;flex-direction:column;gap:6px;}.gradelab .gl-ez-lab{font-size:13px;font-weight:600;color:var(--gl-body);}.gradelab .gl-ez-opts{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;margin:14px 0 2px;}.gradelab .gl-ez-swap,.gradelab .gl-ez-swap2{border:none;background:none;color:var(--gl-brand-700);font:inherit;font-size:13px;font-weight:600;cursor:pointer;padding:6px 0;text-decoration:underline;text-underline-offset:2px;min-height:40px;}.gradelab .gl-ez .gl-result{margin:18px 0 0;}.gradelab .gl-ez-chart-wrap{margin:16px 0 0;}.gradelab .gl-ez-chart{width:100%;border-collapse:collapse;font-size:.9rem;}.gradelab .gl-ez-chart th,.gradelab .gl-ez-chart td{text-align:left;padding:6px 10px;border-bottom:1px solid var(--gl-line);}.gradelab .gl-ez-chart th{color:#475569;font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.02em;}.gradelab .gl-ez-chart td{font-variant-numeric:tabular-nums;color:#334155;}.gradelab .gl-ez-chart tr.band-a td:last-child{color:var(--gl-a);font-weight:700;}.gradelab .gl-ez-chart tr.band-b td:last-child{color:var(--gl-b);font-weight:700;}.gradelab .gl-ez-chart tr.band-c td:last-child{color:var(--gl-c);font-weight:700;}.gradelab .gl-ez-chart tr.band-d td:last-child{color:var(--gl-d);font-weight:700;}.gradelab .gl-ez-chart tr.band-f td:last-child{color:var(--gl-f);font-weight:700;}.gradelab .gl-ez-chart tr.gl-ez-cur{background:var(--gl-brand-50);}.gradelab .gl-ez-chart tr.gl-ez-cur td{font-weight:700;color:var(--gl-ink);}.gradelab .gl-ez-ctotal{margin-bottom:14px;max-width:340px;}.gradelab .gl-ez-classhead{margin-bottom:10px;}.gradelab .gl-ez-srow,.gradelab .gl-ez-srow-head{display:grid;grid-template-columns:1fr 90px 112px 44px;gap:8px;align-items:center;margin-bottom:8px;}.gradelab .gl-ez-srow-head span{font-size:11px;color:var(--gl-muted);font-weight:700;text-transform:uppercase;letter-spacing:.05em;}.gradelab .gl-ez-sgrade{font-weight:700;font-size:14px;color:var(--gl-muted);font-variant-numeric:tabular-nums;}.gradelab .gl-ez-sgrade.band-a{color:var(--gl-a);}.gradelab .gl-ez-sgrade.band-b{color:var(--gl-b);}.gradelab .gl-ez-sgrade.band-c{color:var(--gl-c);}.gradelab .gl-ez-sgrade.band-d{color:var(--gl-d);}.gradelab .gl-ez-sgrade.band-f{color:var(--gl-f);}.gradelab .gl-ez-srm{border:none;background:var(--gl-surface-3);color:var(--gl-muted);border-radius:var(--gl-r-md);height:44px;cursor:pointer;font-size:20px;line-height:1;}.gradelab .gl-ez-srm:hover{background:var(--gl-f-bg);color:var(--gl-f);}.gradelab .gl-ez-add{margin:4px 0 0;background:var(--gl-brand-50);color:var(--gl-brand-700);border:1px dashed var(--gl-brand-500);border-radius:var(--gl-r-md);padding:11px 14px;cursor:pointer;font:inherit;font-weight:600;min-height:44px;width:100%;}.gradelab .gl-ez-add:hover{background:#e0e7ff;}.gradelab .gl-ez-classresult{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:16px;padding:14px 16px;background:var(--gl-surface-2);border:1px solid var(--gl-line);border-radius:var(--gl-r-md);font-size:14px;}.gradelab .gl-ez-classresult strong{color:var(--gl-ink);font-family:var(--gl-fd);font-weight:700;}@media(max-width:560px){.gradelab .gl-ez-srow,.gradelab .gl-ez-srow-head{grid-template-columns:1fr 60px 92px 40px;gap:6px;}.gradelab .gl-ez-sgrade{font-size:12px;}.gradelab .gl-ez-classresult{gap:6px 16px;}}.gradelab .gl-ez-steplab{gap:6px}.gradelab .gl-ez-step{font:inherit;font-size:13px;padding:5px 8px;border:1px solid var(--gl-line);border-radius:8px;background:var(--gl-surface);color:var(--gl-ink);min-height:34px;cursor:pointer}.gradelab .gl-ez-scale-wrap{margin:0;padding:10px 20px 20px;border-top:1px solid var(--gl-line)}.gradelab .gl-ez-scale-inner{padding-top:8px}.gradelab .gl-ez-scale-help{font-size:13px;color:var(--gl-muted);margin:0 0 12px}.gradelab .gl-ez-scale{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center}.gradelab .gl-ez-cutrow{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--gl-body)}.gradelab .gl-ez-cutletter{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:22px;border-radius:6px;color:#fff;font-weight:700;font-size:12px;padding:0 6px}.gradelab .gl-ez-cutletter.band-a{background:#15803D}.gradelab .gl-ez-cutletter.band-b{background:#4D7C0F}.gradelab .gl-ez-cutletter.band-c{background:#A16207}.gradelab .gl-ez-cutletter.band-d{background:#C2410C}.gradelab .gl-ez-cutletter.band-f{background:#DC2626}.gradelab .gl-ez-cut{width:54px;padding:6px 8px;border:1px solid var(--gl-line);border-radius:8px;font:inherit;text-align:center;min-height:34px}.gradelab .gl-ez-cutnote{font-size:12px;color:var(--gl-muted);width:100%}.gradelab .gl-ez-scale-reset{margin-top:12px;border:none;background:none;color:var(--gl-brand-700);font:inherit;font-size:13px;font-weight:600;cursor:pointer;padding:6px 0;text-decoration:underline;text-underline-offset:2px}.gradelab .gl-ez-chart-wrap>summary,.gradelab .gl-ez-scale-wrap>summary{padding:8px 0}.gradelab .gl-ez-chart-wrap .gl-ez-steplab{display:inline-flex;margin:0 0 12px}
/* Average Grade Calculator (mode='average') — scoped under .gradelab, reuses shared tokens */
.gradelab .gl-avg{background:var(--gl-surface);border:1px solid var(--gl-line);border-radius:var(--gl-r-lg);box-shadow:var(--gl-shadow);max-width:720px;margin:0 auto;text-align:left;}
.gradelab .gl-avg-typebar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;padding:14px 20px 0;}
.gradelab .gl-avg-pmwrap{display:inline-flex;margin:0;}
.gradelab .gl-avg-pane{padding:14px 20px 20px;}
.gradelab .gl-avg-rows{margin:8px 0 0;}
.gradelab .gl-avg-row,.gradelab .gl-avg-row-head{display:grid;grid-template-columns:1fr 110px 40px;gap:8px;align-items:center;margin-bottom:8px;}
.gradelab .gl-avg-row-pts,.gradelab .gl-avg-row.gl-avg-row-head.gl-avg-pts{grid-template-columns:1fr 92px 92px 40px;}
.gradelab .gl-avg-row-head span{font-size:11px;color:var(--gl-muted);font-weight:700;text-transform:uppercase;letter-spacing:.05em;}
.gradelab .gl-avg-rm{border:none;background:var(--gl-surface-3);color:var(--gl-muted);border-radius:var(--gl-r-md);height:44px;cursor:pointer;font-size:20px;line-height:1;}
.gradelab .gl-avg-rm:hover{background:var(--gl-f-bg);color:var(--gl-f);}
.gradelab .gl-avg-add,.gradelab .gl-avg-sadd{width:100%;margin:4px 0 0;}
.gradelab .gl-avg-controls{margin:14px 0 0;}
.gradelab .gl-avg-droplab{display:inline-flex;align-items:center;gap:8px;font-size:14px;color:var(--gl-body);flex-wrap:wrap;}
.gradelab .gl-avg-stepper{display:inline-flex;align-items:center;border:1px solid var(--gl-line);border-radius:var(--gl-r-md);overflow:hidden;}
.gradelab .gl-avg-step-down,.gradelab .gl-avg-step-up{border:none;background:var(--gl-surface-3);color:var(--gl-ink);font:inherit;font-size:18px;width:38px;height:40px;cursor:pointer;line-height:1;}
.gradelab .gl-avg-step-down:hover,.gradelab .gl-avg-step-up:hover{background:var(--gl-brand-50);color:var(--gl-brand-700);}
.gradelab .gl-avg-drop{width:46px;height:40px;border:none;border-left:1px solid var(--gl-line);border-right:1px solid var(--gl-line);text-align:center;font:inherit;font-size:15px;color:var(--gl-ink);background:var(--gl-surface);}
.gradelab .gl-avg .gl-result{margin:16px 0 0;}
.gradelab .gl-avg-want{margin:16px 0 0;padding:14px 16px;background:var(--gl-brand-50);border-radius:var(--gl-r-md);font-size:14px;color:var(--gl-body);}
.gradelab .gl-avg-want-q{font-weight:700;color:var(--gl-brand-700);display:block;margin-bottom:6px;font-family:var(--gl-fd);}
.gradelab .gl-avg-target,.gradelab .gl-avg-remain{width:60px;padding:6px 8px;border:1px solid var(--gl-line);border-radius:8px;font:inherit;text-align:center;min-height:40px;margin:0 2px;}
.gradelab .gl-avg-want-out{margin-top:8px;color:var(--gl-ink);}
.gradelab .gl-avg-want-out strong{color:var(--gl-brand-700);}
.gradelab .gl-avg-class-help{font-size:13px;color:var(--gl-muted);margin:0 0 12px;}
.gradelab .gl-avg-srow,.gradelab .gl-avg-srow-head{display:grid;grid-template-columns:1fr 92px 96px 40px;gap:8px;align-items:center;margin-bottom:8px;}
.gradelab .gl-avg-srow-pts,.gradelab .gl-avg-srow.gl-avg-srow-head.gl-avg-pts{grid-template-columns:1fr 80px 80px 92px 40px;}
.gradelab .gl-avg-srow-head span{font-size:11px;color:var(--gl-muted);font-weight:700;text-transform:uppercase;letter-spacing:.05em;}
.gradelab .gl-avg-sgrade{font-weight:700;font-size:14px;color:var(--gl-muted);font-variant-numeric:tabular-nums;text-align:right;}
.gradelab .gl-avg-sgrade.band-a{color:var(--gl-a);}.gradelab .gl-avg-sgrade.band-b{color:var(--gl-b);}.gradelab .gl-avg-sgrade.band-c{color:var(--gl-c);}.gradelab .gl-avg-sgrade.band-d{color:var(--gl-d);}.gradelab .gl-avg-sgrade.band-f{color:var(--gl-f);}
.gradelab .gl-avg-srm{border:none;background:var(--gl-surface-3);color:var(--gl-muted);border-radius:var(--gl-r-md);height:44px;cursor:pointer;font-size:20px;line-height:1;}
.gradelab .gl-avg-srm:hover{background:var(--gl-f-bg);color:var(--gl-f);}
.gradelab .gl-avg-passlab{display:inline-flex;align-items:center;gap:6px;font-size:14px;color:var(--gl-body);margin:12px 0 0;}
.gradelab .gl-avg-pass{width:64px;padding:6px 8px;border:1px solid var(--gl-line);border-radius:8px;font:inherit;text-align:center;min-height:40px;}
.gradelab .gl-avg-classresult{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:16px;padding:14px 16px;background:var(--gl-surface-2);border:1px solid var(--gl-line);border-radius:var(--gl-r-md);font-size:14px;}
.gradelab .gl-avg-classresult strong{color:var(--gl-ink);font-family:var(--gl-fd);font-weight:700;}
@media(max-width:560px){
  .gradelab .gl-avg-row,.gradelab .gl-avg-row-head{grid-template-columns:1fr 76px 40px;}
  .gradelab .gl-avg-row-pts,.gradelab .gl-avg-row.gl-avg-row-head.gl-avg-pts{grid-template-columns:1fr 66px 66px 40px;}
  .gradelab .gl-avg-srow,.gradelab .gl-avg-srow-head{grid-template-columns:1fr 60px 80px 40px;gap:6px;}
  .gradelab .gl-avg-srow-pts,.gradelab .gl-avg-srow.gl-avg-srow-head.gl-avg-pts{grid-template-columns:1fr 56px 56px 76px 38px;}
  .gradelab .gl-avg-sgrade{font-size:12px;}
  .gradelab .gl-avg-classresult{gap:6px 16px;}
}
/* Grade Percentage Calculator (mode='percentage') — scoped under .gradelab, reuses shared tokens */
.gradelab .gl-pct{background:var(--gl-surface);border:1px solid var(--gl-line);border-radius:var(--gl-r-lg);box-shadow:var(--gl-shadow);max-width:720px;margin:0 auto;text-align:left;}
.gradelab .gl-pct-pane{padding:20px;}
.gradelab .gl-pct-inputs{display:grid;grid-template-columns:1fr auto 1fr;gap:12px;align-items:end;}
.gradelab .gl-pct-field{display:flex;flex-direction:column;gap:6px;min-width:0;}
.gradelab .gl-pct-lab{font-size:13px;font-weight:600;color:var(--gl-body);}
.gradelab .gl-pct-slash{font-family:var(--gl-fd);font-size:26px;color:var(--gl-muted);padding-bottom:10px;line-height:1;}
.gradelab .gl-pct-earned,.gradelab .gl-pct-possible{font-size:19px;font-weight:600;text-align:center;min-height:52px;}
.gradelab .gl-pct-opts{display:flex;flex-wrap:wrap;align-items:center;gap:4px 18px;margin:12px 0 0;}
.gradelab .gl-pct-swap{border:none;background:none;color:var(--gl-brand-700);font:inherit;font-size:13px;font-weight:600;cursor:pointer;padding:6px 0;text-decoration:underline;text-underline-offset:2px;min-height:40px;}
.gradelab .gl-pct-hint{font-size:12px;color:var(--gl-muted);}
.gradelab .gl-pct .gl-result{margin:14px 0 0;}
.gradelab .gl-pct-target{margin:14px 0 0;}
.gradelab .gl-pct-target>summary{padding:8px 0;}
.gradelab .gl-pct-target-inner{padding:12px 16px;background:var(--gl-brand-50);border-radius:var(--gl-r-md);font-size:14px;color:var(--gl-body);}
.gradelab .gl-pct-goal{width:64px;padding:6px 8px;border:1px solid var(--gl-line);border-radius:8px;font:inherit;text-align:center;min-height:44px;margin:0 2px;background:var(--gl-surface);color:var(--gl-ink);}
.gradelab .gl-pct-goal:focus{outline:2px solid var(--gl-brand-500);outline-offset:1px;border-color:var(--gl-brand-500);}
.gradelab .gl-pct-target-out{margin-top:8px;color:var(--gl-ink);}
.gradelab .gl-pct-target-out strong{color:var(--gl-brand-700);}
@media(max-width:560px){.gradelab .gl-pct-inputs{gap:8px;}.gradelab .gl-pct-slash{font-size:20px;}.gradelab .gl-pct-earned,.gradelab .gl-pct-possible{font-size:17px;}}

/* College Grade Calculator (mode='college') — single-course weighted -> % + letter + 4.0/± GPA, plus grade-needed-on-final. Scoped under .gradelab, reuses shared tokens. */
.gradelab .gl-col{background:var(--gl-surface);border:1px solid var(--gl-line);border-radius:var(--gl-r-lg);box-shadow:var(--gl-shadow);max-width:720px;margin:0 auto;text-align:left;}
.gradelab .gl-col-pane{padding:16px 20px 20px;}
.gradelab .gl-col-typebar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;margin:2px 0 6px;}
.gradelab .gl-col-pmwrap{display:inline-flex;margin:0;}
.gradelab .gl-col-rows{min-width:360px;}
.gradelab .gl-col-row,.gradelab .gl-col-row-head{display:grid;grid-template-columns:1fr 116px 78px 40px;gap:8px;align-items:center;margin-bottom:8px;}
.gradelab .gl-col-row-pts,.gradelab .gl-col-row-head.gl-col-pts{grid-template-columns:1fr 150px 66px 38px;}
.gradelab .gl-col-row-head span{font-size:11px;color:var(--gl-muted);font-weight:700;text-transform:uppercase;letter-spacing:.05em;}
.gradelab .gl-col-ptscell{display:flex;align-items:center;gap:5px;min-width:0;}
.gradelab .gl-col-ptscell .gl-input{flex:1;min-width:0;padding:10px 6px;text-align:center;}
.gradelab .gl-col-ptsslash{font-family:var(--gl-fd);color:var(--gl-muted);font-size:18px;line-height:1;}
.gradelab .gl-col-rm{border:none;background:var(--gl-surface-3);color:var(--gl-muted);border-radius:var(--gl-r-md);height:44px;cursor:pointer;font-size:20px;line-height:1;}
.gradelab .gl-col-rm:hover{background:var(--gl-f-bg);color:var(--gl-f);}
.gradelab .gl-col-add{width:100%;margin:4px 0 0;}
.gradelab .gl-col .gl-result{margin:16px 0 0;}
.gradelab .gl-col-credits-wrap{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--gl-muted);margin-top:14px;flex-wrap:wrap;justify-content:center;}
.gradelab .gl-col-credits{width:72px;padding:6px 8px;border:1px solid var(--gl-line);border-radius:8px;font:inherit;text-align:center;min-height:40px;background:var(--gl-surface);color:var(--gl-ink);}
.gradelab .gl-col-qp{font-size:14px;color:var(--gl-body);margin-top:10px;}
.gradelab .gl-col-qp strong{color:var(--gl-brand-700);font-family:var(--gl-fd);}
.gradelab .gl-col-b-help{font-size:13px;color:var(--gl-muted);margin:2px 0 14px;}
.gradelab .gl-col-b-inputs{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
.gradelab .gl-col-field{display:flex;flex-direction:column;gap:6px;min-width:0;}
.gradelab .gl-col-lab{font-size:13px;font-weight:600;color:var(--gl-body);}
.gradelab .gl-col-note{font-size:12px;color:var(--gl-muted);font-style:italic;margin:0;padding:14px 20px 18px;border-top:1px solid var(--gl-line);}
@media(max-width:640px){
  .gradelab .gl-col-b-inputs{grid-template-columns:1fr;}
}
@media(max-width:560px){
  .gradelab .gl-col-rows{min-width:340px;}
}

/* Points-Based Grade Calculator (mode='points') — total-points gradebook: sum points earned / points possible -> running total + % + letter + GPA + pass/fail. Scoped under .gradelab, reuses shared tokens. NO weight column (that is the weighted sibling). */
.gradelab .gl-pts{background:var(--gl-surface);border:1px solid var(--gl-line);border-radius:var(--gl-r-lg);box-shadow:var(--gl-shadow);max-width:720px;margin:0 auto;text-align:left;}
.gradelab .gl-pts-pmwrap{display:inline-flex;margin:0;}
.gradelab .gl-pts-pane{padding:16px 20px 20px;}
.gradelab .gl-pts-rows{margin:10px 0 0;}
.gradelab .gl-pts-row,.gradelab .gl-pts-row-head{display:grid;grid-template-columns:1fr 92px 92px 40px;gap:8px;align-items:center;margin-bottom:8px;}
.gradelab .gl-pts-row-head span{font-size:11px;color:var(--gl-muted);font-weight:700;text-transform:uppercase;letter-spacing:.05em;}
.gradelab .gl-pts-rm{border:none;background:var(--gl-surface-3);color:var(--gl-muted);border-radius:var(--gl-r-md);height:44px;cursor:pointer;font-size:20px;line-height:1;}
.gradelab .gl-pts-rm:hover{background:var(--gl-f-bg);color:var(--gl-f);}
.gradelab .gl-pts-add{width:100%;margin:4px 0 0;}
.gradelab .gl-pts-xc-wrap{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:16px 0 0;padding:12px 16px;background:var(--gl-surface-2);border:1px solid var(--gl-line);border-radius:var(--gl-r-md);font-size:14px;color:var(--gl-body);}
.gradelab .gl-pts-xc{width:96px;padding:6px 8px;border:1px solid var(--gl-line);border-radius:8px;font:inherit;text-align:center;min-height:40px;background:var(--gl-surface);color:var(--gl-ink);}
.gradelab .gl-pts-xc:focus{outline:2px solid var(--gl-brand-500);outline-offset:1px;border-color:var(--gl-brand-500);}
.gradelab .gl-pts .gl-result{margin:16px 0 0;}
.gradelab .gl-pts-total{display:inline-flex;align-items:baseline;gap:8px;font-family:var(--gl-fd);font-weight:700;font-size:clamp(24px,7vw,30px);color:var(--gl-ink);background:var(--gl-surface-3);border-radius:999px;padding:7px 18px;margin:2px 0 8px;font-variant-numeric:tabular-nums;}
.gradelab .gl-pts-total-sep{color:var(--gl-muted);font-weight:600;}
.gradelab .gl-pts-total-unit{font-size:12px;font-weight:700;color:var(--gl-muted);text-transform:uppercase;letter-spacing:.05em;}
.gradelab .gl-pts .gl-result-num{font-size:clamp(38px,9vw,52px);}
.gradelab .gl-pts-plan,.gradelab .gl-pts-scale-wrap{margin:14px 0 0;}
.gradelab .gl-pts-plan>summary,.gradelab .gl-pts-scale-wrap>summary{padding:8px 0;}
.gradelab .gl-pts-plan-inner{padding:12px 16px;background:var(--gl-brand-50);border-radius:var(--gl-r-md);font-size:14px;color:var(--gl-body);margin-top:8px;}
.gradelab .gl-pts-goal,.gradelab .gl-pts-remain{width:64px;padding:6px 8px;border:1px solid var(--gl-line);border-radius:8px;font:inherit;text-align:center;min-height:44px;margin:0 2px;background:var(--gl-surface);color:var(--gl-ink);}
.gradelab .gl-pts-goal:focus,.gradelab .gl-pts-remain:focus{outline:2px solid var(--gl-brand-500);outline-offset:1px;border-color:var(--gl-brand-500);}
.gradelab .gl-pts-plan-out{margin-top:8px;color:var(--gl-ink);}
.gradelab .gl-pts-plan-out strong{color:var(--gl-brand-700);}
.gradelab .gl-pts-scale-inner{padding:8px 0 0;}
.gradelab .gl-pts-scale-help{font-size:13px;color:var(--gl-muted);margin:0 0 12px;}
.gradelab .gl-pts-scale{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;}
.gradelab .gl-pts-cutrow{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--gl-body);}
.gradelab .gl-pts-cutletter{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:22px;border-radius:6px;color:#fff;font-weight:700;font-size:12px;padding:0 6px;}
.gradelab .gl-pts-cutletter.band-a{background:var(--gl-a);}
.gradelab .gl-pts-cutletter.band-b{background:var(--gl-b);}
.gradelab .gl-pts-cutletter.band-c{background:var(--gl-c);}
.gradelab .gl-pts-cutletter.band-d{background:var(--gl-d);}
.gradelab .gl-pts-cutletter.band-f{background:var(--gl-f);}
.gradelab .gl-pts-cut{width:54px;padding:6px 8px;border:1px solid var(--gl-line);border-radius:8px;font:inherit;text-align:center;min-height:34px;background:var(--gl-surface);color:var(--gl-ink);}
.gradelab .gl-pts-cutnote{font-size:12px;color:var(--gl-muted);width:100%;}
.gradelab .gl-pts-scale-opts{display:flex;flex-wrap:wrap;gap:8px 20px;align-items:center;margin:14px 0 0;}
.gradelab .gl-pts-passlab{display:inline-flex;align-items:center;gap:6px;font-size:14px;color:var(--gl-body);}
.gradelab .gl-pts-pass{width:60px;padding:6px 8px;border:1px solid var(--gl-line);border-radius:8px;font:inherit;text-align:center;min-height:40px;background:var(--gl-surface);color:var(--gl-ink);}
.gradelab .gl-pts-scale-reset{margin-top:12px;border:none;background:none;color:var(--gl-brand-700);font:inherit;font-size:13px;font-weight:600;cursor:pointer;padding:6px 0;text-decoration:underline;text-underline-offset:2px;}
@media(max-width:560px){
  .gradelab .gl-pts-row,.gradelab .gl-pts-row-head{grid-template-columns:1fr 66px 66px 40px;gap:6px;}
}

/* ---------- Class Grade Calculator (gl-cls) — v2.12.0 ---------- */
.gradelab .gl-cls{background:var(--gl-surface);border:1px solid var(--gl-line);border-radius:var(--gl-r-lg);box-shadow:var(--gl-shadow);max-width:720px;margin:0 auto;text-align:left;}
.gradelab .gl-cls-pane{padding:16px 20px 20px;}
.gradelab .gl-cls-block{margin:0 0 18px;}
.gradelab .gl-cls-blockhead{display:flex;align-items:baseline;justify-content:space-between;gap:6px 12px;flex-wrap:wrap;margin:0 0 4px;}
.gradelab .gl-cls-blocktitle{font-family:var(--gl-fd);font-weight:700;font-size:15px;color:var(--gl-ink);}
.gradelab .gl-cls-blocksub{font-size:12px;color:var(--gl-muted);}
.gradelab .gl-cls-grows,.gradelab .gl-cls-urows{margin:8px 0 0;}
.gradelab .gl-cls-grow,.gradelab .gl-cls-grow-head{display:grid;grid-template-columns:1fr 92px 92px 40px;gap:8px;align-items:center;margin-bottom:8px;}
.gradelab .gl-cls-urow,.gradelab .gl-cls-urow-head{display:grid;grid-template-columns:1fr 92px 40px;gap:8px;align-items:center;margin-bottom:8px;}
.gradelab .gl-cls-grow-head span,.gradelab .gl-cls-urow-head span{font-size:11px;color:var(--gl-muted);font-weight:700;text-transform:uppercase;letter-spacing:.05em;}
.gradelab .gl-cls-grm,.gradelab .gl-cls-urm{border:none;background:var(--gl-surface-3);color:var(--gl-muted);border-radius:var(--gl-r-md);height:44px;cursor:pointer;font-size:20px;line-height:1;}
.gradelab .gl-cls-grm:hover,.gradelab .gl-cls-urm:hover{background:var(--gl-f-bg);color:var(--gl-f);}
.gradelab .gl-cls-gadd,.gradelab .gl-cls-uadd{width:100%;margin:4px 0 0;}
.gradelab .gl-cls-adj{margin:2px 0 0;}
.gradelab .gl-cls-adj>summary{padding:8px 0;}
.gradelab .gl-cls-adj-inner{display:flex;flex-wrap:wrap;gap:10px 22px;align-items:center;padding:12px 16px;margin-top:8px;background:var(--gl-surface-2);border:1px solid var(--gl-line);border-radius:var(--gl-r-md);font-size:14px;color:var(--gl-body);}
.gradelab .gl-cls-xclab{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;}
.gradelab .gl-cls-xc{width:74px;padding:6px 8px;border:1px solid var(--gl-line);border-radius:8px;font:inherit;text-align:center;min-height:40px;background:var(--gl-surface);color:var(--gl-ink);}
.gradelab .gl-cls-xc:focus,.gradelab .gl-cls-target:focus{outline:2px solid var(--gl-brand-500);outline-offset:1px;border-color:var(--gl-brand-500);}
.gradelab .gl-cls-wtnote{margin:14px 0 0;padding:10px 14px;border-radius:var(--gl-r-md);background:var(--gl-c-bg);border:1px solid #fde68a;color:#713F12;font-size:13px;}
.gradelab .gl-cls-wtnote:empty{display:none;}
.gradelab .gl-cls .gl-result{margin:16px 0 0;}
.gradelab .gl-cls .gl-result-num{font-size:clamp(40px,10vw,60px);}
.gradelab .gl-cls-basis{font-size:13px;color:var(--gl-muted);margin-top:8px;}
.gradelab .gl-cls-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0 0;}
.gradelab .gl-cls-stat{background:var(--gl-surface-2);border:1px solid var(--gl-line);border-radius:var(--gl-r-md);padding:12px 14px;text-align:center;}
.gradelab .gl-cls-stat-v{display:block;font-family:var(--gl-fd);font-weight:700;font-size:26px;line-height:1.15;color:var(--gl-ink);font-variant-numeric:tabular-nums;}
.gradelab .gl-cls-stat-l{display:block;font-size:11px;color:var(--gl-muted);text-transform:uppercase;letter-spacing:.05em;margin-top:3px;}
.gradelab .gl-cls-cases{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:10px 0 0;}
.gradelab .gl-cls-case{border:1px solid var(--gl-line);border-radius:var(--gl-r-md);padding:12px 14px;background:var(--gl-surface);}
.gradelab .gl-cls-case-l{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--gl-muted);}
.gradelab .gl-cls-case-v{display:inline-block;font-family:var(--gl-fd);font-weight:700;font-size:26px;line-height:1.2;color:var(--gl-ink);font-variant-numeric:tabular-nums;margin-top:2px;}
.gradelab .gl-cls-case-b{display:inline-block;font-weight:700;font-size:12px;padding:2px 9px;border-radius:999px;margin-left:8px;background:var(--gl-surface-3);color:var(--gl-ink);}
.gradelab .gl-cls-case-b.band-a{background:var(--gl-a);color:#fff;}
.gradelab .gl-cls-case-b.band-b{background:var(--gl-b);color:#fff;}
.gradelab .gl-cls-case-b.band-c{background:var(--gl-c);color:#fff;}
.gradelab .gl-cls-case-b.band-d{background:var(--gl-d);color:#fff;}
.gradelab .gl-cls-case-b.band-f{background:var(--gl-f);color:#fff;}
.gradelab .gl-cls-case-s{display:block;font-size:12px;color:var(--gl-muted);margin-top:2px;}
.gradelab .gl-cls-targets{margin:18px 0 0;}
.gradelab .gl-cls-targets-h{font-family:var(--gl-fd);font-weight:700;font-size:15px;color:var(--gl-ink);margin:0 0 8px;}
.gradelab .gl-cls-table{width:100%;border-collapse:collapse;font-size:14px;min-width:430px;}
.gradelab .gl-cls-table th{text-align:left;font-size:11px;color:var(--gl-muted);text-transform:uppercase;letter-spacing:.05em;font-weight:700;padding:6px 8px;border-bottom:1px solid var(--gl-line);}
.gradelab .gl-cls-table td{padding:9px 8px;border-bottom:1px solid var(--gl-line);color:var(--gl-body);vertical-align:middle;font-variant-numeric:tabular-nums;}
.gradelab .gl-cls-tl{display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:22px;border-radius:6px;color:#fff;font-weight:700;font-size:12px;padding:0 7px;}
.gradelab .gl-cls-tl.band-a{background:var(--gl-a);}
.gradelab .gl-cls-tl.band-b{background:var(--gl-b);}
.gradelab .gl-cls-tl.band-c{background:var(--gl-c);}
.gradelab .gl-cls-tl.band-d{background:var(--gl-d);}
.gradelab .gl-cls-tl.band-f{background:var(--gl-f);}
.gradelab .gl-cls-st{font-weight:600;display:block;}
.gradelab .gl-cls-table tr.is-ok .gl-cls-st{color:var(--gl-a);}
.gradelab .gl-cls-table tr.is-locked .gl-cls-st{color:var(--gl-brand-700);}
.gradelab .gl-cls-table tr.is-out .gl-cls-st{color:var(--gl-f);}
.gradelab .gl-cls-table tr.is-out td{color:var(--gl-muted);}
.gradelab .gl-cls-tnote{display:block;font-size:11px;font-weight:400;color:var(--gl-muted);}
.gradelab .gl-cls-empty{color:var(--gl-muted);font-size:13px;}
.gradelab .gl-cls-tgtwrap{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:14px;color:var(--gl-body);margin:12px 0 0;}
.gradelab .gl-cls-target{width:70px;padding:6px 8px;border:1px solid var(--gl-line);border-radius:8px;font:inherit;text-align:center;min-height:40px;margin:0 2px;background:var(--gl-surface);color:var(--gl-ink);}
.gradelab .gl-cls-gran{font-size:14px;color:var(--gl-ink);margin:10px 0 0;}
.gradelab .gl-cls-gran:empty{display:none;}
.gradelab .gl-cls-note{font-size:12px;color:var(--gl-muted);margin:16px 0 0;}
@media(max-width:560px){
  .gradelab .gl-cls-grow,.gradelab .gl-cls-grow-head{grid-template-columns:1fr 66px 66px 40px;gap:6px;}
  .gradelab .gl-cls-urow,.gradelab .gl-cls-urow-head{grid-template-columns:1fr 66px 40px;gap:6px;}
  .gradelab .gl-cls-stats,.gradelab .gl-cls-cases{grid-template-columns:1fr;}
  .gradelab .gl-cls-pane{padding:14px 14px 18px;}
}
/* CLS RESERVE: initClass() injects the four D/C/B/A target rows (4 x 42px), the basis line and the
   best-case sub-line after DOMContentLoaded. Without reserved space the panel shifted ~288px on every load.
   Measured on the live preview; min-height only prevents collapse, so taller mobile rows still fit. */
.gradelab .gl-cls-table{min-height:198px}
.gradelab .gl-cls-basis{min-height:21px}
.gradelab .gl-cls-case-b{min-height:23px}

/* ---------- Overall grade calculator (mode: overall) ---------- */
.gradelab .gl-ovr-pane{margin-top:14px}
.gradelab .gl-ovr-switches{display:flex;flex-wrap:wrap;gap:14px 26px;margin-bottom:14px}
.gradelab .gl-ovr-sw{display:flex;flex-direction:column;gap:6px}
.gradelab .gl-ovr-sw-l{font-size:13px;font-weight:600;color:var(--gl-muted)}
.gradelab .gl-ovr-unitwrap[hidden]{display:none}
.gradelab .gl-ovr-rows{display:flex;flex-direction:column;gap:8px;min-width:400px}
.gradelab .gl-ovr-row,.gradelab .gl-ovr-row-head{display:grid;grid-template-columns:1fr 116px 116px 40px;gap:8px;align-items:center}
.gradelab .gl-ovr-equal .gl-ovr-row,.gradelab .gl-ovr-equal .gl-ovr-row-head{grid-template-columns:1fr 116px 40px}
.gradelab .gl-ovr-equal .gl-ovr-weight,.gradelab .gl-ovr-equal .gl-ovr-whead{display:none}
.gradelab .gl-ovr .gl-rm{padding:0;width:40px;min-width:0;justify-self:end}
.gradelab .gl-ovr-row-head{font-size:12px;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--gl-muted)}
.gradelab .gl-ovr-row-head span{padding:0 2px}
.gradelab .gl-ovr-add{margin-top:10px}
.gradelab .gl-ovr-result{min-height:190px}
.gradelab .gl-ovr-totalw{min-height:20px}
.gradelab .gl-ovr-breakdown{width:100%;border-collapse:collapse;font-size:14px;min-width:460px}
.gradelab .gl-ovr-breakdown th,.gradelab .gl-ovr-breakdown td{padding:8px 10px;text-align:right;border-bottom:1px solid var(--gl-line)}
.gradelab .gl-ovr-breakdown th:first-child,.gradelab .gl-ovr-breakdown td:first-child{text-align:left}
.gradelab .gl-ovr-breakdown thead th{font-size:12px;text-transform:uppercase;letter-spacing:.02em;color:var(--gl-muted);font-weight:600}
.gradelab .gl-ovr-breakdown tfoot td{border-bottom:0;border-top:2px solid var(--gl-line);font-weight:600}
.gradelab .gl-ovr-bd .gl-table-wrap{min-height:180px}
.gradelab .gl-ovr-drag{margin-top:10px;font-size:14px;line-height:1.55;color:var(--gl-ink);min-height:22px}
.gradelab .gl-ovr-plan-inner{font-size:15px;line-height:1.9}
.gradelab .gl-ovr-plan-inner .gl-ovr-target,.gradelab .gl-ovr-plan-inner .gl-ovr-remain{width:74px;display:inline-block;margin:0 2px;padding:6px 8px;border:1px solid var(--gl-line);border-radius:8px;background:var(--gl-surface);color:var(--gl-ink);font:inherit;font-size:15px;text-align:center}
.gradelab .gl-ovr-plan-inner .gl-ovr-target:focus,.gradelab .gl-ovr-plan-inner .gl-ovr-remain:focus{outline:2px solid var(--gl-accent);outline-offset:1px}
.gradelab .gl-ovr-plan-out{margin-top:8px;font-size:14px;line-height:1.6;min-height:22px}
@media (max-width:640px){
  .gradelab .gl-ovr-switches{gap:12px 18px}
  .gradelab .gl-ovr-rows{min-width:320px}
  .gradelab .gl-ovr-row,.gradelab .gl-ovr-row-head{grid-template-columns:1fr 74px 74px 40px;gap:6px}
  .gradelab .gl-ovr-equal .gl-ovr-row,.gradelab .gl-ovr-equal .gl-ovr-row-head{grid-template-columns:1fr 74px 40px}
  .gradelab .gl-ovr-plan-inner{line-height:2.1}
}

/* ---------- Assignment grade calculator (mode: assign) ---------- */
.gradelab .gl-asg-pane{margin-top:14px}
.gradelab .gl-asg-sw{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}
.gradelab .gl-asg-sw-l{font-size:13px;font-weight:600;color:var(--gl-muted)}
.gradelab .gl-asg-fields{display:grid;grid-template-columns:1fr 1fr;gap:14px 20px;margin-bottom:14px}
.gradelab .gl-asg-fields[hidden]{display:none}
.gradelab .gl-asg-f{display:flex;flex-direction:column;gap:6px;min-width:0}
.gradelab .gl-asg-f-l{font-size:13px;font-weight:600;color:var(--gl-muted);line-height:1.35}
.gradelab .gl-asg-f-in{display:flex;align-items:center;gap:8px;min-width:0}
.gradelab .gl-asg-f-in .gl-input{flex:1 1 auto;min-width:0}
.gradelab .gl-asg-f-u{font-style:normal;font-size:13px;color:var(--gl-muted);white-space:nowrap;flex:0 0 auto}
.gradelab .gl-asg-dropwrap{display:inline-flex;align-items:center;gap:8px;margin:2px 0 16px;font-size:14px}
.gradelab .gl-asg-result{min-height:250px}
.gradelab .gl-asg-delta{margin-top:10px;font-size:15px;line-height:1.55;color:var(--gl-ink);min-height:24px}
.gradelab .gl-asg-sub{min-height:20px}
.gradelab .gl-asg-ladder{width:100%;border-collapse:collapse;font-size:14px;min-width:420px}
.gradelab .gl-asg-ladder th,.gradelab .gl-asg-ladder td{padding:8px 10px;text-align:right;border-bottom:1px solid var(--gl-line)}
.gradelab .gl-asg-ladder th:first-child,.gradelab .gl-asg-ladder td:first-child{text-align:left}
.gradelab .gl-asg-ladder thead th{font-size:12px;text-transform:uppercase;letter-spacing:.02em;color:var(--gl-muted);font-weight:600}
.gradelab .gl-asg-ladder tbody tr.gl-asg-zero{background:var(--gl-f-bg)}
.gradelab .gl-asg-ladder tbody tr.gl-asg-zero td{font-weight:600}
.gradelab .gl-asg-bd .gl-table-wrap{min-height:300px}
.gradelab .gl-asg-note{margin-top:10px;font-size:14px;line-height:1.55;color:var(--gl-ink);min-height:22px}
.gradelab .gl-asg-plan-inner{font-size:15px;line-height:1.9}
.gradelab .gl-asg-plan-inner .gl-asg-target{width:74px;display:inline-block;margin:0 2px;padding:6px 8px;border:1px solid var(--gl-line);border-radius:8px;background:var(--gl-surface);color:var(--gl-ink);font:inherit;font-size:15px;text-align:center}
.gradelab .gl-asg-plan-inner .gl-asg-target:focus{outline:2px solid var(--gl-accent);outline-offset:1px}
.gradelab .gl-asg-plan-out{margin-top:8px;font-size:14px;line-height:1.6;min-height:22px}
.gradelab .gl-asg-bd>summary,.gradelab .gl-asg-plan>summary{padding:9px 0;min-height:24px}
@media (max-width:640px){
  .gradelab .gl-asg-fields{grid-template-columns:1fr;gap:12px}
  .gradelab .gl-asg-ladder{min-width:318px}
  .gradelab .gl-asg-plan-inner{line-height:2.1}
}
