:root{--ink:#182e30;--muted:#657572;--teal:#116b5d;--mint:#e0eee6;--paper:#f4f5ef;--line:#dce1d8;--gold:#dbc789;--white:#fff;--orange:#b6632b;--red:#af3c37}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:14px/1.65 -apple-system,BlinkMacSystemFont,'Segoe UI','Thonburi','PingFang SC',sans-serif}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:4px}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}a{color:var(--teal)}aside{width:242px;background:#143e39;color:#c7dbd1;position:fixed;inset:0 auto 0 0;padding:36px 24px;display:flex;flex-direction:column}a.brand{display:flex;gap:13px;color:white;text-decoration:none;align-items:center;line-height:1.2;font-size:14px;letter-spacing:1px}.brand small{font-size:9px;font-weight:400;letter-spacing:1.2px;color:#b7cdc1}.brandmark{display:block;font-size:34px;font-weight:750;line-height:1;background:#dbe8b6;color:#173e38;border-radius:8px;padding:8px 7px}.brandmark span{font-size:19px}.sidebar-label{font-size:10px;color:#8eafa1;letter-spacing:1.5px;margin:57px 12px 16px}nav{display:grid;gap:6px}nav a{color:#c5d7cc;text-decoration:none;padding:12px 14px;border-radius:5px;display:flex;gap:14px}nav a.active{background:#33594d;color:#eff2cb}nav a:hover{background:#284e44}.nav-icon{font-size:17px;width:20px}.side-bottom{margin-top:auto;font-size:10px;letter-spacing:1px;border-top:1px solid #3f6054;padding:20px 6px 0}.side-bottom p{font-size:11px;letter-spacing:0;color:#a8bfb2}.side-bottom a{font-size:11px;letter-spacing:0;color:#dde7c8}.live-dot{width:6px;height:6px;border-radius:50%;background:#c4db87;display:inline-block;margin-right:5px}.shell{margin-left:242px}header{height:83px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 42px;background:#f9faf6}.breadcrumb{font-size:10px;letter-spacing:1.5px;color:var(--muted)}.breadcrumb span{margin:0 12px;color:#a6b4a8}.breadcrumb b{font-size:12px;letter-spacing:.4px;font-weight:500}.header-actions{display:flex;gap:16px;align-items:center}.header-actions select{max-width:190px;border:0;background:transparent;color:var(--ink);padding:5px}.avatar{border-radius:50%;background:#e2e9d7;font-size:11px;font-weight:600;padding:7px}main{max-width:1480px;margin:auto;padding:38px 42px 42px}h1{font-size:32px;font-weight:550;line-height:1.25;letter-spacing:-.8px;margin:7px 0 14px}h2{font-size:19px;font-weight:550;margin:0 0 12px}h3{font-size:15px;font-weight:600;margin:0 0 8px}p{margin:0 0 13px}.eyebrow{font-size:10px;letter-spacing:2px;color:var(--teal);font-weight:650}.muted{color:var(--muted)}.page-title{display:flex;justify-content:space-between;align-items:end;margin-bottom:25px;gap:20px}.page-title p{margin:0;color:var(--muted)}.pill{display:inline-block;background:#e9ede3;color:#426251;font-size:10px;padding:5px 10px;border-radius:20px;white-space:nowrap;letter-spacing:.3px}.pill.amber{background:#f5ead2;color:#805421}.pill.red{background:#fae8df;color:#a24d3c}.hero{display:grid;grid-template-columns:1.2fr 1fr;background:#e0e9d7;min-height:280px;border-radius:10px;overflow:hidden;margin-bottom:24px}.hero-copy{padding:32px 35px}.hero h2{font-size:27px;line-height:1.5;max-width:450px;margin:14px 0}.hero p{max-width:460px;color:#516756}.hero-diagram{display:grid;place-items:center;position:relative;background:radial-gradient(circle at 48% 48%,#d0dfcb 0,#dbe6d3 65%)}.hero-diagram svg{width:100%;max-width:385px}.primary,.secondary,.quiet,.danger{border:0;border-radius:5px;padding:10px 17px;font-weight:550}.primary{background:var(--teal);color:#fff}.primary:hover{background:#0c5045}.secondary{border:1px solid #cbd6ca;background:#fff;color:var(--ink)}.quiet{background:transparent;color:var(--teal);padding:5px 8px}.danger{color:var(--red);background:#fbe9e3}.button-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:25px}.stat{background:#fff;border:1px solid var(--line);border-radius:7px;padding:19px 22px}.stat-label{font-size:11px;color:var(--muted)}.stat strong{display:block;font-size:28px;font-weight:500;margin:5px 0}.stat small{font-size:10px;color:var(--muted)}.grid2{display:grid;grid-template-columns:1.2fr 1fr;gap:22px}.panel{background:#fff;border:1px solid var(--line);border-radius:8px;padding:25px;margin-bottom:20px}.panel-heading{display:flex;justify-content:space-between;gap:15px;align-items:center;margin-bottom:20px}.panel-heading h2{margin:0}.skills{display:grid;gap:18px}.skill-title{display:flex;justify-content:space-between;font-size:12px}.bar{height:5px;background:#edf0e7;margin-top:7px;border-radius:2px}.bar span{display:block;height:100%;background:#789c68}.empty{background:#f7f8f2;border:1px dashed #d6dfce;padding:22px;border-radius:5px;color:var(--muted);font-size:12px}.step-row{display:flex;gap:14px;padding:17px 0;border-bottom:1px solid #edf0e8}.step-row:last-child{border-bottom:0}.step-number{background:#edf2e5;color:#577354;align-self:start;border-radius:5px;padding:5px 9px;font-size:12px}.step-row p{font-size:12px;color:var(--muted);margin:4px 0 0}.callout{padding:14px 18px;background:#eef1e4;border-left:3px solid #769561;font-size:12px;color:#526248;margin-bottom:22px}.callout.warn{background:#fcf2dd;border-color:#c79e4e;color:#765525}form .field{margin-bottom:19px}.field label{display:block;font-size:12px;color:#52655d;margin-bottom:6px}.field input,.field select,.field textarea{padding:10px 12px;border:1px solid #ccd5ca;border-radius:5px;width:100%;background:#fff;color:var(--ink)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.question{padding:21px 0;border-bottom:1px solid var(--line)}.question h3{font-weight:500}.question label{display:block;margin:9px 0;font-size:13px;cursor:pointer}.question input{margin-right:9px;accent-color:var(--teal)}.question .q-tag{font-size:10px;color:var(--muted);letter-spacing:1px}.scorecard{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.scorecard>div{background:#f0f4e9;padding:16px;border-radius:5px}.scorecard strong{font-size:25px;font-weight:500;display:block}.course{border-top:1px solid var(--line);padding:20px 0}.course-title{display:flex;align-items:start;justify-content:space-between;gap:10px}.course h3{font-size:16px}.course p{font-size:12px;color:var(--muted)}details summary{cursor:pointer;color:var(--teal);font-size:12px}details .lesson{padding:18px;background:#f5f7ef;margin-top:10px;font-size:13px;border-radius:5px}.lesson li{margin-bottom:9px}.lab-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:22px}.lab-stage{background:#143e39;border-radius:8px;color:#e1eddf;padding:23px;position:relative;min-height:300px}.lab-stage svg{width:100%;display:block;margin:22px 0 14px}.lab-stage .pill{background:#31574a;color:#d7e9c4}.display-row{display:flex;gap:30px}.display-row strong{font-size:32px;font-weight:450;display:block;line-height:1.2}.display-row small{font-size:10px;color:#aec7b6;letter-spacing:1px}.lab-note{font-size:11px;color:#b4c9b9;margin-top:17px}.io-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:18px}.io{border:1px solid #d2dccc;background:#f8f9f3;color:#53665b;border-radius:4px;padding:9px;text-align:left;font-size:11px}.io.on{background:#e6edcd;border-color:#7c9868;color:#2a5c35}.io.bad{background:#fbe8dc;border-color:#bc765d;color:#8c4730}.code{width:100%;min-height:135px;background:#f3f5ee;border:1px solid #d5decd;border-radius:5px;padding:15px;font:13px/1.8 ui-monospace,Menlo,Consolas,monospace;resize:vertical;color:#164e40}.code-help{font-size:10px;color:var(--muted);line-height:1.9}.result-row{padding:10px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:20px;font-size:12px}.pass{color:#246b44}.fail{color:var(--red)}.timeline{border-left:1px solid #ced9c5;padding-left:22px}.event{position:relative;margin-bottom:23px}.event:before{content:'';position:absolute;width:7px;height:7px;background:#759563;border-radius:50%;left:-26px;top:7px}.event time{font-size:10px;color:var(--muted)}.event p{margin:3px 0;font-size:12px}.source{font-size:11px;border-top:1px solid #e1e7d8;padding-top:12px;margin-top:15px;color:var(--muted)}table{border-collapse:collapse;width:100%;font-size:12px}td,th{text-align:left;padding:12px 10px;border-bottom:1px solid var(--line)}th{font-weight:500;color:var(--muted);background:#f6f8ef}.note{font-size:11px;color:var(--muted);margin-top:12px}footer{border-top:1px solid var(--line);padding:17px 42px;font-size:10px;color:var(--muted)}#toast{position:fixed;bottom:30px;right:30px;background:#184c3e;color:#fff;max-width:400px;padding:12px 20px;border-radius:6px;box-shadow:0 6px 20px #163d3526;display:none;z-index:10}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}canvas{width:100%;height:100px;display:block;background:#f4f7ef;border-radius:4px;margin-top:16px}.error{color:var(--red);font-size:12px}code{font-family:ui-monospace,Menlo,monospace}.small{font-size:12px}.section-spacer{margin-top:22px}@media(min-width:1650px){main{padding-top:50px}.hero{min-height:330px}}@media(max-width:1100px){aside{width:205px;padding:30px 15px}.shell{margin-left:205px}main{padding:30px 25px}header{padding:0 25px}.grid2,.lab-grid{grid-template-columns:1fr}.hero-copy{padding:25px}.stats{gap:10px}.stat{padding:15px}.hero h2{font-size:23px}}@media(max-width:720px){aside{position:static;width:auto;padding:17px 16px}.brandmark{font-size:25px}.brand small{display:none}.sidebar-label,.side-bottom{display:none}nav{display:flex;overflow:auto;gap:3px;margin-top:16px}nav a{padding:8px;font-size:11px;white-space:nowrap}.nav-icon{display:none}.shell{margin-left:0}header{height:62px;padding:0 16px}.breadcrumb{display:none}.header-actions{width:100%;justify-content:end}main{padding:26px 16px}.hero{grid-template-columns:1fr}.hero-diagram{display:none}.stats{grid-template-columns:1fr 1fr}.page-title{align-items:start}h1{font-size:27px}.page-title .pill{display:none}.panel{padding:19px}.form-grid{grid-template-columns:1fr}.scorecard{grid-template-columns:1fr 1fr}footer{padding:17px}.display-row{gap:15px}td,th{padding:10px 6px}table{font-size:11px}.header-actions select{max-width:190px}.result-row{font-size:11px}}@media print{aside,header,footer,button{display:none}.shell{margin:0}main{padding:0}.panel{break-inside:avoid}body{background:#fff}}
/* Account controls wrap on narrow screens; dialogs remain inside the viewport. */
#serverActions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
#serverActions button{font-size:11px;padding:7px 10px;white-space:nowrap}
dialog::backdrop{background:#153d3966}
@media(max-width:1100px){header{height:auto;min-height:83px;padding-top:12px;padding-bottom:12px}.header-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px}}
@media(max-width:720px){header{min-height:62px}.header-actions select{max-width:135px}.header-actions .avatar{display:none}#serverActions{justify-content:flex-end}}

.table-scroll{max-width:100%;overflow-x:auto}.table-scroll th,.table-scroll td{text-align:left;vertical-align:top}
