/* Kepler Transcripts admin, in Kepler's colours (brand sheet KeplerFinalLogo1.pdf): the gradient
   #5F0BAA → #4800FF, solid #5E0BE0, text in #282828 (not black). Type: Montserrat throughout (Daniel,
   2026-11-03); the wordmark's Montserrat Alternates appears only inside the logo. The K's leaf shape (large radius on two
   opposite corners) shapes cards and buttons. */
@font-face{font-family:"Montserrat";src:url(fonts/montserrat-300.woff2) format("woff2");font-weight:300;font-display:swap}
@font-face{font-family:"Montserrat";src:url(fonts/montserrat-500.woff2) format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:"Montserrat";src:url(fonts/montserrat-600.woff2) format("woff2");font-weight:600;font-display:swap}

:root{
  --purple:#5F0BAA;--blue:#4800FF;--violet:#5E0BE0;--violet-ink:#5E0BE0;--tint:#F3F0FF;--tint2:#ECE7FF;--line:#E3DEF5;--line2:#F1EEFA;
  --ink:#282828;--ink2:#3D3D45;--muted:#6E6E7A;--bg:#FFFFFF;--panel:#FFFFFF;--ok:#127A4B;--okbg:#E7F6EE;--warn:#8A5A00;--warnbg:#FFF4DB;--err:#B42318;--errbg:#FDECEA;
  --leaf:14px 3px 14px 3px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:300 14.5px/1.55 "Montserrat",system-ui,-apple-system,sans-serif}
b,strong,th{font-weight:600}
a{color:var(--violet-ink)}
h1,h2,h3{font-family:"Montserrat",sans-serif;font-weight:300;line-height:1.2;margin:0 0 .4em}
h1{font-size:30px}h2{font-size:21px;margin-top:1.2em}h3{font-size:16px;font-weight:500}
.eyebrow{font-family:"Montserrat";font-weight:500;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--violet-ink)}
.muted{color:var(--muted)}.small{font-size:13px}.nowrap{white-space:nowrap}

