/* Specialty Digest Virtual Lab framework. Scoped under .vl. Tokens match the Editorial Authority design. */
.vl{--vl-navy:#0A1230;--vl-blue:#2563EB;--vl-blue-d:#1D4ED8;--vl-ink:#111827;--vl-muted:#475569;--vl-border:#D1D5DB;--vl-bg:#F0F5FA;--vl-alt:#EAF0FF;--vl-surface:#fff;--vl-green:#1B6B2F;--vl-green-l:#58CC70;--vl-amber:#F5B942;--vl-amber-d:#8A5A00;--vl-red:#C1451B;font-family:var(--sd-body-font,'Public Sans',system-ui,sans-serif);color:var(--vl-ink);line-height:1.6;background:var(--vl-bg)}
.vl *,.vl *::before,.vl *::after{box-sizing:border-box}
.vl a{color:var(--vl-blue-d);text-decoration:none}
.vl a:hover{text-decoration:underline}
.vl :focus-visible{outline:3px solid var(--vl-blue);outline-offset:2px;border-radius:2px}
.vl-sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.vl-in{max-width:1200px;margin:0 auto;padding:0 24px}
/* hero */
.vl-hero{background:var(--vl-navy);color:#fff;padding:36px 0 40px}
.vl-crumbs{display:flex;flex-wrap:wrap;gap:6px 10px;font-size:13px;color:#C9D6F2;margin:0 0 18px}
.vl-crumbs a{color:#C9D6F2}.vl-crumbs a:hover{color:#fff}
.vl-hero h1{font-family:var(--sd-heading-font,'Piazzolla',Georgia,serif);font-weight:700;font-size:clamp(32px,4.6vw,52px);line-height:1.08;margin:0 0 14px;color:#fff;max-width:22ch}
.vl-deck{font-size:18px;line-height:1.55;color:var(--vl-alt);max-width:62ch;margin:0 0 20px}
.vl-chips{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px;padding:0}
.vl-chips li{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;border:1px solid #5B6EA8;border-radius:999px;padding:5px 12px;color:#fff}
.vl-byline{font-size:13px;color:#C9D6F2;margin:0;max-width:80ch}
/* step navigation */
.vl-stepnav{position:sticky;top:0;z-index:50;background:#fff;border-bottom:1px solid var(--vl-border)}
.vl-stepnav ol{list-style:none;display:flex;gap:2px;margin:0;padding:0;overflow-x:auto;scrollbar-width:none}
.vl-stepnav li{flex:1 0 auto}
.vl-stepnav a{display:flex;align-items:center;justify-content:center;gap:8px;min-height:52px;padding:0 14px;font-size:14px;font-weight:600;color:var(--vl-muted);border-bottom:3px solid transparent;white-space:nowrap}
.vl-stepnav a b{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--vl-alt);color:var(--vl-navy);font-size:12px}
.vl-stepnav a:hover{text-decoration:none;color:var(--vl-navy)}
.vl-stepnav a.is-active{color:var(--vl-navy);border-bottom-color:var(--vl-blue)}
.vl-stepnav a.is-active b{background:var(--vl-blue);color:#fff}
.vl-stepnav a.is-done b{background:var(--vl-green-l);color:var(--vl-navy)}
.vl-progress{height:3px;background:var(--vl-alt)}.vl-progress i{display:block;height:100%;width:0;background:var(--vl-blue);transition:width .2s}
/* sections */
.vl-main{padding:32px 0 56px}
.vl-sec{background:var(--vl-surface);border:1px solid var(--vl-border);border-radius:8px;padding:32px;margin:0 0 24px;scroll-margin-top:70px}
.vl-sec>h2{font-family:var(--sd-heading-font,'Piazzolla',Georgia,serif);font-weight:700;font-size:clamp(26px,3vw,34px);line-height:1.12;margin:0 0 16px;color:var(--vl-navy)}
.vl-sec>h2 .vl-num{color:var(--vl-blue);margin-right:10px}
.vl-sec h3{font-family:var(--sd-heading-font,'Piazzolla',Georgia,serif);font-size:22px;line-height:1.2;margin:28px 0 10px;color:var(--vl-navy)}
.vl-sec h4{font-size:16px;margin:18px 0 6px;color:var(--vl-navy)}
.vl-sec p,.vl-sec li{font-size:17px}
.vl-sec p{max-width:75ch;margin:0 0 14px}
.vl-sec ul,.vl-sec ol{padding-left:22px;margin:0 0 16px}
.vl-sec li{margin:0 0 6px}
.vl-lead{font-size:19px!important;color:var(--vl-muted)}
.vl-two{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.vl-outcomes{list-style:none;padding:0!important}
.vl-outcomes li{position:relative;padding-left:30px}
.vl-outcomes li::before{content:"";position:absolute;left:0;top:7px;width:16px;height:9px;border-left:3px solid var(--vl-green-l);border-bottom:3px solid var(--vl-green-l);transform:rotate(-45deg)}
.vl-level{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--vl-blue-d);margin:0 0 4px}
/* callouts, equations, tables, examples */
.vl-callout{margin:18px 0;padding:14px 18px;border-left:4px solid var(--vl-blue);background:var(--vl-alt);border-radius:0 6px 6px 0}
.vl-callout>:last-child{margin-bottom:0}
.vl-callout-warn{border-left-color:var(--vl-amber);background:rgba(245,185,66,.16)}
.vl-callout-tip{border-left-color:var(--vl-green-l);background:rgba(88,205,112,.14)}
.vl-callout strong:first-child{color:var(--vl-navy)}
.vl-eq{margin:16px 0!important;padding:12px 16px;text-align:center;font-family:var(--sd-heading-font,'Piazzolla',Georgia,serif);font-size:20px!important;background:var(--vl-bg);border-radius:6px;overflow-x:auto;max-width:none!important}
.vl-table{width:100%;border-collapse:collapse;margin:16px 0;font-size:15px}
.vl-table th,.vl-table td{border:1px solid var(--vl-border);padding:9px 12px;text-align:left;vertical-align:top}
.vl-table th{background:var(--vl-alt);color:var(--vl-navy);font-size:13px;letter-spacing:.03em}
.vl-table tbody tr:nth-child(even){background:#F8FAFD}
.vl-ex{margin:22px 0;padding:18px 22px;border:1px solid var(--vl-border);border-left:5px solid var(--vl-blue);border-radius:6px;background:#fff}
.vl-ex h4{margin:0 0 8px;font-size:17px}
.vl-steps{counter-reset:s;list-style:none;padding:0!important}
.vl-steps>li{counter-increment:s;position:relative;padding-left:38px;margin-bottom:10px}
.vl-steps>li::before{content:counter(s);position:absolute;left:0;top:1px;width:26px;height:26px;border-radius:50%;background:var(--vl-navy);color:#fff;font-size:13px;font-weight:700;display:grid;place-items:center}
.vl-answer{padding:10px 14px;background:rgba(88,205,112,.16);border-radius:6px;margin-top:10px!important}
.vl-note svg{max-width:100%;height:auto;display:block;margin:14px auto}
.vl-glossary{display:grid;grid-template-columns:minmax(150px,220px) 1fr;gap:8px 20px;margin:12px 0}
.vl-glossary dt{font-weight:700;color:var(--vl-navy)}.vl-glossary dd{margin:0}
/* notes */
.vl-tools{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:0 0 16px}
.vl-tools input[type=search]{flex:1 1 240px;min-height:44px;padding:0 14px;border:1px solid var(--vl-border);border-radius:4px;font-size:16px;font-family:inherit}
.vl-note{border:1px solid var(--vl-border);border-radius:6px;margin:0 0 10px;background:#fff}
.vl-note>summary{cursor:pointer;list-style:none;padding:15px 52px 15px 20px;font-family:var(--sd-heading-font,'Piazzolla',Georgia,serif);font-weight:700;font-size:19px;color:var(--vl-navy);position:relative;min-height:52px}
.vl-note>summary::-webkit-details-marker{display:none}
.vl-note>summary::after{content:"+";position:absolute;right:20px;top:50%;transform:translateY(-50%);font-size:24px;color:var(--vl-blue);font-family:var(--sd-body-font,sans-serif)}
.vl-note[open]>summary::after{content:"\2212"}
.vl-note[open]>summary{border-bottom:1px solid var(--vl-border);background:var(--vl-bg)}
.vl-note-body{padding:8px 24px 20px}
.vl-note.is-flag{border-color:var(--vl-amber);box-shadow:0 0 0 2px rgba(245,185,66,.35)}
.vl-note.is-flag>summary::before{content:"Review";font-family:var(--sd-body-font,sans-serif);font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;background:var(--vl-amber);color:var(--vl-navy);border-radius:4px;padding:2px 7px;margin-right:10px;vertical-align:middle}
.vl-note.is-hidden{display:none}
/* buttons and form controls */
.vl-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 18px;border-radius:4px;border:1px solid var(--vl-blue);background:var(--vl-blue);color:#fff;font:600 13px/1 var(--sd-body-font,sans-serif);letter-spacing:.07em;text-transform:uppercase;cursor:pointer}
.vl-btn:hover{background:var(--vl-blue-d);border-color:var(--vl-blue-d);text-decoration:none;color:#fff}
.vl-btn.is-ghost{background:#fff;color:var(--vl-navy);border-color:var(--vl-navy)}
.vl-btn.is-ghost:hover{background:var(--vl-navy);color:#fff}
.vl-btn.is-small{min-height:36px;padding:0 12px;font-size:12px}
.vl-btn[disabled]{opacity:.45;cursor:not-allowed}
.vl label{font-size:14px;font-weight:600;color:var(--vl-navy)}
.vl select,.vl input[type=number],.vl input[type=text]{min-height:40px;padding:0 10px;border:1px solid var(--vl-border);border-radius:4px;font:16px var(--sd-body-font,sans-serif);color:var(--vl-ink);background:#fff;max-width:100%}
.vl input[type=range]{width:100%;accent-color:var(--vl-blue)}
/* simulation shell */
.vl-sim{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px;align-items:start}
.vl-stage{background:#fff;border:1px solid var(--vl-border);border-radius:6px;overflow:hidden}
.vl-stage canvas{display:block;width:100%;height:auto;background:#fff}
.vl-stagebar{display:flex;flex-wrap:wrap;gap:8px;padding:10px 12px;border-top:1px solid var(--vl-border);background:var(--vl-bg)}
.vl-panel{background:var(--vl-bg);border:1px solid var(--vl-border);border-radius:6px;padding:16px}
.vl-panel h3{margin:0 0 12px!important;font-size:18px!important}
.vl-ctrl{margin:0 0 14px}
.vl-ctrl-top{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px}
.vl-ctrl-top input[type=number]{width:84px;text-align:right;min-height:34px}
.vl-ctrl select{width:100%}
.vl-check{display:flex;gap:10px;align-items:flex-start;margin:0 0 10px;font-size:14px}
.vl-check input{margin-top:4px;width:18px;height:18px;accent-color:var(--vl-blue)}
.vl-readouts{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin:16px 0}
.vl-metric{background:#fff;border:1px solid var(--vl-border);border-radius:6px;padding:10px 12px}
.vl-metric span{display:block;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--vl-muted)}
.vl-metric b{display:block;font-size:22px;font-variant-numeric:tabular-nums;color:var(--vl-navy);font-family:var(--sd-heading-font,'Piazzolla',Georgia,serif)}
.vl-metric small{font-size:12px;color:var(--vl-muted)}
.vl-legend{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:13px;color:var(--vl-muted);padding:8px 12px 0}
.vl-legend i{display:inline-block;width:18px;height:3px;vertical-align:middle;margin-right:6px;border-radius:2px}
/* tabs and graphs */
.vl-tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--vl-border);margin:24px 0 12px}
.vl-tabs button{min-height:42px;padding:0 16px;border:1px solid transparent;border-bottom:0;background:transparent;font:600 14px var(--sd-body-font,sans-serif);color:var(--vl-muted);cursor:pointer;border-radius:6px 6px 0 0}
.vl-tabs button[aria-selected=true]{background:#fff;border-color:var(--vl-border);color:var(--vl-navy);margin-bottom:-1px}
.vl-graph{background:#fff;border:1px solid var(--vl-border);border-radius:6px;padding:8px;position:relative}
.vl-graph svg{display:block;width:100%;height:auto}
.vl-graph text{font-family:var(--sd-body-font,sans-serif);fill:var(--vl-muted);font-size:12px}
.vl-graph .vl-tip{position:absolute;pointer-events:none;background:var(--vl-navy);color:#fff;font-size:12px;padding:5px 8px;border-radius:4px;white-space:nowrap;transform:translate(10px,-110%)}
.vl-graphnote{font-size:14px!important;color:var(--vl-muted)}
/* data table */
.vl-tablewrap{overflow-x:auto;border:1px solid var(--vl-border);border-radius:6px;background:#fff}
.vl-data{width:100%;border-collapse:collapse;font-size:14px;font-variant-numeric:tabular-nums}
.vl-data th,.vl-data td{padding:8px 10px;border-bottom:1px solid var(--vl-border);text-align:right;white-space:nowrap}
.vl-data th{background:var(--vl-alt);color:var(--vl-navy);font-size:12px;letter-spacing:.04em}
.vl-data td:first-child,.vl-data th:first-child{text-align:center}
.vl-data .vl-empty{text-align:center;color:var(--vl-muted);padding:20px}
/* tasks and calculators */
.vl-tasks{display:grid;gap:14px}
.vl-task{border:1px solid var(--vl-border);border-radius:6px;padding:16px 18px;background:#fff}
.vl-task h4{margin:0 0 6px}.vl-task p{font-size:15px!important;margin:0 0 10px}
.vl-task-res{margin-top:10px;padding:10px 12px;border-radius:6px;font-size:15px;display:none}
.vl-task-res.is-ok{display:block;background:rgba(88,205,112,.18)}
.vl-task-res.is-no{display:block;background:rgba(245,185,66,.2)}
.vl-predict{margin:0 0 14px;padding:14px 16px;border:1px solid var(--vl-border);border-radius:6px;background:var(--vl-bg)}
.vl-predict summary{cursor:pointer;font-weight:600;color:var(--vl-navy)}
.vl-predict div{margin-top:8px}
.vl-calc{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:12px 0}
.vl-calc label{display:block;margin-bottom:4px}
.vl-calc input,.vl-calc select{width:100%}
.vl-work{margin:14px 0;padding:14px 18px;border-radius:6px;background:var(--vl-bg);font-size:15px;font-variant-numeric:tabular-nums}
.vl-work ol{margin:0!important}
/* exam */
.vl-examcard{border:1px solid var(--vl-border);border-radius:8px;padding:22px;background:var(--vl-bg)}
.vl-q{border:1px solid var(--vl-border);border-radius:8px;padding:22px;background:#fff}
.vl-q-meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;font-size:13px;color:var(--vl-muted);margin-bottom:10px}
.vl-q-stem{font-size:18px;margin:0 0 14px;white-space:pre-line}
.vl-opt{display:flex;gap:12px;align-items:flex-start;border:1px solid var(--vl-border);border-radius:6px;padding:12px 14px;margin:0 0 8px;cursor:pointer;font-weight:400!important;font-size:16px!important;color:var(--vl-ink)!important}
.vl-opt:hover{background:var(--vl-bg)}
.vl-opt input{margin-top:4px;width:18px;height:18px;accent-color:var(--vl-blue)}
.vl-opt.is-sel{border-color:var(--vl-blue);background:var(--vl-alt)}
.vl-opt.is-right{border-color:var(--vl-green-l);background:rgba(88,205,112,.16)}
.vl-opt.is-wrong{border-color:var(--vl-red);background:rgba(193,69,27,.08)}
.vl-numrow{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.vl-numrow input{width:180px}
.vl-qnav{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0}
.vl-qnav button{width:38px;height:38px;border-radius:6px;border:1px solid var(--vl-border);background:#fff;font-weight:700;cursor:pointer;color:var(--vl-navy)}
.vl-qnav button.is-done{background:var(--vl-alt);border-color:var(--vl-blue)}
.vl-qnav button.is-cur{outline:3px solid var(--vl-blue)}
.vl-qnav button.is-ok{background:rgba(88,205,112,.3);border-color:var(--vl-green-l)}
.vl-qnav button.is-no{background:rgba(193,69,27,.15);border-color:var(--vl-red)}
.vl-qbtns{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.vl-score{display:flex;flex-wrap:wrap;gap:16px;align-items:center;margin:0 0 16px}
.vl-score b{font-family:var(--sd-heading-font,'Piazzolla',Georgia,serif);font-size:48px;line-height:1;color:var(--vl-navy)}
.vl-bars{display:grid;gap:8px;margin:12px 0 20px}
.vl-bar{display:grid;grid-template-columns:190px 1fr 60px;gap:10px;align-items:center;font-size:14px}
.vl-bar i{display:block;height:10px;background:var(--vl-alt);border-radius:5px;overflow:hidden}.vl-bar i b{display:block;height:100%;background:var(--vl-blue)}
.vl-explain{margin-top:12px;padding:12px 14px;border-radius:6px;background:var(--vl-bg);font-size:15px}
.vl-review-item{border-top:1px solid var(--vl-border);padding:18px 0}
.vl-foot{background:var(--vl-navy);color:#fff;padding:36px 0}
.vl-foot h2{font-family:var(--sd-heading-font,'Piazzolla',Georgia,serif);font-size:26px;margin:0 0 10px;color:#fff}
.vl-foot p{color:var(--vl-alt)}
.vl-more{display:flex;flex-wrap:wrap;gap:10px;list-style:none;margin:0 0 18px;padding:0}
.vl-more a,.vl-links a{color:#fff;border:1px solid #5B6EA8;border-radius:4px;padding:8px 14px;display:inline-block;margin:0 10px 8px 0}
.vl-nojs{padding:14px 18px;border:1px dashed var(--vl-border);border-radius:6px;background:var(--vl-bg)}
@media (max-width:900px){
.vl-in{padding:0 16px}.vl-sec{padding:20px 16px}.vl-sim{grid-template-columns:1fr}.vl-two{grid-template-columns:1fr}
.vl-glossary{grid-template-columns:1fr}.vl-bar{grid-template-columns:1fr}.vl-stepnav a span{display:none}.vl-stepnav a{padding:0 12px}
.vl-table{display:block;overflow-x:auto}.vl-note-body{padding:6px 14px 16px}.vl-hero{padding:24px 0 28px}
}
@media (prefers-reduced-motion:reduce){.vl *{animation:none!important;transition:none!important}}
@media print{
.vl-stepnav,.vl-sim,.vl-tools,.vl-stagebar,.vl-foot,#vl-sim,#vl-exam,.vl-tabs,.vl-graph{display:none!important}
.vl-hero{background:#fff;color:#000;padding:0}.vl-hero h1,.vl-deck,.vl-byline,.vl-chips li,.vl-crumbs,.vl-crumbs a{color:#000;border-color:#999}
.vl,.vl-main{background:#fff}.vl-sec{border:0;padding:0;break-inside:auto}.vl-note{break-inside:avoid-page;border-color:#999}.vl-note-body{display:block}
}
