:root{--navy:#0b1f4d;--navy2:#13307a;--amber:#f5b301;--bg:#f3f5fa;--card:#fff;--text:#1b2437;--muted:#6b7488;--ok:#1f9d55;--bad:#d64545;--r:14px}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.5}
.brand::before,.logo::before{content:"";display:inline-block;width:1.47em;height:1em;margin-right:.2em;vertical-align:-.08em;background:url("/img/aerowise-wing.png") center / contain no-repeat}
a{color:var(--navy2)}
h1,h2,h3{color:var(--navy);margin:0 0 .5rem}
.btn{display:inline-block;border:0;border-radius:10px;padding:.6rem 1.1rem;font:inherit;font-weight:600;cursor:pointer;background:var(--navy);color:#fff;text-decoration:none}
.btn:hover{background:var(--navy2)}
.btn.amber{background:var(--amber);color:#1b1500}
.btn.ghost{background:transparent;color:var(--navy);border:1px solid #cdd4e4}
.btn.danger{background:var(--bad)}
.btn.sm{padding:.3rem .6rem;font-size:.85rem}
.btn:disabled{opacity:.5;cursor:not-allowed}
input,select,textarea{width:100%;padding:.6rem .7rem;border:1px solid #cdd4e4;border-radius:10px;font:inherit;background:#fff}
label{display:block;font-weight:600;font-size:.9rem;margin:.7rem 0 .25rem}
.card{background:var(--card);border-radius:var(--r);padding:1.25rem;box-shadow:0 2px 10px rgba(11,31,77,.07);margin-bottom:1rem}
.grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}
.muted{color:var(--muted)}
.error{color:var(--bad);min-height:1.3em;font-size:.9rem}
.badge{display:inline-block;background:#fff3cc;color:#7a5a00;border-radius:999px;padding:.1rem .6rem;font-size:.75rem;font-weight:700}
.is-locked{opacity:.8;border:1px dashed #b9c1d6}
.card.locked{text-align:center}
.badge.ok{background:#d9f5e5;color:#116b39}.badge.bad{background:#fbe0e0;color:#8f2323}
.bar{height:8px;background:#e4e8f2;border-radius:99px;overflow:hidden}
.bar>i{display:block;height:100%;background:var(--ok)}

/* landing */
.top{display:flex;justify-content:space-between;align-items:center;padding:1rem 2rem;background:var(--navy);color:#fff}
.logo{font-weight:800;font-size:1.3rem;color:#fff;text-decoration:none}.logo span{color:var(--amber)}
.hero{background:linear-gradient(135deg,var(--navy),var(--navy2));color:#fff;padding:5rem 2rem;text-align:center}
.hero h1{color:#fff;font-size:2.6rem}.hero p{max-width:640px;margin:1rem auto 2rem;color:#d6def5}
.section{max-width:1000px;margin:0 auto;padding:3rem 1.5rem}
.price{font-size:2.4rem;font-weight:800;color:var(--navy)}
footer{text-align:center;padding:2rem;color:var(--muted)}

/* auth */
.auth{max-width:400px;margin:5vh auto;padding:0 1rem}
.tabs{display:flex;gap:.5rem;margin-bottom:1rem}
.tabs button{flex:1}

/* app shell */
.shell{display:flex;min-height:100vh}
.side{width:230px;background:linear-gradient(180deg,var(--navy),#081538);color:#fff;padding:1.2rem .8rem;position:sticky;top:0;height:100vh;flex-shrink:0}
.side .logo{display:block;margin:0 .6rem 1.5rem}
.side a.nav{display:block;color:#cfd8f3;padding:.65rem .8rem;border-radius:10px;text-decoration:none;margin-bottom:.2rem;cursor:pointer}
.admin-page .side a.nav,.admin-page .btn,.admin-page button{-webkit-user-select:none;user-select:none}
.side a.nav.active{background:var(--amber);color:#1b1500;font-weight:700}
.side a.nav:hover:not(.active){background:rgba(255,255,255,.1)}
.side .bottom{position:absolute;bottom:1rem;left:.8rem;right:.8rem;font-size:.85rem}
.main{flex:1;padding:2rem;max-width:1100px}
.alert{background:#fff4e0;border:1px solid #f1d199;border-radius:var(--r);padding:1rem;display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}
.row{display:flex;gap:1rem;align-items:center;justify-content:space-between}
.stat{font-size:1.8rem;font-weight:800;color:var(--navy)}
table{width:100%;border-collapse:collapse;background:#fff;border-radius:var(--r);overflow:hidden}
th,td{text-align:left;padding:.6rem .8rem;border-bottom:1px solid #edf0f7;font-size:.92rem;vertical-align:top}
th{background:#eef1f9;color:var(--navy)}
.nowrap{white-space:nowrap}
.utable td{vertical-align:middle}
.acc-line{display:flex;align-items:center;gap:.5rem;padding:.15rem 0;font-size:.85rem}
.acc-name{max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.dot{flex:none;width:.55rem;height:.55rem;border-radius:50%;background:#bbb}.dot.ok{background:#1b9e5a}.dot.bad{background:#d64545}
.lesson-body{line-height:1.7}
.lesson-body h4{margin:1.2rem 0 .3rem;color:var(--navy2)}
.lesson-body figure{margin:1rem auto;text-align:center}
.lesson-body figure img{max-width:100%;height:auto;border:1px solid #e1e6f2;border-radius:10px;background:#fff}
.lesson-body figcaption{font-size:.82rem;color:var(--muted);margin-top:.3rem}
.lesson-body img,.lesson-body video,.lesson-body audio{max-width:100%;height:auto}
.media-preview{display:block;max-width:100%;max-height:200px;margin:.5rem 0}
.resource-row{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1rem;padding:.75rem 0;border-top:1px solid #edf0f7}
.resource-category summary{font-size:1.15rem;user-select:none}
.resource-category summary:focus-visible{outline:2px solid var(--navy2);outline-offset:4px}
.resource-category[open] summary{margin-bottom:1rem}
.lesson-body table{margin:1rem 0}
.lesson-body table td,.lesson-body table th{border:1px solid #dfe4f0}
.lesson-body .callout{border-left:5px solid var(--navy2);background:#eef2fc;border-radius:8px;padding:.7rem 1rem;margin:1rem 0}
.lesson-body .callout.key{border-color:var(--amber);background:#fff7de}
.lesson-body .callout.uk{border-color:#c8102e;background:#fdeef0}
.lesson-body .callout.warn{border-color:var(--bad);background:#fbe9e9}
.lesson-body .callout>strong:first-child{display:block;color:var(--navy)}
.lesson-meta{font-size:.78rem;color:var(--muted);border-top:1px solid #edf0f7;margin-top:1rem;padding-top:.5rem}
.section-title{margin:1.6rem 0 .6rem;padding-bottom:.3rem;border-bottom:2px solid var(--amber)}
.opt{display:block;width:100%;text-align:left;margin:.4rem 0;padding:.7rem .9rem;border:1px solid #cdd4e4;border-radius:10px;background:#fff;cursor:pointer;font:inherit}
.opt.sel{border-color:var(--navy2);background:#e9eefc}
.opt.right{border-color:var(--ok);background:#e2f6ea}.opt.wrong{border-color:var(--bad);background:#fbe5e5}
.timer{font-weight:800;font-size:1.2rem;color:var(--navy)}
dialog{border:0;border-radius:var(--r);padding:1.5rem;width:min(640px,94vw);box-shadow:0 10px 40px rgba(0,0,0,.3)}
dialog::backdrop{background:rgba(8,21,56,.55)}
@media(min-width:761px){.side{display:flex;flex-direction:column;overflow-y:auto}.side>a,.side .bottom{flex-shrink:0}.side .bottom{position:static;margin-top:auto;padding-top:1rem}}
@media(max-width:760px){.shell{flex-direction:column}.side{width:100%;height:auto;position:static;display:flex;flex-wrap:wrap;gap:.3rem}.side .bottom{position:static;width:100%}.main{padding:1rem}}

.course-grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}
.course-card{margin-bottom:0}
.ring{--p:0;flex:none;width:64px;height:64px;border-radius:50%;background:conic-gradient(var(--ok) calc(var(--p)*1%),#e4e8f2 0);display:grid;place-items:center;position:relative}
.ring::before{content:"";position:absolute;inset:7px;background:var(--card);border-radius:50%}
.ring span{position:relative;font-weight:800;color:var(--navy);font-size:.95rem}
.mini-stats{display:flex;gap:1.4rem}
.mini-stats div{display:flex;flex-direction:column}
.mini-stats strong{font-size:1.15rem;color:var(--navy)}
.mini-stats span{font-size:.78rem;color:var(--muted)}
details summary{cursor:pointer;font-weight:600;color:var(--navy);margin-bottom:.4rem}
.subj-row{display:grid;grid-template-columns:minmax(0,1.6fr) 1fr 3.2rem;gap:.7rem;align-items:center;padding:.35rem 0;border-bottom:1px solid #edf0f7;text-decoration:none;color:inherit;font-size:.9rem}
.subj-row:hover .subj-name{text-decoration:underline}
.subj-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.subj-n{text-align:right;font-size:.8rem}
