:root{
  --brand:#00adee;--brand-dark:#008ac0;--navy:#08243a;--ink:#173042;--muted:#647789;
  --line:#dce8ef;--soft:#f4f9fc;--white:#fff;--green:#16a36a;--orange:#f59e0b;--red:#dc4545;
  --shadow:0 18px 50px rgba(10,55,82,.09);--radius:18px;
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#fff;color:var(--ink);font-family:Poppins,Arial,sans-serif;line-height:1.65}a{color:var(--brand-dark);text-decoration:none}img{max-width:100%}button,input,select,textarea{font:inherit}.container{width:min(1180px,calc(100% - 40px));margin:auto}.container-fluid{width:min(1440px,calc(100% - 32px));margin:auto}.narrow{max-width:850px}.section{padding:78px 0}.section-soft{background:var(--soft)}.muted{color:var(--muted)}
.site-header{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.96);border-bottom:1px solid rgba(220,232,239,.95);backdrop-filter:blur(12px)}.header-inner{min-height:74px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{display:flex;align-items:center;gap:11px;color:var(--navy)}.brand strong{font-family:Outfit,sans-serif;font-size:19px;display:block;line-height:1}.brand small{display:block;color:var(--muted);font-size:10px;margin-top:4px}.brand-mark{width:42px;height:42px;border-radius:12px;background:var(--brand);color:#fff;display:grid;place-items:center;font-weight:800;font-family:Outfit,sans-serif;box-shadow:0 9px 24px rgba(0,173,238,.23)}.main-nav{display:flex;align-items:center;gap:22px}.main-nav>a:not(.btn){font-size:14px;font-weight:500;color:#365264}.main-nav>a:hover{color:var(--brand-dark)}.nav-toggle{display:none;background:none;border:0;font-size:24px;color:var(--navy)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--brand);background:var(--brand);color:#fff;padding:11px 19px;border-radius:11px;font-weight:600;cursor:pointer;box-shadow:0 8px 18px rgba(0,173,238,.15);transition:.2s}.btn:hover{background:var(--brand-dark);border-color:var(--brand-dark);transform:translateY(-1px)}.btn-outline{background:#fff;color:var(--brand-dark);box-shadow:none}.btn-sm{padding:8px 13px;font-size:13px}.btn-lg{padding:13px 22px}.btn.danger{background:#fff;border-color:#efb2b2;color:var(--red);box-shadow:none}.btn.danger:hover{background:#fff5f5}
.hero{padding:84px 0 70px;background:linear-gradient(180deg,#fff 0%,#f5fbfe 100%);overflow:hidden}.hero-grid{display:grid;grid-template-columns:1.08fr .92fr;gap:60px;align-items:center}.eyebrow{display:inline-block;font-size:12px;letter-spacing:.13em;font-weight:700;color:var(--brand-dark);text-transform:uppercase;margin-bottom:10px}.hero h1,.page-hero h1,.module-hero h1,.dashboard-head h1{font-family:Outfit,sans-serif;color:var(--navy);font-size:clamp(42px,6vw,72px);line-height:1.02;margin:7px 0 20px;letter-spacing:-.035em}.hero h1 span{color:var(--brand)}.hero-copy{font-size:18px;color:#587082;max-width:700px}.hero-actions{display:flex;gap:12px;margin:30px 0}.flow-strip{display:flex;flex-wrap:wrap;align-items:center;gap:9px;font-size:11px;font-weight:700;color:#3f6277}.flow-strip span{border:1px solid var(--line);padding:7px 9px;border-radius:8px;background:#fff}.flow-strip b{color:var(--brand)}.hero-panel{position:relative}.terminal-card{background:#071d2c;color:#cfe5f1;border-radius:20px;overflow:hidden;box-shadow:0 28px 70px rgba(4,35,54,.2);border:1px solid #113a52}.terminal-top{height:43px;background:#0b2a3f;display:flex;align-items:center;gap:7px;padding:0 14px;color:#80a9bd;font:12px monospace}.terminal-top i{width:10px;height:10px;border-radius:50%;background:#688b9c}.terminal-top i:nth-child(1){background:#e65a55}.terminal-top i:nth-child(2){background:#efb84d}.terminal-top i:nth-child(3){background:#45b977}.terminal-top span{margin-left:8px}.terminal-card pre{margin:0;padding:28px;min-height:270px;white-space:pre-wrap;font:14px/1.8 Consolas,monospace}.terminal-user{color:#65d5ff}.terminal-success{color:#68e3ad}.metric-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:12px}.metric-row>div{background:#fff;border:1px solid var(--line);border-radius:14px;padding:15px;text-align:center}.metric-row strong{display:block;font:700 24px Outfit;color:var(--navy)}.metric-row span{font-size:12px;color:var(--muted)}
.section-heading{text-align:center;max-width:780px;margin:0 auto 38px}.section-heading.left{text-align:left;margin-left:0}.section-heading h2,.split-cta h2,.lesson-block h2{font:700 clamp(30px,4vw,44px)/1.15 Outfit;color:var(--navy);margin:4px 0 12px}.section-heading p{color:var(--muted)}.feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.feature-card,.day-card,.progress-card,.stat-card,.cta-card,.lesson-block,.quiz-card,.score-card{border:1px solid var(--line);background:#fff;border-radius:var(--radius);box-shadow:0 10px 28px rgba(11,68,99,.045)}.feature-card{padding:25px}.feature-icon{display:grid;place-items:center;width:43px;height:43px;border-radius:12px;background:#e9f8fe;color:var(--brand-dark);font-weight:800}.feature-card h3,.day-card h3,.progress-card h3{font:600 21px Outfit;color:var(--navy);margin:16px 0 8px}.feature-card p,.day-card p,.progress-card p{color:var(--muted);font-size:14px}.day-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.day-card{padding:28px}.day-card>span{font-size:12px;font-weight:700;color:var(--brand-dark);letter-spacing:.1em}.day-card a{font-weight:600}.split-cta{display:grid;grid-template-columns:1fr .7fr;gap:38px;align-items:center}.cta-card{padding:28px;border-top:4px solid var(--brand)}.cta-card strong{font:600 21px Outfit;color:var(--navy)}
.page-hero,.dashboard-head,.module-hero{padding:56px 0;background:#f4fafd;border-bottom:1px solid var(--line)}.page-hero h1,.dashboard-head h1,.module-hero h1{font-size:clamp(34px,5vw,55px);margin-bottom:12px}.page-hero p,.dashboard-head p,.module-hero p{max-width:850px;color:var(--muted);margin:0}.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:28px;max-width:800px}.stat-card{padding:18px}.stat-card strong{display:block;color:var(--navy);font:700 29px Outfit}.stat-card span{font-size:12px;color:var(--muted)}
.progress-days{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.progress-card{padding:25px}.progress-card-top{display:flex;justify-content:space-between;color:var(--brand-dark);font-size:12px;font-weight:700}.progress-bar,.mini-progress{height:8px;background:#eaf1f5;border-radius:999px;overflow:hidden}.progress-bar i,.mini-progress i{display:block;height:100%;background:var(--brand);border-radius:999px}.card-actions{display:flex;gap:9px;margin-top:17px;flex-wrap:wrap}
.module-list{display:grid;gap:12px}.module-row{display:grid;grid-template-columns:58px 1fr auto;gap:18px;align-items:center;border:1px solid var(--line);border-radius:15px;padding:20px;background:#fff;color:inherit;transition:.2s}.module-row:hover{border-color:#9edff7;box-shadow:var(--shadow);transform:translateY(-1px)}.module-num{width:48px;height:48px;background:#eaf8fd;border-radius:12px;display:grid;place-items:center;color:var(--brand-dark);font-weight:800}.module-row h3{font:600 19px Outfit;color:var(--navy);margin:0}.module-row p{font-size:13px;color:var(--muted);margin:5px 0}.module-row small{color:#7890a0}.module-status{font-size:12px;font-weight:600;color:var(--brand-dark);white-space:nowrap}.module-status.done{color:var(--green)}.day-end{text-align:center;margin-top:30px}
.module-hero .container{display:flex;justify-content:space-between;gap:35px;align-items:flex-end}.module-meta{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.module-meta span{background:#fff;border:1px solid var(--line);border-radius:999px;padding:7px 11px;font-size:11px;white-space:nowrap}.lesson-layout{display:grid;grid-template-columns:210px 1fr;gap:32px;align-items:start}.lesson-nav{position:sticky;top:95px;border:1px solid var(--line);border-radius:14px;padding:15px;background:#fff;display:grid;gap:5px}.lesson-nav strong{padding:6px 9px;color:var(--navy)}.lesson-nav a{padding:8px 9px;border-radius:8px;font-size:13px;color:#587082}.lesson-nav a:hover{background:#edf9fe;color:var(--brand-dark)}.lesson-main{display:grid;gap:20px}.lesson-block{padding:28px}.step-tag{font-size:11px;letter-spacing:.11em;font-weight:700;color:var(--brand-dark)}.lesson-block h2{font-size:29px}.learn-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.learn-chip{padding:12px;border-radius:10px;background:#f4f9fc;border:1px solid #e4eef4;font-size:13px}.explain-box,.safe-note,.challenge-box,.browser-lab-note{border-left:4px solid var(--brand);background:#f3fbfe;padding:17px 19px;border-radius:10px;margin-top:20px}.safe-note{border-left-color:var(--orange);background:#fff9ec}.challenge-box{border-left-color:var(--green);background:#f0fbf6}.practical-list{padding-left:22px}.practical-list li{margin:9px 0}.code-block{background:#071d2c;color:#d6ebf5;padding:22px;border-radius:14px;overflow:auto;font:13px/1.7 Consolas,monospace}.visualizer{min-height:280px;border:1px dashed #b8d9e8;background:linear-gradient(180deg,#fbfeff,#f1f9fd);border-radius:15px;padding:22px;display:grid;place-items:center;overflow:hidden}.visualizer-placeholder{color:var(--muted)}#progressMessage{margin-top:12px;color:var(--green);font-weight:600}
.auth-section{padding:70px 20px;min-height:70vh;background:#f5fafc}.auth-card{max-width:510px;margin:auto;background:#fff;border:1px solid var(--line);border-radius:20px;padding:36px;box-shadow:var(--shadow)}.auth-card h1{font:700 36px Outfit;color:var(--navy);margin:5px 0 8px}.auth-card>p{color:var(--muted)}.form-stack{display:grid;gap:14px;margin-top:24px}.form-stack label{font-size:13px;font-weight:600;color:#486172}.form-stack input,.form-stack select{width:100%;margin-top:6px;border:1px solid #cddde6;border-radius:10px;padding:12px 13px;outline:none}.form-stack input:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(0,173,238,.1)}.auth-foot{text-align:center;font-size:13px}.alert{padding:12px 15px;border-radius:10px;margin:15px 0}.alert.error{background:#fff1f1;color:#9d2f2f;border:1px solid #f4c4c4}.alert.success{background:#effbf5;color:#13764e;border:1px solid #bdebd5}
.quiz-form{display:grid;gap:16px}.quiz-card{padding:24px}.quiz-card>span{font-size:11px;color:var(--brand-dark);font-weight:700}.quiz-card h3{font:600 19px Outfit;color:var(--navy)}.quiz-option{display:block;margin:9px 0;cursor:pointer}.quiz-option input{display:none}.quiz-option span{display:flex;gap:10px;border:1px solid var(--line);padding:11px 13px;border-radius:10px;font-size:13px}.quiz-option input:checked+span{border-color:var(--brand);background:#edf9fe}.quiz-option b{color:var(--brand-dark)}.score-card{text-align:center;padding:45px}.score-card>span{display:block;color:var(--muted)}.score-card>strong{font:800 70px Outfit;color:var(--brand)}
.code-lab-section{padding-top:28px}.lab-wrap{border:1px solid var(--line);border-radius:18px;overflow:hidden;background:#fff;box-shadow:var(--shadow)}.lab-toolbar{display:flex;justify-content:space-between;gap:15px;align-items:end;padding:14px 16px;border-bottom:1px solid var(--line);background:#f9fcfe}.lab-toolbar label{font-size:11px;color:var(--muted);font-weight:600}.lab-toolbar select{display:block;margin-top:4px;border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:#fff;color:var(--navy)}.lab-actions{display:flex;gap:8px}.code-lab-grid{display:grid;grid-template-columns:1fr 1fr;min-height:510px}.editor-pane,.output-pane{min-width:0}.editor-pane{border-right:1px solid #18394b;background:#082234}.output-pane{background:#061925}.pane-title{height:43px;padding:11px 14px;background:#0c2b3e;color:#9ec1d3;font:12px Consolas,monospace;display:flex;justify-content:space-between}.pane-title span{color:#69cfee}#codeEditor{width:100%;height:467px;resize:none;border:0;outline:0;background:#082234;color:#e4f2f8;padding:18px;font:14px/1.65 Consolas,monospace;tab-size:4}#codeOutput{margin:0;min-height:330px;color:#d8edf6;padding:18px;white-space:pre-wrap;font:14px/1.65 Consolas,monospace}.concept-note{margin:0 18px 18px;background:#0e3044;border:1px solid #19475f;color:#a9c8d8;padding:14px;border-radius:10px;font-size:12px}.browser-lab-note{margin:16px}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:15px}.data-table{width:100%;border-collapse:collapse;background:#fff}.data-table th,.data-table td{text-align:left;padding:14px 15px;border-bottom:1px solid var(--line);font-size:13px}.data-table th{background:#f5fafc;color:#526d7d;font-size:11px;text-transform:uppercase;letter-spacing:.06em}.mini-progress{min-width:90px;height:6px;margin-bottom:4px}
/* visualizer components */
.viz-flow{width:100%;display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap}.viz-node{min-width:120px;padding:18px 15px;background:#fff;border:2px solid #b9ddea;border-radius:14px;text-align:center;color:var(--navy);font-weight:600;position:relative}.viz-node.active{border-color:var(--brand);box-shadow:0 0 0 5px rgba(0,173,238,.1)}.viz-arrow{color:var(--brand);font-size:26px;font-weight:700}.viz-controls{width:100%;text-align:center;margin-top:20px}.viz-panel{width:100%;max-width:720px}.port-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}.port-box{background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px;text-align:center;font-size:12px}.port-box.open{border-color:#8cdec0;background:#f0fbf6}.port-box.closed{opacity:.72}.hash-demo{width:100%;max-width:700px}.hash-demo input{width:100%;padding:12px;border:1px solid var(--line);border-radius:10px}.hash-value{word-break:break-all;margin-top:10px;padding:14px;background:#071d2c;color:#8fe5ff;border-radius:10px;font:12px Consolas}.cia-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;width:100%}.cia-box{padding:22px;background:#fff;border:1px solid var(--line);border-radius:14px;text-align:center}.cia-box b{display:block;color:var(--brand-dark);font:700 22px Outfit}.incident-list{width:100%;max-width:720px;display:grid;gap:8px}.incident-event{display:grid;grid-template-columns:75px 1fr;gap:10px;padding:11px;background:#fff;border:1px solid var(--line);border-radius:10px}.incident-event.alerting{border-left:4px solid var(--red)}
.site-footer{background:#071d2c;color:#a7c1ce;padding:48px 0 20px}.footer-grid{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:30px}.footer-brand{color:#fff}.site-footer p{font-size:12px}.footer-bottom{border-top:1px solid #153b50;margin-top:28px;padding-top:18px;font-size:11px}
@media(max-width:900px){.main-nav{display:none;position:absolute;left:20px;right:20px;top:68px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:15px;box-shadow:var(--shadow);flex-direction:column;align-items:stretch}.main-nav.open{display:flex}.nav-toggle{display:block}.hero-grid,.split-cta,.lesson-layout,.code-lab-grid{grid-template-columns:1fr}.feature-grid{grid-template-columns:repeat(2,1fr)}.lesson-nav{position:static;display:flex;overflow:auto}.module-hero .container{display:block}.module-meta{justify-content:flex-start;margin-top:18px}.editor-pane{border-right:0;border-bottom:1px solid #18394b}.progress-days{grid-template-columns:1fr}}
@media(max-width:640px){.container{width:min(100% - 24px,1180px)}.section{padding:55px 0}.hero{padding:58px 0}.hero h1{font-size:43px}.feature-grid,.day-grid,.stat-grid,.learn-grid,.cia-grid{grid-template-columns:1fr}.module-row{grid-template-columns:48px 1fr}.module-status{grid-column:2}.footer-grid{grid-template-columns:1fr}.lab-toolbar{align-items:stretch;flex-direction:column}.lab-actions{flex-wrap:wrap}.port-grid{grid-template-columns:repeat(2,1fr)}}

/* ===== CyberForge Stage 2 interactive labs ===== */
.stage2-hero{background:linear-gradient(180deg,#f5fcff 0%,#fff 100%);border-bottom:1px solid #d9eef7}.hero-pills{display:flex;gap:10px;flex-wrap:wrap;margin-top:24px}.hero-pills span,.lab-tags span,.lab-concepts span{border:1px solid #ccebf7;background:#fff;color:#22536a;border-radius:999px;padding:7px 11px;font-size:12px;font-weight:600}.lab-card-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}.lab-card{border:1px solid #dceaf0;background:#fff;border-radius:20px;padding:22px;display:flex;flex-direction:column;min-height:350px;box-shadow:0 12px 35px rgba(15,55,75,.06)}.lab-card-head{display:flex;align-items:center;justify-content:space-between}.lab-icon{width:48px;height:48px;display:grid;place-items:center;border-radius:14px;background:#e9f9ff;color:#007fae;font-size:12px;font-weight:800}.day-badge{font-size:11px;font-weight:700;letter-spacing:.08em;color:#56727f}.lab-card h3{margin:18px 0 8px;font-size:21px}.lab-card p{color:#5b7380;line-height:1.65}.lab-tags{display:flex;gap:7px;flex-wrap:wrap;margin:8px 0 18px}.lab-tags span{padding:5px 8px;font-size:11px}.lab-card-bottom{margin-top:auto;display:flex;justify-content:space-between;gap:12px;align-items:center;color:#6d818b}.lab-status{font-size:12px}.lab-status.completed{color:#16824b}.lab-open{margin-top:15px;text-align:center}.stage2-note{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center}.stage-flow{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap}.stage-flow span{background:#fff;border:1px solid #cae9f5;padding:12px 14px;border-radius:12px;font-weight:700}.stage-flow b{color:#00adee}.lab-detail-layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:28px}.lab-side{position:sticky;top:92px;height:max-content}.lab-concepts{margin-top:22px;padding-top:18px;border-top:1px solid #e1ebef}.lab-concepts b{display:block;margin-bottom:10px}.lab-concepts span{display:block;border-radius:9px;margin:6px 0;padding:7px 9px}.stage2-lab{min-height:420px}.lab-control-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}.lab-panel{border:1px solid #d9e8ee;background:#fbfdfe;border-radius:16px;padding:18px}.lab-panel label{display:block;color:#38515d;font-weight:600;font-size:13px;margin:13px 0}.lab-panel input,.lab-panel select{width:100%;margin-top:7px;padding:11px 12px;border:1px solid #cddde5;border-radius:10px;background:#fff;color:#183d4e}.lab-action-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.mini-note{margin-top:14px;font-size:13px;color:#657b86;background:#edf8fc;padding:11px;border-radius:10px}.kv-list{display:grid;gap:8px}.kv-list>div{display:flex;justify-content:space-between;gap:20px;padding:10px 0;border-bottom:1px solid #e7eef2}.kv-list span{color:#69808b}.kv-list b{text-align:right;color:#183d4e}.network-canvas{padding:30px}.network-path{display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap}.network-path>i{font-style:normal;color:#8fa8b2;font-size:28px}.net-node{min-width:140px;padding:18px;text-align:center;border-radius:16px;border:2px solid #cfe5ee;background:#fff;transition:.25s}.net-node b,.net-node span{display:block}.net-node span{font-size:12px;color:#718891;margin-top:5px}.net-node.active{transform:translateY(-5px);border-color:#00adee;box-shadow:0 0 0 5px rgba(0,173,238,.08)}.net-node.success{background:#f0fbff;border-color:#00adee}.lab-log{max-height:200px;overflow:auto}.lab-log-row{display:grid;grid-template-columns:90px 1fr;gap:10px;padding:9px 0;border-bottom:1px solid #e7eef2}.lab-log-row span{font-size:12px;color:#738993}.lab-log-row.good b{color:#16824b}.lab-log-row.warn b{color:#a86a00}.packet-layout{display:grid;grid-template-columns:310px minmax(0,1fr);gap:18px}.packet-list{padding:0;overflow:hidden}.packet-list .pane-title{padding:18px}.packet-row{display:grid;grid-template-columns:42px 1fr;gap:10px;width:100%;text-align:left;border:0;border-top:1px solid #e3edf1;background:#fff;padding:14px;cursor:pointer;color:#2b4c5b}.packet-row:hover,.packet-row.active{background:#eefaff}.packet-layer{border:1px solid #dce9ee;border-radius:12px;margin-bottom:10px;overflow:hidden}.packet-layer>strong{display:block;padding:10px 13px;background:#eaf9ff;color:#087aa4}.packet-layer .kv-list{padding:0 13px}.question-box{margin-top:18px;border-left:4px solid #00adee;background:#f0faff;padding:16px;border-radius:12px}.question-box label{display:block;font-weight:600}.question-box select{width:100%;max-width:520px;display:block;margin:10px 0;padding:10px;border:1px solid #cddde5;border-radius:9px;background:#fff}.terminal-output{margin:0;min-height:200px;background:#0c2532;color:#daf6ff;padding:18px;border-radius:12px;overflow:auto;white-space:pre-wrap}.hash-line{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;word-break:break-all;background:#102b39;color:#dff8ff;padding:11px;border-radius:9px;font-size:12px}.check-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.check-item{padding:10px;border-radius:10px;border:1px solid #dce8ed}.check-item span{font-weight:900;margin-right:8px}.check-item.pass{background:#effaf4;color:#167648;border-color:#bfe8d1}.check-item.fail{background:#fff6f6;color:#aa3d3d;border-color:#f1cccc}.strength-meter{height:10px;background:#e5edf1;border-radius:99px;overflow:hidden;margin-top:15px}.strength-meter i{display:block;height:100%;background:#00adee;transition:.2s}.firewall-rules{display:grid;gap:8px}.fw-rule{display:flex;align-items:center;justify-content:space-between;border:1px solid #dae7ec;background:#fff;border-radius:10px;padding:9px 11px}.rule-toggle{border:0;padding:7px 12px;border-radius:999px;font-weight:700;cursor:pointer}.rule-toggle.allow{background:#e6f8ef;color:#18794e}.rule-toggle.block{background:#fff0f0;color:#aa3838}.fw-flow{display:flex;align-items:center;justify-content:center;gap:12px;padding:35px 5px}.fw-flow>div{border:1px solid #d5e5eb;background:#fff;border-radius:14px;padding:18px;text-align:center;min-width:110px}.fw-flow i{font-style:normal;font-size:25px}.firewall-box.allow{border-color:#55c68b;background:#ecfbf3}.firewall-box.block{border-color:#e07b7b;background:#fff1f1}.decision-banner{padding:14px;border-radius:11px;background:#edf4f7;color:#36525f;font-weight:600}.decision-banner.good{background:#eaf9f1;color:#176d46}.decision-banner.bad{background:#fff0f0;color:#9d3535}.session-card{display:grid;gap:7px}.session-card>div{display:flex;justify-content:space-between;border-bottom:1px solid #e4edf1;padding:10px 0}.access-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:16px}.access-actions button,.ir-choices button{border:1px solid #cce0e8;background:#fff;border-radius:10px;padding:12px;cursor:pointer;font-weight:600;color:#294b5a}.access-actions button:hover,.ir-choices button:hover{border-color:#00adee;background:#effbff}.soc-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}.soc-summary>div{border:1px solid #d8e7ed;background:#fff;border-radius:14px;padding:16px}.soc-summary strong,.soc-summary span{display:block}.soc-summary strong{font-size:28px;color:#007fae}.soc-summary span{font-size:12px;color:#6c838e}.soc-stream{min-height:320px;max-height:360px;overflow:auto;background:#0e2733;border-radius:12px;padding:10px}.soc-event{display:grid;grid-template-columns:75px 135px 1fr 70px;gap:8px;align-items:center;color:#d7edf5;padding:10px;border-bottom:1px solid rgba(255,255,255,.08);font-size:12px}.soc-event em{font-style:normal;color:#b6d2dc}.soc-event i{font-style:normal;text-align:right;font-weight:800}.soc-event.high i{color:#ffbf5c}.soc-event.critical i{color:#ff7979}.incident-summary{padding:15px;background:#edf8fc;border-radius:11px;margin-bottom:14px}.ir-choices{display:grid;grid-template-columns:1fr 1fr;gap:8px}.ir-choices button:disabled{opacity:.35}.ir-sequence{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:15px 0}.ir-sequence span{padding:8px 10px;border:1px solid #cce3ec;border-radius:9px;background:#fff;font-size:12px}.ir-sequence i{font-style:normal;color:#00adee}.observation-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.observation-grid>div{border:1px solid #dbe8ed;background:#fff;border-radius:14px;padding:16px}.lab-score-box{margin-top:12px;font-size:18px}.lab-score-box strong{color:#007fae;font-size:26px}.save-message{margin:10px 0;color:#31708a}
@media(max-width:1100px){.lab-card-grid{grid-template-columns:repeat(2,1fr)}.lab-detail-layout{grid-template-columns:1fr}.lab-side{position:static;display:flex;gap:10px;flex-wrap:wrap}.lab-side strong,.lab-concepts{width:100%}}
@media(max-width:760px){.lab-card-grid,.stage2-note,.lab-control-grid,.packet-layout,.observation-grid{grid-template-columns:1fr}.soc-summary{grid-template-columns:1fr 1fr}.soc-event{grid-template-columns:60px 1fr}.soc-event em,.soc-event i{grid-column:2}.network-path{flex-direction:column}.network-path>i{transform:rotate(90deg)}.access-actions,.ir-choices,.check-grid{grid-template-columns:1fr}}
.stage2-module-cta{margin-top:18px;border:1px solid #bfe6f5;background:#f0fbff;border-radius:16px;padding:16px;display:flex;justify-content:space-between;gap:20px;align-items:center}.stage2-module-cta p{margin:4px 0 0;color:#587580}.stage2-module-cta .btn{white-space:nowrap}@media(max-width:700px){.stage2-module-cta{align-items:flex-start;flex-direction:column}}
.stage2-stats{grid-template-columns:repeat(4,1fr)}.two-cta-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.two-cta-grid .cta-card{height:100%}.two-cta-grid .cta-card strong{display:block;font-size:23px;margin:7px 0}@media(max-width:800px){.stage2-stats,.two-cta-grid{grid-template-columns:1fr 1fr}}@media(max-width:520px){.stage2-stats,.two-cta-grid{grid-template-columns:1fr}}

/* ===== CyberForge Stage 3 isolated cyber range ===== */
.range-hero{background:linear-gradient(180deg,#f2fbff 0%,#fff 100%);border-bottom:1px solid #d7edf6}.range-status-banner{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 20px;border-radius:16px;border:1px solid #cce5ef;background:#f7fcfe;margin-bottom:34px}.range-status-banner.ready{border-left:4px solid #16a36a}.range-status-banner.setup{border-left:4px solid #f59e0b}.range-status-banner p{margin:4px 0 0;color:#607782}.range-card-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}.range-card{border:1px solid #dceaf0;background:#fff;border-radius:20px;padding:22px;display:flex;flex-direction:column;min-height:375px;box-shadow:0 12px 35px rgba(15,55,75,.06)}.range-card h3{margin:18px 0 8px;font-size:21px}.range-card p{color:#5b7380}.range-card .btn{margin-top:16px}.range-layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:28px}.range-side{position:sticky;top:92px;height:max-content}.range-progress-mini{margin-top:18px;border-top:1px solid #e0ebef;padding-top:14px}.range-progress-mini small,.range-progress-mini strong{display:block}.range-progress-mini strong{font-size:26px;color:#007fae}.range-scope-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:18px}.range-scope-grid>div{padding:15px;border:1px solid #dbe8ed;border-radius:13px;background:#fbfdfe}.range-scope-grid b,.range-scope-grid span{display:block}.range-scope-grid span{font-size:12px;color:#6b818c;margin-top:5px}.range-session-bar{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:18px;border:1px solid #d8e7ed;border-radius:15px;background:#fbfdfe}.range-session-bar>div:first-child{display:flex;align-items:center;gap:12px}.range-session-bar strong,.range-session-bar small{display:block}.range-session-bar small{color:#6d838e}.range-session-actions{display:flex;gap:9px;flex-wrap:wrap}.range-dot{width:14px;height:14px;border-radius:50%;background:#9aaeb7;box-shadow:0 0 0 5px rgba(154,174,183,.14)}.range-dot.online{background:#16a36a;box-shadow:0 0 0 5px rgba(22,163,106,.14)}.range-dot.busy{background:#f59e0b;box-shadow:0 0 0 5px rgba(245,158,11,.14)}.range-command-grid{display:grid;grid-template-columns:330px minmax(0,1fr);gap:18px}.range-actions{display:grid;gap:10px;align-content:start}.range-command-card{width:100%;text-align:left;border:1px solid #d7e7ed;border-radius:13px;background:#fff;padding:14px;cursor:pointer;color:#294b5a}.range-command-card:hover,.range-command-card.selected{border-color:#00adee;background:#f0fbff}.range-command-card span,.range-command-card code,.range-command-card small{display:block}.range-command-card span{font-weight:700;margin-bottom:5px}.range-command-card code{color:#007fae;word-break:break-word;font-size:12px}.range-command-card small{color:#70858f;margin-top:8px;line-height:1.5}.range-command-card:disabled{opacity:.48;cursor:not-allowed}.range-terminal-wrap{border-radius:16px;background:#0a2432;overflow:hidden;box-shadow:0 16px 40px rgba(5,31,45,.16)}.terminal-title{height:42px;display:flex;align-items:center;gap:7px;padding:0 14px;border-bottom:1px solid rgba(255,255,255,.09);color:#b9d5df}.terminal-title span{width:10px;height:10px;border-radius:50%;background:#4d6975}.terminal-title b{margin-left:6px;font-size:12px}.range-prompt{display:flex;align-items:center;gap:9px;padding:13px 16px;border-bottom:1px solid rgba(255,255,255,.08);color:#63d3fb}.range-prompt input{flex:1;background:transparent;border:0;outline:0;color:#d9f5ff;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.range-terminal{margin:0;min-height:350px;max-height:520px;overflow:auto;padding:18px;color:#d8f4ff;background:#0a2432;white-space:pre-wrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;line-height:1.65}.range-terminal-bottom{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 16px;border-top:1px solid rgba(255,255,255,.08)}.range-terminal-bottom span{color:#9eb9c4;font-size:12px}.range-run-progress{margin-top:18px;display:grid;grid-template-columns:150px 1fr auto;align-items:center;gap:12px}.range-run-progress span{font-weight:600}.range-run-progress strong{color:#007fae}.range-challenge-form{display:grid;gap:14px;max-width:720px}.range-challenge-form label{font-weight:600;color:#36515e}.range-challenge-form input{display:block;width:100%;margin-top:7px;padding:12px;border:1px solid #cfdfe6;border-radius:10px;outline:0}.range-challenge-form input:focus{border-color:#00adee;box-shadow:0 0 0 3px rgba(0,173,238,.08)}.range-challenge-form input.answer-ok{border-color:#52bb82;background:#f2fbf6}.range-challenge-form input.answer-bad{border-color:#df8787;background:#fff6f6}.health-card{border:1px solid #dce8ed;border-radius:16px;background:#fff;padding:20px}.health-row{display:flex;justify-content:space-between;gap:20px;padding:13px 0;border-bottom:1px solid #e8eff2}.health-row code{word-break:break-all}.health-ok{color:#16824b}.health-bad{color:#b33e3e}.stage3-dashboard-cta{border:1px solid #bfe6f5;background:linear-gradient(135deg,#f0fbff,#fff);border-radius:18px;padding:24px}.stage3-dashboard-cta h3{margin:4px 0 8px}.stage3-dashboard-cta p{color:#5c7480}.range-badge{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:999px;background:#eaf9ff;color:#007fae;font-size:11px;font-weight:700}
@media(max-width:1100px){.range-card-grid{grid-template-columns:repeat(2,1fr)}.range-layout{grid-template-columns:1fr}.range-side{position:static;display:flex;gap:10px;flex-wrap:wrap}.range-command-grid{grid-template-columns:1fr}.range-scope-grid{grid-template-columns:1fr 1fr}}
@media(max-width:700px){.range-card-grid,.range-scope-grid{grid-template-columns:1fr}.range-session-bar,.range-terminal-bottom{align-items:flex-start;flex-direction:column}.range-run-progress{grid-template-columns:1fr}.range-session-actions{width:100%}.range-session-actions .btn{flex:1}.health-row{flex-direction:column;gap:5px}}

/* ===== Stage 3 Local Lab Edition additions ===== */
.local-setup-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:0 0 26px}.local-setup-grid article{border:1px solid #dce8ef;border-radius:16px;padding:18px;background:#fff}.local-setup-grid article>span{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:#eaf9ff;color:#007fae;font-weight:800}.local-setup-grid h3{margin:12px 0 6px;color:#08243a}.local-setup-grid p{margin:0;color:#647789;font-size:14px}.local-runner-strip{display:flex;align-items:center;justify-content:space-between;gap:20px;border:1px solid #bfe6f5;background:#f0fbff;border-radius:16px;padding:20px;margin-bottom:42px}.local-runner-strip h3{margin:0 0 5px}.local-runner-strip p{margin:0;color:#587580}.local-lab-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:16px 0 20px}.local-lab-steps>div{border:1px solid #dce8ef;background:#fbfdfe;border-radius:13px;padding:14px}.local-lab-steps b{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:#00adee;color:#fff;margin-bottom:9px}.local-lab-steps p{margin:0;font-size:13px;color:#5b7380}.range-paste-wrap{padding:15px 16px;border-top:1px solid rgba(255,255,255,.08)}.range-paste-wrap label{display:block;color:#c7e3ed;font-size:12px;font-weight:700;margin-bottom:7px}.range-paste-wrap textarea{width:100%;resize:vertical;min-height:150px;border:1px solid #24485a;border-radius:10px;background:#061b28;color:#d8f4ff;padding:12px;outline:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.55}.range-paste-wrap textarea:focus{border-color:#00adee}.trainer-setup-list{margin:24px 0;border:1px solid #dce8ef;border-radius:16px;padding:20px;background:#fff}.trainer-setup-list ol{padding-left:22px}.trainer-setup-list li{margin:10px 0}.trainer-setup-list code{background:#f4f9fc;padding:3px 6px;border-radius:6px}
@media(max-width:900px){.local-setup-grid,.local-lab-steps{grid-template-columns:1fr 1fr}}@media(max-width:600px){.local-setup-grid,.local-lab-steps{grid-template-columns:1fr}.local-runner-strip{align-items:flex-start;flex-direction:column}}