.bar{display:flex;align-items:center;gap:20px;padding:10px 24px;background:linear-gradient(100deg,var(--purple),var(--blue));color:#fff;position:sticky;top:0;z-index:5}
.brand{display:flex;align-items:center;gap:10px;color:#fff;text-decoration:none}
.brand img{height:22px}.brand span{font-family:"Montserrat";font-weight:500;font-size:12px;letter-spacing:.18em;text-transform:uppercase;opacity:.9}
.bar nav{display:flex;gap:4px;flex:1;flex-wrap:wrap}
.bar nav a{color:#fff;text-decoration:none;padding:6px 11px;border-radius:999px;opacity:.88;font-size:14px}
.bar nav a:hover{background:rgba(255,255,255,.14);opacity:1}
.bar nav a[aria-current]{background:#fff;color:var(--violet-ink);opacity:1}
.pill{display:inline-block;min-width:18px;padding:0 6px;border-radius:999px;background:#fff;color:var(--violet-ink);font-size:11px;text-align:center;line-height:18px}
.bar nav a[aria-current] .pill{background:var(--violet);color:#fff}
.me{position:relative}.me summary{cursor:pointer;list-style:none;font-size:14px;padding:6px 10px;border-radius:999px;background:rgba(255,255,255,.14)}
.me summary::-webkit-details-marker{display:none}
.me>div{position:absolute;right:0;top:38px;background:#fff;color:var(--ink);border:1px solid var(--line);border-radius:var(--leaf);padding:8px;min-width:170px;box-shadow:0 10px 30px rgba(40,10,120,.15);display:grid}
.me>div a,.me>div button{padding:7px 10px;text-align:left;color:var(--ink);text-decoration:none;border-radius:6px;font:inherit;font-size:14px}
.me>div a:hover,.me>div button:hover{background:var(--tint)}

main{max-width:1060px;margin:0 auto;padding:28px 24px 80px}
main.wide{max-width:1360px}
.head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.head .actions{display:flex;gap:8px;flex-wrap:wrap}

.flash{padding:11px 15px;border-radius:var(--leaf);margin-bottom:18px;background:var(--okbg);color:var(--ok)}
.flash.err{background:var(--errbg);color:var(--err)}.flash.warn{background:var(--warnbg);color:var(--warn)}

.card{border:1px solid var(--line);border-radius:var(--leaf);padding:18px 20px;background:var(--panel);margin-bottom:16px}
.card.tint{background:var(--tint);border-color:transparent}
.grid{display:grid;gap:16px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:820px){.g2,.g3,.g4{grid-template-columns:1fr}.bar{flex-wrap:wrap}}
.stat .n{font-family:"Montserrat";font-weight:300;font-size:32px;line-height:1}
.stat .l{color:var(--muted);font-size:13px}

table.t{width:100%;border-collapse:collapse;font-size:14px}
table.t th{font-size:10.5px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
table.t td{padding:9px 10px;border-bottom:1px solid var(--line2);vertical-align:top}
table.t tr:hover td{background:#FBFAFF}
table.t td.r,table.t th.r{text-align:right}
table.t a{text-decoration:none}table.t a:hover{text-decoration:underline}
.scroll{overflow-x:auto}

label{display:block;font-size:12.5px;color:var(--ink2);margin:0 0 4px;font-weight:500}
.field{margin-bottom:14px}
.hint{font-size:12.5px;color:var(--muted);margin-top:4px}
input[type=text],input[type=email],input[type=password],input[type=number],input[type=search],input[type=date],select,textarea{
  width:100%;font:inherit;font-size:15px;color:var(--ink);background:#fff;border:1px solid #CFC8EA;border-radius:9px;padding:9px 11px}
textarea{min-height:76px;resize:vertical}
input:focus,select:focus,textarea:focus{outline:2px solid rgba(94,11,224,.25);border-color:var(--violet)}
input[type=checkbox],input[type=radio]{accent-color:var(--violet);width:16px;height:16px;vertical-align:-2px;margin-right:6px}
.check{display:flex;align-items:center;font-weight:300;font-size:14.5px;color:var(--ink);margin:6px 0}
.row{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end}.row>*{flex:1;min-width:150px}

.btn,button.btn{display:inline-flex;align-items:center;gap:6px;font:inherit;font-weight:500;font-size:14.5px;cursor:pointer;text-decoration:none;
  border:0;padding:10px 18px;border-radius:12px 3px 12px 3px;background:linear-gradient(100deg,var(--purple),var(--blue));color:#fff}
.btn:hover{filter:brightness(1.08)}
.btn.ghost{background:#fff;color:var(--violet-ink);border:1px solid #CFC8EA}
.btn.ghost:hover{background:var(--tint)}
.btn.small{padding:6px 12px;font-size:13px}
.btn.danger{background:#fff;color:var(--err);border:1px solid #F3C4BF}
button.link{background:none;border:0;padding:0;color:var(--violet-ink);cursor:pointer;font:inherit;text-decoration:underline}
.inline{display:inline}

.tag{display:inline-block;font-size:11.5px;font-weight:500;padding:2px 8px;border-radius:8px 2px 8px 2px;background:var(--tint2);color:var(--violet-ink);white-space:nowrap}
.tag.ok{background:var(--okbg);color:var(--ok)}.tag.warn{background:var(--warnbg);color:var(--warn)}.tag.err{background:var(--errbg);color:var(--err)}.tag.grey{background:#F0EFF4;color:var(--muted)}
.latin{font-size:10.5px;letter-spacing:.08em;color:#5E0BE0;font-weight:600}

.search{display:flex;gap:8px;margin-bottom:16px}.search input{flex:1}
.empty{padding:28px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:var(--leaf)}

.year-block{border:1px solid var(--line);border-radius:var(--leaf);margin-bottom:14px;overflow:hidden}
.year-block>header{display:flex;justify-content:space-between;align-items:center;gap:10px;background:var(--tint);padding:9px 14px}
.year-block>header h3{margin:0}
.year-block table.t td,.year-block table.t th{padding-left:14px}

.preview-frame{width:100%;height:1100px;border:1px solid var(--line);border-radius:var(--leaf);background:#fff}
.split{display:grid;grid-template-columns:330px minmax(0,1fr);gap:22px;align-items:start}
@media(max-width:980px){.split{grid-template-columns:1fr}}
.sticky{position:sticky;top:76px}

.login{max-width:400px;margin:8vh auto}
.login .card{padding:28px}
.public main{max-width:720px}
.kv{display:grid;grid-template-columns:150px 1fr;gap:6px 14px;font-size:14.5px}.kv dt{color:var(--muted)}.kv dd{margin:0}
details.more summary{cursor:pointer;color:var(--violet-ink);font-weight:500;margin:6px 0}
.flags li{margin-bottom:4px}

/* utility classes (inline style attributes are blocked by the CSP) */
.narrow{max-width:560px}.mt{margin-top:12px}.mb{margin-bottom:7px}.w-auto{width:auto;max-width:260px}
.w-course{min-width:300px}.w-num{width:90px}.break{word-break:break-all}.detail{max-width:520px;word-break:break-word}
.link-card{text-decoration:none;color:inherit;display:block}.link-card:hover{border-color:#CFC8EA;background:#FBFAFF}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.public-wrap{max-width:720px;margin:0 auto}
.gl-label{display:inline;font-weight:300;color:var(--muted);font-size:12.5px;margin:0 4px 0 0}
.gl-select{width:auto;padding:3px 26px 3px 8px;font-size:13px;border-radius:7px}
.year-block>header form{display:flex;align-items:center;gap:4px}
.warnbox{border-color:#F2D9A0;background:#FFFBF0}
.sig-preview{max-height:60px;max-width:240px;border:1px dashed var(--line);padding:4px}.seal-preview{height:90px}
.tag.lite{background:transparent;border:1px solid var(--line);color:var(--muted);font-weight:500}

/* Getting started (home) */
.start{border-color:#D9D0FF;background:linear-gradient(180deg,#FBFAFF,#fff)}
.start-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.start-head h2{margin:0 0 8px}
.start ol{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.start li{display:flex;gap:12px;align-items:flex-start}
.start .tick{flex:0 0 22px;height:22px;border-radius:10px 2px 10px 2px;border:1.5px solid #CFC8EA;display:flex;align-items:center;justify-content:center;font-size:13px;color:#fff;margin-top:1px}
.start li.done .tick{background:linear-gradient(135deg,var(--purple),var(--blue));border-color:transparent}
.start li.done b{color:var(--muted);font-weight:500}
.live-note{margin:-8px 0 8px;min-height:1em}
.warnbox ul{list-style:none;padding-left:0;margin:10px 0}.warnbox ul .check{align-items:flex-start;margin:0}.warnbox ul .check input{margin-top:3px}
.gradform{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:8px 0 4px}.gradform label{margin:0}.gradform input{width:110px;padding:6px 9px}
.details-card summary{cursor:pointer;list-style:none;display:block}
.details-card summary::-webkit-details-marker{display:none}
.details-card .dc-title{display:inline-flex;align-items:center;gap:8px;font-weight:600;color:var(--violet-ink)}
.details-card .dc-title::after{content:"›";font-size:20px;line-height:1;transition:transform .15s}
.details-card[open] .dc-title::after{transform:rotate(90deg)}
.details-card .dc-sub{display:block;margin-top:4px}
.details-card:not([open]):hover{border-color:#CFC8EA;background:#FBFAFF}

/* The introduction video (home page) */
.watch{display:inline-flex;align-items:center;gap:10px;align-self:center}
.watch .play{width:0;height:0;border-left:9px solid currentColor;border-top:6px solid transparent;border-bottom:6px solid transparent}
.video-dialog{border:0;padding:0;border-radius:18px 4px 18px 4px;width:min(1100px,94vw);background:#16052e;color:#fff;box-shadow:0 30px 80px rgba(20,0,60,.45)}
.video-dialog::backdrop{background:rgba(22,5,46,.72)}
.video-dialog .vd-head{display:flex;justify-content:space-between;align-items:center;padding:12px 18px}
.video-dialog .vd-head .link{color:#fff}
.video-dialog video{display:block;width:100%;aspect-ratio:16/9;background:#000}
.video-dialog video{max-height:calc(92vh - 52px)}
