@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Manrope:wght@400;500;600;700;800&display=swap');

:root{--bg:#f4f4ee;--paper:#fff;--paper-2:#f9f9f5;--ink:#17202a;--muted:#69727d;--line:#dadbd3;--violet:#5b4fe8;--violet-2:#786ef4;--violet-soft:#efedff;--lime:#c6ff4a;--teal:#20bfa8;--coral:#ff6f61;--shadow:0 18px 55px rgba(31,39,48,.12);--radius:18px}
*{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:Manrope,system-ui,sans-serif;overflow:hidden}button,input{font:inherit}button{color:inherit}.skip-link{position:fixed;left:1rem;top:-4rem;background:#111;color:#fff;padding:.7rem 1rem;z-index:1000;border-radius:8px}.skip-link:focus{top:1rem}.app-shell{height:100%;display:grid;grid-template-rows:64px 52px 1fr}.topbar,.toolstrip{display:flex;align-items:center;background:rgba(255,255,255,.92);border-bottom:1px solid var(--line);padding:0 18px;position:relative;z-index:10}.topbar{justify-content:space-between}.brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--ink)}.brand-mark{width:38px;height:38px;position:relative;display:inline-block;transform:rotate(-7deg)}.brand-mark i{position:absolute;width:0;height:0;border-style:solid}.brand-mark i:nth-child(1){border-width:0 17px 29px;border-color:transparent transparent var(--violet) transparent;left:2px;top:1px}.brand-mark i:nth-child(2){border-width:0 10px 17px;border-color:transparent transparent var(--lime) transparent;left:10px;top:8px}.brand-mark i:nth-child(3){width:8px;height:8px;background:var(--coral);border:0;border-radius:50%;left:27px;top:3px}.brand strong{font-size:18px;letter-spacing:-.6px}.brand b{font-size:10px;background:var(--violet);color:#fff;padding:3px 5px;border-radius:5px;margin-left:5px;vertical-align:2px}.brand small{display:block;color:var(--muted);font-size:10px;margin-top:-2px}.top-actions{display:flex;align-items:center;gap:6px}.nav-btn,.icon-btn,.tool-btn,.family-tab,.round-btn,.play-btn,.ghost-btn,.primary-btn,.wide-btn,.copy-btn{border:0;cursor:pointer}.nav-btn{background:transparent;border-radius:10px;padding:9px 11px;font-weight:700;font-size:13px}.nav-btn:hover{background:#f0f0eb}.nav-btn span{color:var(--violet);margin-right:3px}.nav-btn em{font-style:normal;font-size:10px;background:var(--lime);color:#26320e;padding:2px 5px;border-radius:10px}.nav-btn.primary{background:var(--violet);color:#fff}.nav-btn.primary span{color:#fff}.icon-btn{width:37px;height:37px;border-radius:50%;background:#f0f0eb;font-size:18px}.toolstrip{justify-content:space-between;gap:15px}.family-tabs,.view-tools{display:flex;align-items:center;gap:7px}.family-tab,.tool-btn{padding:7px 12px;border-radius:9px;background:transparent;font-weight:700;font-size:12px;white-space:nowrap}.family-tab.active{background:var(--ink);color:#fff}.tool-btn{border:1px solid transparent;color:var(--muted)}.tool-btn.active{background:var(--violet-soft);border-color:#d7d2ff;color:var(--violet)}
.workspace{min-height:0;display:grid;grid-template-columns:245px minmax(420px,1fr) 310px;gap:12px;padding:12px}.panel,.stage{min-height:0;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.panel{padding:18px}.panel-head{display:flex;align-items:flex-end;justify-content:space-between}.panel h2{font-size:16px;margin:3px 0}.eyebrow,.modal-label{font-size:10px;letter-spacing:1.2px;font-weight:800;color:var(--muted)}.count-badge{font:500 10px DM Mono,monospace;background:var(--paper-2);border:1px solid var(--line);padding:5px 7px;border-radius:15px;color:var(--muted)}.catalog{display:flex;flex-direction:column}.solid-list{display:flex;flex-direction:column;gap:7px;overflow:auto;margin:14px -6px 14px 0;padding-right:6px}.solid-card{display:flex;align-items:center;width:100%;gap:10px;padding:10px;background:transparent;border:1px solid transparent;border-radius:13px;text-align:left;cursor:pointer}.solid-card:hover{background:var(--paper-2);border-color:var(--line)}.solid-card.active{background:var(--violet-soft);border-color:#cec9ff}.solid-icon{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:#eef3f2;color:var(--violet);font-size:22px}.solid-card.active .solid-icon{background:var(--violet);color:#fff}.solid-copy{min-width:0;flex:1}.solid-copy b{display:block;font-size:12px}.solid-copy small{display:block;font-size:9px;color:var(--muted);margin-top:2px}.card-arrow{font-size:20px;color:#a7adb4}.learning-path{border-top:1px solid var(--line);padding-top:13px}.learning-path ol{list-style:none;margin:9px 0 0;padding:0;display:grid;gap:8px}.learning-path li{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:10px;font-weight:700}.learning-path li span{width:20px;height:20px;display:grid;place-items:center;border-radius:50%;background:#eeeee9;font:500 9px DM Mono}.learning-path li.done{color:var(--teal)}.learning-path li.done span{background:#dff8f2}
.stage{position:relative;display:grid;grid-template-rows:auto minmax(0,1fr) auto;background:radial-gradient(circle at 50% 35%,#fdfdfb 0,#f0f1eb 70%)}.stage-banner{padding:17px 19px 0;display:flex;align-items:flex-start;justify-content:space-between;position:relative;z-index:2}.stage-kicker{font-size:9px;font-weight:800;letter-spacing:1.4px;color:var(--violet)}.stage h1{font-size:24px;margin:2px 0;letter-spacing:-1px}.status-chip{font-size:10px;background:rgba(255,255,255,.8);border:1px solid var(--line);padding:7px 10px;border-radius:20px;color:var(--muted)}.status-chip span{display:inline-block;width:7px;height:7px;background:var(--teal);border-radius:50%;margin-right:6px}.canvas-wrap{min-height:0;position:relative}#polyCanvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}.axis-cube{position:absolute;right:17px;top:10px;width:46px;height:46px;border:1px solid var(--line);background:rgba(255,255,255,.65);border-radius:10px;font:700 10px DM Mono;color:var(--muted);pointer-events:none}.axis-cube b,.axis-cube span,.axis-cube i{position:absolute;font-style:normal}.axis-cube b{top:4px;left:19px;color:var(--teal)}.axis-cube span{right:6px;bottom:5px;color:var(--coral)}.axis-cube i{left:6px;bottom:5px;color:var(--violet)}.canvas-hint{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);font-size:9px;color:var(--muted);background:rgba(255,255,255,.78);padding:5px 9px;border-radius:20px;white-space:nowrap}.net-layer{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;opacity:0;transform:scale(.78) rotateX(20deg);transition:opacity .15s}.net-layer svg{width:min(90%,590px);height:min(86%,390px);filter:drop-shadow(0 10px 20px rgba(50,45,100,.12))}.net-layer polygon,.net-layer rect{fill:#dcd8ff;stroke:#574be4;stroke-width:2;stroke-linejoin:round}.net-layer .tab{fill:#f7f7f2;stroke:#a59df9;stroke-dasharray:4 3}.net-caption{position:absolute;bottom:8%;font:700 9px DM Mono;color:var(--violet);letter-spacing:1.5px}.unfold-dock{margin:0 16px 15px;padding:11px 12px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.88);display:flex;align-items:center;gap:11px;position:relative;z-index:3}.play-btn,.round-btn{flex:0 0 auto;width:36px;height:36px;border-radius:11px;background:var(--ink);color:#fff}.round-btn{background:var(--paper-2);border:1px solid var(--line);color:var(--ink);font-size:17px}.unfold-control{flex:1}.range-labels{display:flex;align-items:center;justify-content:space-between;font-size:9px;color:var(--muted);font-weight:700}.range-labels strong{font:600 11px DM Mono;color:var(--violet)}input[type=range]{width:100%;accent-color:var(--violet);height:4px}
.inspector{overflow:auto}.inspector-title{display:flex;gap:10px;align-items:center}.mini-glyph{width:45px;height:45px;background:var(--ink);color:var(--lime);border-radius:13px;display:grid;place-items:center;font-size:24px}.info-intro{font-size:11px;line-height:1.55;color:var(--muted);margin:12px 0}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.metrics div{position:relative;background:var(--paper-2);border:1px solid var(--line);border-radius:12px;padding:10px;text-align:center}.metrics span{position:absolute;top:5px;left:7px;font:600 8px DM Mono;color:var(--violet)}.metrics strong{display:block;font:700 22px DM Mono}.metrics small{font-size:8px;color:var(--muted);font-weight:700}.euler-card,.formula-card{margin-top:12px;border:1px solid var(--line);border-radius:14px;padding:12px}.section-title{display:flex;align-items:center;justify-content:space-between;font-size:9px;letter-spacing:1px;font-weight:800;color:var(--muted)}.help-dot{border:1px solid var(--line);background:transparent;border-radius:50%;width:20px;height:20px;cursor:help}.equation{display:flex;justify-content:space-between;align-items:center;margin:11px 0 9px;font:500 18px DM Mono}.equation b{background:var(--violet-soft);color:var(--violet);padding:5px 7px;border-radius:7px}.equation i{font-style:normal;color:var(--muted)}.equation strong{background:var(--lime);padding:5px 8px;border-radius:7px}.proof-bar{display:flex;gap:7px;align-items:center;background:#eafaf6;padding:7px 9px;border-radius:8px;color:#167866}.proof-bar span{font-weight:800}.proof-bar p{font-size:9px;margin:0}.facts-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:12px}.facts-grid div{border-bottom:1px solid var(--line);padding:4px 0 9px}.facts-grid span{display:block;font-size:7px;letter-spacing:.8px;color:var(--muted);font-weight:800}.facts-grid b{font-size:9px;line-height:1.35}.formula-row{display:flex;align-items:center;justify-content:space-between;margin-top:9px;font-size:10px}.formula-row span{color:var(--muted)}.formula-row code{font:500 10px DM Mono;background:var(--paper-2);padding:5px 7px;border-radius:6px}.copy-btn{font-size:8px;background:transparent;color:var(--violet);font-weight:800}.wide-btn{width:100%;margin-top:12px;padding:11px;border-radius:11px;background:var(--ink);color:#fff;font-size:10px;font-weight:800;display:flex;justify-content:space-between}
.modal{border:1px solid var(--line);border-radius:22px;background:var(--paper);color:var(--ink);box-shadow:var(--shadow);padding:26px;max-width:min(760px,92vw);max-height:88vh}.modal::backdrop{background:rgba(20,24,34,.48);backdrop-filter:blur(5px)}.modal-close{position:absolute;right:18px;top:15px;width:34px;height:34px;border:0;border-radius:50%;background:var(--paper-2);cursor:pointer;font-size:22px}.guide-modal{width:650px}.progress-steps{display:flex;gap:6px;margin:12px 0 20px}.progress-steps i{height:5px;flex:1;background:#e8e8e2;border-radius:5px}.progress-steps i.active{background:var(--violet)}.guide-hero{display:flex;gap:17px;align-items:flex-start}.guide-number{width:55px;height:55px;border-radius:16px;background:var(--violet-soft);color:var(--violet);display:grid;place-items:center;font:800 24px DM Mono}.guide-copy h2{margin:0;font-size:21px}.guide-copy p{color:var(--muted);font-size:13px;line-height:1.6}.guide-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:15px}.guide-grid div{background:var(--paper-2);border:1px solid var(--line);padding:13px;border-radius:13px}.guide-grid b{display:block;color:var(--violet);font-size:11px;margin-bottom:5px}.guide-grid p{margin:0;font-size:10px;line-height:1.5;color:var(--muted)}.modal footer{border-top:1px solid var(--line);padding-top:16px;margin-top:20px;display:flex;justify-content:flex-end;gap:8px}.ghost-btn,.primary-btn{padding:10px 15px;border-radius:11px;font-size:11px;font-weight:800}.ghost-btn{background:var(--paper-2);border:1px solid var(--line)}.primary-btn{background:var(--violet);color:#fff}.full-modal{width:min(1050px,95vw);height:min(730px,90vh);max-width:none}.full-modal>header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.full-modal h2{margin:2px 0;font-size:22px}.theory-layout{height:calc(100% - 70px);display:grid;grid-template-columns:210px 1fr;gap:20px}.theory-nav{display:flex;flex-direction:column;gap:6px;border-right:1px solid var(--line);padding-right:15px}.theory-nav button{border:0;background:transparent;text-align:left;padding:11px;border-radius:10px;font-size:11px;font-weight:700;cursor:pointer}.theory-nav button.active{background:var(--violet-soft);color:var(--violet)}.theory-content{overflow:auto;padding:2px 18px 30px 2px}.theory-content h2{font-size:26px}.theory-content h3{font-size:14px;margin-top:23px}.theory-content p,.theory-content li{font-size:12px;line-height:1.7;color:var(--muted)}.concept-card{background:linear-gradient(135deg,#f1efff,#f9faf5);border:1px solid #d8d4ff;border-radius:17px;padding:18px}.concept-card strong{color:var(--violet)}.visual-equation{font:600 24px DM Mono;text-align:center;border:1px solid var(--line);padding:18px;border-radius:14px;background:var(--paper-2);margin:18px 0}.compare-table{width:100%;border-collapse:collapse;font-size:11px}.compare-table th,.compare-table td{border-bottom:1px solid var(--line);padding:9px;text-align:left}.compare-table th{color:var(--muted);font-size:9px;letter-spacing:.8px}.challenge-modal{width:610px}.challenge-title{font-size:24px;margin:8px 0}.challenge-clue{background:var(--ink);color:#fff;border-radius:17px;padding:18px;margin:15px 0}.challenge-clue span{display:block;font-size:9px;letter-spacing:1px;color:var(--lime)}.challenge-clue p{font-size:15px;line-height:1.55;margin:8px 0}.answers{display:grid;grid-template-columns:1fr 1fr;gap:9px}.answer-btn{padding:13px;border-radius:12px;border:1px solid var(--line);background:var(--paper-2);cursor:pointer;text-align:left;font-weight:700;font-size:11px}.answer-btn:hover{border-color:var(--violet);color:var(--violet)}.answer-btn.correct{background:#e6faf4;border-color:var(--teal);color:#147a67}.answer-btn.wrong{background:#fff0ee;border-color:var(--coral);color:#a73d33}.feedback{min-height:32px;font-size:11px;margin:12px 0;color:var(--muted)}.challenge-foot{display:flex;justify-content:space-between;align-items:center}.challenge-dots{display:flex;gap:5px}.challenge-dots i{width:20px;height:5px;border-radius:5px;background:#ddd}.challenge-dots i.done{background:var(--teal)}.workshop-modal{width:720px}.workshop-hero{display:flex;gap:15px;align-items:center}.workshop-hero>span{font-size:35px}.workshop-hero h2{margin:3px 0;font-size:22px}.workshop-hero p{font-size:11px;color:var(--muted)}.workshop-preview{height:300px;margin:15px 0;background:var(--paper-2);border:1px solid var(--line);border-radius:15px;display:grid;place-items:center}.workshop-preview svg{width:90%;height:90%}.workshop-preview polygon,.workshop-preview rect{fill:#e2dfff;stroke:#574be4;stroke-width:2}.workshop-preview .tab{fill:white;stroke:#8d84ef;stroke-dasharray:5 4}.materials{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.materials b{font-size:10px}.materials span{font-size:9px;padding:5px 8px;border:1px solid var(--line);border-radius:20px}.toast{position:fixed;left:50%;bottom:22px;transform:translate(-50%,20px);opacity:0;background:#151a20;color:#fff;padding:10px 15px;border-radius:10px;font-size:11px;z-index:200;transition:.25s}.toast.show{opacity:1;transform:translate(-50%,0)}
body.dark{--bg:#11151b;--paper:#191e26;--paper-2:#222832;--ink:#f4f5ef;--muted:#a6afba;--line:#333b46;--violet:#8e84ff;--violet-soft:#2d294c;--shadow:0 18px 55px rgba(0,0,0,.35)}body.dark .topbar,body.dark .toolstrip{background:rgba(25,30,38,.94)}body.dark .stage{background:radial-gradient(circle at 50% 35%,#242b35 0,#12161d 72%)}body.dark .proof-bar{background:#153b35;color:#6fe0cc}body.dark .status-chip,body.dark .unfold-dock,body.dark .canvas-hint{background:rgba(25,30,38,.8)}body.dark .axis-cube{background:rgba(25,30,38,.75)}
@media(max-width:1100px){.workspace{grid-template-columns:210px minmax(400px,1fr)}.inspector{position:fixed;right:12px;top:128px;bottom:12px;width:310px;z-index:20;box-shadow:var(--shadow);transform:translateX(calc(100% + 25px));transition:.25s}.inspector.open{transform:none}.top-actions .nav-btn:nth-child(1),.top-actions .nav-btn:nth-child(2){display:none}}
@media(max-width:780px){body{overflow:auto}.app-shell{height:auto;min-height:100%;grid-template-rows:auto auto auto}.topbar{min-height:62px}.brand small{display:none}.top-actions .nav-btn:not(.primary){display:none}.toolstrip{overflow:auto;padding:8px 10px}.view-tools span{display:none}.workspace{grid-template-columns:1fr;padding:8px;min-height:calc(100vh - 120px)}.catalog{display:none}.stage{height:calc(100vh - 136px);min-height:560px}.stage-banner{padding-top:13px}.stage h1{font-size:21px}.inspector{top:118px;bottom:8px;right:8px}.full-modal{padding:18px}.theory-layout{grid-template-columns:1fr}.theory-nav{flex-direction:row;overflow:auto;border-right:0;border-bottom:1px solid var(--line);padding:0 0 10px}.theory-nav button{white-space:nowrap}.guide-grid,.answers{grid-template-columns:1fr}.nav-btn.primary{padding:8px 10px}.modal{padding:20px}.workshop-preview{height:230px}}
@media print{body>*{display:none!important}#workshopDialog[open]{display:block!important;position:static;border:0;box-shadow:none;max-width:none;max-height:none}.modal-close,.workshop-hero p,.materials,.workshop-modal footer{display:none!important}.workshop-preview{height:70vh;border:0}.workshop-preview svg{width:100%;height:100%}}

/* v2: separación didáctica entre el objeto espacial y su desarrollo */
.stage-actions{display:flex;align-items:center;gap:9px}.dimension-chip{font:600 10px DM Mono;background:var(--lime);color:#26320e;padding:7px 10px;border-radius:20px}.view-switch{display:flex;padding:3px;background:rgba(255,255,255,.82);border:1px solid var(--line);border-radius:11px}.view-switch button{border:0;background:transparent;color:var(--muted);padding:7px 10px;border-radius:8px;font-size:10px;font-weight:800;cursor:pointer}.view-switch button.active{background:var(--ink);color:#fff}.space-view{position:absolute;inset:0;opacity:0;visibility:hidden;transition:opacity .22s ease}.space-view.active{opacity:1;visibility:visible}.space-view #polyCanvas{position:absolute;inset:0;width:100%;height:100%}.edge-callout{position:absolute;left:21%;top:30%;display:flex;align-items:center;gap:6px;background:rgba(255,255,255,.9);border:1px solid var(--line);border-radius:9px;padding:6px 8px;font:600 9px DM Mono;box-shadow:0 8px 20px rgba(40,44,55,.09);pointer-events:none}.edge-callout span{display:block;width:25px;border-top:2px solid var(--coral);transform:rotate(-28deg)}.net-studio{padding:12px 18px 18px;display:grid;grid-template-columns:minmax(0,1fr) 148px;grid-template-rows:auto 1fr;gap:7px 14px}.net-toolbar{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;padding:2px 4px}.net-toolbar b{display:block;font-size:13px;margin-top:2px}.net-legend{display:flex;gap:12px;font-size:8px;color:var(--muted);font-weight:700}.net-legend span{display:flex;align-items:center;gap:5px}.net-legend i{display:inline-block;width:20px;border-top:2px solid var(--violet)}.net-legend .fold-line{border-top-style:dashed;border-color:#9b95ad}.net-studio svg{width:100%;height:100%;min-height:0;filter:drop-shadow(0 12px 18px rgba(65,58,130,.12))}.net-studio svg polygon,.net-studio svg rect{fill:#ddd9ff;stroke:#574be4;stroke-width:2;stroke-linejoin:round}.net-studio svg .tab{fill:var(--paper);stroke:#9189df;stroke-dasharray:5 4}.net-studio svg .dimension-line{fill:none;stroke:var(--coral);stroke-width:1.5}.net-studio svg .dimension-text{fill:var(--coral);font:600 12px 'DM Mono',monospace}.net-measure{align-self:center;background:var(--paper);border:1px solid var(--line);border-radius:15px;padding:15px}.net-measure span,.net-measure small{display:block;color:var(--muted);font-size:9px;line-height:1.45}.net-measure strong{display:block;font:700 23px DM Mono;color:var(--violet);margin:7px 0}.stage-dock{margin:0 16px 15px;padding:9px 10px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.88);display:flex;align-items:center;gap:10px;position:relative;z-index:3}.dock-group{display:none;flex:1;align-items:center;justify-content:space-between;gap:10px}.dock-group.active{display:flex}.dock-group>span{font-size:9px;color:var(--muted);font-weight:700}.dock-group .round-btn{margin-left:auto}.measure-lab{margin-top:12px;border:1px solid #ccc7ff;background:linear-gradient(145deg,var(--violet-soft),var(--paper));border-radius:15px;padding:13px}.measure-lab>p{font-size:9px;color:var(--muted);margin:7px 0 10px}.measure-inputs{display:grid;grid-template-columns:1fr 1fr 72px;gap:6px}.measure-inputs label span{display:block;font-size:8px;font-weight:800;color:var(--muted);margin:0 0 4px}.measure-inputs input,.measure-inputs select{width:100%;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink);padding:8px;font:600 11px DM Mono;outline:0}.measure-inputs input:focus,.measure-inputs select:focus{border-color:var(--violet);box-shadow:0 0 0 3px rgba(91,79,232,.12)}.growth-note{display:flex;align-items:center;gap:8px;margin:10px 0}.growth-note span{white-space:nowrap;background:var(--lime);color:#27310f;padding:4px 7px;border-radius:12px;font:700 8px DM Mono}.growth-note p{font-size:8px;color:var(--muted);margin:0}.results-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.result-card{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:9px}.result-card>span{display:block;color:var(--muted);font-size:7px;letter-spacing:.5px;font-weight:800}.result-card>strong{display:block;font:700 13px DM Mono;margin:4px 0}.result-card code{font:500 7px DM Mono;color:var(--violet)}.substitution{margin-top:9px;border-top:1px solid var(--line);padding-top:8px}.substitution summary{cursor:pointer;font-size:8px;font-weight:800;color:var(--violet)}.substitution p{font:500 8px/1.55 DM Mono;color:var(--muted);margin:6px 0}.substitution b{color:var(--ink)}
body.dark .view-switch,body.dark .stage-dock,body.dark .edge-callout{background:rgba(25,30,38,.9)}body.dark .dimension-chip{color:#26320e}
.inspector-actions{display:grid;grid-template-columns:1fr 1.45fr;gap:7px;margin-top:12px}.inspector-actions .wide-btn{margin-top:0}.wide-btn.secondary{background:var(--paper-2);color:var(--ink);border:1px solid var(--line)}
.fold-stage{position:relative;min-width:0;min-height:0}.fold-stage canvas,.fold-stage svg{position:absolute;inset:0;width:100%;height:100%}.fold-stage svg{z-index:2;transition:opacity .2s;pointer-events:none}.fold-stage svg.hidden{opacity:0}.fold-stage canvas{z-index:1}.fold-status{position:absolute;left:50%;bottom:7px;transform:translateX(-50%);z-index:3;background:rgba(255,255,255,.9);border:1px solid var(--line);border-radius:20px;padding:5px 9px;font-size:8px;font-weight:800;color:var(--muted);white-space:nowrap}.net-face{fill:#ddd9ff;stroke:none}.face-1{fill:#cec8ff}.face-2{fill:#e9e6ff}.face-3{fill:#c1b9ff}.face-4{fill:#f0eeff}.glue-tab{fill:#fbfaf4;stroke:#9189df;stroke-width:1;stroke-dasharray:3 2}.cut-edge{stroke:#584de1;stroke-width:2.2;stroke-linecap:round}.fold-edge{stroke:#777184;stroke-width:1.5;stroke-dasharray:5 4}.fold-controls{gap:8px}.fold-timeline{flex:1;min-width:130px}.fold-timeline>div{display:flex;align-items:center;justify-content:space-between;font-size:8px;font-weight:800;color:var(--muted)}.fold-timeline strong{font:600 10px DM Mono;color:var(--violet)}.fold-timeline input{width:100%;accent-color:var(--violet)}body.dark .fold-status{background:rgba(25,30,38,.92)}

@media(max-width:1180px){body{overflow:auto}.app-shell{height:auto;min-height:100%;grid-template-rows:64px 52px auto}.workspace{grid-template-columns:210px minmax(0,1fr);align-items:start}.stage{height:650px}.inspector{position:static;grid-column:1/-1;width:auto;transform:none;box-shadow:none;display:grid;grid-template-columns:220px 1fr 1.2fr;gap:12px;overflow:visible}.inspector-title,.info-intro{grid-column:1}.metrics,.facts-grid{grid-column:2}.euler-card{grid-column:1;grid-row:2/4}.measure-lab{grid-column:3;grid-row:1/5;margin-top:0}.inspector-actions{grid-column:1/3}.top-actions .nav-btn{display:inline-block!important}.top-actions .nav-btn:nth-child(1){display:none!important}}
@media(max-width:860px){.app-shell{grid-template-rows:auto auto auto}.workspace{grid-template-columns:1fr}.catalog{display:block;max-height:none;padding:12px}.panel-head{align-items:center}.solid-list{display:flex;flex-direction:row;overflow-x:auto;margin:9px 0 0;padding:0}.solid-card{min-width:160px}.learning-path{display:none}.stage{height:620px}.stage-actions{align-items:flex-end;flex-direction:column}.dimension-chip{display:none}.stage-banner{padding:12px 13px 0}.view-switch button{padding:7px 8px}.net-studio{grid-template-columns:1fr;padding:9px}.net-measure{position:absolute;right:12px;bottom:12px;width:135px;padding:10px;background:rgba(255,255,255,.92)}.inspector{grid-column:auto;display:block;padding:15px}.inspector-title,.info-intro,.metrics,.facts-grid,.euler-card,.measure-lab,.inspector-actions{grid-column:auto;grid-row:auto}.top-actions .nav-btn[data-open="workshop"],.top-actions .nav-btn[data-open="challenge"]{display:none!important}.toolstrip{justify-content:flex-start}.view-tools{margin-left:auto}}
@media(max-width:560px){.stage{height:560px}.stage h1{font-size:19px}.view-switch{position:absolute;left:13px;top:60px;z-index:4}.canvas-wrap{margin-top:36px}.tool-btn{padding:7px 9px}.family-tabs{overflow:auto}.measure-inputs{grid-template-columns:1fr 1fr}.measure-inputs label:last-child{grid-column:1/-1}.results-grid{grid-template-columns:1fr 1fr}.net-studio{grid-template-rows:auto 1fr}.net-measure{right:8px;bottom:8px;width:122px}.edge-callout{left:8%;top:27%}.nav-btn[data-scroll="measureLab"]{display:none!important}}
@media(max-width:560px){.fold-controls .ghost-btn:last-of-type{display:none}.fold-controls .ghost-btn{padding:8px}.fold-status{bottom:4px}.net-measure{display:none}}
.fold-stage canvas{transition:opacity .16s ease}.fold-stage canvas.hidden-at-flat{opacity:0}

/* v3: responsive workspace, readable mathematics and larger manipulable models */
body{overflow-x:hidden}.topbar,.toolstrip{padding-inline:clamp(14px,2.2vw,30px)}.toolstrip{gap:20px}.family-tabs,.view-tools{gap:9px}.family-tab,.tool-btn{padding:8px 14px}.workspace{grid-template-columns:minmax(225px,255px) minmax(560px,1fr) minmax(320px,350px);gap:14px;padding:14px;max-width:1800px;margin-inline:auto}.stage{min-height:620px}.stage-banner{padding:20px 22px 0}.stage h1{font-size:clamp(24px,2vw,32px)}.canvas-hint{font-size:10px;padding:7px 11px}.edge-callout{left:20px;top:18px;background:rgba(22,28,38,.94);border-color:rgba(255,255,255,.12);color:#fff;padding:8px 11px;font-size:11px;box-shadow:0 10px 28px rgba(16,20,30,.2)}.edge-callout span{border-color:var(--lime);width:31px}.axis-cube{right:20px;top:18px}.solid-list{scrollbar-width:thin}.result-card{padding:11px;min-height:105px;display:flex;flex-direction:column;justify-content:space-between}.result-card>span{font-size:8px}.result-card>strong{font-size:17px;line-height:1.25;margin:7px 0 4px}.result-card>strong small{font:600 .72em DM Mono;color:var(--muted)}.math-formula{min-height:34px;display:grid;place-items:center;background:color-mix(in srgb,var(--violet-soft) 72%,transparent);border-radius:8px;padding:6px;color:var(--violet);overflow:hidden}.math-formula .katex{font-size:1.08em}.substitution p{font-size:10px;line-height:1.65}.fold-stage canvas{touch-action:none;cursor:grab}.fold-stage canvas:active{cursor:grabbing}.fold-orbit-hint{position:absolute;right:12px;top:10px;z-index:3;padding:6px 9px;border-radius:20px;background:rgba(22,28,38,.88);color:#fff;font-size:8px;font-weight:700;opacity:0;transition:opacity .18s;pointer-events:none}#foldCanvas:not(.hidden-at-flat)~.fold-orbit-hint{opacity:1}.net-measure strong{font-size:26px}

@media (min-width:721px) and (max-width:1180px){
  body{overflow:auto}.app-shell{height:auto;min-height:100%;grid-template-rows:64px auto auto}.workspace{grid-template-columns:minmax(0,1fr);padding:14px 18px 24px}.catalog{display:grid;grid-template-columns:180px 1fr;gap:12px 18px;padding:16px}.catalog .panel-head{align-items:center}.solid-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0;padding:0;overflow:visible}.solid-card{min-width:0}.learning-path{display:none}.stage{height:720px;min-height:720px}.inspector{position:static;display:grid;grid-template-columns:minmax(230px,.85fr) minmax(300px,1fr);gap:14px;width:auto;transform:none;box-shadow:none;overflow:visible}.inspector-title,.info-intro,.metrics,.facts-grid,.euler-card,.measure-lab,.inspector-actions{grid-column:auto;grid-row:auto}.inspector-title{grid-column:1}.info-intro{grid-column:1}.metrics{grid-column:2;grid-row:1}.euler-card{grid-column:1;grid-row:3/5}.facts-grid{grid-column:2;grid-row:2}.measure-lab{grid-column:2;grid-row:3/7;margin-top:0}.inspector-actions{grid-column:1;align-self:end}.top-actions .nav-btn{display:inline-block!important}.top-actions .nav-btn[data-open="theory"]{display:none!important}
}

@media (max-width:720px){
  body{overflow:auto}.app-shell{height:auto;min-height:100%;grid-template-rows:auto auto auto}.topbar{min-height:62px;padding:10px 14px}.brand-mark{width:34px;height:34px}.brand small{display:none}.top-actions{gap:5px}.top-actions .nav-btn:not(.primary){display:none!important}.nav-btn.primary{padding:8px 10px}.toolstrip{display:grid;grid-template-columns:1fr;align-items:stretch;padding:10px 14px;gap:9px;overflow:visible}.family-tabs,.view-tools{display:grid;width:100%;gap:7px}.family-tabs{grid-template-columns:repeat(3,minmax(0,1fr));padding:4px;background:var(--paper-2);border:1px solid var(--line);border-radius:13px}.view-tools{grid-template-columns:repeat(4,minmax(0,1fr))}.family-tab,.tool-btn{min-width:0;padding:9px 5px;font-size:10px;text-align:center}.tool-btn span{display:none}.workspace{display:grid;grid-template-columns:minmax(0,1fr);padding:9px;gap:10px}.catalog{display:block;padding:14px}.solid-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:12px 0 0;padding:0;overflow:visible}.solid-card{min-width:0;padding:9px 8px;gap:8px}.solid-icon{width:34px;height:34px;flex:0 0 34px}.solid-copy b{font-size:11px}.solid-copy small{font-size:8px}.learning-path{display:none}.stage{height:680px;min-height:680px}.stage-banner{padding:14px 14px 0;gap:10px;flex-wrap:wrap}.stage h1{font-size:24px}.stage-actions{width:100%;align-items:stretch;flex-direction:row}.dimension-chip{display:none}.view-switch{position:static;display:grid;grid-template-columns:1fr 1fr;flex:1}.view-switch button{padding:9px 7px}.canvas-wrap{margin-top:0}.edge-callout{left:12px;top:12px;font-size:10px}.axis-cube{right:12px;top:12px}.canvas-hint{bottom:8px;max-width:calc(100% - 24px);white-space:normal;text-align:center}.stage-dock{margin:0 10px 10px;padding:8px}.dock-group>span{max-width:190px}.net-studio{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);padding:10px}.net-toolbar{gap:10px}.net-measure{display:none}.fold-orbit-hint{right:7px;top:7px;max-width:190px;text-align:center}.fold-controls{gap:7px}.fold-controls .ghost-btn{padding:8px 9px}.inspector{position:static;display:block;width:auto;transform:none;box-shadow:none;padding:15px;overflow:visible}.measure-inputs{grid-template-columns:1fr 1fr 82px}.results-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.result-card{min-height:112px}.math-formula .katex{font-size:1em}.inspector-actions{grid-template-columns:1fr 1fr}.modal{width:min(94vw,760px);padding:20px}.full-modal{height:min(88vh,760px)}.theory-layout{grid-template-columns:1fr}.theory-nav{flex-direction:row;overflow:auto;border-right:0;border-bottom:1px solid var(--line);padding:0 0 10px}.theory-nav button{white-space:nowrap}
}

@media (max-width:460px){
  .workspace{padding:7px}.catalog{padding:13px}.solid-list{grid-template-columns:1fr}.solid-card{padding:8px 10px}.panel-head h2{font-size:15px}.stage{height:650px;min-height:650px}.stage-actions{flex-direction:column}.view-switch{width:100%}.net-legend{gap:7px}.net-toolbar b{font-size:12px}.fold-controls .ghost-btn{font-size:0;width:38px;padding:0}.fold-controls .ghost-btn:before{content:'⇄';font-size:17px}.fold-controls .ghost-btn:last-of-type{display:none}.fold-timeline{min-width:0}.dock-group>span{font-size:8px}.measure-inputs{grid-template-columns:1fr 1fr}.measure-inputs label:last-child{grid-column:1/-1}.results-grid{grid-template-columns:1fr 1fr;gap:7px}.result-card{padding:9px;min-height:108px}.result-card>strong{font-size:15px}.math-formula{padding:5px}.math-formula .katex{font-size:.9em}.inspector-actions{grid-template-columns:1fr}.top-actions .icon-btn{width:34px;height:34px}
}

/* visual QA corrections */
.math-formula .katex-display{margin:0}.result-card>span{font-size:12px}
@media (min-width:1181px){.workspace{width:calc(100% - 28px)}}
@media (min-width:721px) and (max-width:1180px){.workspace{width:auto;margin-inline:0}}
.math-formula .katex{font-size:1.25em}

/* Keep application typography outside KaTeX's mathematical layout. */
.result-card>span{display:block;color:var(--muted);font-size:12px;line-height:1.5;font-weight:800}
.results-grid{grid-template-columns:minmax(0,1fr);gap:12px}
.result-card{min-width:0;min-height:0;gap:8px;padding:16px;justify-content:flex-start}
.result-card>strong{font-size:24px;margin:0;line-height:1.5}
.math-formula{display:block;min-height:64px;padding:16px 10px;overflow-x:auto;overflow-y:hidden;font-size:17px;line-height:normal}
.math-formula .katex-display{margin:0;text-align:center}
.euler-rule{padding:16px 8px 12px;text-align:center}
.euler-rule>strong{font:700 24px/1.4 'DM Mono',monospace;color:var(--violet)}
.euler-rule p{font-size:13px;line-height:1.6;margin:7px 0}
.euler-rule small{display:block;font-size:12px;line-height:1.6;color:var(--muted)}
.substitution{padding-top:18px;margin-top:20px}
.substitution summary{font-size:15px;line-height:1.6}
#substitutionSteps{display:grid;gap:12px;margin-top:14px}
.calculation-step{padding:14px;background:var(--paper);border:1px solid var(--line);border-radius:12px;min-width:0}
.calculation-step h3{display:flex;align-items:center;gap:8px;font-size:14px;line-height:1.5;margin:0}
.calculation-step h3>span{display:grid;place-items:center;flex:0 0 26px;height:26px;background:var(--violet-soft);color:var(--violet);border-radius:50%;font-size:12px}
.substitution .calculation-step p{font:400 13px/1.6 Manrope,sans-serif;margin:10px 0;color:var(--muted)}
.step-math{font-size:16px;overflow-x:auto;padding:12px 0;color:var(--ink)}
.step-math .katex-display{margin:0;text-align:left}
.measure-lab>p,.growth-note p{font-size:12px;line-height:1.6}
.measure-inputs label span{font-size:12px}.measure-inputs input,.measure-inputs select{font-size:14px}
.facts-grid span{font-size:10px}.facts-grid b{font-size:13px}.info-intro{font-size:13px}
@media(min-width:1600px){.results-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Physical page previews and tiled templates. */
.workshop-modal{width:min(1000px,96vw);max-width:1000px}
#workshopSvg{display:none!important}
.print-options{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:20px}
.print-options label{display:flex;flex-direction:column;gap:7px;font-size:13px;font-weight:700;min-width:0}
.print-options label[hidden]{display:none}
.print-options select,.print-options input{width:100%;padding:10px;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--ink);font:inherit}
.print-summary{padding:12px;background:var(--violet-soft);border-radius:10px;font-size:14px;font-weight:700;line-height:1.6}
.print-instructions,.assembly-help,.print-warning{font-size:13px;line-height:1.7}
.assembly-help{border-left:3px solid #be5900;padding:10px 14px;background:#fff5e8;color:#6d390c}
.print-warning{padding:12px;background:#fff0ed;color:#9c3429;border-radius:9px}
button:disabled{opacity:.45;cursor:not-allowed}
.print-preview{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;padding:16px;background:var(--paper-2);border:1px solid var(--line);border-radius:12px;margin:18px 0}
.print-preview .print-page{width:100%!important;height:auto!important;box-shadow:0 3px 15px #0002;background:white;overflow:hidden}
.print-preview[data-pages="1"] .print-page{max-width:440px;margin-inline:auto}
.print-preview .print-sheet{display:block;width:100%;height:auto}
#printPages{display:none}
@media(max-width:860px){.top-actions .nav-btn[data-open="workshop"]{display:inline-block!important;font-size:0;padding:8px}.top-actions .nav-btn[data-open="workshop"] span{font-size:18px;margin:0}}
@media(max-width:600px){.print-options{grid-template-columns:1fr}.workshop-hero h2{font-size:19px}.print-preview{padding:8px;grid-template-columns:1fr}}
@media print{
  html,body{height:auto!important;width:auto!important;margin:0!important;padding:0!important;background:white!important;overflow:visible!important}
  body>*:not(#printPages),#workshopDialog[open]{display:none!important}
  #printPages{display:block!important;margin:0;padding:0}
  .print-page{display:block;position:relative;margin:0;padding:0;overflow:hidden;break-inside:avoid;break-after:page;page-break-after:always}
  .print-page:last-child{break-after:auto;page-break-after:auto}
  .print-sheet{display:block;width:100%;height:100%;print-color-adjust:exact;-webkit-print-color-adjust:exact}
}

/* v5: direct-manipulation 2D net explorer */
.fold-stage svg{pointer-events:auto;touch-action:none;cursor:grab;overflow:visible}.fold-stage svg:active{cursor:grabbing}.fold-stage svg.rotate-mode{cursor:ew-resize}.fold-stage svg.rotate-mode:active{cursor:grabbing}.net-feature-bar{position:absolute;left:9px;top:9px;z-index:4;display:grid;gap:6px}.net-feature-bar button{width:66px;display:grid;grid-template-columns:24px 1fr;align-items:center;gap:4px;border:1px solid var(--line);border-radius:10px;padding:5px 6px;background:rgba(255,255,255,.9);color:var(--muted);cursor:pointer;box-shadow:0 5px 15px rgba(32,37,50,.06)}.net-feature-bar button b{display:grid;place-items:center;width:24px;height:24px;border-radius:7px;background:var(--paper-2);font:700 10px DM Mono}.net-feature-bar button span{font-size:7px;font-weight:800;text-align:left}.net-feature-bar button.active{border-color:#bdb6ff;color:var(--violet);background:rgba(242,240,255,.94)}.net-feature-bar button.active b{background:var(--violet);color:#fff}.net-nav-controls{position:absolute;right:9px;bottom:34px;z-index:4;display:flex;gap:4px;padding:4px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.92);box-shadow:0 8px 22px rgba(30,35,48,.09)}.net-nav-controls button{min-width:31px;height:31px;border:0;border-radius:8px;padding:0 8px;background:transparent;color:var(--ink);font-size:16px;font-weight:800;cursor:pointer}.net-nav-controls .interaction-mode{font:800 9px Manrope;display:flex;align-items:center;gap:4px}.net-nav-controls .interaction-mode span{font-size:14px}.net-nav-controls button:hover,.net-nav-controls .interaction-mode.active{background:var(--violet-soft);color:var(--violet)}.net-measure-callout{position:absolute;right:12px;top:48px;z-index:4;display:flex;align-items:center;gap:8px;padding:7px 9px;border:1px solid #ffc2b5;border-radius:11px;background:rgba(255,255,255,.93);box-shadow:0 6px 18px rgba(43,47,61,.08);pointer-events:none;transition:.16s}.net-measure-callout>span{width:28px;border-top:4px solid var(--coral);border-radius:3px}.net-measure-callout small,.net-measure-callout strong{display:block}.net-measure-callout small{font:800 6px Manrope;letter-spacing:.7px;color:var(--muted)}.net-measure-callout strong{font:800 10px DM Mono;color:var(--coral);margin-top:2px}.net-measure-callout.hidden{opacity:0;visibility:hidden}.vertex-marker{fill:var(--lime);stroke:#23284a;stroke-width:1.5;vector-effect:non-scaling-stroke;cursor:pointer;transition:.15s}.net-face,.cut-edge,.fold-edge{transition:opacity .15s,filter .15s,stroke .15s;cursor:pointer}.net-face:hover,.net-face.selected{filter:brightness(1.08);stroke:var(--coral)!important;stroke-width:2!important}.cut-edge:hover,.fold-edge:hover,.cut-edge.selected,.fold-edge.selected{stroke:var(--coral);stroke-width:4}.vertex-marker:hover,.vertex-marker.selected{fill:var(--coral);r:5}.hide-faces .net-face{opacity:.2}.hide-vertices .vertex-marker{opacity:0;pointer-events:none}.hide-edges .cut-edge,.hide-edges .fold-edge{opacity:0;pointer-events:none}#netSvg:not(.hide-measure) .measure-edge{stroke:var(--coral)!important;stroke-width:4!important;filter:drop-shadow(0 0 3px rgba(255,107,87,.5))}.fold-stage svg.hidden{pointer-events:none}.fold-stage svg.hidden~.net-nav-controls,.fold-stage svg.hidden~.net-measure-callout{opacity:0;pointer-events:none}.fold-status{max-width:min(72%,430px);overflow:hidden;text-overflow:ellipsis;text-align:center}.fold-orbit-hint{top:10px;right:10px}.net-studio svg .vertex-marker{stroke-linejoin:round}.workshop-preview .vertex-marker{display:none}body.dark .net-feature-bar button,body.dark .net-nav-controls,body.dark .net-measure-callout{background:rgba(25,30,38,.94)}

@media(max-width:720px){.net-feature-bar{left:7px;top:7px;display:flex;gap:4px}.net-feature-bar button{width:auto;min-width:56px;grid-template-columns:20px 1fr;padding:4px}.net-feature-bar button b{width:20px;height:20px;font-size:8px}.net-feature-bar button span{font-size:6px}.net-nav-controls{right:7px;bottom:31px}.net-nav-controls button{height:29px;padding-inline:6px}.net-measure-callout{right:7px;top:42px}.fold-status{bottom:3px;max-width:84%}}
@media(max-width:420px){.net-feature-bar button{min-width:0}.net-feature-bar button span{display:none}.net-feature-bar button b{width:24px}.net-nav-controls button{height:28px;font-size:14px;padding-inline:5px}.net-nav-controls .interaction-mode{font-size:0;gap:0}.net-nav-controls .interaction-mode span{font-size:14px}.net-measure-callout{top:39px;padding:5px 7px}.net-measure-callout>span{width:19px}.net-measure-callout small{display:none}}
/* Dedicated sidebar: every control stays outside the drawing surface. */
.app-shell[hidden],.workshop-page[hidden]{display:none!important}
.net-studio{grid-template-columns:186px minmax(0,1fr);grid-template-rows:minmax(0,1fr);gap:16px;padding:16px}
.net-sidebar{display:flex;flex-direction:column;gap:14px;min-width:0;min-height:0;overflow:auto;padding:14px 12px;border:1px solid var(--line);border-radius:14px;background:var(--paper)}
.net-sidebar .net-toolbar{display:flex;flex-direction:column;align-items:flex-start;gap:12px;grid-column:auto;padding:0}
.net-sidebar .net-toolbar b{font-size:14px;line-height:1.5}
.net-sidebar .net-legend{font-size:10px;gap:12px;flex-wrap:wrap}
.net-sidebar .net-feature-bar{position:static;display:grid;grid-template-columns:1fr 1fr;gap:6px}
.net-sidebar .net-feature-bar button{width:100%;min-width:0;grid-template-columns:24px 1fr;padding:6px 4px;gap:4px;box-shadow:none}
.net-sidebar .net-feature-bar button b{width:24px;height:24px;font-size:10px}
.net-sidebar .net-feature-bar button span{display:block;font-size:9px}
.net-sidebar .net-measure-callout{position:static;display:flex;order:0;box-shadow:none;padding:10px 8px;gap:7px;flex-shrink:0;opacity:1}
.net-sidebar .net-measure-callout.hidden{display:none}
.net-sidebar .net-measure-callout>span{width:20px;flex-shrink:0}
.net-sidebar .net-measure-callout small{display:block;font-size:8px;letter-spacing:.4px}
.net-sidebar .net-measure-callout strong{font-size:16px;margin-top:4px}
.net-sidebar .net-nav-controls{position:static;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:5px;padding:0;border:0;background:transparent;box-shadow:none}
.net-sidebar .net-nav-controls button{grid-column:span 2;width:auto;min-width:0;height:36px;padding:4px;border:1px solid var(--line);font-size:16px;order:1}
.net-sidebar .net-nav-controls .interaction-mode{grid-column:span 3;order:0;display:flex;align-items:center;justify-content:center;font-size:11px;gap:4px}
.net-sidebar #netReset{font-size:10px}
.net-gesture-help{margin:0;color:var(--muted);font-size:11px;line-height:1.6}
.net-status{border-top:1px solid var(--line);padding-top:12px;margin-top:auto}
.net-status .eyebrow{font-size:9px}
.net-sidebar .fold-status{position:static;transform:none;max-width:none;margin:7px 0 0;padding:0;border:0;border-radius:0;background:transparent;white-space:normal;text-align:left;text-overflow:clip;overflow:visible;font-size:12px;line-height:1.6;font-weight:600}
.net-studio .fold-stage{grid-column:2;grid-row:1;overflow:hidden;min-width:0;border-radius:12px}
@media(max-width:720px){
 .net-studio{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);gap:10px;padding:10px}
 .net-sidebar{display:grid;grid-template-columns:1fr 1fr;gap:9px 12px;padding:11px;overflow:visible}
 .net-sidebar .net-toolbar{grid-column:1/-1;flex-direction:row;align-items:center;justify-content:space-between;gap:8px}
 .net-sidebar .net-toolbar b{font-size:13px}
 .net-sidebar .net-feature-bar{grid-column:1;grid-row:2}
 .net-sidebar .net-measure-callout{grid-column:2;grid-row:2;align-self:stretch}
 .net-sidebar .net-nav-controls{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:6px}
 .net-sidebar .net-nav-controls button{height:34px;flex:1;order:0}
 .net-sidebar .net-nav-controls .interaction-mode{font-size:11px;flex:1.4}
 .net-sidebar .net-gesture-help{display:none}
 .net-status{grid-column:1/-1;margin:0;padding-top:8px;min-height:43px}
 .net-status .eyebrow{display:none}
 .net-sidebar .fold-status{font-size:11px;margin:0}
 .net-studio .fold-stage{grid-column:1;grid-row:2}
 .stage:has(#view2d.active){height:790px;min-height:790px}
}
.workshop-route{overflow:auto}
.workshop-page{min-height:100vh;padding:24px clamp(14px,4vw,60px) 40px;background:var(--bg)}
.workshop-page-header{display:flex;align-items:center;justify-content:space-between;gap:20px;max-width:1200px;margin:0 auto 24px}
.workshop-page-content{max-width:1200px;margin:auto;padding:clamp(18px,3vw,36px);border:1px solid var(--line);border-radius:18px;background:var(--paper)}
.workshop-page .workshop-hero h2{font-size:clamp(22px,3vw,32px)}
.workshop-page .workshop-hero p{font-size:14px;line-height:1.7}
.workshop-page footer{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:10px;border-top:1px solid var(--line);padding-top:20px;margin-top:20px}
.workshop-page .print-preview[data-pages="1"] .print-page{max-width:500px}
@media(max-width:600px){.workshop-page-header{align-items:flex-start;flex-direction:column;gap:12px}.workshop-page .print-preview{padding:8px}.workshop-page footer button{flex:1}}
@media print{.workshop-page{display:none!important}.app-shell{display:none!important}}
/* Full-page navigation for every learning resource. */
.resource-page[hidden]{display:none!important}
.resource-route{overflow:auto}
.nav-btn{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}
.resource-page{min-height:100vh;padding:24px clamp(14px,4vw,60px) 48px;background:var(--bg)}
.resource-header{max-width:1200px;margin:0 auto 24px}
.resource-navigation{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-bottom:22px;border-bottom:1px solid var(--line)}
.back-link{color:var(--ink);text-decoration:none;font-size:13px;font-weight:800;white-space:nowrap}
.back-link:hover{color:var(--violet)}
.resource-navigation nav{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}
.resource-navigation nav a{padding:9px 12px;border-radius:9px;color:var(--muted);text-decoration:none;font-size:13px;font-weight:700}
.resource-navigation nav a:hover{background:var(--paper)}
.resource-navigation nav a[aria-current="page"]{background:var(--ink);color:var(--paper)}
.resource-heading{padding-top:26px}
.resource-heading h1{font-size:clamp(26px,3.5vw,40px);line-height:1.25;letter-spacing:-1px;margin:8px 0 0;outline:none}
.resource-content{max-width:1200px;margin:0 auto;padding:clamp(20px,3vw,36px);background:var(--paper);border:1px solid var(--line);border-radius:18px}
.resource-content footer{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;margin-top:28px;padding-top:20px;border-top:1px solid var(--line)}
.resource-content .modal-label{font-size:12px}
.guide-page-content,.challenge-page-content{max-width:900px}
.guide-page-content .guide-copy h2{font-size:clamp(22px,3vw,30px)}
.guide-page-content .guide-copy p{font-size:16px;line-height:1.8}
.guide-page-content .guide-grid b{font-size:15px}
.guide-page-content .guide-grid p{font-size:14px;line-height:1.7}
.guide-page-content .guide-grid div{padding:22px}
.guide-page-content .progress-steps{margin:20px 0 30px}
.theory-page-content .theory-layout{height:auto;grid-template-columns:220px minmax(0,1fr);gap:28px;align-items:start}
.theory-page-content .theory-nav{position:sticky;top:20px}
.theory-nav a{display:block;padding:12px 10px;border-radius:10px;font-size:14px;font-weight:700;line-height:1.5;text-decoration:none;color:var(--ink)}
.theory-nav a.active{background:var(--violet-soft);color:var(--violet)}
.theory-page-content .theory-content{overflow:visible;padding:0;min-width:0}
.theory-page-content .theory-content h2{font-size:clamp(23px,3vw,32px);line-height:1.35;margin:12px 0}
.theory-page-content .theory-content h3{font-size:20px;margin-top:28px}
.theory-page-content .theory-content p,.theory-page-content .theory-content li{font-size:16px;line-height:1.8}
.theory-page-content .concept-card{padding:26px}
.theory-page-content .compare-table{font-size:14px}
.theory-page-content .compare-table th{font-size:12px}
.theory-page-content .compare-table th,.theory-page-content .compare-table td{padding:12px 8px;line-height:1.6}
.challenge-page-content .challenge-title{font-size:28px}
.challenge-page-content .challenge-clue{padding:24px}
.challenge-page-content .challenge-clue p{font-size:20px;line-height:1.7}
.challenge-page-content .challenge-clue span{font-size:12px}
.challenge-page-content .answer-btn{font-size:16px;padding:18px}
.challenge-page-content .feedback{font-size:15px;line-height:1.7;margin:20px 0}
.measure-page-intro{font-size:16px;line-height:1.8;margin:0 0 20px;color:var(--muted)}
.measure-page-content .measure-lab{margin:0;padding:24px}
.measure-page-content .results-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.measure-page-content #substitutionSteps{grid-template-columns:repeat(2,minmax(0,1fr))}
.measure-page-content .measure-inputs{max-width:640px}
.measure-page-content .section-title{font-size:12px}
.top-actions .nav-btn[data-open]{display:inline-flex!important}
@media(max-width:860px){
 .resource-navigation{align-items:flex-start;flex-direction:column;gap:16px}
 .resource-navigation nav{justify-content:flex-start}
 .theory-page-content .theory-layout{grid-template-columns:minmax(0,1fr)}
 .theory-page-content .theory-nav{position:static;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible;border:0;padding:0;gap:6px}
 .theory-page-content .theory-nav a{white-space:normal}
}
@media(max-width:720px){
 .topbar{flex-wrap:wrap;padding-block:12px;gap:14px}
 .topbar .brand{width:calc(100% - 44px)}
 .top-actions{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;width:100%}
 .top-actions .icon-btn{position:absolute;right:14px;top:12px}
 .top-actions .nav-btn[data-open]{font-size:11px;padding:9px 3px;gap:3px;min-width:0;white-space:nowrap}
 .top-actions .nav-btn[data-open] span{display:none}
 .top-actions .nav-btn em{font-size:8px;padding:2px 3px}
 .resource-content{padding:18px}
 .resource-navigation nav{gap:3px}
 .resource-navigation nav a{font-size:12px;padding:9px}
 .resource-heading{padding-top:20px}
 .resource-content .guide-hero{flex-direction:column}
 .resource-content .guide-grid{grid-template-columns:1fr}
 .measure-page-content #substitutionSteps{grid-template-columns:1fr}
 .measure-page-content .measure-lab{padding:13px}
 .theory-page-content .concept-card{padding:18px}
 .theory-page-content .theory-content p,.theory-page-content .theory-content li{font-size:15px}
 .theory-page-content .compare-table{font-size:12px;overflow-wrap:anywhere}
 .theory-page-content .visual-equation{font-size:20px;padding:16px 8px}
 .challenge-page-content .answers{grid-template-columns:1fr}
}
@media(max-width:460px){.measure-page-content .results-grid{grid-template-columns:minmax(0,1fr)}}
@media print{.resource-page{display:none!important}}
/* Compact controls beside each canvas, with no full-width dock. */
.stage{grid-template-rows:auto minmax(0,1fr)}
#view3d{display:grid;grid-template-columns:150px minmax(0,1fr);gap:14px;padding:16px}
.solid-viewport{position:relative;min-width:0;min-height:0;overflow:hidden}
.solid-sidebar{align-self:start;min-width:0;display:flex;flex-direction:column;gap:12px;padding:13px;border:1px solid var(--line);border-radius:14px;background:var(--paper)}
.solid-sidebar .eyebrow{font-size:10px}
.solid-controls{display:flex;justify-content:space-between;gap:6px}
.solid-controls .round-btn{width:34px;height:34px;flex:0 0 34px;font-size:16px}
.solid-sidebar .edge-callout{position:static;display:flex;flex-wrap:wrap;transform:none;padding:8px;font-size:10px;box-shadow:none;border-radius:8px}
.solid-sidebar .edge-callout span{width:20px}
.solid-sidebar .canvas-hint{position:static;transform:none;white-space:normal;max-width:none;margin:0;padding:0;background:transparent;color:var(--muted);font-size:11px;line-height:1.65;text-align:left;border-radius:0}
.net-sidebar{align-self:start;max-height:100%;gap:10px}
.net-status{margin-top:0;padding-top:10px}
.net-sidebar .net-nav-controls{flex-shrink:0}
.net-fold-controls{display:grid;gap:9px;border-top:1px solid var(--line);padding-top:12px}
.net-fold-controls>.eyebrow{font-size:9px}
.fold-toggle{display:flex;align-items:center;justify-content:center;gap:10px;min-height:38px;width:100%;border:0;border-radius:10px;background:var(--ink);color:var(--paper);font:800 12px Manrope,sans-serif;cursor:pointer}
.fold-toggle:hover{background:var(--violet);color:white}
.net-fold-controls .fold-timeline{min-width:0}
.net-fold-controls .fold-timeline>div{font-size:10px}
.net-fold-controls .fold-timeline input{height:6px;margin:9px 0 5px}
.net-export-controls{display:flex;align-items:center;gap:7px}
.net-export-controls .ghost-btn{flex:1;padding:8px}
.net-export-controls .round-btn{height:34px;width:34px}
@media(max-width:720px){
 #view3d{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);gap:10px;padding:10px}
 .solid-sidebar{display:grid;grid-template-columns:auto 1fr auto;gap:9px 12px;align-items:center;padding:10px 12px}
 .solid-sidebar>.eyebrow{grid-column:1}
 .solid-sidebar .solid-controls{grid-column:3}
 .solid-sidebar .edge-callout{grid-column:2;grid-row:1;justify-self:center;font-size:10px}
 .solid-sidebar .canvas-hint{grid-column:1/-1;font-size:11px;line-height:1.6}
 .solid-viewport{grid-column:1;grid-row:2}
 .solid-controls .round-btn{height:30px;width:30px;flex-basis:30px}
 .net-sidebar{max-height:none;gap:9px 12px}
 .net-fold-controls{grid-column:1/-1;grid-template-columns:120px minmax(0,1fr);gap:8px 12px;padding-top:9px}
 .net-fold-controls>.eyebrow{grid-column:1/-1}
 .net-fold-controls .fold-timeline{align-self:center}
 .net-export-controls{grid-column:1;align-self:start}
 .net-status{grid-column:2;align-self:start;min-height:0;border-top:0;padding:0}
 .net-sidebar .fold-status{font-size:10px;line-height:1.6}
}
@media(max-width:380px){
 .solid-sidebar{grid-template-columns:1fr auto}
 .solid-sidebar .solid-controls{grid-column:2}
 .solid-sidebar .edge-callout{grid-column:1;grid-row:2;justify-self:start}
 .solid-sidebar .canvas-hint{grid-column:2;grid-row:2;font-size:10px}
}

/* Collapsible tool panels and geometry linked to the solid. */
.stage-actions{flex-wrap:wrap;align-items:center;justify-content:flex-end}
.panel-toggle{padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--ink);font:700 11px Manrope,sans-serif;cursor:pointer}
.panel-toggle:hover{background:var(--violet-soft);color:var(--violet)}
#solidPanel[hidden],#netPanel[hidden],.insight-readout[hidden],#nextInsight[hidden]{display:none!important}
#view3d{grid-template-columns:200px minmax(0,1fr)}
.solid-sidebar{max-height:100%;overflow:auto}
#view3d.panel-collapsed,#view2d.panel-collapsed{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}
.panel-collapsed .solid-viewport,.panel-collapsed .fold-stage{grid-column:1!important;grid-row:1!important}
.geometry-insights{display:grid;gap:6px}
.geometry-insights button{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:9px;border:1px solid var(--line);border-radius:9px;background:var(--paper-2);color:var(--ink);cursor:pointer;text-align:left}
.geometry-insights button span{font-size:10px;line-height:1.4;color:var(--muted)}
.geometry-insights button b{font:700 14px/1.4 'DM Mono',monospace;overflow-wrap:anywhere}
.geometry-insights button.active,[data-insight].active{background:var(--violet-soft);border-color:var(--violet);color:var(--violet)}
.insight-readout{padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--paper-2)}
.insight-readout strong{font-size:13px;line-height:1.5}
.insight-readout p{font-size:11px;line-height:1.65;margin:8px 0 0;color:var(--muted)}
.net-insights{grid-template-columns:1fr}
.net-insights button{flex-direction:row;justify-content:space-between;align-items:center;padding:7px;gap:6px}
.net-insights button b{font-size:11px;text-align:right}
.net-sidebar [data-insight="diagonals"]{color:var(--violet)}
@media(max-width:720px){
 #view3d{grid-template-columns:minmax(0,1fr)}
 .stage-actions{flex-direction:row!important}
 .stage-actions .view-switch{flex:1;width:auto}
 .stage-actions .panel-toggle{flex:0 0 auto;font-size:10px;padding:9px 7px}
 .solid-sidebar .geometry-insights{grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr))}
 .solid-sidebar .geometry-insights button{padding:7px}
 .solid-sidebar .geometry-insights button span{font-size:9px}
 .solid-sidebar .geometry-insights button b{font-size:12px}
 .solid-sidebar .insight-readout,.solid-sidebar #nextInsight{grid-column:1/-1}
 .net-insights{grid-column:1/-1;grid-row:3;grid-template-columns:1fr 1fr}
 .net-insights button{flex-direction:column;align-items:flex-start}
 .net-sidebar .net-feature-bar button span{font-size:8px}
 .stage:has(#view3d.active){height:740px;min-height:740px}
 .stage:has(#view3d.active.panel-collapsed){height:650px;min-height:650px}
}

/* Contextual learning footer: review, guided practice, immediate feedback. */
.inspector .learning-next{display:block;grid-column:1/-1;grid-row:auto;margin-top:20px;padding-top:20px;border-top:1px solid var(--line);min-width:0}
.learning-next>header h2{font-size:19px;line-height:1.4;margin:6px 0}
.learning-next>header p{font-size:13px;line-height:1.7;margin:0 0 14px;color:var(--muted)}
.learning-links{display:grid;gap:10px}
.learning-link{display:block;padding:15px;border:1px solid var(--line);border-radius:13px;background:var(--paper-2);color:var(--ink);text-decoration:none;transition:background .15s,border-color .15s}
.learning-link:hover,.learning-link:focus-visible{background:var(--violet-soft);border-color:var(--violet)}
.learning-link-label{display:block;font-size:10px;font-weight:800;letter-spacing:.7px;color:var(--violet);line-height:1.6}
.learning-link>strong{display:block;font-size:15px;line-height:1.5;margin:6px 0}
.learning-link p{font-size:12px;line-height:1.7;margin:0 0 10px;color:var(--muted)}
.learning-link-action{display:block;font-size:12px;font-weight:800;color:var(--violet)}
.quick-check{padding:16px;border:1px solid #c9c3ff;border-radius:13px;background:var(--violet-soft);margin-top:12px;min-width:0}
.quick-check h3{margin:6px 0 10px;font-size:16px}
.quick-check>p,.quick-check-tools p{font-size:13px;line-height:1.7;margin:8px 0 14px}
.quick-check>label{display:block;margin-bottom:7px;font-size:12px;font-weight:800}
.quick-answer-row{display:flex;align-items:stretch;gap:7px}
.quick-answer-row input{min-width:0;flex:1;width:100%;padding:10px;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--ink);font:600 15px 'DM Mono',monospace}
.quick-answer-row input:focus{outline:2px solid var(--violet);outline-offset:2px}
.quick-answer-row button{padding:10px;font-size:12px}
.quick-feedback:empty{display:none}
.quick-check .quick-feedback{padding:10px;border-radius:8px;margin:12px 0 0;font-size:13px;line-height:1.7}
.quick-feedback.correct{background:#e5f8f0;color:#126c50}
.quick-feedback.retry{background:#fff4e6;color:#7f4608}
.quick-check-tools{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-top:12px}
.quick-check-tools details{min-width:0;flex:1}
.quick-check-tools summary{font-size:12px;font-weight:700;cursor:pointer}
.quick-check-tools .copy-btn{padding:0;font-size:11px;line-height:1.7;white-space:nowrap}
.context-example{margin-top:28px;padding:24px;border:1px solid #c9c3ff;border-radius:14px;background:var(--violet-soft)}
.theory-page-content .context-example h3{margin-top:8px}
.context-numbers{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}
.context-numbers>span{display:flex;gap:6px;align-items:center;padding:9px 12px;border:1px solid var(--line);background:var(--paper);border-radius:9px;font-size:13px}
.context-numbers b{font:700 18px 'DM Mono',monospace;color:var(--violet)}
.theory-page-content .context-reference{font-size:13px;margin:14px 0;line-height:1.7}
.challenge-scope{display:grid;gap:8px;margin:18px 0 24px;padding:16px;background:var(--paper-2);border:1px solid var(--line);border-radius:12px}
.challenge-scope label{font-size:14px;font-weight:800}
.challenge-scope select{padding:11px;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--ink);font:inherit;max-width:100%}
.challenge-scope p{font-size:12px;line-height:1.7;margin:0;color:var(--muted)}
@media(max-width:600px){.context-example{padding:16px}.context-example .primary-btn{width:100%;line-height:1.6}}
@media(min-width:721px) and (max-width:1180px){.inspector .learning-next{display:grid;grid-template-columns:1fr 1fr;gap:14px}.learning-next>header{grid-column:1/-1}.learning-next>header p{margin-bottom:0}.learning-next .quick-check{margin-top:0;align-self:start}}

/* Size blocks from their content instead of stretching a narrow grid column. */
body{overflow:auto}
.app-shell{height:auto;min-height:100%;grid-template-rows:64px 52px auto}
.workspace{align-items:start;min-width:0}
.catalog,.inspector{height:auto;min-height:0;overflow:visible}
.inspector{display:block;position:static;width:auto;transform:none;box-shadow:none;grid-column:auto}
.inspector-overview{min-width:0}
.inspector .learning-next{display:block}
.measure-lab{min-width:0;padding:0;overflow:visible}
.measure-lab>summary{padding:15px;cursor:pointer;font-size:15px;font-weight:800;line-height:1.6;color:var(--violet)}
.measure-lab>summary>span{font-size:10px;color:var(--muted);font-weight:600;margin-left:5px}
.measure-content{padding:0 14px 16px;min-width:0}
.measure-content>p{font-size:13px;line-height:1.7;color:var(--muted)}
.measure-lab:not([open])>.measure-content{display:none}
.stage{height:auto!important;min-height:0!important;grid-template-rows:auto minmax(0,1fr);container:visualizer / inline-size;overflow:visible}
.stage-banner{flex-wrap:wrap;gap:10px;padding-bottom:10px}
.stage-actions{max-width:100%}
.stage-banner .panel-toggle{min-height:34px;flex-shrink:0}
.canvas-wrap{min-height:560px;margin-top:0}
.space-view{display:none!important;position:relative;inset:auto}
.space-view.active{display:grid!important}
.net-studio,#view3d{grid-template-rows:auto;align-items:start;min-height:560px}
.net-studio:not(.panel-collapsed){grid-template-columns:220px minmax(0,1fr)}
.net-sidebar,.solid-sidebar{overflow:visible;max-height:none;min-width:0;width:100%;height:auto}
.net-sidebar .net-feature-bar{grid-template-columns:repeat(2,minmax(0,1fr))}
.net-sidebar .net-feature-bar button{min-width:0;grid-template-columns:24px minmax(0,1fr);gap:3px}
.net-sidebar .net-feature-bar button span{overflow-wrap:anywhere;white-space:normal;font-size:9px}
.geometry-insights button{min-width:0;overflow-wrap:anywhere}
.net-studio .fold-stage,.solid-viewport{height:600px;min-height:440px;max-width:100%;min-width:0}
.net-studio.panel-collapsed .fold-stage,#view3d.panel-collapsed .solid-viewport{height:640px}
.measure-page-content .measure-lab{padding:0}
.measure-page-content .measure-content{padding:0 22px 22px}
@media(max-width:1180px){
 .inspector{grid-column:1/-1;display:block}
 .inspector-overview{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}
 .inspector-overview .inspector-title,.inspector-overview .info-intro{grid-column:1/-1;margin:0}
 .inspector-overview .metrics,.inspector-overview .facts-grid,.inspector-overview .euler-card{grid-column:auto;grid-row:auto;margin:0}
 .inspector-overview .euler-card{grid-column:2;grid-row:3/5}
 .inspector .results-grid,.inspector #substitutionSteps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
 .inspector .learning-next{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}
 .inspector .learning-next>header{grid-column:1/-1}
 .inspector .learning-next .quick-check{margin:0}
}
@media(max-width:720px){
 .app-shell{grid-template-rows:auto auto auto}
 .inspector-overview{display:block}
 .inspector-overview .info-intro{margin:12px 0}
 .inspector-overview .euler-card,.inspector-overview .facts-grid{margin-top:14px}
 .inspector .results-grid,.inspector #substitutionSteps,.inspector .learning-next{grid-template-columns:minmax(0,1fr)}
 .inspector .learning-next{gap:12px}
 .viewer-tools{padding:8px 12px}
 .viewer-tools>span{font-size:10px}
 .stage-actions{width:100%}
}
@container visualizer (max-width:620px){
 .net-studio,#view3d,.net-studio:not(.panel-collapsed){grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto;padding:10px;gap:12px}
 .net-studio .net-sidebar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:12px}
 .net-sidebar .net-toolbar{grid-column:1/-1;display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:10px}
 .net-sidebar .net-feature-bar{grid-column:1;grid-row:auto}
 .net-sidebar .net-measure-callout{grid-column:2;grid-row:2;min-width:0;padding:9px}
 .net-sidebar .net-nav-controls{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:6px}
 .net-sidebar .net-nav-controls button{flex:1;min-width:38px}
 .net-sidebar .net-nav-controls .interaction-mode{flex:1.4}
 .net-sidebar .net-insights{grid-column:1/-1;grid-row:auto;grid-template-columns:repeat(2,minmax(0,1fr))}
 .net-sidebar .net-insights button{flex-direction:column;align-items:flex-start;gap:5px}
 .net-sidebar .net-fold-controls{grid-column:1/-1;grid-template-columns:110px minmax(0,1fr);gap:8px 12px}
 .net-fold-controls>.eyebrow{grid-column:1/-1}
 .net-sidebar .net-export-controls{grid-column:1}
 .net-sidebar .net-status{grid-column:2;margin:0;border:0;padding:0;min-height:0}
 .net-studio .fold-stage,#view3d .solid-viewport{grid-column:1;grid-row:2;height:500px;min-height:400px}
 .solid-sidebar{display:flex;flex-direction:column;padding:12px}
 .solid-sidebar .solid-controls{justify-content:flex-start}
 .solid-sidebar .geometry-insights{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%}
 .solid-sidebar .canvas-hint{font-size:11px}
 .panel-collapsed .fold-stage,.panel-collapsed .solid-viewport{grid-row:1!important}
}
@media print{body{overflow:visible}.viewer-tools{display:none}}

.length-explorer{display:grid;gap:7px;padding-top:12px;border-top:1px solid var(--line);min-width:0;width:100%}
.length-explorer label{font-size:11px;font-weight:800;color:var(--muted)}
.length-explorer select{width:100%;min-width:0;padding:9px 5px;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink);font:600 11px Manrope,sans-serif}
.length-explorer button{display:flex;flex-direction:column;gap:5px;align-items:flex-start;padding:9px;border:1px solid var(--line);border-radius:9px;background:var(--paper-2);color:var(--ink);cursor:pointer;text-align:left;min-width:0}
.length-explorer button>span:first-child{font:700 14px/1.5 'DM Mono',monospace;overflow-wrap:anywhere}
.length-explorer button>span:last-child{font-size:10px;color:var(--muted)}
.length-explorer button.active{border-color:var(--violet);background:var(--violet-soft)}
@container visualizer (max-width:620px){.solid-sidebar .length-explorer{grid-column:1/-1}.solid-sidebar .geometry-insights{grid-template-columns:repeat(2,minmax(0,1fr))}}

.geometry-derivation{border-top:1px solid var(--line);margin-top:14px;padding-top:12px;min-width:0}
.geometry-derivation summary{font-size:12px;font-weight:800;cursor:pointer;color:var(--violet);line-height:1.6}
.geometry-derivation>a{display:block;margin-top:12px;color:var(--violet);font-size:12px;font-weight:700;line-height:1.6}
.geometry-math{max-width:100%;min-width:0;overflow-x:auto;padding:12px 2px;font-size:14px;line-height:normal}
.geometry-math .katex-display{margin:0;text-align:left}
.geometry-math .katex{font-size:1.1em}
.known-data{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:14px;margin:12px 0 16px;min-width:0}
.known-data>summary{font-size:14px;font-weight:800;color:var(--violet);cursor:pointer}
#knownDataForm{display:grid;gap:9px;margin-top:14px;min-width:0}
#knownDataForm>label{font-size:12px;font-weight:800}
#knownDataForm select{width:100%;min-width:0;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--ink);padding:10px;font:inherit;font-size:12px}
#knownDataForm p{font-size:12px;line-height:1.7;margin:0;color:var(--muted)}
#knownFeedback:empty{display:none}
#knownDataForm #knownFeedback{padding:10px;border-radius:9px;background:var(--paper-2);color:var(--ink)}
#knownDataForm #knownFeedback[data-state="error"]{background:#fff0ed;color:#96362a}
#knownDataForm #knownFeedback[data-state="success"]{background:#e5f8f0;color:#126c50}
.measure-page-content #knownDataForm{grid-template-columns:minmax(0,1fr);gap:12px;align-items:start}
.measure-page-content #knownDataForm>label,.measure-page-content #knownRequirement,.measure-page-content #knownFormula,.measure-page-content #knownFeedback{grid-column:1/-1}
.measure-page-content #knownDataForm .quick-answer-row{grid-column:1/-1}
@media(max-width:600px){.measure-page-content #knownDataForm{grid-template-columns:1fr}}
.formula-library{border-top:1px solid var(--line);margin-top:18px;padding-top:16px;min-width:0}
.formula-library>summary{font-size:14px;font-weight:800;line-height:1.7;color:var(--violet);cursor:pointer}
.formula-library>label{display:block;font-size:12px;margin:14px 0 7px;font-weight:700}
.formula-library>select{width:100%;min-width:0;padding:10px;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--ink);font:inherit;font-size:12px}
#formulaTopicContent p{font-size:13px;line-height:1.8;color:var(--muted)}
.measure-page-content .geometry-math{font-size:17px}
.catalog #familyCount{display:block;margin-top:7px;color:var(--muted);font-size:12px}
.catalog-explanation,.prism-config p{font-size:13px;line-height:1.6;color:var(--muted)}
.prism-config{padding:14px;border:1px solid var(--line);border-radius:12px;margin:12px 0}
.prism-config[hidden]{display:none}
.prism-config label{display:block;margin-bottom:10px;font-weight:600;font-size:14px}
.prism-config input{min-width:0;width:100%;font-size:16px}
.dual-explorer{border-top:1px solid var(--line);padding-top:12px;font-size:13px;line-height:1.6}
.dual-explorer summary{cursor:pointer;font-weight:700}.dual-explorer label{display:flex;align-items:center;gap:8px}.dual-explorer input{width:18px;height:18px}
.glossary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:24px}
.glossary-term{padding:22px;border:1px solid var(--line);border-radius:14px;background:var(--paper);scroll-margin-top:30px}
.glossary-term h2{font-size:21px;line-height:1.4;margin:0 0 12px}.glossary-term p{font-size:16px;line-height:1.8}.glossary-term:target{border-color:var(--accent)}
#glossarySearch{display:block;max-width:540px;width:100%;font-size:17px;padding:14px;margin-top:10px;border:1px solid var(--line);border-radius:10px}
@media(max-width:650px){.glossary-grid{grid-template-columns:minmax(0,1fr)}}

/* Compact collection and calculator: use rows before adding height. */
.precision-note{font-size:11px!important;line-height:1.6!important;margin:5px 0 10px;color:var(--muted)}
.precision-control select{padding-inline:5px}
.measure-entry-row{display:grid;grid-template-columns:minmax(0,1fr) 82px;align-items:start;gap:10px;max-width:760px;margin:10px 0 14px}
.measure-entry-row>.known-data{margin:0;padding:10px;max-width:100%}
.measure-entry-row>.measure-inputs{display:flex;flex-direction:column;align-items:stretch;gap:12px;padding-top:4px}
.measure-entry-row>.measure-inputs label,.measure-entry-row>.measure-inputs label:last-child{flex:none;width:82px;max-width:100%}
.measure-entry-row .known-data>summary{font-size:13px}
@container calculator (max-width:460px){
 .measure-entry-row #knownDataForm .quick-answer-row{grid-template-columns:minmax(0,1fr)}
 .measure-entry-row #knownDataForm .quick-answer-row input{max-width:120px}
 .measure-entry-row #knownDataForm button{justify-self:start}
 .measure-entry-row #knownDataForm,.measure-page-content .measure-entry-row #knownDataForm{grid-template-columns:minmax(0,1fr)}
}
@container calculator (max-width:220px){.measure-entry-row{grid-template-columns:minmax(0,1fr)}.measure-entry-row>.measure-inputs{flex-direction:row;flex-wrap:wrap}}
.workspace{grid-template-columns:minmax(0,1fr) minmax(320px,350px)}
.workspace>.catalog{grid-column:1/-1;display:block;padding:14px 18px}
.workspace>.stage{grid-column:1}
.workspace>.inspector{grid-column:2}
.catalog .panel-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px 20px}
.catalog .panel-head>div{display:flex;align-items:center;flex-wrap:wrap;gap:6px 12px}
.catalog .panel-head h2{margin:0;font-size:16px}
.catalog #familyCount{margin:0;font-size:12px;white-space:nowrap}
.catalog-explanation{margin:0;font-size:12px;line-height:1.5}
.catalog .solid-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:8px;margin:12px 0 0;padding:0;overflow:visible}
.catalog .solid-card{min-width:0;padding:8px 10px}
.catalog .learning-path{display:none}
.catalog .prism-config:not([hidden]){display:flex;align-items:center;flex-wrap:wrap;gap:8px 16px;padding:10px;margin:10px 0 0}
.catalog .prism-config label,.catalog .prism-config p{margin:0}
.catalog .prism-config .quick-answer-row{grid-template-columns:80px auto;flex:0 0 auto}
.catalog .prism-config p{flex:1 1 260px;font-size:12px}
.catalog #prismConfigError:empty{display:none}
.measure-content{container:calculator / inline-size}
.known-data{max-width:660px;padding:12px;margin:10px 0 14px}
#knownDataForm,.measure-page-content #knownDataForm{grid-template-columns:minmax(0,1fr);gap:10px;margin-top:10px;align-items:end}
.known-field{display:grid;gap:5px;min-width:0}
.known-field label{font-size:12px;font-weight:800;line-height:1.5}
#knownDataForm .known-quantity{width:300px;max-width:100%}
#knownDataForm .known-value{width:230px;max-width:100%}
#knownDataForm .quick-answer-row{display:grid;grid-template-columns:minmax(0,120px) max-content;gap:8px;min-width:0;grid-column:auto}
#knownDataForm .quick-answer-row input{width:100%;min-width:0}
#knownDataForm select{padding:9px;min-height:40px}
#knownDataForm button{padding:9px 13px;min-height:40px}
.known-help,#knownFeedback{grid-column:1/-1;min-width:0}
.known-help>summary{font-size:12px;line-height:1.6;cursor:pointer;color:var(--violet)}
#knownDataForm .known-help p{margin-top:8px}
.measure-inputs,.measure-page-content .measure-inputs{display:flex;flex-wrap:wrap;align-items:end;gap:10px 14px;max-width:100%}
.measure-inputs label{flex:0 0 105px;min-width:0;max-width:100%}
.measure-inputs label:last-child{flex-basis:80px}
.measure-inputs input,.measure-inputs select{min-height:39px}
@container calculator (min-width:500px){
 #knownDataForm,.measure-page-content #knownDataForm{grid-template-columns:minmax(0,300px) minmax(0,230px);gap:10px 16px;justify-content:start}
}
@media(max-width:1180px){.workspace{grid-template-columns:minmax(0,1fr)}.workspace>.stage,.workspace>.inspector{grid-column:1}}
@media(max-width:600px){
 .workspace>.catalog{padding:12px}
 .catalog .solid-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
 .catalog .solid-card{padding:8px 6px;gap:6px}
 .catalog .solid-icon{width:28px;height:28px;flex-basis:28px;font-size:19px}
 .catalog .solid-copy b{font-size:11px}.catalog .card-arrow{display:none}
 .catalog .panel-head>div{gap:5px 9px}
}

#knownDataForm .known-value{width:300px}
.calculation-actions{display:flex;align-items:end;gap:6px;min-width:0}
#knownDataForm .calculation-actions button{padding-inline:9px;flex:0 0 auto}
.calculation-actions .precision-control{display:grid;gap:4px;width:60px;flex:0 0 60px;min-width:0}
.calculation-actions .precision-control span{font-size:10px;font-weight:700}
#knownDataForm .precision-control select{padding:8px 4px;width:60px;min-height:40px}
#knownDataForm .quick-answer-row{align-items:end}
@container calculator (max-width:600px){
 .measure-entry-row #knownDataForm .quick-answer-row{grid-template-columns:minmax(0,1fr)}
 .measure-entry-row #knownDataForm .calculation-actions{justify-content:flex-start}
}

/* Legible classroom typography and a value-first calculator. */
:root{--reading-scale:1;--reading-font:Manrope,system-ui,sans-serif}
body{font-family:var(--reading-font)}
body :is(button,input,select,textarea),.solid-copy,.resource-page{font-family:var(--reading-font)}
@media(min-width:1181px){.workspace{grid-template-columns:minmax(0,1fr) minmax(390px,430px)}}
#knownDataForm,.measure-page-content #knownDataForm{display:flex;flex-wrap:wrap;align-items:end;gap:12px 16px}
#knownDataForm .known-quantity{width:fit-content;max-width:100%;flex:0 1 auto}
#knownQuantity{width:var(--selected-width,180px)!important;max-width:100%;font-size:calc(14px * var(--reading-scale))!important}
#knownDataForm .known-value{flex:1 1 230px;width:auto;max-width:100%}
#knownDataForm .known-help,#knownDataForm #knownFeedback{flex:0 0 100%;max-width:100%}
#knownDataForm .quick-answer-row{grid-template-columns:minmax(0,1fr) max-content;width:100%}
#knownValue{font-size:calc(20px * var(--reading-scale))!important;min-height:48px;padding:10px 8px;font-variant-numeric:tabular-nums;appearance:textfield}
#knownValue::-webkit-inner-spin-button,#knownValue::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.measure-entry-row #knownDataForm .quick-answer-row input{max-width:none}
.precision-note{font-size:calc(15px * var(--reading-scale))!important;line-height:1.7!important;color:var(--ink);margin:12px 0}
.growth-note{flex-wrap:wrap;gap:8px 12px}
.growth-note #growthBadge{font-size:calc(16px * var(--reading-scale));padding:7px 10px}
.growth-note p{font-size:calc(14px * var(--reading-scale));line-height:1.6}
.measure-content>p,.resource-content>p,#knownDataForm p,.geometry-derivation p,#formulaTopicContent p,.canvas-hint,.catalog-explanation,.info-intro,.dual-explorer p{font-size:calc(15px * var(--reading-scale))!important;line-height:1.7}
.known-field label,.measure-inputs label span,.known-help>summary,.known-data>summary,.length-explorer label,.facts-grid :is(dt,dd),.geometry-insights button span{font-size:calc(13px * var(--reading-scale))!important;line-height:1.5}
.calculation-actions .precision-control span{font-size:calc(11px * var(--reading-scale))!important}
#knownDataForm button,.measure-inputs :is(input,select),.calculation-actions select,.family-tab,.tool-btn,.nav-btn,.solid-copy b{font-size:calc(14px * var(--reading-scale))!important}
.solid-copy small,.eyebrow,.result-card>span{font-size:calc(12px * var(--reading-scale))!important}
.result-card>strong{font-size:calc(26px * var(--reading-scale))!important;overflow-wrap:anywhere}
.geometry-math,.step-math,.math-formula{font-size:calc(18px * var(--reading-scale))!important}
.geometry-insights b,.length-explorer button>span:first-child{font-size:calc(17px * var(--reading-scale))!important}
.resource-content :is(p,li,td),.glossary-term p,.appearance-page p{font-size:calc(16px * var(--reading-scale))!important;line-height:1.8}
.appearance-link{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;font-weight:800;color:var(--ink);flex-shrink:0}
.appearance-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin:24px 0}
.appearance-options label{display:grid;gap:8px;font-size:calc(16px * var(--reading-scale));font-weight:700;min-width:0}
.appearance-options select{width:100%;min-width:0;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink);font-size:calc(16px * var(--reading-scale))}
.appearance-preview{border:1px solid var(--accent-line,var(--line));background:var(--violet-soft);border-radius:14px;padding:22px;margin:24px 0}
.appearance-preview h2{font-size:calc(24px * var(--reading-scale));margin-top:0}
.appearance-page>a{display:inline-block;margin:20px 0}
body.dark :is(.topbar,.toolstrip){background:var(--paper)}
body.dark #knownDataForm #knownFeedback[data-state="success"]{background:#173c30;color:#c4f5df}
@container calculator (max-width:600px){.measure-entry-row #knownDataForm .quick-answer-row{grid-template-columns:minmax(0,1fr)}}
@container calculator (max-width:360px){
 .high-precision .measure-entry-row,html[data-reading-size="classroom"] .measure-entry-row,html[data-reading-size="large"] .measure-entry-row{grid-template-columns:minmax(0,1fr)}
 .high-precision .measure-entry-row>.measure-inputs,html[data-reading-size="classroom"] .measure-entry-row>.measure-inputs,html[data-reading-size="large"] .measure-entry-row>.measure-inputs{flex-direction:row;flex-wrap:wrap;order:-1}
}
@media(max-width:600px){.appearance-options{grid-template-columns:minmax(0,1fr)}.top-actions{flex-wrap:wrap}.topbar{flex-wrap:wrap;gap:10px}}
@media print{:root{--reading-scale:1}.appearance-link{display:none}}
.app-shell{min-width:0;grid-template-columns:minmax(0,1fr)}
.topbar,.toolstrip,.top-actions,.family-tabs,.view-tools{min-width:0}
.topbar,.toolstrip{flex-wrap:wrap;height:auto}
.topbar{gap:10px;padding-block:12px}
.top-actions,.view-tools,.family-tabs{flex-wrap:wrap}
.toolstrip{padding-block:10px}
html[data-reading-size="classroom"] .app-shell,html[data-reading-size="large"] .app-shell{grid-template-rows:auto auto auto}
.appearance-link{font-size:16px!important}
.high-precision #knownDataForm .quick-answer-row{grid-template-columns:minmax(0,1fr)}
.high-precision #knownDataForm .known-value{flex-basis:320px}
html[data-reading-size="classroom"] #knownDataForm .quick-answer-row,html[data-reading-size="large"] #knownDataForm .quick-answer-row{grid-template-columns:minmax(0,1fr)}
.net-sidebar .net-measure-callout{display:flex;flex-direction:column;align-items:stretch;gap:10px;padding:14px;max-width:100%}
.net-sidebar .net-measure-callout small{font-size:calc(12px * var(--reading-scale));line-height:1.5;letter-spacing:.3px}
.net-edge-reference{display:flex;align-items:center;flex-wrap:wrap;gap:10px 14px;min-width:0}
.net-edge-reference>span{display:block;flex:1 1 75px;min-width:65px;max-width:130px;border-top:5px solid var(--coral);border-radius:5px}
.net-sidebar .net-edge-reference strong{font-size:calc(20px * var(--reading-scale));line-height:1.5;margin:0;overflow-wrap:anywhere}
.family-tab{white-space:normal;overflow-wrap:normal;line-height:1.5;min-height:42px}
.catalog .solid-list{grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr))}
.solid-copy :is(b,small){white-space:normal;overflow-wrap:break-word;line-height:1.5}
.calculation-actions .precision-control{width:calc(60px * var(--reading-scale));flex-basis:calc(60px * var(--reading-scale))}
#knownDataForm .precision-control select{width:100%}
@media(max-width:390px){.family-tabs{grid-template-columns:minmax(0,1fr)}.catalog .solid-list{grid-template-columns:minmax(0,1fr)}}
@container calculator (max-width:290px){
 .measure-entry-row{grid-template-columns:minmax(0,1fr)}
 .measure-entry-row>.measure-inputs{flex-direction:row;flex-wrap:wrap;order:-1}
}
@media(min-width:391px) and (max-width:600px){.catalog .solid-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
html[data-reading-size="classroom"] .catalog .solid-list{grid-template-columns:repeat(auto-fit,minmax(min(100%,235px),1fr))}
html[data-reading-size="classroom"] .family-tabs{display:flex;flex-wrap:wrap}
html[data-reading-size="classroom"] .family-tab{flex:1 1 160px}
@container visualizer (max-width:620px){
 .net-sidebar .net-feature-bar{grid-column:1/-1;grid-row:auto;grid-template-columns:repeat(2,minmax(0,1fr))}
 .net-sidebar .net-feature-bar button{grid-template-columns:30px minmax(0,1fr);padding:8px;gap:8px}
 .net-sidebar .net-feature-bar button b{width:30px;height:30px;font-size:calc(13px * var(--reading-scale))}
 .net-sidebar .net-feature-bar button span{font-size:calc(12px * var(--reading-scale));overflow-wrap:normal;word-break:normal}
 .net-sidebar .net-measure-callout{grid-column:1/-1;grid-row:auto;flex-direction:row;flex-wrap:wrap;align-items:center;gap:10px 18px}
 .net-edge-reference{flex:1 1 160px}
 .net-sidebar .net-status{grid-column:1/-1;grid-row:auto}
 .net-sidebar .net-export-controls{grid-column:1/-1}
 .net-sidebar .net-nav-controls button{min-height:40px;font-size:13px!important;flex:1 1 65px}
 .net-sidebar .net-nav-controls .interaction-mode{gap:5px}
 .net-sidebar .net-nav-controls .interaction-mode span{font-size:16px}
 .net-sidebar .net-nav-controls{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:7px}
 .net-sidebar .net-nav-controls button{grid-column:span 2;order:1;width:100%;padding:6px;white-space:normal}
 .net-sidebar .net-nav-controls .interaction-mode{grid-column:span 3;order:0;font-size:calc(13px * var(--reading-scale))!important;justify-content:center}
}
@container visualizer (max-width:400px){
 html[data-reading-size="classroom"] .net-sidebar .net-feature-bar button{grid-template-columns:minmax(0,1fr);justify-items:start}
 html[data-reading-size="classroom"] .net-sidebar .net-insights{grid-template-columns:minmax(0,1fr)}
 html[data-reading-size="classroom"] .solid-sidebar .geometry-insights{grid-template-columns:minmax(0,1fr)}
}
.net-sidebar .net-insights button{flex-direction:column;align-items:flex-start}
.geometry-insights button b{white-space:normal;overflow-wrap:normal;word-break:normal}
.net-sidebar .net-insights button b,.net-sidebar .net-edge-reference strong{white-space:nowrap}
html[data-reading-size="classroom"] .net-studio:not(.panel-collapsed){grid-template-columns:270px minmax(0,1fr)}
@container visualizer (max-width:620px){html[data-reading-size="classroom"] .net-studio:not(.panel-collapsed){grid-template-columns:minmax(0,1fr)}}
.polar-lab{border:1px solid var(--line);border-radius:16px;padding:clamp(12px,2vw,24px);margin:24px 0;background:var(--paper);min-width:0}
.polar-pairs{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0}.polar-pairs span{padding:10px 14px;border:1px solid var(--accent-line,var(--line));border-radius:12px;background:var(--violet-soft);font-weight:700}
.polar-controls{display:flex;flex-wrap:wrap;align-items:end;gap:12px 20px;margin:15px 0}
.polar-controls label{display:flex;align-items:center;flex-wrap:wrap;gap:7px;font-size:calc(14px * var(--reading-scale));min-width:0}
.polar-controls label:first-child{display:grid}
.polar-lab select{font:inherit;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:9px;min-height:42px;padding:8px;max-width:100%;min-width:0}
.polar-controls input[type="checkbox"]{width:20px;height:20px;accent-color:var(--violet);flex-shrink:0}
.polar-viewport{height:clamp(330px,50vw,520px);position:relative;border:1px solid var(--line);border-radius:12px;background:var(--paper-2);min-width:0;margin:16px 0;overflow:hidden;touch-action:none}
.polar-viewport canvas{display:block;width:100%;height:100%;touch-action:none;cursor:grab}
.polar-viewport canvas:active{cursor:grabbing}
.polar-note{padding:14px;border-left:4px solid var(--violet);background:var(--violet-soft);line-height:1.7}
.polar-note[hidden]{display:none}
.polar-angle-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:18px}
.polar-angle-cards section{padding:12px;border:1px solid var(--line);border-radius:12px;min-width:0}
.polar-angle-cards .selected{border:2px solid var(--violet);background:var(--violet-soft)}
.polar-angle-cards h4{font-size:calc(17px * var(--reading-scale));margin:0 0 10px}
.polar-angle-cards p{margin:6px 0;font-size:calc(14px * var(--reading-scale))!important;overflow-wrap:break-word}
.polar-lab>input[type="range"]{width:100%;margin:16px 0;accent-color:var(--violet)}
#dihedralDiagram svg{display:block;width:100%;max-width:560px;height:auto;margin:auto;background:var(--paper-2);border-radius:12px}
#dihedralDiagram text{fill:var(--ink);font:600 17px var(--reading-font)}
.source-note{border-top:1px solid var(--line);padding-top:14px;font-size:14px!important}
@media(max-width:900px){.polar-angle-cards{grid-template-columns:minmax(0,1fr)}}
@media(max-width:600px){.polar-controls{align-items:stretch;flex-direction:column}.polar-controls select,.polar-controls button{width:100%}.polar-viewport{height:350px}.polar-lab .geometry-math{font-size:16px!important}}

/* Calculations are content, not narrow viewer controls. */
#solidExplanation[hidden]{display:none!important}
#solidExplanation{grid-column:1/-1;grid-row:2;min-width:0;width:100%;padding:clamp(14px,2vw,24px);border:1px solid var(--line);border-radius:14px;background:var(--paper)}
#solidExplanation .insight-readout{padding:0;margin:0;border:0;background:transparent;min-width:0;width:100%}
#solidExplanation .insight-readout>strong{display:block;font-size:calc(21px * var(--reading-scale));line-height:1.5}
#solidExplanation .insight-readout>p{font-size:calc(16px * var(--reading-scale));line-height:1.8;max-width:85ch}
#solidExplanation .geometry-derivation{width:100%}
#solidExplanation .geometry-derivation summary{font-size:calc(16px * var(--reading-scale))}
#solidExplanation .geometry-math{padding:16px 0}
#solidExplanation #nextInsight{margin-top:16px;font-size:calc(14px * var(--reading-scale));max-width:100%;white-space:normal;min-height:42px}
#view3d{grid-template-rows:auto auto;align-items:start}
#view3d .solid-viewport{grid-column:2;grid-row:1;height:clamp(400px,65vh,620px);min-height:0;position:relative}
#view3d.panel-collapsed .solid-viewport{grid-column:1;grid-row:1}
#view3d .solid-sidebar{grid-column:1;grid-row:1}
@container visualizer (max-width:1000px){
 #view3d{grid-template-columns:minmax(0,1fr);padding:12px;gap:12px}
 #view3d .solid-sidebar{grid-column:1;grid-row:1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:12px}
 #view3d .solid-sidebar>.eyebrow{grid-column:1;grid-row:1}
 #view3d .solid-sidebar .solid-controls{grid-column:2;grid-row:1;justify-content:flex-end;flex-wrap:wrap}
 #view3d .solid-sidebar .edge-callout{grid-column:1/-1;grid-row:auto;justify-self:stretch}
 #view3d .solid-sidebar .geometry-insights{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
 #view3d .solid-sidebar .length-explorer,#view3d .solid-sidebar .dual-explorer,#view3d .solid-sidebar .canvas-hint{grid-column:1/-1}
 #view3d .solid-viewport{grid-column:1;grid-row:2;height:clamp(320px,60vh,520px)}
 #solidExplanation{grid-column:1;grid-row:3}
 #view3d.panel-collapsed .solid-viewport{grid-row:1}
}
@container visualizer (min-width:621px) and (max-width:1000px){
 #view3d .solid-sidebar .geometry-insights{grid-template-columns:repeat(4,minmax(0,1fr))}
 #view3d .solid-sidebar .length-explorer{grid-column:1}
 #view3d .solid-sidebar .dual-explorer{grid-column:2}
}
@container visualizer (max-width:380px){
 html[data-reading-size="classroom"] #view3d .solid-sidebar .geometry-insights{grid-template-columns:minmax(0,1fr)}
 #solidExplanation .geometry-math{font-size:17px!important}
}
.workspace>#measureLab,.workspace>.learning-next{grid-column:1/-1;min-width:0;width:100%;margin:0}
.workspace>#measureLab>.measure-content{padding:0 clamp(14px,2vw,24px) 24px}
.workspace>#measureLab .results-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:14px}
.workspace>#measureLab #substitutionSteps{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:14px}
.workspace>.learning-next{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;align-items:start;padding:22px;border:1px solid var(--line);border-radius:16px;background:var(--paper)}
.workspace>.learning-next>header{grid-column:1/-1}
.workspace>.learning-next .quick-check{margin:0}
@media(max-width:650px){.workspace>.learning-next{grid-template-columns:minmax(0,1fr);padding:14px}}
.workspace>.stage,.workspace>.inspector{grid-row:2}
.workspace>#solidExplanation{grid-column:1/-1;grid-row:auto}
@media(max-width:1180px){.workspace>.inspector{grid-row:auto}}
#solidExplanation [data-formula-mode="dihedral"][open]{display:block}
#solidExplanation [data-formula-mode="dihedral"]>.formula-body{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:12px 20px}
#solidExplanation [data-formula-mode="dihedral"]>.formula-body>:is(p,a){grid-column:1/-1}
#solidExplanation [data-formula-mode="dihedral"] .geometry-math{padding:14px 8px;border-radius:10px;background:var(--paper-2)}
.geometry-derivation .formula-body>a{display:block;margin-top:12px;color:var(--violet);font-size:14px;font-weight:700;line-height:1.6}

/* One placement contract: no inherited row spans from the former inspector. */
.workspace{grid-template-areas:"collection collection" "visualizer overview" "explanation explanation" "calculator calculator" "practice practice";grid-template-rows:repeat(5,max-content);grid-auto-rows:max-content;align-content:start}
.workspace>.catalog{grid-area:collection}
.workspace>.stage{grid-area:visualizer}
.workspace>.inspector{grid-area:overview}
.workspace>#solidExplanation{grid-area:explanation}
.workspace>#measureLab{grid-area:calculator}
.workspace>.learning-next{grid-area:practice}
.workspace:has(>#solidExplanation[hidden]){grid-template-areas:"collection collection" "visualizer overview" "calculator calculator" "practice practice";grid-template-rows:repeat(4,max-content)}
#laboratorio:fullscreen{height:100dvh;width:100%;max-width:none;margin:0;overflow:auto;background:var(--bg);padding:16px;box-sizing:border-box;align-content:start}
@media(max-width:1180px){
 .workspace{grid-template-areas:"collection" "visualizer" "explanation" "overview" "calculator" "practice";grid-template-rows:repeat(6,max-content)}
 .workspace:has(>#solidExplanation[hidden]){grid-template-areas:"collection" "visualizer" "overview" "calculator" "practice";grid-template-rows:repeat(5,max-content)}
}
.solid-controls{flex-wrap:wrap;justify-content:flex-start}
.solid-controls .round-btn{min-height:38px;width:38px;flex-basis:38px}
.solid-sidebar .solid-controls{grid-column:1/-1!important;grid-row:auto!important}
.solid-sidebar .edge-callout{grid-row:auto!important}
.polar-zoom{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.polar-zoom button{min-height:42px;white-space:normal;font-size:calc(14px * var(--reading-scale))}
.polar-zoom output{min-width:55px;font-size:calc(14px * var(--reading-scale));font-weight:700}
#view3d .solid-sidebar{align-content:start;align-items:start}
#view3d .solid-sidebar .length-explorer{align-content:start;align-self:start}
#view3d .solid-sidebar .length-explorer select{min-height:42px;height:auto}
#view3d .solid-sidebar .length-explorer button{min-height:56px;height:auto}

/* The model owns the main viewing area; secondary tools live below it. */
#view3d{grid-template-columns:190px minmax(0,1fr);grid-template-rows:auto auto;gap:14px;padding:14px;align-items:start}
#view3d .solid-sidebar{grid-column:1;grid-row:1;display:flex;flex-direction:column;gap:12px;padding:12px;align-self:start}
#view3d .solid-sidebar .geometry-insights{display:grid;grid-template-columns:minmax(0,1fr);width:100%}
#view3d .solid-sidebar .solid-controls{display:flex;justify-content:flex-start;gap:6px}
#view3d .solid-sidebar .solid-controls .round-btn{width:32px;flex-basis:32px;min-height:36px;height:36px}
#view3d .solid-viewport{grid-column:2;grid-row:1;height:clamp(540px,76vh,800px);min-height:540px}
#view3d .solid-secondary{grid-column:1/-1;grid-row:2;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 24px;padding:16px;border:1px solid var(--line);border-radius:12px;background:var(--paper);min-width:0}
#solidSecondary[hidden]{display:none!important}
.solid-secondary .length-explorer{padding:0;border:0;align-content:start}
.solid-secondary .dual-explorer{padding:0;border:0;min-width:0}
.solid-secondary .canvas-hint{grid-column:1/-1;position:static;transform:none;margin:0;padding:0;background:transparent;color:var(--muted);text-align:left;max-width:none;white-space:normal;line-height:1.6}
#view3d.panel-collapsed{grid-template-columns:minmax(0,1fr)}
#view3d.panel-collapsed .solid-viewport{grid-column:1;grid-row:1;height:clamp(540px,80vh,850px)}
@media(min-width:1181px){.workspace{grid-template-columns:minmax(0,1fr) 300px}}
@container visualizer (max-width:560px){
 #view3d{grid-template-columns:minmax(0,1fr);padding:10px;gap:12px}
 #view3d .solid-viewport{grid-column:1;grid-row:1;height:clamp(350px,62vh,550px);min-height:350px}
 #view3d .solid-sidebar{grid-column:1;grid-row:2;width:100%;display:grid;grid-template-columns:minmax(0,1fr);padding:12px}
 #view3d .solid-sidebar .geometry-insights{grid-template-columns:repeat(2,minmax(0,1fr))}
 #view3d .solid-secondary{grid-column:1;grid-row:3;grid-template-columns:minmax(0,1fr);padding:12px}
 #view3d.panel-collapsed .solid-viewport{min-height:350px;height:clamp(350px,70vh,620px)}
}
@container visualizer (max-width:380px){html[data-reading-size="classroom"] #view3d .solid-sidebar .geometry-insights{grid-template-columns:minmax(0,1fr)}}

/* Permanent navigation shares the title bar, independently of information panels. */
.stage-banner{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px 20px}
.stage-banner>div:first-child{flex:0 1 auto;min-width:0}
.stage-actions{display:flex;flex:1 1 auto;width:auto;align-items:center;justify-content:flex-end;flex-direction:row!important;flex-wrap:wrap;gap:8px}
.viewer-navigation{max-width:100%;min-width:0}
.viewer-navigation #controls3d,.viewer-navigation #controls2d{display:none!important}
.viewer-navigation #controls3d.active{display:flex!important;align-items:center;flex-wrap:wrap;gap:5px}
.viewer-navigation #controls2d.active{display:flex!important;align-items:center;flex-wrap:wrap;gap:7px}
.viewer-navigation .net-fold-controls{padding:0;margin:0;border:0}
.viewer-navigation .round-btn,.viewer-navigation .net-nav-controls button{width:38px;height:38px;min-height:38px;min-width:38px;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--ink);font:700 17px var(--reading-font);cursor:pointer;flex:0 0 auto}
.viewer-navigation .net-nav-controls{position:static;display:flex;align-items:center;flex-wrap:wrap;gap:5px;padding:0;border:0;background:transparent;box-shadow:none}
.viewer-navigation .net-nav-controls .interaction-mode,.viewer-navigation #netReset{width:auto;padding:6px 9px;font-size:12px;display:flex;align-items:center;gap:4px}
.viewer-navigation .net-nav-controls .interaction-mode.active{background:var(--violet-soft);color:var(--violet);border-color:var(--violet)}
.viewer-navigation #controls2d>.eyebrow{display:none}
.viewer-navigation #foldPlay{width:auto;min-width:100px;min-height:38px;padding:8px 12px;margin:0;display:flex;align-items:center;justify-content:center;gap:7px;border-radius:9px}
.viewer-navigation .fold-timeline{flex:0 1 110px;width:110px;min-width:80px}
.viewer-navigation .fold-timeline>div{font-size:10px}
.viewer-navigation .fold-timeline input{margin:4px 0;display:block}
.viewer-navigation button:disabled{opacity:.45;cursor:not-allowed}
.net-export-controls:has(>button:only-child){display:block}
.net-export-controls:has(>button:only-child)>button{width:100%}
@media(max-width:600px){.stage-actions{justify-content:flex-start;width:100%;flex-basis:100%}.viewer-navigation{flex:1 1 100%}.viewer-navigation #controls2d.active{gap:8px}.stage-actions .view-switch{flex:1 1 180px;min-width:0}.viewer-navigation .net-nav-controls .interaction-mode{font-size:12px!important}.viewer-navigation .net-nav-controls .interaction-mode span{font-size:15px}}

/* Portal and independent curved-surface laboratory. */
.top-actions .portal-link{display:inline-flex!important;color:var(--violet);background:var(--violet-soft);font-weight:800;text-decoration:none}
.solids-hero{padding:clamp(20px,4vw,44px);border-radius:20px;background:var(--violet-soft);margin-bottom:24px;border:1px solid var(--accent-line,var(--line))}
.solids-hero h2{font-size:clamp(28px,4vw,46px);max-width:22ch;line-height:1.2;margin:16px 0}
.solids-hero p{font-size:calc(18px * var(--reading-scale));line-height:1.8;max-width:70ch}
.solids-modules,.space-topic-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.solid-module{display:block;text-decoration:none;color:var(--ink);padding:24px;border:1px solid var(--line);border-radius:18px;background:var(--paper);min-width:0;transition:border-color .2s,transform .2s}
.solid-module:hover{border-color:var(--violet);transform:translateY(-3px)}
.solid-module:focus-visible{outline:3px solid var(--violet);outline-offset:4px}
.solid-module h2{font-size:calc(23px * var(--reading-scale));line-height:1.4;margin:14px 0}
.solid-module p{line-height:1.8;color:var(--muted)}
.solid-module strong{display:block;font-size:calc(15px * var(--reading-scale));line-height:1.6;color:var(--violet);margin-top:18px}
.solid-module svg{display:block;width:100%;height:150px;margin-bottom:22px;fill:var(--violet-soft);stroke:var(--violet);stroke-width:2.5}
.solid-classification,.round-practice{margin-top:24px;padding:24px;border:1px solid var(--line);border-radius:18px;background:var(--paper)}
.round-page{max-width:1560px;padding:clamp(12px,1.5vw,22px)}
.round-collection{display:flex;flex-wrap:wrap;gap:12px;margin:20px 0}
.round-collection a{padding:12px 20px;border:1px solid var(--line);border-radius:12px;color:var(--ink);font-size:calc(17px * var(--reading-scale));font-weight:700;text-decoration:none;background:var(--paper)}
.round-collection a.active{color:var(--violet);background:var(--violet-soft);border-color:var(--violet)}
.round-studio,.round-calculator{padding:clamp(14px,2vw,26px);border:1px solid var(--line);border-radius:18px;background:var(--paper);margin:20px 0;min-width:0}
.round-banner{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px}
.round-banner h2{font-size:clamp(27px,3vw,38px);margin:8px 0}
.round-toolbar,.round-toolbar>div{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-width:0}
.round-toolbar button{padding:9px 12px;min-height:42px;border:1px solid var(--line);border-radius:9px;cursor:pointer;background:var(--paper-2);color:var(--ink);font-size:calc(14px * var(--reading-scale))}
.round-toolbar button.active{background:var(--violet);color:white}.round-toolbar button:disabled{opacity:.45;cursor:not-allowed}
.round-viewport{position:relative;height:clamp(380px,68vh,720px);overflow:hidden;border-radius:14px;background:var(--paper-2);min-width:0;touch-action:none;margin:20px 0}
.round-viewport canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:grab}.round-viewport canvas:active{cursor:grabbing}
.round-net{padding:20px;background:var(--paper-2);border-radius:14px;min-width:0;margin:20px 0}
.round-net svg{display:block;width:100%;height:clamp(320px,55vh,560px);overflow:visible}
.round-observation{display:grid;grid-template-columns:minmax(160px,220px) minmax(0,1fr);gap:14px 24px;border-top:1px solid var(--line);padding-top:20px}
.round-observation>div{grid-column:1/-1}
.round-observation label,.round-inputs label,#roundKnownForm label{display:grid;gap:7px;min-width:0;font-size:calc(15px * var(--reading-scale));font-weight:700}
.round-page :is(select,input[type="number"]){max-width:100%;min-width:0;padding:10px;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--ink);font-size:calc(16px * var(--reading-scale))}
.round-page input[type="range"]{width:100%;accent-color:var(--violet)}
.round-inputs{display:flex;flex-wrap:wrap;gap:16px}.round-inputs label{width:140px;max-width:100%}
.round-page [hidden]{display:none!important}
.round-results{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:14px;margin:20px 0}
.round-results .result-card{min-width:0}.round-results .result-card>span{font-weight:700}
.round-worked{border-top:1px solid var(--line);padding-top:18px}.round-worked summary,.round-inverse summary{font-size:calc(17px * var(--reading-scale));font-weight:800;color:var(--violet);cursor:pointer}
#roundSteps{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:14px;margin:18px 0}
.round-inverse{padding:18px;border:1px solid var(--line);border-radius:12px;margin:20px 0;background:var(--paper-2)}
#roundKnownForm{display:flex;flex-wrap:wrap;align-items:end;gap:14px;margin:18px 0}#roundKnownForm input{width:180px}#roundKnownForm button{min-height:42px;font-size:15px}
#roundKnownFeedback{overflow-wrap:anywhere}#roundKnownFeedback[data-state="error"],#roundInputError{color:#b13f29}
.round-practice select{display:block;margin:16px 0;width:min(100%,420px)}
#roundFigureView:fullscreen{width:100%;height:100dvh;max-width:none;border-radius:0;overflow:hidden;background:var(--paper);margin:0;padding:12px;box-sizing:border-box;display:grid;grid-template-rows:auto minmax(0,1fr);gap:10px}
@media(max-width:1000px){.solids-modules,.space-topic-grid{grid-template-columns:minmax(0,1fr)}.solid-module svg{max-width:260px;margin-inline:auto}.solid-module h2{font-size:calc(25px * var(--reading-scale))}}
@media(max-width:600px){.round-observation{grid-template-columns:minmax(0,1fr)}.round-viewport{height:430px}.round-toolbar{width:100%}.round-toolbar>div{width:100%}.round-toolbar>div button{flex:1}.round-collection a{flex:1;text-align:center;padding:10px}.round-net{padding:12px}.solid-module{padding:20px}}

/* Primary modules must never inherit the old resource-menu hiding rules. */
.module-navigation{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px 12px;padding:12px clamp(12px,3vw,40px);background:var(--paper);border-bottom:1px solid var(--line)}
.module-navigation a{display:flex;align-items:center;justify-content:center;min-height:44px;padding:10px 18px;border:1px solid var(--line);border-radius:11px;text-decoration:none;color:var(--ink);background:var(--paper-2);font-size:calc(15px * var(--reading-scale));font-weight:800;line-height:1.5;text-align:center}
.module-navigation a[aria-current="page"]{background:var(--violet);border-color:var(--violet);color:white}
.module-navigation a:focus-visible{outline:3px solid var(--violet);outline-offset:3px}
.app-shell{grid-template-rows:auto auto auto;min-height:0}
.topbar{padding-block:16px;gap:14px;min-height:78px}
.toolstrip{padding-block:16px;margin:0;gap:14px 24px;align-items:center;overflow:visible;min-height:78px}
.family-tabs,.view-tools{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding-block:4px}
.family-tabs .family-tab,.view-tools .tool-btn{min-height:42px;line-height:1.5;margin:0}
.workspace>.learning-next{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;align-items:start;padding:18px}
.workspace>.learning-next .learning-links{display:contents}
.workspace>.learning-next .learning-link,.workspace>.learning-next .quick-check{margin:0;min-height:0;height:auto;padding:16px}
.workspace>.learning-next>header p{margin:0}
.workspace>.learning-next .quick-feedback:empty{display:none}
.workspace>.learning-next .quick-check-tools{flex-wrap:wrap;gap:8px}
@media(max-width:1000px){.workspace>.learning-next{grid-template-columns:repeat(2,minmax(0,1fr))}.workspace>.learning-next .quick-check{grid-column:1/-1;max-width:650px;width:100%}}
@media(max-width:600px){.module-navigation{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:10px}.module-navigation a{padding:9px 7px;font-size:calc(13px * var(--reading-scale))}.topbar{padding-block:14px}.brand strong{font-size:17px}.toolstrip{padding:14px;gap:12px}.family-tabs,.view-tools{width:100%;padding:6px 0;gap:8px}.family-tabs .family-tab{flex:1 1 120px}.view-tools .tool-btn{flex:1 1 65px}.workspace>.learning-next{grid-template-columns:minmax(0,1fr);padding:14px}.workspace>.learning-next .quick-check{grid-column:auto}}
@media print{.module-navigation{display:none}}

/* One shared masthead, outside the page that routing hides. */
.site-header{display:flex;flex-wrap:wrap;align-items:center;gap:16px 24px;padding:18px clamp(14px,3vw,40px);height:auto;position:relative;z-index:10}
.site-header .brand{flex:0 1 auto;min-width:0;text-decoration:none}
.site-header .module-navigation{flex:1 1 560px;padding:0;border:0;background:transparent;gap:8px;justify-content:flex-end}
.site-header .module-navigation a{padding:9px 12px;font-size:calc(14px * var(--reading-scale));min-width:0}
.site-resources{flex:0 0 auto;position:relative}
.site-resources summary{cursor:pointer;padding:11px 14px;border:1px solid var(--line);border-radius:10px;font-weight:700;line-height:1.5}
.site-resources[open]{flex-basis:100%}
.site-resources[open] summary{width:fit-content;margin-left:auto}
.site-header .site-resources .top-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px;padding-top:12px}
.site-header .site-resources .top-actions .nav-btn{display:inline-flex!important}
.app-shell{grid-template-rows:auto auto}
.resource-route .site-header{display:flex}
@media(max-width:900px){.site-header .module-navigation{flex-basis:100%;justify-content:flex-start;order:3}.site-resources{margin-left:auto}.site-resources[open]{order:4}.site-header .brand strong{font-size:calc(18px * var(--reading-scale))}}
@media(max-width:600px){.site-header{gap:12px;padding:14px}.site-header .module-navigation{display:grid;width:100%;grid-template-columns:repeat(2,minmax(0,1fr));padding:0}.site-header .module-navigation a{font-size:calc(13px * var(--reading-scale));padding:9px 6px}.site-header .brand{flex-basis:100%}.site-resources{margin-left:0}.site-resources summary{font-size:14px}.site-resources[open] summary{margin-left:0}.site-header .site-resources .top-actions{justify-content:flex-start}}
@media print{.site-header{display:none!important}}

/* Home: a visual invitation, with readable copy separate from the artwork. */
.resource-content.solids-home{max-width:1320px;padding:0;background:transparent;border:0;border-radius:0}
[data-resource-page="inicio"]{padding-top:28px}
.solids-home .solids-hero{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);align-items:center;gap:0;padding:0;border:1px solid var(--line);border-radius:24px;background:var(--paper);overflow:hidden;box-shadow:0 18px 55px #50357a0a}
.home-hero-copy{padding:clamp(24px,3.5vw,48px);min-width:0}
.home-hero-heading .resource-heading{padding:0}
.home-hero-heading h1{font-size:clamp(34px,4.3vw,60px);letter-spacing:-2px;line-height:1.08;margin:18px 0 22px}
.home-hero-heading h1 em{color:var(--violet);font-style:normal}
.home-hero-copy>p{font-size:calc(18px * var(--reading-scale));line-height:1.7;margin:0 0 24px;max-width:37ch;color:var(--muted)}
.home-hero-actions{display:flex;align-items:center;flex-wrap:wrap;gap:16px}
.home-hero-actions a{text-decoration:none;font-weight:800;font-size:calc(15px * var(--reading-scale));line-height:1.5}
.home-primary{display:inline-flex;align-items:center;gap:22px;padding:14px 20px;border-radius:12px;background:var(--violet);color:white;box-shadow:0 7px 18px #6350b826}
.home-secondary{color:var(--ink);padding-block:10px}
.home-hero-actions a:focus-visible{outline:3px solid var(--violet);outline-offset:4px}
.home-topics{display:flex;gap:8px 16px;flex-wrap:wrap;margin-top:26px;font-size:calc(13px * var(--reading-scale));line-height:1.7;color:var(--muted)}
.home-topics span:before{content:'●';color:var(--violet);font-size:8px;margin-right:7px;vertical-align:2px}
.home-hero-art{margin:0;min-width:0;align-self:stretch;background:#d9cceb;display:flex;flex-direction:column;justify-content:center}
.home-hero-art img{display:block;width:100%;height:auto;object-fit:contain;aspect-ratio:3/2}
.home-hero-art figcaption{padding:12px 20px;text-align:center;font-size:calc(13px * var(--reading-scale));line-height:1.6;color:#463357;background:#efe7f6}
.home-section-heading{display:flex;align-items:end;justify-content:space-between;gap:16px;margin:36px 0 20px}
.home-section-heading h2{font-size:clamp(24px,2.5vw,34px);line-height:1.3;letter-spacing:-.8px;margin:8px 0 0}
.home-section-heading>p{max-width:28ch;color:var(--muted);line-height:1.7;margin:0}
.solids-home .solids-modules{gap:20px}
.solids-home .solid-module{padding:0 24px 24px;overflow:hidden;border-radius:18px;box-shadow:0 8px 24px #50357a05}
.home-module-art{margin:0 -24px 24px;padding:12px 20px 0;background:#ede8fc;border-bottom:1px solid #ded5f3}
.home-module-art.home-art-1{background:#e6f2ed;border-color:#cce3d7}
.home-module-art.home-art-2{background:#faf0e3;border-color:#eddfcb}
.solids-home .solid-module .home-module-art svg{width:100%;height:190px;max-width:none;margin:0;fill:none;stroke:none;filter:drop-shadow(0 6px 5px #49346212)}
.solids-home .solid-module h2{font-size:calc(23px * var(--reading-scale));line-height:1.35}
.solids-home .solid-module p{font-size:calc(16px * var(--reading-scale));line-height:1.75}
.solids-home .solid-module .eyebrow{font-size:calc(11px * var(--reading-scale));letter-spacing:1px;line-height:1.8}
.solids-home .solid-classification{margin-top:28px;padding:clamp(22px,3vw,36px);border-radius:18px;background:var(--paper);border:1px solid var(--line)}
body.dark .home-module-art{background:#29233d;border-color:#443b5d}body.dark .home-art-1{background:#203831;border-color:#38574c}body.dark .home-art-2{background:#3a2e21;border-color:#5a4531}
@media(min-width:801px) and (max-width:1000px){.solids-home .solids-modules{grid-template-columns:repeat(3,minmax(0,1fr))}.solids-home .solid-module{padding-inline:18px}.home-module-art{margin-inline:-18px}.solids-home .solid-module h2{font-size:calc(20px * var(--reading-scale))}}
@media(max-width:800px){.solids-home .solids-hero{grid-template-columns:minmax(0,1fr)}.home-hero-copy{padding:28px}.home-hero-art img{max-height:420px}.home-section-heading{align-items:start;flex-direction:column}.solids-home .solids-modules{grid-template-columns:minmax(0,1fr)}.solids-home .solid-module .home-module-art svg{height:220px}.home-hero-heading h1{font-size:clamp(38px,7vw,56px)}}
@media(max-width:420px){.home-hero-copy{padding:24px 20px}.home-hero-heading h1{font-size:38px;letter-spacing:-1.5px}.home-hero-copy>p{font-size:calc(17px * var(--reading-scale))}.home-hero-actions{gap:8px}.home-primary{padding:12px 16px}.home-topics{margin-top:20px}.solids-home .solid-module .home-module-art svg{height:190px}}
@media(prefers-reduced-motion:reduce){.solids-home .solid-module{transition:none}.solids-home .solid-module:hover{transform:none}}

.round-fold-controls{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:14px;background:var(--paper-2);border:1px solid var(--line);border-radius:12px;margin:14px 0}
.round-fold-controls[hidden],.round-observation[hidden]{display:none!important}
.round-fold-controls label{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-size:calc(14px * var(--reading-scale));font-weight:700;min-width:0}
.round-fold-controls label[for="roundFoldProgress"]{flex:1 1 180px}
.round-fold-controls input[type="range"]{width:100%;min-width:100px;accent-color:var(--violet)}
.round-fold-controls select{padding:8px;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink);max-width:100%}
.round-net-tools{display:flex;gap:6px}.round-net-tools button{padding:10px 12px;background:var(--paper);border:1px solid var(--line);border-radius:9px;cursor:pointer}
.round-net-tools button[aria-pressed="true"]{color:var(--violet);border-color:var(--violet);background:var(--violet-soft)}
#roundNet{padding:12px 16px;min-height:0;height:auto;margin-top:12px}#roundNet p{margin:0;line-height:1.7}
#roundViewport canvas{touch-action:none}
#roundFoldPlay{min-width:120px;min-height:42px}
@media(max-width:600px){.round-fold-controls{gap:10px;padding:12px}.round-fold-controls label[for="roundFoldProgress"]{flex-basis:100%}.round-net-tools{flex:1}.round-net-tools button{flex:1}.round-fold-controls .primary-btn{flex:1}.round-fold-controls label{font-size:calc(14px * var(--reading-scale))}}

/* Shared viewer pattern: title left, tools and view tabs aligned right. */
.viewer-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px 20px;text-align:left}
.viewer-header>div:first-child{flex:0 1 auto;min-width:0}
.viewer-header :is(h1,h2){font-size:clamp(24px,2vw,32px);letter-spacing:-1px;margin:2px 0;line-height:1.3}
.viewer-header .viewer-actions{display:flex;flex:1 1 420px;min-width:0;max-width:100%;width:auto;flex-direction:row!important;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px;margin-left:auto}
.viewer-header .viewer-tabs{display:flex;position:static;flex:0 0 auto;width:auto;max-width:100%;align-items:center;gap:0;padding:3px;border:1px solid var(--line);border-radius:11px;background:var(--paper)}
.viewer-header .viewer-tabs button{flex:0 1 auto;min-width:0;min-height:34px;padding:7px 10px;border:0;border-radius:8px;background:transparent;color:var(--muted);font-size:calc(12px * var(--reading-scale));font-weight:800;line-height:1.4;white-space:normal;cursor:pointer}
.viewer-header .viewer-tabs button.active{background:var(--ink);color:var(--paper)}
.round-banner .viewer-actions>button{width:38px;height:38px;min-height:38px;padding:0;border:1px solid var(--line);border-radius:9px;background:var(--paper);font-size:17px}
.round-banner .viewer-actions>#roundRotate{width:auto;padding:6px 10px;font-size:12px}
.viewer-actions .round-fold-controls{display:flex;flex:0 1 auto;width:auto;margin:0;padding:0;border:0;background:transparent;gap:7px}
.viewer-actions .round-net-tools{flex:0 1 auto;gap:5px}
.viewer-actions .round-net-tools button{flex:0 1 auto;min-height:38px;padding:6px 9px;font-size:12px}
.viewer-actions #roundFoldPlay{flex:0 0 auto;min-width:100px;min-height:38px;padding:8px 12px;font-size:12px;border-radius:9px}
.viewer-actions .round-fold-controls label{font-size:11px;gap:4px}
.viewer-actions .round-fold-controls label[for="roundFoldProgress"]{flex:0 1 110px;width:110px;min-width:80px}
.viewer-actions .round-speed-control{display:flex;align-items:center;gap:6px;flex:0 0 auto;max-width:100%;font-size:calc(12px * var(--reading-scale));font-weight:700;line-height:1.5}
.viewer-actions .round-speed-control select{padding:7px 8px;min-height:38px;width:auto;max-width:130px;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--ink);font:inherit;cursor:pointer}
.viewer-actions .round-fold-controls select{padding:5px;font-size:11px;width:85px}
@media(max-width:600px){.viewer-header .viewer-actions{flex-basis:100%;width:100%;justify-content:flex-end}.viewer-header .viewer-tabs{flex:0 1 auto;margin-left:auto}.viewer-actions .round-fold-controls{flex-basis:100%;justify-content:flex-end}.viewer-header .viewer-tabs button{font-size:calc(12px * var(--reading-scale))}.viewer-header .viewer-navigation{flex-basis:100%}}
.viewer-actions .round-fold-controls{display:contents}
.viewer-actions #roundZoomOut{order:1}.viewer-actions .round-net-tools{order:2}.viewer-actions #roundCenter{order:3}.viewer-actions #roundZoomIn{order:4}.viewer-actions #roundRotate{order:5}
.viewer-actions #roundFoldPlay{order:5;background:var(--ink);color:#fff}.viewer-actions label[for="roundFoldProgress"]{order:6}.viewer-actions .round-speed-control{order:7}.viewer-actions #roundFullscreen{order:8}.round-banner .viewer-tabs{order:10}

.round-visual-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;align-items:start;margin:16px 0;min-width:0}
.round-visual-layout.without-panel{display:none}
.round-figure-view{min-width:0}
.round-figure-view #roundViewport{margin:12px 0 0;height:clamp(480px,72vh,820px)}
@media(max-width:800px){.round-figure-view #roundViewport{height:clamp(400px,65vh,640px)}}
@media(max-width:480px){.round-page{padding:10px}.round-page .round-studio{padding:10px}.round-figure-view #roundViewport{height:clamp(380px,62vh,540px)}}
#roundFigureView:fullscreen #roundViewport{margin:0;height:100%;min-height:0;width:100%;border-radius:10px}
#roundFigureView:fullscreen #roundPanelToggle{display:none!important}
#roundFigureView:fullscreen .round-banner{gap:8px 14px}
#roundFigureView:fullscreen .round-banner h2{font-size:clamp(20px,2vw,28px)}
.round-visual-layout.without-panel{grid-template-columns:minmax(0,1fr)}
.round-visual-layout .round-viewport{grid-row:1;margin:0;height:clamp(420px,62vh,660px)}
.round-element-panel{background:var(--paper-2);border:1px solid var(--line);border-radius:13px;padding:14px;min-width:0;height:auto;align-self:start}
.round-element-panel[hidden]{display:none!important}
.round-element-heading{display:flex;align-items:center;flex-wrap:wrap;gap:6px 12px;margin-bottom:12px}
.round-element-panel h3{font-size:calc(17px * var(--reading-scale));line-height:1.4;margin:0}
.round-element-heading>p{font-size:calc(13px * var(--reading-scale));color:var(--muted);line-height:1.6;margin:0}
#roundElementChoices{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(170px,100%),1fr));gap:8px}
.round-element-option{display:flex;align-items:center;gap:8px;padding:9px 10px;min-height:44px;border:1px solid var(--line);background:var(--paper);border-radius:8px;cursor:pointer;font-size:calc(14px * var(--reading-scale));line-height:1.4;min-width:0}
.round-element-option:has(input:checked){background:var(--paper);border-color:var(--line)}
.round-element-option input{width:17px;height:17px;flex:0 0 17px;margin:0;accent-color:var(--violet)}
.round-element-option i{width:9px;height:9px;flex:0 0 9px;border-radius:50%}
.round-element-option span{min-width:0;overflow-wrap:anywhere}
#roundParameterControls{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:10px 20px}
#roundParameterControls:not(:has(label:not([hidden]))){display:none}
#roundParameterControls label{display:grid;gap:8px;padding-top:12px;margin-top:12px;border-top:1px solid var(--line);font-size:calc(14px * var(--reading-scale));line-height:1.5}
#roundParameterControls label[hidden]{display:none!important}
#roundParameterControls output{font-weight:700;color:var(--violet);font-size:calc(14px * var(--reading-scale))}
#roundClearElements{margin:0 0 0 auto;width:auto;min-height:38px;font-size:calc(13px * var(--reading-scale));padding:8px 12px}
.round-banner .viewer-actions>#roundPanelToggle{order:9;width:auto;padding:6px 10px;font-size:12px;line-height:1.4}
.round-insight-heading{grid-column:1/-1}
.round-insight-heading h3{margin:6px 0 0;font-size:calc(23px * var(--reading-scale))}
.round-observation #roundFeatureText h3{margin:0 0 8px;font-size:calc(21px * var(--reading-scale))}
.round-observation #roundFeatureText p{font-size:calc(16px * var(--reading-scale));line-height:1.8;max-width:85ch}
.round-visibility-status{color:var(--muted)}
.round-insight-results{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));gap:14px;min-width:0}
.round-insight-card{border:1px solid var(--line);border-radius:12px;padding:18px;min-width:0;background:var(--paper-2)}
.round-insight-card h4{font-size:calc(16px * var(--reading-scale));line-height:1.5;margin:0 0 10px}
.round-insight-card>strong{display:block;font-size:calc(25px * var(--reading-scale));line-height:1.5;margin-bottom:10px;overflow-wrap:anywhere}
.round-insight-card small{font-size:.72em;color:var(--muted)}
.round-insight-card .geometry-math{font-size:calc(17px * var(--reading-scale));padding:10px 0;overflow-x:auto;max-width:100%}
.round-insight-card details{border-top:1px solid var(--line);margin-top:12px;padding-top:12px;font-size:calc(15px * var(--reading-scale))}
.round-insight-card summary{cursor:pointer;font-weight:700;color:var(--violet)}
.round-formula-sources{font-size:calc(14px * var(--reading-scale));line-height:1.8;margin-top:18px;color:var(--muted)}
.round-formula-sources a{color:var(--violet)}
@media(max-width:800px){.round-visual-layout .round-viewport{height:clamp(380px,56vh,540px)}.round-element-heading>p{flex:1 1 200px}#roundElementChoices{grid-template-columns:repeat(auto-fit,minmax(min(155px,100%),1fr))}}
@media(max-width:480px){.round-element-panel{padding:12px}.round-element-heading{gap:6px 10px}.round-element-heading>.eyebrow{flex-basis:100%}.round-element-heading>p{flex-basis:100%}#roundClearElements{margin-left:0}#roundElementChoices{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.round-element-option{font-size:calc(13px * var(--reading-scale));padding:8px 6px;gap:5px}#roundParameterControls{grid-template-columns:minmax(0,1fr)}}
@media(max-width:340px){#roundElementChoices{grid-template-columns:minmax(0,1fr)}}
.round-print-link{order:9;display:inline-flex;align-items:center;min-height:38px;padding:7px 10px;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--ink);text-decoration:none;font-size:calc(12px * var(--reading-scale));font-weight:700;line-height:1.4}
.round-print-options{display:flex;flex-wrap:wrap;gap:12px;margin:20px 0}.round-print-options label{display:grid;gap:7px;font-weight:700;min-width:0;flex:0 1 220px}.round-print-options select,.round-print-options input{padding:10px;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--ink);width:100%;font:inherit}.round-print-options label[hidden]{display:none}
.round-print-actions{display:flex;flex-wrap:wrap;gap:12px;margin:18px 0}
#rpprintWarning{color:#a52620;font-weight:700}#rpprintPreview{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),1fr));gap:18px;background:var(--paper-2);padding:14px;border-radius:12px}
#rpprintPreview .print-page{width:100%!important;height:auto!important;background:white;overflow:hidden}#rpprintPreview svg{display:block;width:100%;height:auto}
#roundFigureView:fullscreen .round-print-link{display:none}
.rev-inputs{display:flex;flex-wrap:wrap;gap:12px;margin:18px 0}.rev-inputs label{display:grid;gap:7px;flex:1 1 170px;min-width:0}.revolution-page :is(input[type="number"],select,textarea){padding:10px;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--ink);font:inherit;max-width:100%;min-width:0}.revolution-page [hidden]{display:none!important}#revCustomField{display:grid;gap:10px}#revError{color:#a52520;font-weight:700}#revStudio{border:1px solid var(--line);border-radius:14px;padding:14px;min-width:0}#revViewport{height:clamp(420px,65vh,740px);background:var(--paper-2);border-radius:12px;overflow:hidden}#revViewport canvas{width:100%;height:100%;display:block;touch-action:none}.rev-angle{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}.rev-angle input{flex:1 1 180px}.rev-results{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));gap:14px;margin:20px 0}.rev-results article,.rev-theory,.round-revolution-summary{padding:18px;border:1px solid var(--line);border-radius:12px;min-width:0;background:var(--paper-2)}.rev-results strong{font-size:calc(23px * var(--reading-scale))}.revolution-page .katex-display{overflow-x:auto;overflow-y:hidden;padding:10px 0;max-width:100%}.rev-theory p{line-height:1.8}#revStudio:fullscreen{height:100dvh;width:100%;border:0;border-radius:0;background:var(--paper);display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:8px;overflow:hidden}#revStudio:fullscreen #revViewport{height:100%;min-height:0}.round-revolution-summary{margin:18px 0}.round-revolution-summary a{color:var(--violet)}@media(max-width:600px){#revViewport{height:420px}.revolution-page{padding:12px}#revStudio{padding:10px}.revolution-page .viewer-tabs{flex-wrap:wrap}}
.rev-observation-tools{display:flex;align-items:center;flex-wrap:wrap;gap:8px 14px;margin-bottom:12px}.rev-observation-tools button{min-height:38px;padding:8px 12px;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--ink);font:inherit;cursor:pointer}.rev-observation-tools label{display:flex;align-items:center;gap:7px;font-size:calc(14px * var(--reading-scale));line-height:1.5}.rev-observation-tools input[type="range"]{width:110px}.rev-learning-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.rev-learning-grid>article,.rev-learning-grid>section,.rev-deep-dive>section{padding:20px;border:1px solid var(--line);border-radius:14px;background:var(--paper);min-width:0}.rev-deep-dive{display:grid;gap:20px;margin:22px 0}.rev-deep-dive h2{font-size:calc(23px * var(--reading-scale));line-height:1.4;margin:0 0 14px}.rev-deep-dive h3{font-size:calc(17px * var(--reading-scale))}.rev-worked{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.rev-worked article{min-width:0;padding:16px;background:var(--paper-2);border-radius:10px}.rev-deep-dive p{line-height:1.8}#revProfileDiagram svg{display:block;width:100%;height:auto;max-height:340px;background:white;border-radius:12px}#revProfileDiagram text{font:700 17px Arial}#revComparison{overflow-x:auto}#revComparison table{border-collapse:collapse;width:100%;font-size:calc(14px * var(--reading-scale));line-height:1.6}#revComparison :is(th,td){padding:10px;text-align:left;border-bottom:1px solid var(--line)}#revInverse{display:flex;flex-wrap:wrap;gap:12px;align-items:end}#revInverse label{display:grid;gap:8px;flex:1 1 160px;min-width:0}#revInverse button{min-height:44px}#revTarget{width:100%}#revQuiz{display:block;width:100%;margin-top:12px}.rev-deep-dive details{margin-top:14px;border-top:1px solid var(--line);padding-top:12px}.rev-deep-dive summary{cursor:pointer;font-weight:700;line-height:1.6}#revStudio:fullscreen{grid-template-rows:auto auto auto minmax(0,1fr)}@media(max-width:900px){.rev-worked{grid-template-columns:minmax(0,1fr)}.rev-learning-grid{grid-template-columns:minmax(0,1fr)}}@media(max-width:480px){.rev-learning-grid>article,.rev-learning-grid>section,.rev-deep-dive>section{padding:14px}.rev-observation-tools label{flex-wrap:wrap}.rev-observation-tools{gap:8px}.rev-deep-dive h2{font-size:calc(21px * var(--reading-scale))}}
