/* Teacher Studio — Advanced Mode (node canvas, palette, inspector). */
.adv-shell{display:grid;grid-template-rows:auto 1fr auto;gap:10px;height:calc(100vh - 190px);min-height:620px}
.adv-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:#fff;border:1px solid var(--st-line);border-radius:var(--st-radius);padding:8px 12px}
.adv-toolbar .spacer{flex:1}.wf-name{border:1px solid transparent;border-radius:8px;padding:6px 10px;font:inherit;font-size:15px;font-weight:600;min-width:200px;background:transparent}
.wf-name:hover,.wf-name:focus{border-color:var(--st-line);background:#fff;outline:none}.wf-version{border:1px solid var(--st-line);border-radius:8px;padding:5px 8px;font:inherit;font-size:13px;background:#fff}
.dirty{font-size:12px;color:var(--st-text3)}.dirty.on{color:var(--st-warn)}
.adv-main{display:grid;grid-template-columns:200px minmax(0,1fr) 340px;gap:10px;min-height:0}
.adv-palette,.adv-inspector{background:#fff;border:1px solid var(--st-line);border-radius:var(--st-radius);padding:12px;overflow:auto;min-height:0}
.adv-palette h3{margin:0 0 8px;font-size:14px}.adv-palette h4{margin:12px 0 4px;font-size:11px;letter-spacing:.08em;color:var(--st-text3);font-weight:600}
.pal-search{width:100%;border:1px solid var(--st-line);border-radius:8px;padding:6px 9px;font:inherit;font-size:13px}
.pal-item{display:flex;justify-content:space-between;align-items:center;gap:6px;width:100%;text-align:left;border:1px solid var(--st-line);background:#fafbfc;border-radius:8px;padding:6px 9px;margin:0 0 5px;font:inherit;font-size:12.5px;cursor:grab}
.pal-item:hover{border-color:var(--st-accent);background:#f2f6ff}.pal-item.off{opacity:.45;cursor:not-allowed}

.adv-canvas{position:relative;border:1px solid var(--st-line);border-radius:var(--st-radius);background:#fbfbfd;overflow:hidden;min-height:0}
.cv-viewport{position:absolute;inset:0;overflow:hidden;cursor:grab;outline:none;background-image:radial-gradient(#d9dde6 1px,transparent 1px);background-size:22px 22px;touch-action:none}
.cv-viewport.panning{cursor:grabbing}.cv-world{position:absolute;left:0;top:0;transform-origin:0 0;width:1px;height:1px}
.cv-edges{position:absolute;left:0;top:0;width:1px;height:1px;overflow:visible;pointer-events:none}
.cv-edge{fill:none;stroke-width:2.4;opacity:.85}.cv-edge.selected{stroke-width:4;opacity:1}.cv-edge.ghost{stroke:#2f5fd0;stroke-dasharray:6 5}.cv-edge.cycle{stroke:#c0392b!important;stroke-dasharray:4 3}
.cv-edge-hit{fill:none;stroke:transparent;stroke-width:14;pointer-events:stroke;cursor:pointer}
.cv-node{position:absolute;background:#fff;border:1.5px solid #cfd5e0;border-radius:11px;box-shadow:0 2px 8px rgba(20,30,60,.08);user-select:none;touch-action:none;cursor:default}
.cv-node.selected{border-color:var(--st-accent);box-shadow:0 0 0 3px rgba(47,95,208,.18)}.cv-node.in-cycle,.cv-node.has-error{border-color:var(--st-bad)}.cv-node.unknown{background:#fff4f2}
.cv-head{display:flex;align-items:center;gap:6px;padding:7px 10px;border-radius:9px 9px 0 0;font-size:13px;font-weight:600;cursor:move;border-bottom:1px solid #eef0f4}
.cat-input .cv-head{background:#eef3ff}.cat-content .cv-head{background:#f1ecff}.cat-validation .cv-head{background:#f6f8e3}.cat-review .cv-head{background:#fff3df}.cat-render .cv-head{background:#e9f7f1}.cat-image .cv-head{background:#ffe9f1}.cat-video .cv-head{background:#eee9ff}.cat-output .cv-head{background:#eef1f4}
.cv-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cv-badge{font-size:10px;font-style:normal;background:#fff0c9;color:#8a5a00;border-radius:999px;padding:0 6px}
.cv-st{font-size:12px;color:var(--st-text3)}.cv-st.succeeded{color:var(--st-good)}.cv-st.failed{color:var(--st-bad)}.cv-st.waiting_review{color:#e08a00}.cv-st.running,.cv-st.queued{color:var(--st-accent)}
.st-running{box-shadow:0 0 0 3px rgba(47,95,208,.25)}.st-succeeded{border-color:#8fd0aa}.st-failed{border-color:#e48d83}.st-waiting_review{border-color:#f2b552;background:#fffcf4}.st-stale{opacity:.75;border-style:dashed}
.cv-body{display:flex;justify-content:space-between;gap:10px;padding:6px 0 8px}.cv-ins,.cv-outs{display:grid;gap:5px;min-width:0}.cv-outs{text-align:right}
.cv-port{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--st-text2);padding:1px 0}.cv-port.in{margin-left:-7px}.cv-port.out{margin-right:-7px;justify-content:flex-end}
.cv-port .dot{width:13px;height:13px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1.5px #aab2c0;cursor:crosshair;flex:none}
.cv-port.ok-target .dot{box-shadow:0 0 0 3px #1f8a4c;transform:scale(1.25)}.cv-port.bad-target .dot{opacity:.3}
.plabel em{color:var(--st-bad);font-style:normal;margin-left:2px}.cv-unknown{padding:10px;color:var(--st-bad);font-size:12px;margin:0}
.cv-err,.cv-prob{margin:0 8px 8px;padding:4px 7px;border-radius:6px;font-size:11px;background:#fdecea;color:var(--st-bad);max-height:60px;overflow:hidden}.cv-prob{background:#fff6e5;color:var(--st-warn)}
.cv-controls{position:absolute;right:12px;bottom:12px;display:grid;gap:4px}.cv-controls button{width:30px;height:30px;border:1px solid var(--st-line);background:#fff;border-radius:8px;cursor:pointer;font-size:16px}
.cv-hint{position:absolute;left:12px;bottom:10px;font-size:11px;color:var(--st-text3);pointer-events:none}

.insp-tabs{display:flex;gap:2px;border-bottom:1px solid var(--st-line);margin:-4px -4px 10px;flex-wrap:wrap}.insp-tabs button{border:0;background:none;padding:7px 9px;font:inherit;font-size:12.5px;color:var(--st-text2);cursor:pointer;border-bottom:2px solid transparent}
.insp-tabs button[aria-selected="true"]{color:var(--st-accent2);border-bottom-color:var(--st-accent2);font-weight:600}
.insp-title{display:flex;align-items:baseline;gap:8px}.insp-title h3{margin:0;font-size:15px}.insp-title code{font-size:11px;color:var(--st-text3)}
.cfg .field-label{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.fname{font-size:10.5px;color:var(--st-text3)}.cfg .field.inline{align-items:center}
.expose{border:0;background:none;color:var(--st-text3);font-size:11px;cursor:pointer;padding:0}.expose.on{color:#c58a00;font-weight:600}.ro{font-size:11px;color:var(--st-text2);word-break:break-all}
.ports{list-style:none;margin:4px 0;padding:0;font-size:12.5px}.ports li{display:flex;align-items:center;gap:6px;padding:2px 0}.ports .dot{width:10px;height:10px;border-radius:50%}
.io-row{border:1px solid var(--st-line);border-radius:8px;padding:6px 8px;margin:4px 0;background:#fcfcfd}.preview pre{white-space:pre-wrap;max-height:180px;overflow:auto;font-size:12px;margin:4px 0}.preview ul{margin:4px 0;padding-left:18px;font-size:12px}
.preview li.error,.err{color:var(--st-bad)}.preview li.warning{color:var(--st-warn)}.ok{color:var(--st-good)}.img-prev{max-width:100%;border:1px solid var(--st-line);border-radius:6px}.math-preview.mini{min-height:28px;padding:2px 6px}.pf b{font-size:12px}
.kv{display:grid;grid-template-columns:auto 1fr;gap:3px 12px;font-size:12.5px;margin:8px 0}.kv dt{color:var(--st-text3)}.kv dd{margin:0}
.history{display:grid;gap:4px}.hist-row{display:flex;align-items:center;gap:8px;font-size:12.5px}.hist-row .pill{margin-left:auto}.changed{color:var(--st-warn);font-weight:600}.cmp ul{list-style:none;padding:0;font-size:12px;font-family:ui-monospace,monospace}
.param{border:1px solid var(--st-line);border-radius:8px;padding:8px;margin:0 0 8px}.param-actions{display:flex;justify-content:space-between;align-items:center}
.tag{font-size:10.5px;background:#eceff4;color:var(--st-text2);border-radius:999px;padding:0 7px;margin-left:6px}.insp-foot{margin-top:14px;display:grid;gap:8px}

.adv-problems{background:#fff;border:1px solid var(--st-line);border-radius:var(--st-radius);padding:8px 12px;font-size:12.5px;max-height:130px;overflow:auto}
.prob-head{display:flex;justify-content:space-between}.adv-problems ul{list-style:none;margin:4px 0 0;padding:0}.adv-problems li{padding:2px 0;cursor:pointer}.adv-problems li.error{color:var(--st-bad)}.adv-problems li.warning{color:var(--st-warn)}.adv-problems li.info{color:var(--st-text3)}

.lib-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.lib-head h2{margin:0}.lib-table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--st-line);border-radius:var(--st-radius);overflow:hidden}
.lib-table th,.lib-table td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--st-line);font-size:13px}.lib-table th{background:#f7f8fa;color:var(--st-text2);font-weight:500}.row-actions{display:flex;gap:6px;justify-content:flex-end}.lib-sub{margin:26px 0 8px;font-size:15px}.lib-tpls{display:flex;gap:10px;flex-wrap:wrap}

.modal-back{position:fixed;inset:0;background:rgba(20,26,40,.45);display:flex;align-items:center;justify-content:center;z-index:900}
.modal{background:#fff;border-radius:14px;padding:22px;width:min(560px,92vw);max-height:88vh;overflow:auto;box-shadow:0 20px 60px rgba(0,0,0,.3)}.modal h3{margin:0 0 10px}
.cost-box{background:#fffcf3;border:1px solid #f0d9a8;border-radius:9px;padding:10px 12px;margin:12px 0;font-size:13px}.cost-box ul{margin:6px 0;padding-left:18px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
@media(max-width:1100px){.adv-main{grid-template-columns:170px minmax(0,1fr) 300px}}
@media(max-width:860px){.adv-shell{height:auto}.adv-main{grid-template-columns:1fr}.adv-canvas{height:60vh}}
