.buildlesson{position:absolute;inset:0;overflow-y:auto;padding:60px 14px 18px}.buildlesson .brief{background:var(--color-surface);border:1px solid var(--color-border);border-left:2px solid var(--color-accent);border-radius:12px;padding:12px 14px;margin-bottom:12px}.buildlesson .brief .bl{font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--color-accent);margin-bottom:5px}.buildlesson .brief p{margin:0;font-size:13.5px;color:var(--color-ink);line-height:1.4}.buildlesson .buildq{font-size:13px;font-weight:700;margin:2px 2px 10px;color:var(--color-muted)}.buildlesson .buildcanvas{position:relative;width:100%;max-width:420px;margin:0 auto 12px;aspect-ratio:16 / 9;max-height:240px;border:1px solid var(--color-border);border-radius:12px;background:var(--color-ground);overflow:hidden}.buildlesson .buildcanvas .buildcanvas-cv{position:absolute;inset:0;width:100%;height:100%;display:block}.buildlesson .buildcanvas .archfilm{position:absolute;inset:0}.buildlesson .buildcanvas .archfilm scenecast-hero{position:absolute;inset:0;display:block;width:100%;height:100%}.buildlesson .buildcanvas .buildcap{position:absolute;top:8px;left:10px;z-index:2;margin:0;font-family:var(--font-mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--color-accent);pointer-events:none}.buildlesson .palette{display:grid;grid-template-columns:1fr 1fr;gap:8px}.buildlesson .comp{display:flex;flex-direction:column;gap:3px;text-align:left;padding:10px 11px;border-radius:11px;background:var(--color-raise);border:1px solid var(--color-border);cursor:pointer;transition:border-color .14s,background .14s;position:relative;color:var(--color-ink);font:inherit}.buildlesson .comp:hover{border-color:var(--color-muted)}.buildlesson .comp.sel{border-color:var(--color-accent);background:#2ee6c814}.buildlesson .comp .cn{font-size:13px;font-weight:700;color:var(--color-ink)}.buildlesson .comp .ck{font-size:16px}.buildlesson .comp .price{font-family:var(--font-mono);font-size:10px;color:var(--color-faint)}.buildlesson .comp .tick{position:absolute;top:8px;right:9px;font-size:12px;color:var(--color-accent);opacity:0;transition:opacity .12s}.buildlesson .comp.sel .tick{opacity:1}.buildlesson .comp.ok{border-color:var(--color-ok)}.buildlesson .comp.ok .tick{color:var(--color-ok);opacity:1}.buildlesson .comp.soon{border-color:var(--color-warn)}.buildlesson .comp.miss{border-color:var(--color-bad)}.buildlesson .comp .fb{font-size:10.5px;line-height:1.3;margin-top:2px;display:none}.buildlesson .comp.show-fb .fb{display:block}.buildlesson .comp.ok .fb{color:#bff2dd}.buildlesson .comp.soon .fb{color:#ffe1a8}.buildlesson .comp.miss .fb{color:#ffd7dc}.buildlesson .buildbtn{width:100%;margin-top:12px;padding:12px;border-radius:12px;background:var(--color-accent);color:var(--color-accent-ink);font:inherit;font-weight:800;border:0;cursor:pointer}.buildlesson .buildbtn.secondary{background:transparent;color:var(--color-ink);border:1px solid var(--color-border)}.buildlesson .verdict{margin-top:12px;padding:12px 14px;border-radius:12px;font-size:13px;line-height:1.4}.buildlesson .verdict.win{background:#34d3991a;border:1px solid rgba(52,211,153,.4);color:#bff2dd}.buildlesson .verdict.retry{background:#fbbf241a;border:1px solid rgba(251,191,36,.4);color:#ffe1a8}.buildlesson .verdict b{color:var(--color-ink)}.buildlesson .builtdiag{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:10px;font-family:var(--font-mono);font-size:11px}.buildlesson .builtdiag .bn{background:var(--color-ground);border:1px solid var(--color-ok);border-radius:7px;padding:4px 9px;color:#bff2dd}.buildlesson .builtdiag .ar{color:var(--color-faint)}.decisionlesson{position:absolute;inset:0;overflow-y:auto;padding:60px 14px 22px;max-width:760px;margin:0 auto}.decisionlesson .scenario{background:var(--color-surface);border:1px solid var(--color-border);border-left:2px solid var(--color-accent);border-radius:12px;padding:14px 16px;margin-bottom:14px}.decisionlesson .scenario .bl{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--color-accent);margin-bottom:6px}.decisionlesson .scenario p{margin:0;font-size:17px;font-weight:700;line-height:1.35;color:var(--color-ink)}.decisionlesson .decisioncanvas{position:relative;width:100%;max-width:560px;margin:0 auto 14px;aspect-ratio:16 / 9;max-height:300px;border:1px solid var(--color-border);border-radius:12px;background:var(--color-ground);overflow:hidden}.decisionlesson .decisioncanvas .stagewrap{position:absolute;inset:0}.decisionlesson .decisioncanvas scenecast-hero{position:absolute;inset:0;display:block;width:100%;height:100%}.decisionlesson .decisionq{font-size:13px;font-weight:700;margin:2px 2px 10px;color:var(--color-ink)}.decisionlesson .decisionq .hint{font-weight:500;color:var(--color-muted)}.decisionlesson .options{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}.decisionlesson .decopt{text-align:left;padding:14px;border-radius:12px;background:var(--color-raise);border:1px solid var(--color-border);cursor:pointer;transition:border-color .14s,background .14s;color:var(--color-ink);font:inherit}.decisionlesson .decopt:hover{border-color:var(--color-accent)}.decisionlesson .decopt.picked{border-color:var(--color-accent);background:#2ee6c81a}.decisionlesson .decopt .ol{font-size:14px;font-weight:700}.decisionlesson .decisionverdict{margin-top:16px}.decisionlesson .dtable{display:flex;flex-direction:column;gap:6px}.decisionlesson .drow{display:grid;grid-template-columns:1fr auto;grid-template-areas:"name cost" "bars cost";align-items:center;gap:2px 12px;padding:10px 12px;border-radius:10px;background:var(--color-surface);border:1px solid var(--color-border)}.decisionlesson .drow .rn{grid-area:name;font-size:13.5px;font-weight:700;color:var(--color-ink);display:flex;align-items:center;gap:8px;flex-wrap:wrap}.decisionlesson .drow .rb{grid-area:bars;font-family:var(--font-mono);font-size:11px;color:var(--color-muted)}.decisionlesson .drow .rb b{color:var(--color-ink);font-weight:700}.decisionlesson .drow .rb i{font-style:normal;color:var(--color-accent)}.decisionlesson .drow .rc{grid-area:cost;font-family:var(--font-mono);font-size:12px;color:var(--color-muted);white-space:nowrap;text-align:right}.decisionlesson .drow.best{border-color:var(--color-ok)}.decisionlesson .drow.picked{border-color:var(--color-accent);background:#2ee6c814}.decisionlesson .drow .tag{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;padding:2px 7px;border-radius:999px;border:1px solid var(--color-ok);color:#bff2dd}.decisionlesson .drow .tag.you{border-color:var(--color-accent);color:var(--color-accent)}.decisionlesson .dteach{margin:14px 2px 4px;font-size:14px;line-height:1.45;color:var(--color-ink);background:#fbbf2414;border:1px solid rgba(251,191,36,.35);border-radius:12px;padding:12px 14px}.decisionlesson .dteach b{color:var(--color-ink)}.decisionlesson .dactions{display:flex;gap:10px;margin-top:12px}.decisionlesson .buildbtn{flex:1;padding:12px;border-radius:12px;background:var(--color-accent);color:var(--color-accent-ink);font:inherit;font-weight:800;border:0;cursor:pointer}.decisionlesson .buildbtn.secondary{background:transparent;color:var(--color-ink);border:1px solid var(--color-border)}.construirlesson{position:absolute;inset:0;overflow-y:auto;padding:60px 14px 22px;max-width:760px;margin:0 auto}.construirlesson .scenario{background:var(--color-surface);border:1px solid var(--color-border);border-left:2px solid var(--color-accent);border-radius:12px;padding:14px 16px;margin-bottom:14px}.construirlesson .scenario .bl{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--color-accent);margin-bottom:6px}.construirlesson .scenario p{margin:0;font-size:16px;font-weight:700;line-height:1.35;color:var(--color-ink)}.construirlesson .construircanvas{position:relative;width:100%;max-width:560px;margin:0 auto 12px;aspect-ratio:16 / 9;max-height:300px;border:1px solid var(--color-border);border-radius:12px;background:var(--color-ground);overflow:hidden}.construirlesson .construircanvas .stagewrap{position:absolute;inset:0}.construirlesson .construircanvas scenecast-hero{position:absolute;inset:0;display:block;width:100%;height:100%}.construirlesson .construirq{font-size:12.5px;font-weight:500;margin:2px 2px 12px;color:var(--color-muted)}.construirlesson .conwrap{display:grid;grid-template-columns:1fr 1.2fr;gap:12px;align-items:start}@media(max-width:560px){.construirlesson .conwrap{grid-template-columns:1fr}}.construirlesson .bl2{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--color-muted);margin-bottom:7px}.construirlesson .conpalette{display:flex;flex-direction:column;gap:8px}.construirlesson .conitem{display:flex;align-items:center;gap:9px;text-align:left;padding:11px 12px;border-radius:11px;background:var(--color-raise);border:1px solid var(--color-border);cursor:grab;transition:border-color .14s,background .14s;color:var(--color-ink);font:inherit}.construirlesson .conitem:hover{border-color:var(--color-muted)}.construirlesson .conitem.sel{border-color:var(--color-accent);background:#2ee6c81a}.construirlesson .conitem .ck{font-size:18px}.construirlesson .conitem .cn{font-size:13.5px;font-weight:700}.construirlesson .conempty{margin:0;font-size:12.5px;color:var(--color-ok);font-weight:600}.construirlesson .conzones{display:flex;flex-direction:column;gap:8px}.construirlesson .conzone{display:flex;flex-direction:column;gap:6px;text-align:left;padding:10px 12px;border-radius:11px;background:var(--color-surface);border:1px dashed var(--color-border);cursor:pointer;transition:border-color .14s,background .14s;color:var(--color-ink);font:inherit;min-height:58px}.construirlesson .conzone:hover{border-color:var(--color-accent)}.construirlesson .conzone .zl{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--color-muted)}.construirlesson .conzone .zslot{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.construirlesson .conzone .zhint{font-size:11.5px;color:var(--color-faint)}.construirlesson .conchip{display:inline-flex;align-items:center;gap:6px;padding:4px 9px;border-radius:8px;background:var(--color-ground);border:1px solid var(--color-ok);color:#bff2dd;font-size:12px;font-weight:700}.construirlesson .conchip .ck{font-size:14px}.construirlesson .confeedback{min-height:16px;margin:10px 2px 0;font-size:12.5px;color:var(--color-warn);font-weight:600}.construirlesson .confeedback:empty{display:none}.construirlesson .converdict{margin-top:12px;padding:13px 15px;border-radius:12px;font-size:13px;line-height:1.45}.construirlesson .converdict.win{background:#34d3991a;border:1px solid rgba(52,211,153,.4);color:#bff2dd}.construirlesson .converdict.retry{background:#fbbf241a;border:1px solid rgba(251,191,36,.4);color:#ffe1a8}.construirlesson .converdict.pending{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-muted)}.construirlesson .converdict .ctitle{margin:0 0 6px;font-size:14.5px;font-weight:800;color:var(--color-ink)}.construirlesson .converdict .cbody{margin:0 0 8px;color:var(--color-muted)}.construirlesson .converdict .creqs{margin:4px 0 8px;padding-left:18px}.construirlesson .converdict .creqs li{margin:2px 0}.construirlesson .converdict .cbound{margin:6px 0 8px;font-weight:700;color:var(--color-ink)}.construirlesson .converdict .cstanding{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0 10px}.construirlesson .converdict .cchip{font-family:var(--font-mono);font-size:11px;padding:4px 9px;border-radius:999px;border:1px solid var(--color-border);background:var(--color-ground);color:var(--color-muted)}.construirlesson .converdict .cchip b{color:var(--color-ink)}.construirlesson .converdict .buildbtn{width:100%;margin-top:4px;padding:12px;border-radius:12px;background:var(--color-accent);color:var(--color-accent-ink);font:inherit;font-weight:800;border:0;cursor:pointer}.campaign{position:fixed;inset:0;background:#000;color:var(--color-ink);overflow:hidden}.campaign .cmp-top{position:absolute;top:0;left:0;right:0;z-index:30;display:flex;align-items:center;gap:12px;padding:12px 16px;background:linear-gradient(var(--color-ground),transparent)}.campaign .cmp-x{color:var(--color-muted);font-size:18px;line-height:1;text-decoration:none}.campaign .cmp-x:hover{color:var(--color-ink)}.campaign .cmp-bar{flex:1;height:6px;border-radius:999px;background:#ffffff1f;overflow:hidden}.campaign .cmp-bar i{display:block;height:100%;width:0%;background:var(--color-accent);border-radius:999px;transition:width .5s cubic-bezier(.4,0,.2,1)}.campaign .cmp-count{font-family:var(--font-mono);font-size:11px;color:var(--color-muted);white-space:nowrap}.campaign .cmp-stage{position:absolute;inset:0;overflow:hidden}.campaign .levelmap{position:absolute;inset:0;overflow-y:auto;padding:60px 16px 32px}.campaign .lm-title{font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--color-muted);text-align:center;margin-bottom:18px}.campaign .lm-done{max-width:300px;margin:0 auto 16px;text-align:center;font-size:13px;color:var(--color-ok)}.campaign .lvl{display:flex;gap:12px;align-items:center;padding:11px 12px;margin:0 auto 10px;max-width:300px;border-radius:14px;border:1px solid var(--color-border);background:var(--color-raise);position:relative}.campaign .lvl:after{content:"";position:absolute;left:33px;top:100%;width:2px;height:10px;background:var(--color-border)}.campaign .lvl:last-child:after{display:none}.campaign .lvl .badge{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:14px;flex:none;border:2px solid var(--color-border);color:var(--color-muted);background:var(--color-ground)}.campaign .lvl .lt{font-weight:700;font-size:13.5px;color:var(--color-ink)}.campaign .lvl .ls{font-family:var(--font-mono);font-size:10.5px;color:var(--color-faint)}.campaign .lvl.done{border-color:#34d39966}.campaign .lvl.done .badge{border-color:var(--color-ok);color:var(--color-ok)}.campaign .lvl.current{border-color:var(--color-accent);box-shadow:0 0 0 3px #2ee6c826;cursor:pointer}.campaign .lvl.current .badge{border-color:var(--color-accent);color:var(--color-accent-ink);background:var(--color-accent)}.campaign .lvl.current:hover{transform:translateY(-1px)}.campaign .lvl.locked{opacity:.5}.campaign .lvl .tag{margin-left:auto;font-family:var(--font-mono);font-size:10px;color:var(--color-accent)}.campaign .incident{position:absolute;inset:0;display:flex;flex-direction:column;padding:56px 14px 16px;overflow-y:auto}.campaign .oncall{display:flex;gap:10px;align-items:flex-start;background:#fb5a6a1a;border:1px solid rgba(251,90,106,.4);border-radius:12px;padding:10px 12px;margin-bottom:10px}.campaign .oncall .av{width:26px;height:26px;border-radius:50%;background:var(--color-bad);color:#2a0f13;font-size:14px;display:flex;align-items:center;justify-content:center;flex:none;font-weight:800}.campaign .oncall .who{font-family:var(--font-mono);font-size:10px;color:var(--color-bad);display:block;margin-bottom:2px;text-transform:uppercase;letter-spacing:.08em}.campaign .oncall .msg{font-size:12.5px;color:#ffd7dc;line-height:1.35}.campaign .scenario{font-size:12px;color:var(--color-muted);margin:0 2px 12px;line-height:1.4}.campaign .inc-top{display:flex;align-items:center;gap:8px;margin-bottom:10px}.campaign .clock{font-family:var(--font-mono);font-size:20px;font-weight:800;color:var(--color-warn);font-variant-numeric:tabular-nums}.campaign .clock.crit{color:var(--color-bad)}.campaign .bill{margin-left:auto;font-family:var(--font-mono);font-size:12px;color:var(--color-muted)}.campaign .bill b{color:var(--color-ink)}.campaign .imeters{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}.campaign .im{font-family:var(--font-mono);font-size:11px;background:#080d18b3;border:1px solid var(--color-border);border-radius:8px;padding:5px 9px;color:var(--color-muted)}.campaign .im b{color:var(--color-ink)}.campaign .im.bad b{color:var(--color-bad)}.campaign .im.ok b{color:var(--color-ok)}.campaign .cmp-chip{display:inline-flex;align-items:center;gap:6px;margin:0 0 14px;padding:6px 12px;border-radius:999px;background:var(--color-raise);border:1px solid var(--color-border);font-size:12px;font-weight:600;color:var(--color-ink);text-decoration:none;width:fit-content}.campaign .cmp-chip:hover{border-color:var(--color-accent);color:var(--color-accent)}.campaign .cmp-chip .k{font-family:var(--font-mono);font-size:10px;color:var(--color-faint);text-transform:uppercase;letter-spacing:.08em}.campaign .ichoice{margin-top:auto;padding-top:8px}.campaign .ichoice .q{font-size:13.5px;font-weight:700;margin:0 2px 10px}.campaign .iopt{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:12px 13px;margin-top:8px;border-radius:10px;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);color:var(--color-ink);font-size:13px;font-weight:600;cursor:pointer;transition:background .14s,border-color .14s}.campaign .iopt:hover{border-color:var(--color-accent)}.campaign .iopt .cost{margin-left:auto;font-family:var(--font-mono);font-size:11px;color:var(--color-faint);white-space:nowrap}.campaign .iopt.ok{background:var(--color-accent);color:var(--color-accent-ink);border-color:var(--color-accent)}.campaign .iopt.ok .cost{color:var(--color-accent-ink)}.campaign .iopt.bad{background:#fb5a6a29;border-color:var(--color-bad)}.campaign .iopt[disabled]{cursor:default}.campaign .iconseq{font-size:12px;margin:12px 2px 0;padding:10px 12px;border-radius:10px;background:#080d1899;border:1px solid var(--border-soft)}.campaign .iconseq.bad{color:#ffd7dc;border-color:#fb5a6a66}.campaign .iconseq.ok{color:#bff2dd;border-color:#34d39966}.campaign .arch-wrap{margin:2px 0 14px;border:1px solid var(--color-border);border-radius:12px;background:#080d188c;padding:8px 8px 6px}.campaign .arch-head{display:flex;align-items:center;gap:8px;margin:2px 4px 4px}.campaign .arch-title{font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--color-muted)}.campaign .arch-count{margin-left:auto;font-family:var(--font-mono);font-size:10px;color:var(--color-faint)}.campaign .arch-scroll{max-height:46vh;overflow:auto}.campaign .arch-svg{width:100%;max-width:320px;height:auto;display:block;margin:0 auto}.campaign .arch-edge{fill:none;stroke:#2ee6c852;stroke-width:1.4}.campaign .arch-node rect{fill:#0c1424;stroke:#2b3a57;stroke-width:1.6}.campaign .arch-node text{fill:#dbe6f7;font-family:var(--font-sans, system-ui);font-weight:700}.campaign .arch-node .sub{fill:var(--color-faint);font-family:var(--font-mono);font-weight:600}.campaign .arch-cdn rect{stroke:#6f8cff;fill:#0d1430}.campaign .arch-cdn text{fill:#cdd8ff}.campaign .arch-loadbalancer rect{stroke:var(--color-accent)}.campaign .arch-loadbalancer text{fill:#bff0e7}.campaign .arch-cache rect{stroke:var(--color-accent);fill:#0c1b22}.campaign .arch-cache text{fill:#bff0e7}.campaign .arch-replica rect{stroke:#34d399;fill:#0c2019}.campaign .arch-replica text{fill:#bff2dd}.campaign .arch-database rect{stroke:#3f5f96;fill:#0c1424}.campaign .arch-shard rect{stroke:#fbbf24;fill:#1f1a0c}.campaign .arch-shard text{fill:#ffe6a8}.campaign .arch-node{transform-box:fill-box;transform-origin:center}.campaign .arch-new rect{stroke:var(--color-accent)}.campaign .arch-grow{animation:arch-grow-in .5s cubic-bezier(.2,.8,.2,1) both,arch-glow 1.25s ease-in-out .05s 2}@keyframes arch-grow-in{0%{opacity:0;transform:scale(.55)}to{opacity:1;transform:scale(1)}}@keyframes arch-glow{0%,to{filter:drop-shadow(0 0 0 rgba(46,230,200,0))}50%{filter:drop-shadow(0 0 7px rgba(46,230,200,.85))}}@media(prefers-reduced-motion:reduce){.campaign .arch-grow{animation:none}}.campaign .arch-recap{max-width:300px;margin:0 auto 16px;display:flex;flex-wrap:wrap;gap:6px;justify-content:center}.campaign .arch-pill{font-family:var(--font-mono);font-size:10px;color:var(--color-muted);background:var(--color-raise);border:1px solid var(--color-border);border-radius:999px;padding:3px 9px}.campaign .arch-pill.lb,.campaign .arch-pill.cache,.campaign .arch-pill.loadbalancer{border-color:#2ee6c880;color:var(--color-accent)}.campaign .score{position:absolute;inset:0;z-index:12;background:var(--color-ground);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:28px 22px;opacity:0;pointer-events:none;transition:opacity .4s}.campaign .score.show{opacity:1;pointer-events:auto}.campaign .score .stars{font-size:30px;letter-spacing:6px;margin-bottom:6px}.campaign .score h3{margin:0 0 14px;font-size:20px}.campaign .score .srow{display:flex;justify-content:space-between;gap:16px;width:100%;max-width:260px;font-family:var(--font-mono);font-size:12.5px;padding:6px 0;border-bottom:1px solid var(--border-soft)}.campaign .score .srow span:first-child{color:var(--color-muted)}.campaign .score .srow b.ok{color:var(--color-ok)}.campaign .score .srow b.warn{color:var(--color-warn)}.campaign .score-next{margin-top:22px;border-radius:var(--r-md);padding:13px 22px;font-weight:800;font-size:15px;cursor:pointer;border:1px solid transparent;background:var(--color-accent);color:var(--color-accent-ink)}.campaign .score-next:hover{filter:brightness(1.08)}
