:root{--bg:#f4f5f7;--panel:#fff;--ink:#1c2330;--muted:#667085;--line:#d8dde6;--accent:#2f6fed;--base:#ff8a1f;--block:#c62828;--warn:#b26a00;--ok:#1b7f3b;--grid:#e6e9ef;--axis:#b9c0cc;--fill:#dbe7fb;--ghost:#9fb4d8}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#12151b;--panel:#1b2029;--ink:#e8ecf3;--muted:#97a1b3;--line:#2c3442;--accent:#6c9bff;--block:#ff6b6b;--warn:#ffb454;--ok:#5ed087;--grid:#252c39;--axis:#3d4658;--fill:#25344f;--ghost:#4d6390}}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--ink);flex-direction:column;font:14px/1.4 system-ui,-apple-system,Segoe UI,sans-serif;display:flex}h1{margin:0 8px 0 0;font-size:18px}h1 small{color:var(--muted);font-size:13px;font-weight:400}h2{text-transform:uppercase;letter-spacing:.05em;margin:0;font-size:13px}button,select,input{font:inherit;color:inherit}button{background:var(--panel);border:1px solid var(--line);cursor:pointer;border-radius:6px;padding:4px 10px}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.5;cursor:not-allowed}button.on{background:var(--accent);color:#fff;border-color:var(--accent)}input,select{background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:3px 6px}input[type=number]{width:4.6em}.top{background:var(--panel);border-bottom:1px solid var(--line);flex-direction:column;gap:6px;padding:8px 12px;display:flex}.tr{flex-wrap:wrap;align-items:center;gap:6px 12px;display:flex}.top label{align-items:center;gap:6px;display:flex}.top .chk{gap:4px;margin-right:24px}.grow{flex:1}.age{color:var(--muted);font-size:12px}.grid{flex:1;grid-template-columns:528px minmax(0,1fr) 320px;gap:10px;min-height:0;padding:10px;display:grid}.col{flex-direction:column;gap:10px;min-width:0;min-height:0;display:flex}.left .panel{flex:1;min-height:0}.right{overflow-y:auto}.panel{background:var(--panel);border:1px solid var(--line);border-radius:10px;flex-direction:column;display:flex;overflow:hidden}.panel.pad{flex:none;gap:8px;padding:10px 12px}.ph{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:4px 10px;padding:8px 10px;display:flex}.hint{color:var(--muted);font-size:12px}.bar{gap:4px;margin-left:auto;display:flex}.bar button{padding:2px 8px;font-size:12px}.sep{background:var(--line);align-self:stretch;width:1px;margin:0 4px}.panel.has-zoom{position:relative}.zoombar{z-index:1;gap:4px;display:flex;position:absolute;bottom:10px;right:10px}.has-cap .zoombar{bottom:34px}.zoombar button{min-width:26px;padding:2px 6px}svg{touch-action:none;-webkit-user-select:none;user-select:none;cursor:crosshair;outline:none;flex:1;width:100%;min-height:160px}svg .grid{stroke:var(--grid);stroke-width:1px;vector-effect:non-scaling-stroke}svg .axis{stroke:var(--axis);stroke-width:1.5px;vector-effect:non-scaling-stroke}svg .curve{fill:none;stroke:var(--accent);stroke-width:2.5px;vector-effect:non-scaling-stroke}svg .ghost{fill:none;stroke:var(--ghost);stroke-width:1.5px;stroke-dasharray:5 4;vector-effect:non-scaling-stroke}svg .fillp{fill:var(--fill);stroke:none}svg .hit{fill:none;stroke:#0000;cursor:copy}svg .hline{stroke:var(--muted);stroke-width:1px;vector-effect:non-scaling-stroke}svg .node{fill:var(--panel);stroke:var(--accent);stroke-width:2px;vector-effect:non-scaling-stroke;cursor:grab}svg .node.sel{fill:var(--accent)}svg .node.base{stroke:var(--base)}svg .node.base.sel{fill:var(--base)}svg .handle{fill:var(--panel);stroke:var(--muted);stroke-width:1.5px;vector-effect:non-scaling-stroke;cursor:grab}svg .basebar{stroke:var(--base);stroke-width:5px;stroke-linecap:round;vector-effect:non-scaling-stroke}svg .tipbar{stroke:var(--muted);stroke-width:3px;stroke-linecap:round;vector-effect:non-scaling-stroke}svg .tick{stroke:var(--axis);stroke-width:1px;vector-effect:non-scaling-stroke}svg text{fill:var(--muted);font-family:inherit}svg text.tick{stroke:none;font-variant-numeric:tabular-nums}svg .marquee{fill:color-mix(in srgb, var(--accent) 15%, transparent);stroke:var(--accent);stroke-width:1px;stroke-dasharray:4 3;vector-effect:non-scaling-stroke}svg .dim{stroke:var(--base);stroke-width:1.5px;vector-effect:non-scaling-stroke}svg text.dimText{fill:var(--ink);paint-order:stroke;stroke:var(--panel);stroke-width:3px;stroke-linejoin:round;font-weight:600}svg text.baseText{fill:var(--base);font-weight:700}.view{flex:1;min-height:320px;position:relative}#view{position:absolute;inset:0}#view canvas{width:100%;height:100%;display:block}.baselabel{pointer-events:none;color:#fff;background:var(--base);border-radius:10px;padding:1px 6px;font-size:11px;font-weight:700;position:absolute;top:0;left:0;transform:translate(-50%,6px)}.reset{font-size:12px;position:absolute;top:10px;right:10px}.numbers{background:color-mix(in srgb, var(--panel) 88%, transparent);border:1px solid var(--line);border-radius:8px;flex-wrap:wrap;gap:8px 24px;padding:6px 12px;display:flex;position:absolute;bottom:10px;left:10px;right:10px}.numbers div{flex-direction:column;display:flex}.numbers b{color:var(--base);font-variant-numeric:tabular-nums;font-size:16px}.numbers span{color:var(--muted);font-size:11px}.flags{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.flags li{border-left:4px solid var(--muted);padding:2px 8px;font-size:13px}.flags li.block{border-color:var(--block)}.flags li.warn{border-color:var(--warn)}.flags li.ok{border-color:var(--ok)}.flags li b{display:block}.row{justify-content:space-between;align-items:center;gap:8px;display:flex}.row select{flex:1;min-width:0}.dims{align-items:center;gap:8px;display:flex}.dims label{align-items:center;gap:4px;display:flex}.fit{margin:0;font-size:13px}.fit.bad{color:var(--block)}.fit.good{color:var(--ok)}.small{color:var(--muted);margin:0;font-size:12px}.q{grid-template-columns:1fr auto;gap:4px 12px;margin:0;display:grid}.q dt{color:var(--muted)}.q dd{text-align:right;font-variant-numeric:tabular-nums;margin:0}.assume{flex-direction:column;gap:6px;padding-top:8px;display:flex}.assume label{align-items:center;gap:6px;display:flex}summary{cursor:pointer;color:var(--muted)}@media (width<=1100px){body{height:auto;display:block}.grid{grid-template-columns:minmax(0,1fr)}.center{order:-1}.view{min-height:340px}.left .panel{min-height:300px}svg{min-height:260px}}.msg{color:var(--ok);min-height:1em;font-size:12px}.msg.bad{color:var(--block)}#name{width:22em;max-width:45vw}.dl{grid-template-columns:1fr 1fr;gap:6px;display:grid}.swatches{flex-wrap:wrap;gap:5px;max-width:60%;display:flex;position:absolute;top:10px;left:10px}.swatches button{border:2px solid var(--panel);width:22px;height:22px;box-shadow:0 0 0 1px var(--muted);border-radius:50%;padding:0}.swatches button.on{box-shadow:0 0 0 2px var(--accent);background-clip:padding-box}dialog{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:10px;width:min(92vw,380px);padding:16px}dialog::backdrop{background:#00000073}dialog form{flex-direction:column;gap:10px;display:flex}.col-l{flex-direction:column;gap:4px;display:flex}.col-l input{width:100%}.err{color:var(--block);min-height:1em;margin:0;font-size:13px}.dlg-actions{justify-content:flex-end;gap:8px;display:flex}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.ad{min-height:120px;color:var(--muted,#8a93a6);border-style:dashed;justify-content:center;align-items:center}#ad-slot{width:100%;min-height:90px}.ripple{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:10px;flex-direction:column;align-items:stretch;gap:8px;margin:0;padding:12px;font-size:13px;inset:auto;box-shadow:0 6px 24px #00000040}.ripple:popover-open{display:flex}.ripple label{align-items:center;gap:6px;display:flex}#rp-open{padding:2px 8px;font-size:12px}.ripple input[type=number]{width:56px}svg .bnode{fill:var(--panel);stroke:var(--accent);stroke-width:1.5px;stroke-dasharray:2 2;opacity:.55;cursor:pointer;vector-effect:non-scaling-stroke}svg .bnode.broken{opacity:1;stroke-dasharray:none;fill:var(--accent);fill-opacity:.35}svg .bnode.sel{opacity:1;stroke-width:2.5px}.cap{min-height:20px;color:var(--base);font-variant-numeric:tabular-nums;padding:2px 8px;font-size:12px}.top .name input{text-align:center}.title-row{grid-template-columns:1fr auto 1fr;align-items:center;display:grid}.title-row .right{justify-content:flex-end;align-items:center;gap:6px 12px;display:flex}@media (width<=700px){.title-row{grid-template-columns:1fr}.top .name input{width:100%}}.top .tr>.right{align-items:center;gap:6px 12px;margin-left:auto;display:flex}.qbtn{border-radius:50%;width:28px;height:28px;padding:0;font-weight:700}.help{background:var(--panel);width:min(96vw,1040px);max-height:94vh;color:var(--ink);border:1px solid var(--line);border-radius:10px;margin:auto;padding:12px;overflow:auto}.help::backdrop{background:#00000073}.help-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.help-body{flex-wrap:wrap;align-items:flex-start;gap:14px;display:flex}.shot{flex:none;width:720px;max-width:100%;position:relative}.shot img{border:1px solid var(--line);border-radius:6px;width:100%;height:auto;display:block}.mk{color:#fff;background:#e5484d;border-radius:10px;place-items:center;min-width:20px;height:20px;font-size:12px;font-weight:700;display:grid;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 0 2px #fff}.legend{flex-direction:column;flex:1;gap:6px;min-width:240px;margin:0;padding-left:20px;font-size:12.5px;display:flex}.ph.one,.ph.one .bar{flex-wrap:nowrap}svg .dimdot{stroke:var(--base);stroke-width:1.5px;stroke-dasharray:4 4;vector-effect:non-scaling-stroke}svg .facing{stroke:var(--muted);stroke-width:1px;opacity:.55;vector-effect:non-scaling-stroke;pointer-events:none}svg .facing.broken{stroke-dasharray:3 4;opacity:.9}svg .dim.broken{stroke-dasharray:4 4}.site{color:var(--muted);border-top:1px solid var(--line);background:var(--panel);flex-wrap:wrap;justify-content:space-between;gap:4px 16px;padding:6px 12px;font-size:12px;display:flex}.site a{color:var(--accent)}button[hidden]{display:none}.guidelink{color:var(--accent);text-decoration:none}.guidelink:hover{text-decoration:underline}.age{white-space:nowrap}body.doc{height:auto;min-height:100%;display:block}body.doc header.dochead{background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:baseline;gap:16px;padding:10px 16px;display:flex}body.doc header.dochead a{color:var(--accent)}body.doc article{max-width:760px;margin:0 auto;padding:16px;font-size:15px;line-height:1.55}body.doc article h1{margin:8px 0 4px;font-size:24px}body.doc article h2{text-transform:none;letter-spacing:0;border-top:1px solid var(--line);margin:28px 0 6px;padding-top:6px;font-size:18px}body.doc article a{color:var(--accent)}body.doc .lead{color:var(--muted)}body.doc .note{border-left:4px solid var(--warn);background:var(--panel);border-radius:0 6px 6px 0;padding:4px 12px}body.doc .toc{flex-wrap:wrap;gap:4px 14px;padding:0;font-size:14px;list-style:none;display:flex}body.doc .src{color:var(--muted);font-size:12px}body.doc table{border-collapse:collapse;width:100%;font-size:14px}body.doc th,body.doc td{border:1px solid var(--line);text-align:left;vertical-align:top;padding:4px 8px}.panel[hidden]{display:none}a.btn{background:var(--panel);border:1px solid var(--line);color:inherit;border-radius:6px;padding:4px 10px;text-decoration:none}a.btn:hover{border-color:var(--accent)}#pub-dlg ul{flex-direction:column;gap:6px;margin:0;padding-left:18px;display:flex}#pub-dlg .small{color:var(--ink);font-size:13px}.gal{max-width:1100px;margin:0 auto;padding:16px}.gal-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin:16px 0;padding:0;list-style:none;display:grid}.gal-card{background:var(--panel);border:1px solid var(--line);color:inherit;border-radius:8px;flex-direction:column;align-items:center;gap:6px;padding:8px;text-decoration:none;display:flex}.gal-card:hover,.gal-card:focus-visible{border-color:var(--accent)}.gal-card svg{width:100%;max-width:140px;height:auto}.gal-card time{color:var(--muted);font-size:12px}.gal-more{margin:0 auto;display:block}.gal-view{border:1px solid var(--line);background:var(--panel);color:inherit;border-radius:10px;width:min(92vw,560px);padding:10px}.gal-view::backdrop{background:#0009}.gal-view-3d{aspect-ratio:1;cursor:grab;width:100%;max-height:70vh}.gal-view-3d:active{cursor:grabbing}.gal-view-bar{align-items:center;gap:12px;margin:8px 0 0;display:flex}.gal-view-bar strong{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}body.doc .fig{margin:12px 0}body.doc .fig svg{cursor:default;-webkit-user-select:auto;user-select:auto;background:var(--panel);border:1px solid var(--line);width:100%;height:auto;min-height:0;color:var(--ink);border-radius:8px;flex:none;display:block}body.doc .fig figcaption{color:var(--muted);margin-top:4px;font-size:13px}body.doc ol.steps{flex-direction:column;gap:6px;padding-left:22px;display:flex}body.doc article h3{margin:20px 0 4px;font-size:15px}@media (width<=600px){.top{gap:8px;padding:8px 10px}h1{font-size:18px}h1 small{display:none}.title-row{gap:8px}.title-row .right{justify-content:space-between}.top .name{width:100%}.top .name input{flex:1;min-width:0}.top .tr:not(.title-row){grid-template-columns:repeat(6,1fr);gap:8px;display:grid}.top .tr:not(.title-row)>label:first-child{grid-column:span 3}.top .tr:not(.title-row)>.chk{grid-column:span 3;margin-right:0}.top .tr:not(.title-row)>label:nth-child(3){grid-column:1/-1}.top .tr:not(.title-row)>label:nth-child(3) select{flex:1;min-width:0}.top .tr:not(.title-row)>.right{display:contents}.top .tr:not(.title-row) button,.top .tr:not(.title-row) a.btn{text-align:center;grid-column:span 2;min-height:38px}#gallery{order:1}#save{order:2}#publish{order:3}#export-json{order:4}#import-json{order:5}#delete{order:6}#publish{background:var(--accent);color:#fff;border-color:var(--accent)}.msg{order:7;grid-column:1/-1}.swatches{scrollbar-width:none;flex-wrap:nowrap;max-width:calc(100% - 118px);padding:3px;overflow-x:auto}.swatches button{flex:none}.numbers{gap:4px 14px;padding:4px 8px;bottom:6px;left:6px;right:6px}.numbers b{font-size:13px}.numbers span{font-size:10px}.view{min-height:300px}.ph.one,.ph.one .bar{flex-wrap:wrap}.bar button{padding:5px 10px}.zoombar button{min-width:34px;min-height:30px}.dl{grid-template-columns:1fr}}.dl .iron{grid-column:1/-1;align-items:center;gap:6px;font-size:13px;display:flex}.dl .iron[hidden]{display:none}
