:root{--k-gpioIn: #3b82f6;--k-gpioOut: #10b981;--k-pwm: #f59e0b;--k-adc: #a855f7;--k-uart: #ef4444;--k-i2c: #14b8a6;--k-spi: #ec4899;--k-dac: #8b5cf6;--k-debug: #64748b;--k-reserved: #78716c;--k-free: #ffffff;--k-power: #cbd5e1;--pkg-body: #1f2937;--pkg-fg: #e5e7eb}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--k-free: #2a303b;--k-power: #475569;--pkg-body: #0b0e13}}:root[data-theme=dark]{--k-free: #2a303b;--k-power: #475569;--pkg-body: #0b0e13}.pins-head{display:flex;flex-wrap:wrap;gap:.5rem 1rem;align-items:end}.pins-head h2{margin:0 1rem 0 0}.pins-head label{margin:0}.pins-main{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:1rem;align-items:start;margin-top:.75rem}@media (max-width: 900px){.pins-main{grid-template-columns:minmax(0,1fr)}}.pins-pkg{min-width:0}.pins-side{position:sticky;top:.5rem;border:1px solid var(--line);border-radius:8px;padding:.75rem;background:var(--card);max-height:calc(100vh - 1rem);overflow-y:auto}svg.pkg{width:100%;height:auto;max-height:82vh;display:block;-webkit-user-select:none;user-select:none}svg.pkg .body{fill:var(--pkg-body)}svg.pkg .epad{fill:none;stroke:var(--pkg-fg);stroke-opacity:.25;stroke-dasharray:3 3}svg.pkg .dot1{fill:var(--pkg-fg);opacity:.7}svg.pkg .part{fill:var(--pkg-fg);font:600 13px system-ui,sans-serif}svg.pkg .pkgname{fill:var(--pkg-fg);opacity:.7;font:11px system-ui,sans-serif}svg.pkg .pad rect{stroke:var(--fg);stroke-opacity:.45;stroke-width:.6}svg.pkg .pad .lbl{fill:var(--fg);font:8.5px ui-monospace,SFMono-Regular,Menlo,monospace}svg.pkg .pad .lbl.dim{fill:var(--muted)}svg.pkg .pad.io{cursor:pointer}svg.pkg .pad.io:hover rect,svg.pkg .pad.io:focus rect{stroke:var(--accent);stroke-width:1.6;stroke-opacity:1}svg.pkg .pad.io:focus{outline:none}svg.pkg .pad.sel rect{stroke:var(--accent);stroke-width:2.4;stroke-opacity:1}svg.pkg .pad.sel .lbl{font-weight:700;fill:var(--accent)}svg.pkg .pad.err rect{stroke:var(--err-fg);stroke-width:2;stroke-opacity:1}svg.pkg .pad.err .lbl{fill:var(--err-fg)}svg.pkg .pad.warn rect{stroke:var(--warn-fg);stroke-width:2;stroke-opacity:1}svg.pkg .pad.warn .lbl{fill:var(--warn-fg)}svg.pkg .k-gpioIn rect{fill:var(--k-gpioIn)}svg.pkg .k-gpioOut rect{fill:var(--k-gpioOut)}svg.pkg .k-pwm rect{fill:var(--k-pwm)}svg.pkg .k-adc rect{fill:var(--k-adc)}svg.pkg .k-uart rect{fill:var(--k-uart)}svg.pkg .k-i2c rect{fill:var(--k-i2c)}svg.pkg .k-spi rect{fill:var(--k-spi)}svg.pkg .k-dac rect{fill:var(--k-dac)}svg.pkg .k-debug rect,svg.pkg .k-free-debug rect{fill:var(--k-debug)}svg.pkg .k-free-debug rect{fill-opacity:.35}svg.pkg .k-reserved rect{fill:var(--k-reserved)}svg.pkg .k-free rect{fill:var(--k-free)}svg.pkg .k-power rect{fill:var(--k-power)}.swatch{display:inline-block;width:.8em;height:.8em;border-radius:2px;vertical-align:-.05em;margin-right:.3em;border:1px solid var(--line)}.swatch.k-gpioIn{background:var(--k-gpioIn)}.swatch.k-gpioOut{background:var(--k-gpioOut)}.swatch.k-pwm{background:var(--k-pwm)}.swatch.k-adc{background:var(--k-adc)}.swatch.k-uart{background:var(--k-uart)}.swatch.k-i2c{background:var(--k-i2c)}.swatch.k-spi{background:var(--k-spi)}.swatch.k-dac{background:var(--k-dac)}.swatch.k-debug{background:var(--k-debug)}.swatch.k-reserved{background:var(--k-reserved)}.swatch.k-free{background:var(--k-free)}.swatch.k-power{background:var(--k-power)}.legend{display:flex;flex-wrap:wrap;gap:.25rem .9rem;font-size:.8rem;color:var(--muted);margin-top:.4rem}.pinpanel h3{margin:0 0 .25rem}.pinpanel .oneline{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem;background:var(--code-bg);padding:.3rem .5rem;border-radius:4px;word-break:break-all}.pinpanel fieldset{border:none;padding:0;margin:0;min-width:0}.pinpanel label{display:block;margin:.45rem 0}.pinpanel label.inline{display:inline-flex}.pinpanel select,.pinpanel input:not([type=checkbox]){width:100%}.pinpanel .row{display:flex;gap:.4rem}.pinpanel .row select{flex:1}.pinpanel .cfgrow{display:grid;grid-template-columns:1fr 1fr;gap:0 .6rem}.pinpanel .cfgrow .wide{grid-column:1 / -1;margin:.2rem 0}.pinpanel .ifbox{border-left:3px solid var(--line);padding-left:.6rem;margin:.4rem 0}.pinpanel input.bad{border-color:var(--err-fg)}.pinpanel .warn{color:var(--warn-fg)}.pinprob{list-style:none;padding:0;margin:.4rem 0;font-size:.85rem}.pinprob li{padding:.2rem .4rem;border-radius:4px;margin:.15rem 0}.pinprob li.err{background:var(--err-bg);color:var(--err-fg)}.pinprob li.warn{background:var(--warn-bg);color:var(--warn-fg)}.checkbar{margin:.6rem 0;padding:.4rem .6rem;border-radius:6px}.checkbar.ok{background:var(--ok-bg);color:var(--ok-fg)}.checkbar.warn{background:var(--warn-bg);color:var(--warn-fg)}.checkbar.err{background:var(--err-bg);color:var(--err-fg)}.checkbar button.link{color:inherit;font-weight:600}.checkbar ul{margin:.4rem 0 0;padding-left:1.1rem;font-size:.88rem}.checkbar li button.link{font-family:ui-monospace,Menlo,monospace;text-decoration:underline}.pins label.inline{display:inline-flex;gap:.3rem;align-items:center;margin:0}.pins-lists{margin-top:1rem}.pins-filter{max-width:320px}.pins-gpio{list-style:none;padding:0;margin:.3rem 0 1rem;columns:2 420px}.pins-gpio li{break-inside:avoid;padding:.1rem 0}.pins-gpio li.sel code{color:var(--accent);font-weight:700}.pins-gpio li.err code{color:var(--err-fg)}.pins-gpio code{font-size:.82rem}.pins tr{cursor:pointer}.pins tr.sel td{outline:1px solid var(--accent)}.pins tr.err td{color:var(--err-fg)}.pinprob li .suggest{margin-top:.15rem;font-size:.82rem}.pinprob li .pinlink{font-family:ui-monospace,Menlo,monospace;text-decoration:underline;margin-right:.35rem;color:inherit}.pinprob li.lv-strong{border-left:3px solid var(--err-fg)}.pinprob li.lv-mild,.pinprob li.lv-info{opacity:.9}.pinprob li.acked{background:transparent;border:1px dashed var(--line);color:var(--muted)}.pinprob label.ack{display:inline-flex;gap:.3rem;align-items:center;margin:.2rem 0 0;font-size:.8rem}.checkbar .jump{margin-left:.5rem}.checkbar .jump button.link{color:inherit;padding:0 .2rem}.checkbar li.acked{opacity:.6}.checkbar li.lv-strong{font-weight:600}.pins-clocks{display:flex;gap:.5rem;align-items:end;border:1px solid var(--line);border-radius:6px;padding:.2rem .5rem .4rem;margin:0}.pins-clocks legend{font-size:.8rem;padding:0 .3rem}.pins-clocks input[type=number]{width:6.5rem}.pins-gpio li.warn code,.pins tr.warn td{color:var(--warn-fg)}@media (max-width: 600px){.pins-clocks{flex-wrap:wrap}}:root{--bg: #f6f7f9;--card: #ffffff;--fg: #1d2330;--muted: #6b7280;--line: #dde1e7;--accent: #2563eb;--accent-fg: #ffffff;--ok-bg: #e5f6ea;--ok-fg: #17663a;--info-bg: #e6efff;--info-fg: #1e4fb8;--warn-bg: #fff4d6;--warn-fg: #8a5a00;--err-bg: #fde8e8;--err-fg: #9b1c1c;--none-bg: #eef0f3;--none-fg: #5b6270;--guess: #fff8db;--code-bg: #f1f3f6;color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #12151b;--card: #1b1f27;--fg: #e5e8ee;--muted: #9aa3b2;--line: #2c323d;--accent: #5b8def;--accent-fg: #0b1220;--ok-bg: #173323;--ok-fg: #7fd9a0;--info-bg: #182a4a;--info-fg: #9dbdff;--warn-bg: #3a2e10;--warn-fg: #f2c66b;--err-bg: #3d1a1a;--err-fg: #f5a3a3;--none-bg: #262b35;--none-fg: #a7afbd;--guess: #3a3214;--code-bg: #232833;color-scheme:dark}}:root[data-theme=dark]{--bg: #12151b;--card: #1b1f27;--fg: #e5e8ee;--muted: #9aa3b2;--line: #2c323d;--accent: #5b8def;--accent-fg: #0b1220;--ok-bg: #173323;--ok-fg: #7fd9a0;--info-bg: #182a4a;--info-fg: #9dbdff;--warn-bg: #3a2e10;--warn-fg: #f2c66b;--err-bg: #3d1a1a;--err-fg: #f5a3a3;--none-bg: #262b35;--none-fg: #a7afbd;--guess: #3a3214;--code-bg: #232833;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--fg);font:15px/1.55 -apple-system,BlinkMacSystemFont,Apple SD Gothic Neo,Malgun Gothic,Noto Sans KR,sans-serif}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1{font-size:1.5rem;margin:0}h2{font-size:1.15rem;margin:0 0 .5rem}h3{font-size:1rem;margin:1.25rem 0 .5rem}h4{font-size:.95rem;margin:.75rem 0 .25rem}code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.88em}.muted{color:var(--muted)}.small{font-size:.85em}.pre{white-space:pre-wrap;word-break:break-word}header.top{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding:.6rem 16px;background:var(--card);border-bottom:1px solid var(--line)}header.top .brand{font-weight:700;color:var(--fg)}header.top nav{display:flex;gap:1rem;align-items:center;flex-wrap:wrap}main{max-width:1180px;margin:0 auto;padding:1rem 16px 2rem}footer{text-align:center;padding:1rem 16px 2rem;font-size:.8rem}.head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin:.5rem 0 1rem}.crumb{margin:0 0 .25rem;font-size:.85rem;color:var(--muted);word-break:break-all}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:1rem;margin:0 0 1rem}.card.narrow{max-width:420px;margin:3rem auto}details.card>summary{cursor:pointer;list-style:none}details.card>summary h2{display:inline}details.card>summary:before{content:"▸ ";color:var(--muted)}details.card[open]>summary:before{content:"▾ "}details.card[open]>summary{margin-bottom:.75rem}form label,label{display:block;margin:0 0 .6rem}label.inline{display:inline-flex;gap:.4rem;align-items:center;margin:0 0 0 .5rem;font-weight:400}input,select,textarea{display:block;width:100%;margin-top:.2rem;padding:.45rem .55rem;font:inherit;color:inherit;background:var(--bg);border:1px solid var(--line);border-radius:6px}input[type=checkbox],input[type=radio]{display:inline-block;width:auto;margin:0}input[type=file]{padding:.35rem}input:invalid:not(:placeholder-shown){border-color:var(--err-fg)}button{font:inherit;padding:.45rem 1rem;border-radius:6px;border:1px solid var(--accent);background:var(--accent);color:var(--accent-fg);cursor:pointer}button.secondary{background:transparent;color:var(--accent)}button.small{padding:.2rem .6rem;font-size:.85rem;margin-left:.5rem}button.link{background:none;border:none;padding:0;color:var(--accent)}button:disabled{opacity:.5;cursor:not-allowed}.actions{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;margin:.75rem 0}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:0 1rem;align-items:end}.grid .wide{grid-column:1 / -1}.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1rem}.scroll{overflow-x:auto}table{border-collapse:collapse;width:100%}th,td{text-align:left;vertical-align:top;padding:.4rem .5rem;border-bottom:1px solid var(--line)}th{font-size:.85rem;color:var(--muted);font-weight:600}table.dense td,table.dense th{padding:.25rem .4rem;font-size:.88rem}tr.guess td{background:var(--guess)}.hl-guess{background:var(--guess);padding:0 .25rem}tr.old td{color:var(--muted)}.badge{display:inline-block;padding:.05rem .5rem;border-radius:999px;font-size:.78rem;white-space:nowrap;margin-left:.3rem}.badge.none{background:var(--none-bg);color:var(--none-fg)}.badge.info{background:var(--info-bg);color:var(--info-fg)}.badge.warn{background:var(--warn-bg);color:var(--warn-fg)}.badge.ok{background:var(--ok-bg);color:var(--ok-fg)}.badge.err{background:var(--err-bg);color:var(--err-fg)}.stagechips{display:flex;flex-wrap:wrap;gap:.25rem .6rem}.chip{white-space:nowrap;color:var(--fg)}.flash,.banner{padding:.6rem .8rem;border-radius:8px;margin:0 0 1rem}.flash{cursor:pointer}.flash.ok{background:var(--ok-bg);color:var(--ok-fg)}.flash.err{background:var(--err-bg);color:var(--err-fg)}.banner.warn{background:var(--warn-bg);color:var(--warn-fg)}.banner.info{background:var(--info-bg);color:var(--info-fg)}.banner.ok{background:var(--ok-bg);color:var(--ok-fg)}li>button.link{margin-left:.5rem;font-size:.85rem}.tabs{display:flex;gap:.25rem;overflow-x:auto;border-bottom:1px solid var(--line);margin-bottom:0}.tab{display:flex;flex-direction:column;align-items:flex-start;gap:.15rem;padding:.5rem .8rem;color:var(--fg);border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;white-space:nowrap}.tab .badge{margin-left:0}.tab:hover{text-decoration:none;background:var(--card)}.tab.on{background:var(--card);border-color:var(--line);margin-bottom:-1px;font-weight:600}.tabbody{border-top-left-radius:0}.activejobs{margin:0 0 1rem;display:grid;gap:.35rem}.jobline{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;padding:.45rem .75rem;border-radius:8px;background:var(--card);border:1px solid var(--line)}.jobline.running{border-color:var(--accent)}.dot{width:.6rem;height:.6rem;border-radius:50%;background:var(--muted);display:inline-block}.spinner{width:.9rem;height:.9rem;border-radius:50%;display:inline-block;vertical-align:-2px;border:2px solid var(--line);border-top-color:var(--accent);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.spinner{animation:none;border-top-color:var(--accent)}}fieldset{border:1px solid var(--line);border-radius:8px;padding:.75rem;margin:0 0 .75rem;min-width:0}legend{padding:0 .4rem;font-weight:600}.round{border:1px solid var(--line);border-radius:10px;padding:.75rem 1rem;margin:0 0 1rem}.round.done>summary{cursor:pointer}.question.answered{border-color:var(--ok-fg)}.question.confirm{border-color:var(--warn-fg);background:var(--warn-bg)}.question.confirm .reason{color:var(--warn-fg);margin:.2rem 0 .4rem}.steps{display:flex;flex-wrap:wrap;gap:.3rem;list-style:none;padding:0;margin:0 0 1rem}.steps li{padding:.2rem .6rem;border-radius:999px;font-size:.85rem;background:var(--none-bg);color:var(--none-fg)}.steps li.done{background:var(--ok-bg);color:var(--ok-fg)}.steps li.current{background:var(--info-bg);color:var(--info-fg);font-weight:600}.steps li.skip{text-decoration:line-through}.round.editing{border-color:var(--accent)}.option{display:flex;gap:.5rem;align-items:flex-start;margin:.3rem 0;cursor:pointer}.option input{margin-top:.3rem}.option.later{color:var(--muted)}.other{margin-top:.5rem}.withunit{display:flex;gap:.4rem;align-items:center}.unit{white-space:nowrap}.board{border:1px solid var(--line);border-radius:8px;padding:.5rem .75rem;margin:0 0 .75rem}.board>summary{cursor:pointer}.pingrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.15rem 1rem;font-size:.85rem}ul.files{list-style:none;padding:0;margin:0;font-size:.9rem;word-break:break-all}ul.files li{padding:.15rem 0}.md{overflow-wrap:anywhere}.md table{width:auto}.md pre,pre.code{background:var(--code-bg);padding:.75rem;border-radius:6px;overflow-x:auto;white-space:pre}img.preview{max-width:100%;height:auto}iframe.pdf{width:100%;height:80vh;border:1px solid var(--line);border-radius:6px}table.chips td.rowact{white-space:nowrap}table.chips td.rowact .link{margin-right:.6rem;font-size:.85rem}table.chips td.signals{max-width:22rem;overflow-wrap:anywhere}button.link.danger{color:var(--err-fg)}tr.aichg td{background:var(--warn-bg);color:var(--warn-fg);border-top:none}tr.aichg .chg{margin-right:1rem;display:inline-block}tr.aichg del{opacity:.75}tr.aichg ins{text-decoration:none;font-weight:600}tr.editing td{background:var(--card);outline:2px solid var(--accent);outline-offset:-2px}.addform{border-top:1px dashed var(--line);padding-top:.5rem;margin-top:.5rem}ul.problems{margin:0 0 .5rem;padding-left:1.2rem;color:var(--warn-fg)}.warntext{color:var(--warn-fg)}section.split{border:1px solid var(--line);border-radius:8px;padding:.5rem .75rem;margin:1rem 0}section.split h3{margin-top:.25rem}section.split td input{min-width:8rem}@media (max-width: 600px){.tab{padding:.4rem .55rem}.tab .tabname{font-size:.85rem}th,td{padding:.3rem}}.userprojects{display:flex;flex-direction:column;gap:4px;min-width:260px}.userprojects .up-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0}.userprojects select.small{padding:2px 4px;font-size:.85em;width:auto}.userprojects button.small{margin-left:0}
