:root{--paper:#f4efe4;--card:#fbf8f1;--ink:#232a37;--indigo:#2b3a55;--accent:#d9482b;--line:#ddd5c4;--muted:#6c675c;--ok:#2f7d5b;--k-power:#c0392b;--k-v5:#e08e12;--k-pwm:#7a52c7;--k-enc:#7a52c7;--k-safety:#151a24;--k-i2c:#1f8a70;--k-uart:#2563c9;--k-i2s:#0e7490;--k-io:#b45309;--k-cloud:#7c8799;color:var(--ink);background:var(--paper);font-synthesis:none;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{flex-direction:column;min-height:100vh;margin:0;display:flex}h1,h2,h3,p{margin:0}a{color:var(--indigo)}button,input{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}code{font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:.86em}.top{z-index:10;background:color-mix(in srgb, var(--paper) 92%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);align-items:center;gap:20px;padding:10px 22px;display:flex;position:sticky;top:0}.brand{color:var(--ink);align-items:center;gap:10px;text-decoration:none;display:flex}.brand-mark{background:var(--indigo);border-radius:10px;justify-content:center;align-items:center;gap:4px;width:30px;height:30px;display:flex}.brand-mark i{background:#9fe8ff;border-radius:50%;width:7px;height:7px}.brand-name{letter-spacing:-.01em;font-size:1.05rem;font-weight:700}.rev{white-space:nowrap;background:var(--accent);color:#fff;border-radius:999px;padding:2px 7px;font-size:.7rem;font-weight:700}.tabs{flex-wrap:wrap;gap:2px;margin-left:8px;display:flex}.tabs a{color:var(--muted);border-radius:8px;padding:7px 12px;font-size:.9rem;font-weight:600;text-decoration:none}.tabs a:hover{color:var(--ink);background:#ebe4d4}.tabs a[aria-current=page]{color:#fff;background:var(--indigo)}.status{color:var(--muted);white-space:nowrap;align-items:center;gap:7px;margin-left:auto;font-size:.78rem;font-weight:600;display:flex}.status span{background:#e0a21a;border-radius:50%;width:8px;height:8px}main{flex:1}.tab-panel{max-width:1280px;margin:0 auto;padding:26px clamp(16px,4vw,56px) 48px}.tab-panel[hidden]{display:none!important}#panel-robot{grid-template-columns:minmax(0,1fr) 372px;gap:0;max-width:none;height:calc(100vh - 92px);min-height:560px;padding:0;display:grid}.stage{background:radial-gradient(ellipse at 50% 62%, #fffdf7 0%, var(--paper) 62%);min-width:0;position:relative}.viewport{position:absolute;inset:0}.viewport canvas{cursor:grab;display:block}.view-tools{background:var(--card);border:1px solid var(--line);border-radius:11px;gap:4px;padding:4px;display:flex;position:absolute;top:16px;left:18px}.view-tools button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:8px;padding:6px 11px;font-size:.8rem;font-weight:600}.view-tools button:hover{color:var(--ink)}.view-tools button.active{background:var(--indigo);color:#fff}.hint{color:var(--muted);font-size:.78rem;position:absolute;bottom:16px;left:20px}.axis-key{color:var(--muted);font-size:.76rem;position:absolute;bottom:16px;right:20px}.axis-key b{color:var(--ink);margin-left:8px}.render-error{text-align:center;color:var(--muted);padding:80px 40px}.inspector{border-left:1px solid var(--line);background:var(--card);flex-direction:column;gap:18px;padding:26px 24px;display:flex;overflow-y:auto}.eyebrow{letter-spacing:.09em;text-transform:uppercase;color:var(--accent);margin-bottom:6px;font-size:.7rem;font-weight:700}.inspector h1{letter-spacing:-.02em;font-size:1.45rem;line-height:1.2}.stats{background:var(--line);border:1px solid var(--line);border-radius:12px;grid-template-columns:1fr 1fr;gap:1px;margin:0;display:grid;overflow:hidden}.stats div{background:var(--card);padding:11px 13px}.stats dt{color:var(--muted);font-size:.72rem}.stats dd{letter-spacing:-.01em;margin:2px 0 0;font-size:1.12rem;font-weight:700}.control label{justify-content:space-between;margin-bottom:6px;font-size:.82rem;font-weight:600;display:flex}.control output{color:var(--muted);font-variant-numeric:tabular-nums}.control input{width:100%;accent-color:var(--accent)}.toggles{flex-wrap:wrap;gap:8px 16px;font-size:.84rem;display:flex}.toggles label{cursor:pointer;align-items:center;gap:6px;display:flex}.toggles input{accent-color:var(--accent)}.card{border:1px solid var(--line);background:#fff;border-radius:14px;padding:16px}.card h3{margin-bottom:6px;font-size:1.02rem}.card p{color:#40454f;font-size:.87rem;line-height:1.5}.rows{gap:7px;margin:12px 0 0;display:grid}.rows div{grid-template-columns:76px 1fr;gap:10px;font-size:.8rem;display:grid}.rows dt{color:var(--muted)}.rows dd{margin:0}.badge{letter-spacing:.04em;color:#fff;border-radius:999px;margin-left:6px;padding:2px 7px;font-size:.66rem}.badge.have{background:var(--ok)}.badge.buy{background:var(--accent)}.link{margin-top:12px;font-size:.82rem;font-weight:600;display:inline-block}.sheet-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:28px;margin-bottom:18px;display:flex}.sheet-head h2{letter-spacing:-.02em;font-size:1.6rem}.lede{color:#40454f;max-width:56ch;font-size:.92rem;line-height:1.55}.section-title{margin:34px 0 12px;font-size:1.1rem}.muted{color:var(--muted);font-size:.84rem;line-height:1.5}.muted.block{margin-top:2px;display:block}.sheet{border:1px solid var(--line);border-radius:16px;position:relative;overflow:hidden}.sheet-note{color:var(--muted);margin-top:10px;font-size:.82rem}.tip{z-index:2;pointer-events:none;color:var(--ink);white-space:nowrap;background:#fff;border-radius:7px;padding:5px 9px;font-size:.78rem;font-weight:600;position:absolute;box-shadow:0 4px 14px #00000040}.blueprint{width:100%;height:auto;display:block}.blueprint .paper{fill:#132746}.blueprint .grid-line{fill:none;stroke:#2a4a78;stroke-width:.2px}.blueprint .frame{fill:none;stroke:#7fb5e6;stroke-width:.5px}.blueprint .outline{fill:none;stroke:#e6f3ff;stroke-width:.8px;stroke-linejoin:round}.blueprint .outline.fill,.blueprint .accent.fill{fill:#1b3560}.blueprint .thin{fill:none;stroke:#a9d2f5;stroke-width:.35px}.blueprint .accent{fill:none;stroke:#ff8f6b;stroke-width:1.1px}.blueprint .centre{fill:none;stroke:#5f8fc0;stroke-width:.25px;stroke-dasharray:6 1.5 1 1.5}.blueprint .ground{stroke:#7fb5e6;stroke-width:.5px;stroke-dasharray:3 2}.blueprint .internal{fill:#9fd7ff12;stroke:#7fc3f7;stroke-width:.3px;stroke-dasharray:1.6 1}.blueprint .internal.wood{stroke:#e7c68e}.blueprint .internal.torii{stroke:#ff8f6b;fill:#ff8f6b14}.blueprint .sensor{fill:#132746;stroke:#ffd27a;stroke-width:.5px}.blueprint .eye{fill:#9fe8ff4d;stroke:#9fe8ff;stroke-width:.6px}.blueprint .beam{fill:#ffd27a24;stroke:#ffd27a80;stroke-width:.2px}.blueprint .hot{cursor:crosshair}.blueprint .hot:hover{stroke:#fff;stroke-width:.7px;fill:#fff3}.blueprint .dim path{fill:none;stroke:#ffd27a;stroke-width:.25px}.blueprint .dim .dim-ext{stroke-width:.18px;opacity:.7}.blueprint .tick{fill:none;stroke:#ffd27a;stroke-width:.6px}.blueprint text{fill:#cfe6fb;font-family:ui-monospace,Cascadia Mono,Consolas,monospace}.blueprint .dim-text{fill:#ffd27a;text-anchor:middle;font-size:4.4px}.blueprint .note{font-size:4.1px}.blueprint .view-label{letter-spacing:.6px;fill:#e6f3ff;font-size:5.4px;font-weight:700}.blueprint .title{letter-spacing:.8px;fill:#fff;font-size:7.4px;font-weight:700}.joint-grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px;display:grid}.joint{border:1px solid var(--line);background:var(--card);border-radius:16px;grid-template-columns:132px 1fr;gap:16px;padding:16px;display:grid}.joint-art{border:1px solid var(--line);background:#fff;border-radius:12px;align-self:start;padding:6px}.joint-art svg{width:100%;display:block}.joint .kanji{color:var(--accent);margin-bottom:4px;font-size:1.7rem;line-height:1.1}.joint h3{margin-bottom:6px;font-size:1.05rem}.joint h3 span{color:var(--muted);margin-left:4px;font-size:.86rem;font-weight:500}.joint p{color:#40454f;font-size:.86rem;line-height:1.5}.j-base{fill:var(--indigo)}.j-part{fill:#e9dfc8;stroke:#b9ad92;stroke-width:.8px}.j-key{fill:var(--accent)}.j-slot{fill:#fff;opacity:.5}.j-draw{fill:none;stroke:#e9dfc8;stroke-width:1.6px;stroke-dasharray:1;animation:5s ease-in-out infinite draw}.j-move{animation:none}.j-down{animation-name:down}.j-right{animation-name:right}.j-left{animation-name:left}.j-kendon{animation-name:kendon}@keyframes down{0%,12%{opacity:.55;transform:translateY(-20px)}45%,to{opacity:1;transform:none}}@keyframes right{0%,12%{opacity:.55;transform:translate(-30px)}45%,to{opacity:1;transform:none}}@keyframes left{0%,12%{opacity:.55;transform:translate(22px)}45%,to{opacity:1;transform:none}}@keyframes kendon{0%,10%{opacity:.55;transform:translate(20px,4px)}30%{opacity:1;transform:translateY(-7px)}50%,to{opacity:1;transform:translateY(2px)}}@keyframes draw{0%,8%{stroke-dashoffset:1px}60%,to{stroke-dashoffset:0}}@media (prefers-reduced-motion:reduce){.j-move,.j-draw{animation:none}}.steps,.flow{counter-reset:step;gap:10px;margin:0;padding:0;list-style:none;display:grid}.steps{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.flow{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));margin-bottom:10px}.steps li,.flow li{counter-increment:step;border:1px solid var(--line);background:var(--card);border-radius:12px;padding:14px 14px 14px 46px;position:relative}.steps li:before,.flow li:before{content:counter(step);background:var(--indigo);color:#fff;border-radius:50%;place-items:center;width:22px;height:22px;font-size:.74rem;font-weight:700;display:grid;position:absolute;top:13px;left:13px}.steps b,.flow b{margin-bottom:3px;font-size:.9rem;display:block}.steps span,.flow span{color:#40454f;font-size:.82rem;line-height:1.45}.table-card{border:1px solid var(--line);background:var(--card);border-radius:14px;overflow-x:auto}.table-card h3{padding:14px 16px 2px;font-size:.98rem}.table-card>.muted{padding:0 16px 10px}table{border-collapse:collapse;width:100%;font-size:.85rem}th{text-align:left;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--line);padding:10px 16px;font-size:.7rem}td{vertical-align:top;border-bottom:1px solid #ece5d6;padding:9px 16px;line-height:1.4}tr:last-child td{border-bottom:0}.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}tr.total td{background:#f3ecdc;font-weight:700}.two-col{grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:16px;display:grid}.dot{border-radius:50%;width:8px;height:8px;margin-right:8px;display:inline-block}.open-list{gap:7px;margin:0;padding-left:20px;font-size:.88rem;line-height:1.5;display:grid}.wiring-layout{grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:16px;display:grid}.sheet.light{background:#fff}.wiring{width:100%;height:auto;display:block}.wiring .wire{fill:none;stroke:currentColor;stroke-width:2.6px;stroke-linejoin:round;stroke-linecap:round}.wiring .wire-hit{fill:none;stroke:#0000;stroke-width:16px;pointer-events:stroke;cursor:pointer}.wiring .net{transition:opacity .15s}.wiring .net.k-safety .wire{stroke-dasharray:7 4}.wiring .net.k-cloud .wire{stroke-dasharray:2 6}.wiring.dim .net:not(.on){opacity:.12}.wiring.dim .block:not(.on){opacity:.35}.wiring .net.on .wire{stroke-width:4.4px}.wiring .block{cursor:pointer;transition:opacity .15s}.wiring .block rect{fill:#f7f3ea;stroke:#cfc6b3;stroke-width:1.4px}.wiring .block:hover rect,.wiring .block:focus rect{stroke:var(--ink)}.wiring .b-mcu rect{fill:var(--indigo);stroke:var(--indigo)}.wiring .b-mcu text{fill:#fff}.wiring .b-mcu .b-sub{fill:#c5d1e6}.wiring .b-power rect{fill:#fbe9e4;stroke:#e7b8ac}.wiring .b-safety rect{fill:#ecebee;stroke:#151a24;stroke-dasharray:5 3}.wiring .b-sense rect{fill:#e4f3ee;stroke:#a9d3c5}.wiring .b-drive rect{fill:#eee8fa;stroke:#c8b8ea}.wiring .b-cloud rect{fill:#eef1f5;stroke:#b8c1cf;stroke-dasharray:3 4}.wiring text{text-anchor:middle;pointer-events:none;font-family:inherit}.wiring .b-title{fill:var(--ink);font-size:14px;font-weight:700}.wiring .b-sub{fill:var(--muted);font-size:11px}.legend{color:var(--muted);flex-wrap:wrap;gap:6px 14px;max-width:520px;font-size:.76rem;display:flex}.legend span{align-items:center;gap:6px;display:flex}.legend i{background:currentColor;border-radius:2px;width:16px;height:3px}.k-power{color:var(--k-power)}.k-v5{color:var(--k-v5)}.k-pwm,.k-enc{color:var(--k-pwm)}.k-safety{color:var(--k-safety)}.k-i2c{color:var(--k-i2c)}.k-uart{color:var(--k-uart)}.k-i2s{color:var(--k-i2s)}.k-io{color:var(--k-io)}.k-cloud{color:var(--k-cloud)}.dot.k-power,.dot.k-v5,.dot.k-pwm,.dot.k-enc,.dot.k-safety,.dot.k-i2c,.dot.k-uart,.dot.k-i2s,.dot.k-io{background:currentColor}.gates{grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:14px;display:grid}.gate{border:1px solid var(--line);background:var(--card);border-radius:14px;padding:15px}.gate header{align-items:center;gap:9px;margin-bottom:10px;display:flex}.gate-id{background:var(--indigo);color:#fff;border-radius:6px;padding:3px 7px;font-size:.72rem;font-weight:800}.gate h3{flex:1;font-size:.96rem}.chip{color:var(--muted);white-space:nowrap;background:#e9e2d2;border-radius:999px;padding:3px 8px;font-size:.68rem;font-weight:700}.s-active{border-color:#e0a21a}.s-active .chip{color:#8a6100;background:#fbeccb}.s-next .chip{color:#2a4b86;background:#dde7f7}.gate ul{gap:5px;margin:0;padding:0;font-size:.84rem;line-height:1.4;list-style:none;display:grid}.gate ul+ul{border-top:1px dashed var(--line);margin-top:8px;padding-top:8px}.gate li{padding-left:22px;position:relative}.gate .done li:before{content:"✓";color:var(--ok);font-weight:800;position:absolute;left:2px}.gate .todo li:before{content:"";border:1.5px solid #b3aa97;border-radius:3px;width:9px;height:9px;position:absolute;top:5px;left:3px}.foot{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;gap:16px;padding:11px 22px;font-size:.76rem;display:flex}@media (width<=920px){#panel-robot{grid-template-columns:1fr;height:auto}.stage{height:62vh;min-height:380px}.inspector{border-left:0;border-top:1px solid var(--line)}.wiring-layout{grid-template-columns:1fr}.status{display:none}.joint{grid-template-columns:96px 1fr}}
