:root{--ink:#14213d;--navy:#10233f;--blue:#1867c9;--sky:#eaf3ff;--line:#d8e0ea;--paper:#fff;--bg:#f3f6f9;--green:#177647;--greenbg:#e6f6ed;--red:#b42318;--redbg:#ffebe9;--amber:#9b6500;--shadow:0 12px 32px rgba(16,35,63,.1)}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}.academy-header{height:72px;padding:10px clamp(18px,4vw,54px);background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:space-between}.academy-home{display:flex;align-items:center;gap:12px;color:#fff;text-decoration:none;font-weight:800;letter-spacing:.01em}.academy-home img{width:50px;height:50px;object-fit:contain}.academy-header small{font-weight:700;letter-spacing:.12em;color:#b9c9dd}main{max-width:1500px;margin:auto;padding:24px clamp(14px,3vw,42px) 44px}.intro{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}.intro small,.solution-head small{font-size:.72rem;letter-spacing:.15em;font-weight:800;color:#5a6a7d}.intro h1{font-family:Georgia,serif;font-size:clamp(2rem,4vw,3.4rem);line-height:1;margin:.2rem 0 .5rem}.intro p{margin:0 0 18px;color:#536273}.segmented{display:inline-grid;grid-auto-flow:column;background:#dfe6ef;border:1px solid #c8d2df;border-radius:12px;padding:4px;gap:3px}.segmented button{border:0;background:transparent;color:#42536a;font-weight:750;padding:10px 18px;border-radius:8px}.segmented button.active{background:#fff;color:var(--navy);box-shadow:0 2px 8px rgba(16,35,63,.12)}button,select,input{font:inherit}button{border:1px solid #c7d2df;background:#fff;color:var(--ink);font-weight:700;border-radius:9px;padding:9px 13px;cursor:pointer}button:hover{border-color:#8da0b6;background:#f8fafc}button:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid rgba(24,103,201,.25);outline-offset:2px}.primary{background:var(--navy);border-color:var(--navy);color:#fff}.primary:hover{background:#193453}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin:14px 0}.toolbar label,.controls>section>label{font-size:.82rem;font-weight:750;color:#536273;display:flex;align-items:center;gap:8px}.toolbar select,.controls select{border:1px solid #c7d2df;border-radius:8px;padding:8px;background:#fff;color:var(--ink)}#panelToggle{margin-left:auto}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:14px;align-items:start}.stage-card,.controls{background:var(--paper);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}.stage-card{min-width:0;overflow:hidden}.question-banner{padding:12px 18px;border-bottom:1px solid var(--line);font-weight:750;background:#fbfcfe;min-height:48px}.canvas-wrap{height:min(65vh,680px);min-height:460px;position:relative;overflow:hidden;background-color:#fbfdff;background-image:radial-gradient(#d5dee9 1px,transparent 1px);background-size:22px 22px}#network{width:100%;height:100%;touch-action:none;user-select:none}.zoom{position:absolute;right:12px;bottom:12px;display:flex;gap:5px;background:rgba(255,255,255,.92);padding:5px;border:1px solid var(--line);border-radius:11px;box-shadow:0 4px 15px rgba(16,35,63,.1)}.zoom button{padding:7px 10px}.status{min-height:42px;margin:0;padding:11px 18px;border-top:1px solid var(--line);font-weight:650;color:#536273}.status.success{background:var(--greenbg);color:var(--green)}.status.error{background:var(--redbg);color:var(--red)}.controls{padding:14px;position:sticky;top:14px}.small{width:100%;display:grid;grid-template-columns:1fr 1fr}.small button{padding:8px}.instruction{font-size:.88rem;line-height:1.48;background:#f3f6fa;border-left:3px solid var(--blue);padding:10px 11px;margin:10px 0;border-radius:4px 8px 8px 4px}.check{position:relative;display:flex!important;align-items:center;gap:8px!important;color:var(--ink)!important;cursor:pointer}.check input{position:absolute;opacity:0}.check span{width:19px;height:19px;border:2px solid #8fa0b3;border-radius:5px;background:#fff;display:inline-grid;place-items:center}.check input:checked+span{background:var(--green);border-color:var(--green)}.check input:checked+span:after{content:"✓";color:#fff;font-size:.78rem;font-weight:900}.feedback-check{padding:5px 1px 12px}.answer-box{border-top:1px solid var(--line);padding-top:12px;display:grid;gap:6px}.answer-box label{font-size:.8rem;font-weight:750;color:#536273}.answer-box input{width:100%;border:1px solid #c7d2df;border-radius:8px;padding:10px}.component-feedback{display:grid;gap:5px;margin-top:10px}.feedback-row{font-size:.82rem;padding:7px 9px;border-radius:7px;background:#f2f4f7}.feedback-row.good{background:var(--greenbg);color:var(--green)}.feedback-row.bad{background:var(--redbg);color:var(--red)}.control-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}.wide{grid-column:1/-1;width:100%}.hint-box{font-size:.86rem;line-height:1.45;background:#fff7dc;border:1px solid #edcf6b;border-radius:9px;padding:10px;margin-top:9px;color:#654900}.edge-table-wrap{padding:10px 18px;background:#fff;border-bottom:1px solid var(--line);max-height:190px;overflow:auto}.edge-table{border-collapse:collapse;width:100%;font-size:.85rem}.edge-table th,.edge-table td{border-bottom:1px solid #e2e8f0;padding:6px;text-align:left}.edge-table .done{color:var(--green);font-weight:800}.theory-answers{display:grid;gap:7px;margin-top:11px}.choice{display:flex;align-items:center;gap:8px;border:1px solid #ccd6e2;border-radius:9px;padding:9px;cursor:pointer;background:#fff}.choice:has(input:checked){border-color:var(--blue);background:var(--sky)}.choice input{accent-color:var(--blue)}.degree-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.degree-grid label{font-size:.76rem}.degree-grid input{width:100%;padding:6px;border:1px solid #c7d2df;border-radius:6px}.print-menu{position:relative}.menu{position:absolute;right:0;top:44px;z-index:10;width:230px;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow);border-radius:10px;padding:6px}.menu button{width:100%;border:0;text-align:left}.node circle{fill:#fff;stroke:var(--navy);stroke-width:3}.node text{font-size:19px;font-weight:850;fill:var(--navy);pointer-events:none;text-anchor:middle;dominant-baseline:central}.node.start circle{fill:#fff3c4;stroke:#a26a00}.node.visited circle{fill:#dcf4e7;stroke:var(--green)}.edge-hit{stroke:transparent;stroke-width:20;cursor:pointer}.edge-line{stroke:#75869a;stroke-width:4;stroke-linecap:round;pointer-events:none}.edge.selected .edge-line{stroke:var(--blue);stroke-width:7}.edge.correct .edge-line{stroke:var(--green);stroke-width:7}.edge.incorrect .edge-line{stroke:var(--red);stroke-width:8}.edge.solution .edge-line{stroke:#8f4fc7;stroke-width:8}.edge.route .edge-line{stroke:#d77a08;stroke-width:8}.weight rect{fill:#fff;stroke:#cad5e1;stroke-width:1}.weight text{font-size:15px;font-weight:850;fill:var(--ink);text-anchor:middle;dominant-baseline:central}.builder-ghost{stroke:var(--blue);stroke-width:3;stroke-dasharray:8 6}.bridge .edge-line{stroke:#9b4f13}.controls.collapsed{display:none}.workspace:has(.controls.collapsed){grid-template-columns:1fr}dialog{border:0;border-radius:15px;padding:0;box-shadow:0 24px 70px rgba(0,0,0,.25);width:min(680px,92vw)}dialog::backdrop{background:rgba(6,15,28,.58)}.solution-card,.confirm-card{padding:20px}.solution-head{display:flex;justify-content:space-between;align-items:start}.solution-head h2,.confirm-card h2{font-family:Georgia,serif;margin:.2rem 0}.solution-head>button{font-size:1.5rem;border:0}.solution-nav{display:flex;justify-content:space-between;align-items:center;margin-top:18px;padding-top:12px;border-top:1px solid var(--line)}.confirm-card div:last-child{display:flex;justify-content:flex-end;gap:8px}.worksheet-card label{display:grid;gap:5px;margin:12px 0}.worksheet-card input,.worksheet-card select{padding:9px;border:1px solid #c7d2df;border-radius:8px}
.builder-solve{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:10px;padding:10px;background:var(--greenbg);border-radius:9px}.builder-solve small{grid-column:1/-1;color:var(--green);font-weight:850;letter-spacing:.1em}
.node.start circle,.node.visited circle{fill:#dcf4e7;stroke:var(--green);stroke-width:4}
.solution-panel{position:static;width:100%;margin-top:18px;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);scroll-margin-top:18px}.solution-panel .solution-card{padding:22px 24px}.solution-panel .solution-head>button{font-size:1.5rem;border:0;background:transparent}.solution-panel .solution-nav{margin-top:20px}
.right-rail{display:grid;gap:14px;align-content:start;position:sticky;top:14px}.right-rail .controls{position:static}.weight-card{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);padding:17px}.weight-card .answer-box{border-top:0;padding-top:0}.weight-card .answer-box label{font-size:.88rem;color:var(--ink)}.weight-card .answer-box input{font-size:1.05rem;padding:12px}.workspace:has(.controls.collapsed) .right-rail{display:none}
@media(max-width:900px){.right-rail{position:static}}
main{max-width:1720px}.workspace{grid-template-columns:minmax(0,1fr) 360px;gap:18px}.canvas-wrap{height:clamp(560px,calc(100vh - 320px),800px);min-height:560px}.controls{padding:17px}.controls-head{display:flex;align-items:center;justify-content:space-between;padding:0 0 12px;margin-bottom:12px;border-bottom:1px solid var(--line)}.controls-head strong{font-family:Georgia,serif;font-size:1.16rem}.controls-head #panelToggle{margin:0;padding:7px 11px}.instruction{font-size:.95rem;line-height:1.52;padding:12px 13px}.question-banner{font-size:1rem;padding:14px 20px}.status{font-size:.92rem;padding:12px 20px}.toolbar{gap:10px}.toolbar button,.toolbar select{min-height:40px}.segmented button{font-size:.94rem;padding:11px 20px}.node text{font-size:21px}.weight text{font-size:17px}.weight rect{stroke-width:1.5}.edge-line{stroke-width:4.5}.control-actions button{min-height:42px}#showControls{margin-left:auto}
@media(max-width:900px){.workspace{grid-template-columns:1fr}.controls{position:static}.canvas-wrap{height:56vh;min-height:400px}.academy-header small{display:none}}
@media(max-width:560px){main{padding:16px 10px 32px}.academy-header{padding:9px 12px}.academy-home span{font-size:.92rem}.intro h1{font-size:2.15rem}.mode-tabs{display:grid;grid-auto-flow:row;width:100%}.toolbar{align-items:stretch}.toolbar>*{flex:1}.toolbar label{justify-content:space-between}#panelToggle{margin-left:0}.canvas-wrap{min-height:380px}.workspace{gap:9px}.zoom{left:8px;right:auto}.zoom #autoArrange{display:none}}
@media print{@page{size:A4 landscape;margin:12mm}body{background:#fff}.academy-header,.toolbar,.mode-tabs,.controls,.zoom,.print-menu{display:none!important}main{padding:0}.intro p{display:none}.workspace{display:block}.stage-card{box-shadow:none;border:1px solid #000}.canvas-wrap{height:145mm;background:none}.question-banner,.status{color:#000;background:#fff}.edge-line{stroke:#000}.node circle{stroke:#000}.weight rect{stroke:#000}}

#theoryControls>label{justify-content:space-between;margin-bottom:8px}
#theoryControls select{max-width:215px}
.theory-panel-card{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);overflow:auto;max-height:calc(100vh - 250px);position:sticky;top:14px;padding:0 14px 14px}
.theory-panel-card>label{font-size:.82rem;font-weight:750;color:#536273;display:flex;align-items:center;gap:8px}
.theory-panel-card .feedback-card{box-shadow:none;margin-top:12px;padding:13px}
#theoryCheckAnswer{margin-top:12px}
.bank-status{font-size:.78rem;font-weight:750;color:#536273;background:#f3f6fa;border:1px solid var(--line);border-radius:8px;padding:8px 10px;margin:8px 0}
.answer-subhead{font-size:.73rem;letter-spacing:.08em;text-transform:uppercase;font-weight:850;color:#5a6a7d;margin-top:4px}
.route-shown{font-size:.9rem;background:#fff7dc;border:1px solid #edcf6b;border-radius:9px;padding:9px 10px}
.route-step circle{fill:#fff;stroke:var(--blue);stroke-width:2}
.route-step text{fill:var(--blue);font-size:12px;font-weight:900;text-anchor:middle;dominant-baseline:central;pointer-events:none}
.feedback-card{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);padding:17px;line-height:1.48}
.feedback-card small{font-size:.7rem;letter-spacing:.12em;font-weight:850;color:#5a6a7d}
.feedback-card h3{font-family:Georgia,serif;font-size:1.08rem;margin:.25rem 0 .45rem}
.feedback-card.good{border-color:#8ac8a7;background:var(--greenbg)}
.feedback-card.good h3{color:var(--green)}
.feedback-card.bad{border-color:#efaaa4;background:var(--redbg)}
.feedback-card.bad h3{color:var(--red)}
.feedback-card p{margin:.35rem 0}
.builder-weight input{width:50px;height:34px;border:2px solid var(--blue);border-radius:8px;background:#fff;color:var(--ink);font-size:15px;font-weight:850;text-align:center;box-shadow:0 2px 8px rgba(16,35,63,.12)}
.builder-weight input:focus{outline:3px solid rgba(24,103,201,.25);outline-offset:1px}
.formula-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}
.formula-grid label{font-size:.76rem;font-weight:750;color:#536273;display:grid;gap:4px}
.formula-grid input{min-width:0;width:100%;padding:8px;border:1px solid #c7d2df;border-radius:7px}
.builder-table-card{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);overflow:auto;max-height:calc(100vh - 250px);position:sticky;top:14px;padding:0 14px 14px}
.builder-table-head{position:sticky;top:0;background:#fff;border-bottom:1px solid var(--line);padding:15px 2px 11px;margin-bottom:4px;z-index:1}
.builder-table-head small{font-size:.7rem;letter-spacing:.12em;font-weight:850;color:#5a6a7d}
.builder-table-head h3{font-family:Georgia,serif;font-size:1.08rem;margin:.2rem 0 0}
.builder-return{margin-top:4px}
.workspace:has(#builderTable:not([hidden])){grid-template-columns:260px minmax(0,1fr) 360px}
.workspace:has(#builderTable:not([hidden])) .canvas-wrap{height:clamp(620px,calc(100vh - 285px),840px)}
.workspace:has(#builderTable:not([hidden])):has(.controls.collapsed){grid-template-columns:260px minmax(0,1fr)}
.workspace:has(#builderTable:not([hidden])):has(.controls.collapsed) .right-rail{display:none}
.workspace:has(#theoryControls:not([hidden])){grid-template-columns:330px minmax(0,1fr) 300px}
.workspace:has(#theoryControls:not([hidden])) .canvas-wrap{height:clamp(620px,calc(100vh - 285px),840px)}
.workspace:has(#theoryControls:not([hidden])):has(.controls.collapsed){grid-template-columns:330px minmax(0,1fr)}
.workspace:has(#theoryControls:not([hidden])):has(.controls.collapsed) .right-rail{display:none}
.workspace:has(.controls.collapsed){grid-template-columns:minmax(0,1fr) 360px}
.workspace:has(.controls.collapsed) .right-rail{display:grid}
@media(max-width:1180px){.workspace:has(#builderTable:not([hidden])){grid-template-columns:220px minmax(0,1fr) 320px}.workspace:has(#theoryControls:not([hidden])){grid-template-columns:280px minmax(0,1fr) 280px}}
@media(max-width:900px){.workspace:has(.controls.collapsed),.workspace:has(#builderTable:not([hidden])),.workspace:has(#theoryControls:not([hidden])){grid-template-columns:1fr}.builder-table-card,.theory-panel-card{position:static;max-height:none}.workspace:has(#builderTable:not([hidden])) .canvas-wrap,.workspace:has(#theoryControls:not([hidden])) .canvas-wrap{height:56vh;min-height:400px}}
