@font-face{font-family:Public Sans;font-weight:400;font-display:swap;src:url(../fonts/public-sans-latin-400-normal.woff2) format("woff2")}@font-face{font-family:Public Sans;font-weight:700;font-display:swap;src:url(../fonts/public-sans-latin-700-normal.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-weight:400;font-display:swap;src:url(../fonts/ibm-plex-mono-latin-400-normal.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-weight:600;font-display:swap;src:url(../fonts/ibm-plex-mono-latin-600-normal.woff2) format("woff2")}@font-face{font-family:Saira Condensed;font-weight:600;font-display:swap;src:url(../fonts/saira-condensed-latin-600-normal.woff2) format("woff2")}@font-face{font-family:Saira Condensed;font-weight:700;font-display:swap;src:url(../fonts/saira-condensed-latin-700-normal.woff2) format("woff2")}:root{--armoire: #d3d7d0;--papier: #f6f7f3;--papier-2: #eceee7;--encre: #151916;--rail: #a3a89e;--nuit: #0f1512;--nuit-2: #1a221c;--lien: #1b5fa6;--accent-olive: #93a415;--clair: #c8d834;--sombre: #4a5410;--ombre: 0 1px 0 #00000017, 0 3px 14px #00000012;--bg: #fff;--ui-bg: var(--armoire);--ui-panel: var(--papier);--ui-line: var(--rail);--ui-text: var(--encre);--ui-muted: #4d554e;--accent: var(--lien);--canvas: #c3c8c0;--thumb: #151916;--font-ui: "Public Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace;--font-disp: "Saira Condensed", "Public Sans", sans-serif;color-scheme:light;font-family:var(--font-ui);font-size:13px}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--ui-bg: #0f1512;--ui-panel: #1a221c;--ui-line: #2a322b;--ui-text: #e6ebe4;--ui-muted: #9aa494;--accent: #c8d834;--canvas: #1d2620;--thumb: #e6ebe4;color-scheme:dark}}:root[data-theme=dark]{--ui-bg: #0f1512;--ui-panel: #1a221c;--ui-line: #2a322b;--ui-text: #e6ebe4;--ui-muted: #9aa494;--accent: #c8d834;--canvas: #1d2620;--thumb: #e6ebe4;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--ui-bg);color:var(--ui-text)}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.app{display:grid;height:100%;grid-template-columns:var(--pal-w, 250px) minmax(0,1fr) var(--props-w, 260px);grid-template-rows:auto 1fr;grid-template-areas:"bar bar bar" "pal stage props"}.toolbar{grid-area:bar;display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:6px 10px;background:var(--ui-bg);border-bottom:1px solid var(--ui-line)}.brand{margin-right:4px;color:var(--accent)}.group{display:flex;gap:2px;padding-right:8px;margin-right:0;border-right:1px solid var(--ui-line)}.group:last-of-type{border-right:0;padding-right:0}.grow{flex:1}.saved{color:var(--ui-muted);font-size:11px}button{font:inherit;font-size:12px;padding:5px 9px;border:1px solid var(--ui-line);background:var(--ui-panel);color:var(--ui-text);border-radius:6px;cursor:pointer}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.4;cursor:default}button.on{background:var(--accent);color:#fff;border-color:var(--accent)}button.icon{width:30px;padding:5px 0;font-size:14px;line-height:1}button.danger:hover:not(:disabled){border-color:#d33}.menu{position:relative}.menu summary{list-style:none;cursor:pointer;padding:5px 10px;border:1px solid var(--ui-line);border-radius:6px;background:var(--ui-panel);font-size:12px}.menu summary::-webkit-details-marker{display:none}.menu[open] summary{border-color:var(--accent)}.menu-list{position:absolute;z-index:20;top:calc(100% + 4px);left:0;min-width:210px;display:flex;flex-direction:column;padding:4px;background:var(--ui-panel);border:1px solid var(--ui-line);border-radius:8px;box-shadow:0 8px 24px #0003}.menu-list button{border:0;text-align:left;padding:7px 10px}.menu-list button:hover{background:var(--ui-bg)}.palette{grid-area:pal;background:var(--ui-bg);border-right:1px solid var(--ui-line);display:flex;flex-direction:column;min-height:0;padding:8px;gap:8px}.tabs{display:flex;gap:3px}.tabs button{flex:1;padding:5px 2px;font-size:12px}input,select{font:inherit;padding:5px 7px;border:1px solid var(--ui-line);border-radius:6px;background:var(--ui-panel);color:var(--ui-text);width:100%}.symscroll{overflow:auto;flex:1;display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:6px;align-content:start}.symscroll>.section,.symscroll>.symlist{grid-column:1 / -1}.section{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--ui-muted);margin:8px 2px 4px}.symrow{display:contents}.section.wide{grid-column:1 / -1}.symlist{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:6px;align-content:start}.symbtn{display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px 4px;text-align:center;font-size:11px;line-height:1.2;cursor:grab}.symbtn svg{width:64px;height:48px;color:var(--thumb)}.symbtn.on{border-color:var(--accent);box-shadow:0 0 0 2px #0b6bcb44}.note{font-size:11px;color:var(--ui-muted);margin:0}.stage{grid-area:stage;position:relative;min-width:0;min-height:0}.canvas{width:100%;height:100%;display:block;background:var(--canvas);-webkit-user-select:none;user-select:none;touch-action:none}.canvas.placing{cursor:crosshair}.status{position:absolute;left:10px;bottom:10px;padding:5px 10px;background:var(--ui-panel);border:1px solid var(--ui-line);border-radius:6px;font-size:11px;color:var(--ui-muted);pointer-events:none;max-width:calc(100% - 220px)}.zoombar{position:absolute;right:10px;bottom:10px;display:flex;align-items:center;gap:2px;padding:3px;background:var(--ui-panel);border:1px solid var(--ui-line);border-radius:8px}.zoombar span{min-width:46px;text-align:center;font-size:11px;color:var(--ui-muted)}.zoombar button{border:0;width:26px;padding:3px 0;font-size:15px}.coords{position:absolute;right:12px;top:8px;font-size:11px;color:var(--ui-muted);background:var(--ui-panel);padding:2px 8px;border-radius:6px;border:1px solid var(--ui-line);pointer-events:none}.toast{position:absolute;left:50%;top:14px;transform:translate(-50%);background:#1b1f24;color:#fff;padding:7px 14px;border-radius:8px;font-size:12px;box-shadow:0 6px 20px #0004}.empty{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(420px,86%);text-align:center;background:var(--ui-panel);border:1px solid var(--ui-line);border-radius:12px;padding:20px 24px;box-shadow:0 10px 30px #0002}.empty h2{margin:0 0 6px;font-size:17px}.empty p{margin:0 0 14px;color:var(--ui-muted)}.tpls{display:flex;flex-direction:column;gap:6px}.tpls button{padding:9px 12px;font-size:13px}.hit-box{fill:transparent;stroke:none;cursor:move}.simulating .hit-box:not(.op){cursor:move}.simulating .hit-box.op{cursor:pointer}.simulating .hit-box.op:hover{fill:#0b6bcb22;stroke:#0b6bcb;stroke-width:1}.short{fill:#d6249f44;stroke:#d6249f;stroke-width:1.5;pointer-events:none;animation:pulse .8s ease-in-out infinite alternate}@keyframes pulse{to{opacity:.25}}.sel-box{fill:#0b6bcb18;stroke:#0b6bcb;stroke-width:1.5;stroke-dasharray:5 3;cursor:move}.port{fill:#fff;stroke:#0b6bcb;stroke-width:1.5;opacity:0;cursor:crosshair}.sym-hit:hover .port,.port.hot,.canvas.wiring .port{opacity:1}.port.used{fill:#0b6bcb}.port.hot{fill:#ffb400;stroke:#c07000}.canvas.placing .port{pointer-events:none}.hit{stroke:transparent;stroke-width:10;fill:none;cursor:pointer}.wire-hit:hover .hit{stroke:#0b6bcb33}.sel-wire{stroke:#0b6bcb;stroke-width:5;opacity:.45;fill:none}.preview{stroke:#0b6bcb;stroke-width:2;stroke-dasharray:5 3;fill:none;pointer-events:none}.band{fill:#0b6bcb18;stroke:#0b6bcb;stroke-dasharray:4 3}.props{grid-area:props;background:var(--ui-bg);border-left:1px solid var(--ui-line);padding:8px 12px;overflow:auto}.props h3{margin:12px 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ui-muted)}.form{display:flex;flex-direction:column;gap:7px}.form label{display:flex;flex-direction:column;gap:2px;font-size:11px;color:var(--ui-muted)}.kind{font-weight:600}.kind small{font-weight:400;color:var(--ui-muted)}.muted{color:var(--ui-muted);line-height:1.4}.colors{display:flex;gap:4px;flex-wrap:wrap}.swatch{width:22px;height:22px;padding:0;border-radius:50%}.swatch.on{outline:2px solid var(--accent);outline-offset:1px}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:grid;place-items:center;z-index:30}.dialog{background:var(--ui-panel);color:var(--ui-text);border-radius:10px;padding:16px 20px;width:min(640px,94vw);max-height:86vh;overflow:auto}.dialog h3{margin:8px 0}table{border-collapse:collapse;width:100%;margin-bottom:8px}th,td{text-align:left;border-bottom:1px solid var(--ui-line);padding:5px 8px}kbd{font:inherit;font-size:11px;background:var(--ui-bg);border:1px solid var(--ui-line);border-bottom-width:2px;border-radius:4px;padding:1px 6px;white-space:nowrap}.actions{display:flex;gap:8px;justify-content:flex-end;margin-top:10px}@media (max-width: 900px){.app{grid-template-columns:min(var(--pal-w, 190px),40vw) 1fr;grid-template-areas:"bar bar" "pal stage"}.props,.saved{display:none}}@media (prefers-reduced-motion: no-preference){button,.menu summary{transition:border-color .12s,background .12s}}.guide{stroke:#d6249f;stroke-width:.8;stroke-dasharray:4 3;fill:none;pointer-events:none}.ctx-back{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40}.ctx{position:fixed;min-width:190px;padding:4px;background:var(--ui-panel);border:1px solid var(--ui-line);border-radius:8px;box-shadow:0 8px 24px #0004;display:flex;flex-direction:column}.ctx button{display:flex;justify-content:space-between;gap:16px;align-items:center;border:0;text-align:left;padding:7px 10px}.ctx button:hover:not(:disabled){background:var(--ui-bg)}.ctx button.danger{color:#d33}.ctx hr{border:0;border-top:1px solid var(--ui-line);margin:3px 0;width:100%}.symbtn span{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.link{border:0;background:none;padding:0;color:var(--accent);text-decoration:underline;font-size:11px}.splash{height:100%;display:grid;place-items:center;color:var(--ui-muted)}.dialog a{color:var(--accent)}.symbtn{position:relative}.symbtn.used:after{content:"";position:absolute;top:5px;right:5px;width:6px;height:6px;border-radius:50%;background:var(--accent)}.share{display:flex;gap:6px;align-items:flex-start;font-size:11px;color:var(--ui-muted);cursor:pointer}.share input{width:auto;margin-top:2px}.ask{position:absolute;left:50%;bottom:56px;transform:translate(-50%);width:min(380px,90%);background:var(--ui-panel);border:1px solid var(--ui-line);border-radius:10px;padding:12px 14px;box-shadow:0 8px 28px #0003;font-size:12px;z-index:5}.ask p{margin:6px 0 8px;color:var(--ui-muted);line-height:1.4}.ask .actions{margin-top:4px}.simbtn{font-weight:600}.simbtn.on{background:#d33;border-color:#d33}.alert{background:#d6249f1a;border:1px solid #d6249f;color:var(--ui-text);border-radius:8px;padding:8px 10px;margin-bottom:8px;font-weight:600}.alert.warn{background:#e67e0020;border-color:#e67e00;font-weight:400}.simrowitem{font-size:12px;padding:2px 0;color:#1f8f3a}.simrowitem.dim{color:var(--ui-muted)}.alert.info{background:#0b6bcb18;border-color:#0b6bcb;font-weight:400}.blade{will-change:transform}@media (prefers-reduced-motion: reduce){.blade{transition:none!important}}.via-handle{fill:#fff;stroke:#0b6bcb;stroke-width:1.5;cursor:move}.mid-handle{fill:#0b6bcb66;stroke:#0b6bcb;stroke-width:1;cursor:crosshair}.mid-handle:hover{fill:#0b6bcb}.via-dot{fill:#0b6bcb;stroke:#fff;stroke-width:1;pointer-events:none}.terms{display:flex;flex-direction:column;gap:6px;padding:8px;border:1px solid var(--ui-line);border-radius:8px;background:var(--ui-panel)}.terms-head{display:flex;justify-content:space-between;align-items:center;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ui-muted)}.terms-head .mini{margin-left:4px;padding:2px 6px;font-size:10px;text-transform:none;letter-spacing:0}.term-row{display:grid;grid-template-columns:64px 1fr;gap:6px;align-items:center}.term-title{font-size:11px;color:var(--ui-muted)}.term-inputs{display:flex;gap:4px}.term-in{width:100%;min-width:0;padding:3px 5px;text-align:center;font-variant-numeric:tabular-nums}.muted.small{font-size:10.5px;margin:0}.port-ring{fill:none;stroke:#ff9800;stroke-width:2;pointer-events:none;animation:pulse .7s ease-in-out infinite alternate}.term-in.auto{color:var(--ui-muted);font-style:italic}.term-in.dup{border-color:#e53935;background:#e5393514;color:#e53935}.feedback-btn{display:inline-flex;align-items:center;gap:5px}.dialog.feedback{width:min(560px,94vw)}.fb-kinds{display:flex;gap:6px;margin-bottom:10px}.fb-kinds button{flex:1}.fb-field{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--ui-muted);margin-bottom:10px}.fb-field input,.fb-field textarea{color:var(--ui-text)}.fb-field textarea{width:100%;padding:6px 8px;border:1px solid var(--ui-line);border-radius:6px;background:var(--ui-panel);font:inherit;resize:vertical}.fb-check{display:flex;gap:8px;align-items:flex-start;font-size:12px;margin-bottom:8px;cursor:pointer}.fb-check input{width:auto;margin-top:2px}.fb-trap{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.fb-tech{font-size:11px;background:var(--ui-bg);border:1px solid var(--ui-line);border-radius:6px;padding:8px;white-space:pre-wrap;word-break:break-all;margin:6px 0}.fb-ok{color:#1f8f3a;font-weight:600}.fb-actions{align-items:center}.fb-actions .link{font-size:12px}.alert a{color:var(--accent)}@media (max-width: 700px){.feedback-btn span{display:none}}.lbl-hit{fill:transparent;stroke:none;cursor:move}.lbl-hit:hover{fill:#0066cc1f;stroke:#06c;stroke-width:.6;stroke-dasharray:2 2}.chrono{position:absolute;left:10px;right:10px;bottom:40px;max-width:700px;background:var(--ui-panel);border:1px solid var(--ui-line);border-radius:8px;padding:6px 10px;box-shadow:0 2px 10px #0003;z-index:5}.chrono-head{display:flex;justify-content:space-between;align-items:center;font-size:12px;margin-bottom:2px}.chrono-body{max-height:220px;overflow-y:auto;color:var(--ui-text, inherit)}.issues{list-style:none;padding:0;margin:6px 0;display:grid;gap:4px}.issues li button.link{text-align:left}.issues li.error button{color:#c62828}.menu summary.dis{opacity:.5}.viewbanner{position:absolute;top:10px;left:50%;transform:translate(-50%);z-index:6;display:flex;gap:10px;align-items:center;padding:6px 12px;background:var(--ui-panel);border:1px solid var(--accent);border-radius:8px;box-shadow:0 2px 10px #0003;font-size:12px;max-width:90%}.dialog.gallery{width:min(900px,94vw);max-height:88vh;overflow-y:auto}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;margin:8px 0 14px}.card{border:1px solid var(--ui-line);border-radius:8px;padding:10px;display:flex;flex-direction:column;gap:6px;background:var(--ui-bg)}.card.wide{grid-column:1 / -1}.card p{margin:0}.lvl{font-size:11px;color:var(--accent)}.exres{border-radius:6px;padding:8px;font-size:12px}.exres.ok{background:#2f9e4422;border:1px solid #2f9e44}.exres.ko{background:#e5393522;border:1px solid #e53935}.exres ul{margin:4px 0 0;padding-left:18px}.pagebar{position:absolute;left:10px;top:10px;z-index:5;display:flex;gap:2px;align-items:center;padding:3px;background:var(--ui-panel);border:1px solid var(--ui-line);border-radius:8px;max-width:60%;overflow-x:auto}.pagebar button{border:0;padding:3px 9px;font-size:12px}.pagebar button.on{background:var(--accent);color:#fff}.pagebar .add{padding:3px 7px}body{background-image:radial-gradient(circle at 1px 1px,#00000021 1px,transparent 0);background-size:4px 4px}:root[data-theme=dark] body{background-image:none}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) body{background-image:none}}button,.menu summary,input,select,textarea,.dialog,.menu-list,.ctx,.toast,.empty,.ask,.alert,.terms,.zoombar,.status,.coords,.chrono,.pagebar,.viewbanner,.card,kbd,.exres{border-radius:0}button,.menu summary{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;padding:6px 10px}button:hover:not(:disabled),.menu summary:hover{border-color:var(--ui-text)}button.on,.simbtn.on{background:var(--nuit);color:#fff;border-color:var(--nuit);border-bottom:3px solid var(--accent-olive)}:root[data-theme=dark] button.on{background:var(--clair);color:var(--nuit);border-color:var(--clair);border-bottom-color:var(--accent-olive)}button.icon,.symbtn,.link,.swatch,.ctx button,.menu-list button,.term-in,.pagebar button,.zoombar button{font-family:var(--font-ui);text-transform:none;letter-spacing:0}.symbtn{font-size:11px}.ctx button,.menu-list button{font-size:12px}.link{font-size:11px;color:var(--lien)}.swatch{border-radius:50%}.symbtn.used:after{border-radius:0;background:var(--accent-olive)}input,select,textarea{background:#fff;color:var(--encre);border:1px solid var(--rail)}:root[data-theme=dark] input,:root[data-theme=dark] select,:root[data-theme=dark] textarea{background:var(--nuit);color:var(--ui-text);border-color:var(--ui-line)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) input,:root:not([data-theme=light]) select,:root:not([data-theme=light]) textarea{background:var(--nuit);color:var(--ui-text);border-color:var(--ui-line)}}:focus-visible{outline:3px solid var(--lien);outline-offset:2px}.toolbar{--ui-panel: var(--nuit-2);--ui-line: #2a322b;--ui-text: #e6ebe4;--ui-muted: #9aa494;--accent: var(--clair);background:var(--nuit);color:var(--ui-text);border-bottom:1px solid #2a322b;gap:6px;padding:0 10px;min-height:44px}.toolbar .group{border-right-color:#2a322b}.toolbar button,.toolbar .menu summary{background:transparent;color:#c9d2c8;border:1px solid transparent;border-bottom:2px solid transparent}.toolbar button:hover:not(:disabled),.toolbar .menu summary:hover{color:#fff;background:#161d18;border-color:transparent;border-bottom-color:var(--clair)}.toolbar button.on,.toolbar .simbtn.on{background:#b3261e;color:#fff;border-color:#b3261e;border-bottom:2px solid #ff6b7f}.toolbar .menu[open] summary{color:#fff;border-bottom-color:var(--clair);background:#161d18}.toolbar .saved{color:#9aa494;font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase}.toolbar .feedback-btn{background:#b3261e;color:#fff;border:0}.toolbar .feedback-btn:hover:not(:disabled){background:#c62b22;border-bottom-color:#ff6b7f}.toolbar select{background:var(--nuit-2);color:#e6ebe4;border-color:#2a322b;width:auto;font-family:var(--font-mono);font-size:10.5px}.toolbar .menu-list{--ui-bg: #161d18;background:var(--nuit-2);border-color:#2a322b;box-shadow:0 12px 40px #00000059}.toolbar .menu-list button{color:#c9d2c8;border-bottom:0}.toolbar .menu-list button:hover:not(:disabled){background:#161d18;color:#fff}.toolbar .menu-list .muted{color:#9aa494}.brand{display:inline-flex;align-items:center;gap:10px;padding:8px 16px 8px 4px;margin-right:6px;border-right:1px solid #2a322b;color:#fff;font-family:var(--font-disp);font-weight:700;font-size:1.1rem;letter-spacing:.12em;text-transform:uppercase;line-height:1}.brand b{color:var(--clair);font-weight:700}.brand .vis{flex:none;width:22px;height:22px;border-radius:50%;position:relative;background:radial-gradient(circle at 35% 35%,#e8ece6,#8d948b 70%);box-shadow:inset 0 0 0 1px #5f665e}.brand .vis:after{content:"";position:absolute;top:10px;left:4px;right:4px;height:2px;background:#3b423b;transform:rotate(-35deg)}.palette,.props{background-image:radial-gradient(circle at 1px 1px,#0000001c 1px,transparent 0);background-size:4px 4px}:root[data-theme=dark] .palette,:root[data-theme=dark] .props{background-image:none}.tabs button.on{background:var(--nuit);color:#fff}.section,.props h3,.terms-head,.eyebrow{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.18em;color:var(--sombre)}:root[data-theme=dark] .section,:root[data-theme=dark] .props h3,:root[data-theme=dark] .terms-head{color:var(--clair)}.props h3{display:flex;align-items:center;gap:8px}.props h3:before{content:"";flex:none;width:9px;height:9px;background:var(--accent-olive)}.symbtn{background:var(--papier);border:1px solid var(--rail);box-shadow:var(--ombre)}.symbtn:hover:not(:disabled){border-color:var(--nuit)}.symbtn.on{border-color:var(--nuit);box-shadow:inset 0 -3px 0 var(--accent-olive)}:root[data-theme=dark] .symbtn{background:var(--nuit-2)}:root[data-theme=dark] .symbtn svg{filter:none}.dialog,.empty,.ask,.card,.chrono,.viewbanner{background:var(--ui-panel);border:1px solid var(--ui-line);border-top:5px solid var(--accent-olive);box-shadow:var(--ombre),0 12px 40px #00000040}.dialog h3,.empty h2{font-family:var(--font-disp);font-weight:700;text-transform:uppercase;letter-spacing:.02em;font-size:1.25rem;line-height:1.06}.card{border-top-width:3px;box-shadow:var(--ombre)}.menu-list,.ctx{border:1px solid var(--ui-line);border-top:3px solid var(--accent-olive);box-shadow:0 12px 40px #00000059}.modal{background:#0f151259}.toast{background:var(--nuit);border-bottom:3px solid var(--accent-olive);font-family:var(--font-mono);font-size:11px;letter-spacing:.06em}.tpls button{text-align:left;font-family:var(--font-ui);text-transform:none;letter-spacing:0;background:var(--papier);border:1px solid var(--rail);border-left:5px solid var(--accent-olive)}.tpls button:hover:not(:disabled){background:#fff;border-color:var(--nuit);border-left-color:var(--accent-olive)}.empty p,.empty h2,.empty{text-align:left}.zoombar,.status,.coords,.pagebar{background:var(--ui-panel);border:1px solid var(--ui-line);box-shadow:var(--ombre);font-family:var(--font-mono);font-size:10.5px}.pagebar button.on{background:var(--nuit);color:#fff;border-bottom:3px solid var(--accent-olive)}.lvl{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--sombre)}.alert{border-radius:0;border-left-width:5px}kbd{font-family:var(--font-mono);background:var(--papier-2)}th{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;background:var(--papier-2)}:root[data-theme=dark] th{background:var(--nuit)}.exres.ok{border-left:5px solid #2f9e44}.exres.ko{border-left:5px solid #b3261e}.issues li button{font-family:var(--font-ui)}a,.dialog a{color:var(--lien)}:root[data-theme=dark] a,:root[data-theme=dark] .dialog a,:root[data-theme=dark] .link{color:var(--clair)}.toolbar button,.toolbar .menu summary{padding:6px 7px;letter-spacing:.05em;font-size:10px}.toolbar .group{padding-right:4px;gap:0}.tabs button{padding:5px 1px;font-size:9px;letter-spacing:.02em}.chrono-head{gap:6px}.chrono.min{width:auto;right:auto;padding:2px 6px}.chrono.min .chrono-head{margin:0;gap:10px}.chrono-head button.icon{width:26px}.tb-hit{fill:transparent;stroke:none}.tb-hit:hover{fill:#93a4151a}.issues li.info button{color:var(--ui-muted)}.issues .why{margin:2px 0 6px 22px;font-size:11.5px;color:var(--ui-muted)}.pill{font-size:10px;letter-spacing:0}.pill.err{color:#ff6b7f}.pill.warn{color:#ffd77a}.ratings{border:1px solid var(--ui-line);padding:8px;display:flex;flex-direction:column;gap:6px;margin:4px 0}.ratings legend{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.15em;text-transform:uppercase;color:var(--sombre);padding:0 6px}.propspop{position:fixed;z-index:35;width:330px;max-height:min(82vh,700px);display:flex;flex-direction:column;background:var(--ui-panel);color:var(--ui-text);border:1px solid var(--ui-line);border-top:5px solid var(--accent-olive);box-shadow:var(--ombre),0 14px 44px #00000050}.propspop-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 8px 6px 12px;cursor:move;border-bottom:1px solid var(--ui-line);font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;-webkit-user-select:none;user-select:none}.propspop-head strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.propspop-body{padding:10px 12px 12px;overflow:auto}.chk{display:inline-flex;align-items:center;gap:5px;padding:0 8px;font-family:var(--font-mono);font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:#c9d2c8;cursor:pointer;white-space:nowrap}.chk input{width:auto;accent-color:var(--clair)}.issues li{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.issues li .why{flex-basis:100%}button.mini{padding:2px 8px;font-size:10px}.inlineedit{position:fixed;z-index:60;min-width:200px;max-width:260px;font:inherit;font-size:13px;padding:5px 8px;border:2px solid var(--lien);background:#fff;color:#151916;box-shadow:0 6px 22px #0005}textarea.inlineedit{resize:both}.namestyle{min-width:220px;gap:8px;padding:10px}.namestyle label{display:flex;flex-direction:column;gap:2px;font-size:11px;color:#c9d2c8}.namestyle .row{display:flex;gap:6px}.namestyle .row button{width:36px}.form .row{display:flex;gap:6px}.form .row button{width:40px}.tip{display:inline-flex;align-items:center;justify-content:center;width:13px;height:13px;margin-left:5px;border:1px solid var(--ui-muted);border-radius:50%;font-family:var(--font-mono);font-size:9px;line-height:1;color:var(--ui-muted);cursor:help;vertical-align:1px;-webkit-user-select:none;user-select:none}.tip:hover{background:var(--ui-text);color:var(--ui-panel);border-color:var(--ui-text)}.form label{position:relative}.form label>.tip{position:absolute;right:0;top:0;margin:0}.tooltip{position:fixed;z-index:200;width:max-content;max-width:340px;padding:9px 12px;background:var(--nuit);color:#f1f4ee;border-top:3px solid var(--clair);font-family:var(--font-ui);font-size:14px;line-height:1.45;box-shadow:0 10px 30px #0006;pointer-events:none}.advice{display:block;margin-top:3px;padding:5px 7px;border-left:3px solid var(--clair);background:#93a41514;font-size:11.5px;line-height:1.4;color:var(--ui-text)}.advice .mini{margin-left:6px}@media (min-width: 1000px){.toolbar{flex-wrap:nowrap}}.toolbar .menu-list.wide{min-width:260px;max-height:80vh;overflow-y:auto}.menu-title{margin:8px 10px 3px;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.15em;text-transform:uppercase;color:#8a958c}.menu-note{margin:6px 10px;max-width:240px}.menu-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 4px}.toolbar .menu-list button{display:flex;justify-content:space-between;gap:16px;align-items:center;width:100%}.toolbar .menu-list .namestyle{padding:6px 10px 8px;min-width:0}.toolbar .menu-list kbd{background:transparent;border-color:#3a463d;color:#9aa494}.toolbar .saved{padding:0 4px}.toolbar .menu>summary{border:1px solid #36423a;border-bottom:2px solid #36423a;background:#161d18;color:#e3e9e1;padding:6px 9px;display:flex;align-items:center;gap:4px}.toolbar .menu>summary:hover,.toolbar .menu[open]>summary{border-color:#36423a;border-bottom-color:var(--clair);background:#1f2922}.toolbar .menu-list{border-top:3px solid var(--clair);background:#121813;border-color:#36423a;box-shadow:0 14px 40px #000000a0;min-width:230px;padding:6px 0}.toolbar .menu-list.wide{min-width:300px}.toolbar .menu-list button{padding:8px 14px;color:#e3e9e1}.toolbar .menu-list button:hover:not(:disabled){background:#26332a;color:#fff}.toolbar .menu-list button:disabled{opacity:.4}.toolbar .menu-list .menu-title{margin:8px 0 3px;padding:8px 14px 3px;border-top:1px solid #2a322b;color:var(--clair)}.toolbar .menu-list .menu-title:first-child{margin-top:0;border-top:0}.toolbar .menu-list .menu-grid button{padding:7px 14px}.toolbar .menu-list .chk{display:flex;align-items:center;gap:8px;padding:6px 14px;color:#e3e9e1;font-size:12px}.toolbar .menu-list .namestyle{padding:4px 14px 10px;color:#c9d2c8}.toolbar .menu-list .namestyle label{display:flex;flex-direction:column;gap:3px;margin-bottom:6px;font-size:11px}.toolbar .menu-list .namestyle select,.toolbar .menu-list .namestyle input{background:#1f2922;color:#fff;border:1px solid #36423a;padding:5px 7px}.toolbar .menu-list .namestyle .row{display:flex;gap:6px}.toolbar .menu-list .namestyle .row button{flex:1;justify-content:center;border:1px solid #36423a;padding:5px}.toolbar .menu-list button.on{background:var(--accent-olive);color:#fff;border-color:var(--accent-olive)}.toolbar .menu-list .muted{padding:0 14px}.issues li.resolved{opacity:.7}.issues li.resolved .link{text-decoration:none;color:var(--accent-olive)}.shape-hit>:not(.shape-sel):not(.shandle):not(.shape-label-hit){fill:none;stroke:transparent;stroke-width:10;pointer-events:stroke;cursor:move}.shape-hit .shape-label-hit{fill:transparent;stroke:none;cursor:move}.shape-hit:hover>:not(.shape-sel):not(.shandle):not(.shape-label-hit){stroke:#0066cc2e}.shape-sel{fill:none;stroke:#0b6bcb;stroke-width:1;stroke-dasharray:4 3;pointer-events:none}.shandle{fill:#fff;stroke:#0b6bcb;stroke-width:1.4;cursor:crosshair}.form .colors-title{flex-basis:100%;font-size:11px;color:var(--ui-muted)}.form label.row-chk{flex-direction:row;align-items:center;gap:6px;text-transform:none;letter-spacing:0}.form label.row-chk input{width:auto;margin:0}.shape-hit.solid>rect:not(.shape-sel):not(.shandle):not(.shape-label-hit){fill:transparent;stroke:none;pointer-events:all}.ctx .ctx-title{margin:6px 12px 3px;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.15em;text-transform:uppercase;color:var(--ui-muted)}.ctx .ctx-chips{display:flex;gap:4px;padding:0 10px 4px}.ctx .ctx-chips .chip{width:auto;padding:3px 5px;border:1px solid var(--ui-line);background:transparent;color:var(--ui-text)}.ctx .ctx-chips .chip.on{border-color:var(--accent-olive);background:#93a41522}.ctx .ctx-colors{padding:0 10px 4px}.ctx .ctx-colors .swatch{width:20px;height:20px}.form .row2{display:flex;gap:8px}.form .row2 label{flex:1}.ctx .ctx-colors .swatch{padding:0;display:block;border-radius:50%}.ctx .ctx-colors{display:flex;flex-wrap:wrap;gap:5px}.brand .studio{font-weight:400;opacity:.75}svg.canvas.dark-sheet{filter:invert(.92) hue-rotate(180deg)}.exercisecard{position:fixed;left:270px;bottom:56px;z-index:30;width:320px;max-height:60vh;overflow-y:auto;padding:10px 12px;background:var(--ui-panel);border:1px solid var(--ui-line);border-top:3px solid var(--accent-olive);box-shadow:0 8px 28px #0004;font-size:12.5px}.exercisecard p{margin:6px 0}.exercisecard .exhead{display:flex;justify-content:space-between;align-items:center;gap:8px}.combo{position:relative;display:flex;align-items:stretch}.combo>input{flex:1;min-width:0;padding-right:26px;-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.combo>input::-webkit-inner-spin-button,.combo>input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.combo-btn{position:absolute;right:0;top:0;bottom:0;width:24px;padding:0;border:0;border-left:1px solid var(--ui-line);background:transparent;color:var(--ui-text);cursor:pointer;font-size:11px}.combo-btn:hover{background:var(--ui-bg)}.combo-list{position:absolute;z-index:40;left:0;right:0;top:100%;margin:2px 0 0;padding:2px 0;list-style:none;max-height:220px;overflow-y:auto;background:var(--ui-panel);border:1px solid var(--ui-line);border-top:2px solid var(--accent-olive);box-shadow:0 8px 22px #0003}.combo-list li{padding:6px 10px;font-size:13px;cursor:pointer;color:var(--ui-text)}.combo-list li:hover{background:var(--ui-bg)}.combo-list li.on{font-weight:700;background:#93a41522}.guided{margin-bottom:14px;padding:10px 12px;background:var(--ui-panel);border:1px solid var(--ui-line);border-top:3px solid var(--accent-olive);font-size:12.5px}.guided-head{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.guided-meta{margin:4px 0 6px;color:var(--ui-muted);font-size:11px}.guided-brief{margin:4px 0 8px;padding:6px 8px;background:#93a41514;border-left:3px solid var(--clair);line-height:1.45}.guided-brief p{margin:4px 0}.guided-steps{list-style:none;margin:8px 0;padding:0;display:flex;flex-direction:column;gap:4px}.guided-steps li{display:flex;gap:8px;padding:6px 4px;border-radius:2px;color:var(--ui-muted)}.guided-steps li.cur{background:#0b6bcb12;border:1px solid #0b6bcb55;color:var(--ui-text);padding:7px 6px}.guided-steps li.done{color:var(--ui-text)}.guided-steps .num{flex:none;width:20px;height:20px;border-radius:50%;border:1px solid var(--ui-line);display:grid;place-items:center;font-size:11px;background:var(--ui-panel)}.guided-steps li.cur .num{background:#0b6bcb;border-color:#0b6bcb;color:#fff}.guided-steps li.done .num{background:#2e9b2e;border-color:#2e9b2e;color:#fff}.guided-steps .stitle{line-height:1.35;font-weight:600}.guided-steps .hint{margin:5px 0 0;padding:6px 8px;background:#f0d80022;border-left:3px solid #d9b800;font-weight:400;line-height:1.45}.guided-win{margin:6px 0;padding:6px 8px;background:#2e9b2e22;border-left:3px solid #2e9b2e;font-weight:700}.guided-actions{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:6px}.guided-filters{display:flex;flex-wrap:wrap;gap:8px 16px;margin:8px 0}.seg{display:inline-flex}.seg button{border-radius:0;margin-left:-1px}.seg button.on{background:var(--accent-olive);color:#fff;border-color:var(--accent-olive);position:relative}.guided-list .cards{max-height:55vh;overflow-y:auto}.empty{position:absolute}.empty .empty-x{position:absolute;top:8px;right:8px}.guided-missing{margin:5px 0 2px;padding:5px 8px;background:#e0800018;border-left:3px solid #e08000;font-weight:400;font-size:12px}.guided-missing ul{margin:3px 0 0 16px;padding:0}.guided-brief h4{margin:8px 0 3px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ui-muted)}.guided-brief ul,.guided-brief ol{margin:2px 0 4px 18px;padding:0}.guided-brief li{margin:2px 0}.plc-row{display:flex;align-items:center;gap:6px}.chip{display:inline-flex}.stage[data-plcdock=bottom]>svg.canvas{height:calc(100% - var(--plc-h))}.stage[data-plcdock=left]>svg.canvas{margin-left:var(--plc-w);width:calc(100% - var(--plc-w))}.stage[data-plcdock=right]>svg.canvas{width:calc(100% - var(--plc-w))}.plcwin{position:absolute;z-index:10;display:flex;flex-direction:column;background:var(--ui-panel);color:var(--ui-text);border:1px solid var(--ui-line);box-shadow:0 4px 22px #0005;font-size:12px;container-type:inline-size;min-width:0;min-height:0}.plcwin.dock-bottom{left:0;right:0;bottom:0;border-radius:10px 10px 0 0}.plcwin.dock-left{left:0;top:0;bottom:0;border-radius:0 10px 10px 0}.plcwin.dock-right{right:0;top:0;bottom:0;border-radius:10px 0 0 10px}.plcwin.dock-float{border-radius:10px}.plcwin.max{top:0!important;right:0!important;bottom:0!important;left:0!important;width:auto!important;height:auto!important;border-radius:0}.plcwin.min{height:auto!important;bottom:0;top:auto;width:460px}.plcwin.min.dock-bottom,.plcwin.min.dock-float{left:8px;right:auto}.plcwin.min.dock-left{left:0;right:auto}.plcwin.min.dock-right{right:0;left:auto}.plcwin>header{display:flex;align-items:center;gap:10px;padding:5px 8px;border-bottom:1px solid var(--ui-line);cursor:default;-webkit-user-select:none;user-select:none;flex-wrap:wrap}.plcwin>header{cursor:grab}.plcwin.snap-left{box-shadow:-8px 0 0 0 var(--accent),0 4px 22px #0005}.plcwin.snap-right{box-shadow:8px 0 0 0 var(--accent),0 4px 22px #0005}.plcwin.snap-bottom{box-shadow:0 8px 0 0 var(--accent),0 4px 22px #0005}.plcwin .grow{flex:1}.plcwin-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:40%}.plcwin-btns{display:flex;gap:2px}.plcwin-btns button,.pe-tabs button{padding:2px 8px;border:1px solid var(--ui-line);background:transparent;color:inherit;border-radius:5px;cursor:pointer;font:inherit;text-transform:none;letter-spacing:0}.plcwin-btns button.on,.pe-tabs button.on{background:var(--accent);color:#fff;border-color:var(--accent)}.plcwin-btns button:hover:not(.on),.pe-tabs button:hover:not(.on){background:#8883}.pe-tabs{display:flex;gap:3px}.plcwin-extra{display:flex;align-items:center;gap:10px}.runstate{font-size:11px;color:var(--ui-muted)}.runstate.on{color:#1f8f3a;font-weight:700}.plcwin-body{flex:1;min-height:0;display:flex}.plcwin-grip{position:absolute;z-index:5}.plcwin-grip.grip-bottom{top:-3px;left:0;right:0;height:7px;cursor:ns-resize}.plcwin-grip.grip-left{right:-3px;top:0;bottom:0;width:7px;cursor:ew-resize}.plcwin-grip.grip-right{left:-3px;top:0;bottom:0;width:7px;cursor:ew-resize}.plcwin-grip.grip-corner{right:0;bottom:0;width:16px;height:16px;cursor:nwse-resize;background:linear-gradient(135deg,transparent 55%,var(--ui-line) 55% 62%,transparent 62% 72%,var(--ui-line) 72% 79%,transparent 79%)}.plcwin-grip:hover{background:#4a8fe744}.pe{display:grid;grid-template-columns:188px minmax(0,1fr);width:100%;height:100%;min-height:0}.pe-tools{overflow:auto;border-right:1px solid var(--ui-line);padding:6px 8px;background:#8881}.pe-tools h4{margin:8px 0 4px;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--ui-muted)}.pe-main{overflow:auto;padding:8px 12px 14px;position:relative;min-width:0}@container (max-width: 640px){.pe{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}.pe-tools{border-right:0;border-bottom:1px solid var(--ui-line);display:flex;flex-wrap:wrap;gap:6px 14px;max-height:118px}.pe-tools section{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.pe-tools h4{width:100%;margin:2px 0}.pe-tools .vlist{display:flex;flex-wrap:wrap;gap:3px}}.dragitem{cursor:grab;-webkit-user-select:none;user-select:none}.dragitem:active{cursor:grabbing}.tool{display:flex;align-items:center;gap:7px;border:1px solid var(--ui-line);border-radius:6px;padding:4px 7px;margin:3px 0;background:var(--ui-panel)}.tool svg{stroke:currentColor;fill:none;stroke-width:1.6;flex:none}.tool:hover,.vchip:hover{border-color:var(--accent)}.dragitem.armed{outline:2px solid var(--accent);background:#4a8fe722}.mini-step{display:inline-grid;place-items:center;min-width:20px;height:18px;border:2px solid currentColor;font-size:10px}.mini-ton{font-size:10px;border:1.5px solid currentColor;border-radius:3px;padding:0 3px}.vlist{display:grid;grid-template-columns:1fr;gap:3px}.vchip{display:flex;align-items:center;gap:6px;border:1px solid var(--ui-line);border-radius:12px;padding:2px 8px;background:var(--ui-panel)}.vchip.in{border-left:4px solid #1e88e5}.vchip.out{border-left:4px solid #fb8c00}.vchip.mem{border-left:4px solid #8e24aa}.vchip .vname{font-weight:600}.vchip small{margin-left:auto;color:var(--ui-muted)}.led{width:9px;height:9px;border-radius:50%;background:#c8c8c8;border:1px solid #777;display:inline-block;flex:none}.led.on{background:#35c759;border-color:#1f8f3a;box-shadow:0 0 5px #35c759}.pe-hint{position:sticky;top:-8px;z-index:4;background:var(--accent);color:#fff;padding:4px 10px;border-radius:6px;margin-bottom:6px;display:flex;justify-content:space-between;align-items:center}.pe-issues{list-style:none;margin:10px 0 0;padding:6px 10px;border:1px solid #fb8c0088;background:#fb8c0014;border-radius:6px}.pe-empty{text-align:center;padding:24px 10px}.pe button.primary{background:var(--accent);color:#fff;border:0;border-radius:6px;padding:6px 14px;cursor:pointer;font:inherit;text-transform:none;letter-spacing:0}.pe .mini{font:inherit;font-size:11px;padding:1px 7px;border:1px solid var(--ui-line);background:var(--ui-panel);color:inherit;border-radius:5px;cursor:pointer;text-transform:none;letter-spacing:0}.pe .x{border:0;background:transparent;color:var(--ui-muted);cursor:pointer;padding:0 3px;opacity:.55;font-size:12px;text-transform:none}.pe .x:hover{opacity:1;color:#e53935}.slot{position:relative;transition:background .12s,box-shadow .12s}.slot.can{background:#4a8fe71a;box-shadow:inset 0 0 0 1.5px #4a8fe788;border-radius:6px}.slot.over{background:#4a8fe755;box-shadow:inset 0 0 0 2px var(--accent)}.gf-slot,.ld-rslot,.cslot{display:flex;justify-content:center;align-items:center;min-height:12px}.gf-plus{width:18px;height:14px;line-height:10px;padding:0;font-size:12px;border:1px dashed var(--ui-line);background:transparent;color:var(--ui-muted);border-radius:7px;cursor:pointer;opacity:0;transition:opacity .12s}.gf-slot:hover .gf-plus,.ld-rslot:hover .gf-plus,.cslot:hover .gf-plus,.slot.can .gf-plus,.gf-block:focus-within .gf-plus{opacity:1}.slot.can .gf-plus{background:var(--accent);color:#fff;border-style:solid;border-color:var(--accent)}.gf-slot{min-height:16px}.cslot{min-width:20px;align-self:stretch}.inline{cursor:text;border-bottom:1px dotted var(--ui-muted);padding:0 2px;min-width:24px;display:inline-block}.inline.blank{color:var(--ui-muted);font-style:italic}.inline.bad{color:#e53935;border-bottom-color:#e53935}.inline-input{font:inherit;padding:1px 4px;border:1px solid var(--accent);border-radius:4px;background:var(--ui-panel);color:inherit;min-width:90px}.gf{max-width:760px;margin:0 auto}.gf-block{display:flex;flex-direction:column}.gf-step{display:flex;align-items:center;gap:8px;padding:5px 8px;border:1px solid var(--ui-line);border-radius:8px;background:var(--ui-panel);flex-wrap:wrap}.gf-step.active{border-color:#35c759;box-shadow:0 0 0 3px #35c75966;background:#35c75922}.gf-grip{cursor:grab;color:var(--ui-muted);padding:0 2px;font-size:14px}.gf-no{min-width:30px;height:30px;border:2px solid currentColor;background:var(--ui-panel);color:inherit;font:inherit;font-weight:700;font-size:14px;cursor:pointer;text-transform:none;letter-spacing:0}.gf-no.init{box-shadow:0 0 0 2px var(--ui-panel),0 0 0 4px currentColor;margin:0 4px}.gf-actions{display:flex;flex-wrap:wrap;gap:5px;align-items:center;flex:1;min-width:120px}.gf-act{display:inline-flex;align-items:center;border:1px solid var(--ui-line);border-radius:5px;padding:1px 3px 1px 0;background:#fb8c0012}.gf-act .kind{border:0;border-right:1px solid var(--ui-line);background:#fb8c0033;color:inherit;font:inherit;font-weight:700;padding:1px 6px;cursor:pointer;margin-right:4px;text-transform:none}.gf-act .kind.kS{background:#43a04733}.gf-act .kind.kR{background:#e5393533}.gf-var{display:inline-block}.gf-addact{font:inherit;font-size:11px;border:1px dashed var(--ui-line);background:transparent;color:var(--ui-muted);border-radius:5px;padding:1px 7px;cursor:pointer;text-transform:none;letter-spacing:0}.gf-addact:hover{border-color:var(--accent);color:var(--accent)}.gf-comment{color:var(--ui-muted);font-size:11px}.gf-link{cursor:grab;color:var(--ui-muted);font-size:15px;padding:0 4px;border:1px dashed transparent;border-radius:4px}.gf-link:hover{border-color:var(--accent);color:var(--accent)}.gf-tr{display:flex;align-items:center;gap:10px;padding-left:52px;min-height:26px}.gf-tr .bar{width:22px;height:0;border-top:3px solid currentColor;position:relative}.gf-tr .bar:before{content:"";position:absolute;left:10px;top:-17px;width:0;height:28px;border-left:2px solid currentColor}.gf-tr .bar.dashed{border-top-style:dashed;opacity:.5}.gf-tr.fire .bar{border-top-color:#35c759}.gf-tr.fire .gf-cond{background:#35c75933;border-radius:4px}.gf-cond{padding:1px 6px;display:inline-flex;gap:4px;align-items:center}.gf-err{color:#e53935}.gf-jump{display:flex;align-items:center;gap:8px;padding:2px 0 2px 52px;color:#2a5bd7;font-size:11.5px}.gf-jump.fire .gf-cond{background:#35c75933}.gf-foot{display:flex;gap:8px;margin-top:8px;justify-content:center}.gf-first{display:inline-block;padding:10px 20px}.ld{max-width:900px;margin:0 auto}.rung{border:1px solid var(--ui-line);border-radius:8px;padding:4px 8px 8px;background:var(--ui-panel)}.rung.on{border-color:#35c759;box-shadow:0 0 0 2px #35c75955}.rung-head{display:flex;align-items:center;gap:8px}.rung-body{display:flex;align-items:stretch;margin-top:4px}.rail{width:0;border-left:4px solid currentColor}.branches{flex:1;display:flex;flex-direction:column;justify-content:center;padding:2px 0;min-width:0}.branches.multi{border-left:2px solid currentColor;border-right:2px solid currentColor}.branch{display:flex;align-items:center;position:relative;padding:2px 0;flex-wrap:nowrap;overflow-x:auto}.branch:before{content:"";position:absolute;left:0;right:0;top:50%;border-top:2px solid currentColor;z-index:0}.ctw{display:flex;align-items:center;position:relative;z-index:1}.contact{display:flex;flex-direction:column;align-items:center;background:var(--ui-panel);padding:0 4px;position:relative;z-index:1}.contact .sym{border:0;background:transparent;cursor:pointer;padding:0;color:inherit}.contact svg,.coilbox svg{stroke:currentColor;fill:none;stroke-width:2}.contact.on svg,.coilbox.on svg{stroke:#1f9d47}.contact.on .inline{color:#1f9d47;font-weight:700}.contact .x{position:absolute;top:-4px;right:-4px;display:none;background:var(--ui-panel);border-radius:50%}.contact:hover .x{display:block}.cvar{text-align:center;min-width:52px}.branch-new{padding:2px 8px;display:flex;justify-content:center}.coilbox{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:2px 0;position:relative;z-index:1}.coilbox .ckind{border:0;background:transparent;cursor:pointer;color:inherit}.coilbox .preset input{width:54px;font:inherit;padding:1px 3px;border:1px solid var(--ui-line);border-radius:4px;background:var(--ui-panel);color:inherit}.pe-names .plc-row{display:flex;align-items:center;gap:6px;margin:3px 0}.pe-names .plc-row input{padding:2px 5px;border:1px solid var(--ui-line);border-radius:4px;background:var(--ui-panel);color:inherit;font:inherit;flex:1;min-width:0}.pe-names .plc-io{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px}.plcwin.min .plcwin-extra{display:none}.plcwin.min>header{flex-wrap:nowrap}.palette,.props{position:relative}.resizer{position:absolute;top:0;bottom:0;width:8px;z-index:6;cursor:col-resize;touch-action:none}.resizer.r{right:-4px}.resizer.l{left:-4px}.resizer:hover,.resizer:active{background:#4a8fe755}.explain{font-size:13px;line-height:1.45}.explain p{margin:6px 0}.explain ul{margin:4px 0 8px;padding-left:18px}.explain li{margin:3px 0}.explain-tip{background:var(--ui-hover, rgba(127, 127, 127, .12));padding:6px 8px;border-radius:6px}details.explain-box{margin:8px 0}details.explain-box>summary{cursor:pointer;font-weight:600}.symbtn.revsel{outline:2px solid var(--accent, #2b7de9);outline-offset:-2px}.symbtn.revkeep{background:#35c75929}.symbtn.revhide{background:#e5393524;opacity:.6}.note.review{font-weight:600}.symbtn.revdel{background:#78787840;opacity:.5;text-decoration:line-through}.symbtn.revredo{background:#ffb70038}.gfg{max-width:none;width:max-content;min-width:100%;display:flex;flex-direction:column;align-items:center}.gfg-seq{display:flex;flex-direction:column;align-items:center}.gfg-v{flex:none;width:0;height:12px;border-left:2px solid currentColor}.gfg-stepw{display:block}.gfg-step{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:6px;border:0;background:transparent;padding:0;flex-wrap:nowrap}.gfg-step.active{box-shadow:none;background:transparent}.gfg-step.active .gfg-no{background:#35c759;color:#fff;box-shadow:0 0 0 4px #35c75966}.gfg-ctl{justify-self:end;display:flex;align-items:center;gap:2px;opacity:.35}.gfg-step:hover .gfg-ctl,.gfg-step:focus-within .gfg-ctl{opacity:1}.gfg-no{width:34px;height:34px;border-radius:0}.gfg-no.init{box-shadow:0 0 0 3px var(--ui-panel),0 0 0 5px currentColor;margin:5px 0}.gfg-side{display:flex;align-items:center;gap:6px;min-width:0}.gfg-side:before{content:"";width:14px;border-top:2px solid currentColor;flex:none}.gfg-actions{flex:none;flex-wrap:wrap;max-width:330px;padding:3px 4px;border:1.5px solid currentColor;border-radius:0;background:var(--ui-panel)}.gfg-del{opacity:.45}.gfg-step:hover .gfg-del{opacity:1}.gfg-trw{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:6px;min-height:22px;padding:0}.gfg-trw .bar{width:26px;border-top:4px solid currentColor;height:0}.gfg-trw .bar.multi{border-top-width:4px}.gfg-trw.fire .bar{border-top-color:#35c759}.gfg-trl{justify-self:end}.gfg-trr{display:flex;align-items:center;gap:4px;min-width:0}.gfg-trr:before{content:"";width:8px}.gfg-blk{display:flex;flex-direction:column;align-items:center;position:relative}.gfg-brs{display:flex;align-items:flex-start;gap:28px}.gfg-br{position:relative;display:flex;flex-direction:column;align-items:center}.gfg-br:before{content:"";position:absolute;top:0;left:-14px;right:-14px;border-top:2px solid currentColor}.gfg-br:first-child:before{left:50%}.gfg-br:last-child:before{right:50%}.gfg-br:only-child:before{display:none}.gfg-br.m:after{content:"";position:absolute;bottom:0;left:-14px;right:-14px;border-top:2px solid currentColor}.gfg-br.m:first-child:after{left:50%}.gfg-br.m:last-child:after{right:50%}.gfg-br.m:only-child:after{display:none}.gfg-blk.and .gfg-br:before,.gfg-blk.and .gfg-br.m:after{border-top:6px double currentColor;height:0}.gfg-blk .gfg-addbr{position:absolute;right:-6px;top:-2px;transform:translate(100%);font:inherit;font-size:11px;border:1px dashed var(--ui-line);background:transparent;color:var(--ui-muted);border-radius:5px;cursor:pointer;padding:0 6px;opacity:0}.gfg-blk:hover>.gfg-addbr{opacity:1}.gfg-jump{color:#2a5bd7;font-size:12px;font-weight:600;padding-top:2px}.pe-quick{width:100%;box-sizing:border-box;padding:3px 6px;border:1px solid var(--ui-line);border-radius:5px;background:var(--ui-panel);color:inherit;font:inherit;margin-bottom:4px}.machview{position:absolute;left:12px;top:54px;z-index:12;width:440px;min-width:260px;max-width:94%;resize:both;overflow:auto;background:var(--ui-panel);color:var(--ui-text);border:1px solid var(--ui-line);border-radius:10px;box-shadow:0 6px 24px #0004;padding:6px 8px 8px}.machview>header{display:flex;align-items:center;gap:8px;margin-bottom:4px}.machview>header nav{display:flex;gap:3px}.machview>header nav button{font:inherit;font-size:12px;padding:2px 8px;border:1px solid var(--ui-line);background:transparent;color:inherit;border-radius:5px;cursor:pointer;text-transform:none;letter-spacing:0}.machview>header nav button.on{background:var(--accent);color:#fff;border-color:var(--accent)}.machview .grow{flex:1}.machview .x{border:0;background:transparent;color:var(--ui-muted);cursor:pointer;font-size:14px}.mv-svg{width:100%;height:auto;display:block;color:#263238}.mv-note{margin:4px 0 0}@keyframes mv-spin{to{transform:rotate(360deg)}}.form textarea{font:inherit;padding:5px 7px;width:100%;box-sizing:border-box;resize:vertical;min-height:36px}.form input.ratingrange{padding:0;margin-top:2px;accent-color:var(--accent, #2b7de9)}.empty .chk{color:var(--ui-text);font-size:12px;padding:4px 0 10px;text-transform:none;letter-spacing:0}.exguide{position:absolute;left:14px;bottom:54px;width:min(430px,calc(100% - 28px));max-height:60%;overflow:auto;z-index:20;background:var(--ui-panel);color:var(--ui-text);border:1px solid var(--ui-line);border-top:5px solid var(--accent-olive);border-radius:12px;padding:14px 18px 12px;box-shadow:0 10px 30px #0003;text-align:left;font-size:13px;line-height:1.45}.exguide h3{margin:0 24px 6px 0;font-size:15px}.exguide h4{margin:10px 0 3px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ui-muted)}.exguide p,.exguide ul{margin:0}.exguide ul{padding-left:18px}.exguide li{margin:2px 0}.exguide-x{position:absolute;top:8px;right:8px}.cloud{max-width:460px}.cloud h4{margin:14px 0 4px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ui-muted)}.cloud-code{font:600 26px/1.2 IBM Plex Mono,monospace;letter-spacing:.12em;text-align:center;padding:10px 6px;background:var(--ui-bg);border:1px dashed var(--ui-line);border-radius:8px;-webkit-user-select:all;user-select:all}.cloud-input{flex:1;font-family:IBM Plex Mono,monospace;text-transform:uppercase;letter-spacing:.08em}.cloud-state.ok{color:#2b8a3e}.cloud-state.error{color:#c0211b}.cloud-state.saving{color:var(--ui-muted)}.cloud-msg{color:#c0211b;font-weight:600}.linkish{background:none;border:0;padding:0;text-decoration:underline;color:var(--ui-muted);cursor:pointer;font-size:inherit}.cloudbtn{font-size:12px;padding:2px 8px}.cloudbtn.error{color:#c0211b}.cloud-nudge{position:absolute;right:14px;bottom:54px;z-index:19;max-width:340px;background:var(--ui-panel);color:var(--ui-text);border:1px solid var(--ui-line);border-left:5px solid var(--accent-olive);border-radius:10px;padding:10px 14px;box-shadow:0 6px 20px #0003;font-size:13px}.cloud-nudge p{margin:0 0 8px}.cloud-nudge .row{display:flex;gap:8px}
