*,:before,:after{box-sizing:border-box}*{margin:0}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}img,svg,video{max-width:100%;display:block}button,input,select,textarea{font:inherit;color:inherit;letter-spacing:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0}a{color:inherit;text-decoration:none}:root{--ink:#16191a;--ink-2:#4a5157;--dim:#838b91;--line:#e2e5e3;--line-soft:#eef0ee;--surface:#fff;--canvas:#f4f6f4;--nav:#1b1f1d;--nav-ink:#a9b1ac;--acid:#d7ff55;--purple:#6c54d9;--danger:#c8483f;--warn:#b5811f;--ok:#4b8a2b;--mono:var(--font-geist-mono), ui-monospace, monospace;--radius:8px}html,body{height:100%;overflow:hidden}body{color:var(--ink);background:var(--canvas);font-family:var(--font-geist-sans), "PingFang SC", sans-serif;-webkit-font-smoothing:antialiased;font-size:13px}:focus-visible{outline:2px solid var(--purple);outline-offset:1px}.mono{font-family:var(--mono);font-size:11px}.dim{color:var(--dim)}.btn{white-space:nowrap;border-radius:6px;align-items:center;gap:6px;height:30px;padding:0 11px;font-size:12px;font-weight:600;transition:background .15s,border-color .15s;display:inline-flex}.btn:disabled{opacity:.45;cursor:not-allowed}.btn b{font-family:var(--mono);background:#14190a24;border-radius:99px;padding:1px 6px;font-size:10px}.btn-primary{background:var(--acid);color:#1a1e16;box-shadow:inset 0 0 0 1px #28340829}.btn-primary:hover:not(:disabled){background:#cbf44d}.btn-ghost{background:var(--surface);border:1px solid var(--line);color:var(--ink-2)}.btn-ghost:hover:not(:disabled){background:#fafbfa;border-color:#cdd2ce}.btn-ghost.danger{color:var(--danger)}.btn-ghost.waiting{background:var(--purple);border-color:var(--purple);color:#fff}.btn.wide{justify-content:center;width:100%}.icon-btn{width:26px;height:26px;color:var(--dim);border-radius:5px;place-items:center;display:grid}.icon-btn:hover{background:var(--line-soft);color:var(--ink)}.icon-btn.danger:hover{color:var(--danger);background:#fdeeec}.link{color:var(--ink);align-items:center;gap:6px;font-weight:550;display:inline-flex}.link:hover{color:var(--purple)}.link svg{color:var(--dim)}.tag{font-family:var(--mono);background:var(--line-soft);color:var(--ink-2);border-radius:99px;padding:2px 7px;font-size:10px}.toast{z-index:100;background:var(--nav);color:#fff;border-radius:6px;align-items:center;gap:8px;padding:9px 14px;font-size:12px;animation:.2s toast-in;display:flex;position:fixed;top:14px;left:50%;transform:translate(-50%);box-shadow:0 10px 26px #00000038}.toast svg{color:var(--acid)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,-8px)}}.shell{background:var(--canvas);grid-template-columns:208px minmax(0,1fr);height:100dvh;max-height:100dvh;display:grid;overflow:hidden}.shell-nav{background:var(--nav);color:var(--nav-ink);grid-template-rows:52px minmax(0,1fr) auto;min-height:0;display:grid}.shell-brand{color:#fff;letter-spacing:-.4px;border-bottom:1px solid #ffffff12;align-items:center;gap:9px;padding:0 14px;font-size:15px;font-weight:700;display:flex}.shell-brand>span:last-child>span{color:var(--acid)}.brand-mark{background:var(--acid);color:#1a1e16;border-radius:7px;place-items:center;width:26px;height:26px;display:grid}.shell-nav nav{align-content:start;gap:2px;padding:10px 8px;display:grid}.nav-item{height:34px;color:var(--nav-ink);text-align:left;border-radius:6px;align-items:center;gap:10px;padding:0 10px;font-size:13px;display:flex}.nav-item span{flex:1}.nav-item b{font-family:var(--mono);background:#ffffff1a;border-radius:99px;padding:1px 6px;font-size:10px}.nav-item:hover:not(:disabled){color:#fff;background:#ffffff0f}.nav-item.active{color:var(--acid);background:#d7ff5524}.nav-item:disabled{opacity:.32;cursor:not-allowed}.shell-nav-foot{border-top:1px solid #ffffff12;padding:12px 14px}.shell-nav-foot p{color:#fff;font-size:11px;font-weight:600}.shell-nav-foot small{color:#6f7873;margin-top:3px;font-size:10px;line-height:1.5;display:block}.shell-main{grid-template-rows:52px minmax(0,1fr) 26px;min-width:0;display:grid}.shell-head{background:var(--surface);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;padding:0 16px;display:flex}.crumbs{color:var(--dim);gap:6px;font-size:10px;display:flex}.crumbs span:not(:last-child):after{content:" /"}.shell-title h1{letter-spacing:-.2px;font-size:15px;font-weight:650}.shell-actions{gap:7px;display:flex}.shell-body{min-width:0;min-height:0;overflow:hidden}.shell-status{background:var(--surface);border-top:1px solid var(--line);color:var(--dim);justify-content:space-between;align-items:center;gap:16px;padding:0 14px;font-size:10px;display:flex}.status-right{align-items:center;gap:14px;display:flex}.status-right em{font-style:normal;font-weight:600}.status-right .warn{color:var(--warn)}.status-right .ok{color:var(--ok)}.status-right a{color:var(--purple);font-weight:600}.module{align-content:start;gap:14px;height:100%;padding:16px;display:grid;overflow:auto}.module.narrow{max-width:720px}.stat-row{grid-template-columns:repeat(4,1fr);gap:10px;display:grid}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);gap:5px;padding:12px 14px;display:grid}.stat span{color:var(--dim);font-size:11px}.stat b{letter-spacing:-.6px;font-size:22px;font-weight:640}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.panel-head{border-bottom:1px solid var(--line-soft);justify-content:space-between;align-items:center;gap:12px;padding:11px 14px;display:flex}.panel-head h2{font-size:13px;font-weight:650}.panel-head h2 em{font-style:normal;font-family:var(--mono);color:var(--dim);margin-left:6px;font-size:10px}.toolbar{gap:7px;display:flex}.grid{border-collapse:collapse;width:100%;font-size:12px}.grid th{text-align:left;letter-spacing:.4px;text-transform:uppercase;color:var(--dim);border-bottom:1px solid var(--line-soft);white-space:nowrap;padding:8px 12px;font-size:10px;font-weight:600}.grid td{border-bottom:1px solid var(--line-soft);vertical-align:middle;padding:7px 12px}.grid tr:last-child td{border-bottom:0}.grid tbody tr:hover{background:#fafbfa}.grid tbody tr.current{background:#d7ff551f}.grid tbody tr.picked{background:#6c54d90f}.grid .num{text-align:right}.grid .act{text-align:right;width:40px}.grid .pick{width:34px}.grid .thumb{width:56px}.grid input[type=checkbox]{accent-color:var(--purple);cursor:pointer}.checker{background-color:#eef0ec;background-image:linear-gradient(45deg,#e2e5e0 25%,#0000 25%),linear-gradient(-45deg,#e2e5e0 25%,#0000 25%),linear-gradient(45deg,#0000 75%,#e2e5e0 75%),linear-gradient(-45deg,#0000 75%,#e2e5e0 75%);background-position:0 0,0 5px,5px -5px,-5px 0;background-size:10px 10px;border-radius:4px;place-items:center;width:44px;height:30px;display:grid;overflow:hidden}.checker img{object-fit:contain;max-width:100%;max-height:100%}.checker.sm{width:34px;height:26px}.batch-bar{border-bottom:1px solid var(--line-soft);color:var(--purple);background:#f6f4fe;align-items:center;gap:10px;padding:8px 14px;font-size:12px;font-weight:600;display:flex}.batch-bar .btn{height:26px}.empty{text-align:center;color:var(--dim);justify-items:center;gap:8px;padding:44px 30px;display:grid}.empty.tall{align-content:center;min-height:60vh}.empty svg{color:var(--dim)}.empty h3{color:var(--ink);margin-top:4px;font-size:14px;font-weight:650}.empty p{max-width:380px;font-size:12px;line-height:1.7}.empty .btn{margin-top:8px}.workbench{grid-template-columns:minmax(0,1fr) 280px;height:100%;min-height:0;display:grid;overflow:hidden}.inspector{background:var(--surface);border-left:1px solid var(--line);grid-template-rows:40px minmax(0,1fr) auto;min-height:0;display:grid}.inspector-head{border-bottom:1px solid var(--line-soft);justify-content:space-between;align-items:center;padding:0 12px;display:flex}.inspector-head h2{font-size:12px;font-weight:650}.inspector-list{align-content:start;gap:4px;padding:8px;display:grid;overflow:auto}.inspector-empty{color:var(--dim);text-align:center;padding:22px 14px;font-size:11px;line-height:1.7}.chip{text-align:left;border:1px solid #0000;border-radius:6px;align-items:center;gap:9px;padding:6px;display:flex}.chip:hover{background:#fafbfa}.chip.active{background:#f6f4fe;border-color:#b6a8f2}.chip-text{flex:1;gap:2px;min-width:0;display:grid}.chip-text b{text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600;overflow:hidden}.chip-text small{color:var(--dim);font-size:10px}.chip em{color:var(--dim);font-style:normal}.inspector-props{border-top:1px solid var(--line);padding-bottom:10px}.prop{color:var(--dim);gap:4px;padding:8px 12px 0;font-size:10px;display:grid}.prop-grid{grid-template-columns:repeat(4,1fr);gap:6px;padding:10px 12px;display:grid}.prop-grid>div{text-align:center;background:var(--canvas);border-radius:5px;gap:2px;padding:5px 2px;display:grid}.prop-grid span{color:var(--dim);font-size:9px}.prop-grid b{font-size:11px;font-weight:600}.inspector-props .btn{width:calc(100% - 24px);margin:0 12px}.canvas-area{grid-template-rows:52px minmax(0,1fr) 31px;min-width:0;min-height:0;display:grid}.canvas-toolbar{background:#f8f9f5;border-bottom:1px solid #d7dad3;justify-content:space-between;align-items:center;gap:12px;padding:0 14px;display:flex}.segmented{background:#fff;border:1px solid #dcdfd8;border-radius:8px;padding:3px;display:flex}.segmented button{color:#777d75;border-radius:5px;align-items:center;gap:6px;padding:6px 10px;font-size:11px;display:flex}.segmented button.active{color:#fff;background:#222621}.trim-toggle{color:#6c726a;cursor:pointer;white-space:nowrap;align-items:center;gap:7px;font-size:11px;display:flex}.trim-toggle input{accent-color:var(--purple);cursor:pointer;width:13px;height:13px}.zoom-control{background:#fff;border:1px solid #dcdfd8;border-radius:8px;align-items:center;gap:2px;padding:3px;display:flex}.zoom-control button{color:#686e66;border-radius:5px;place-items:center;width:29px;height:27px;display:grid}.zoom-control button:hover{background:#eff1eb}.zoom-control span{font:10px var(--font-geist-mono);text-align:center;color:#676c65;width:42px}.zoom-control button:last-child{border-left:1px solid #e5e7e1;border-radius:0;margin-left:2px}.canvas-viewport{touch-action:none;overscroll-behavior:contain;background-color:#dfe1dc;background-image:linear-gradient(45deg,#d9dbd6 25%,#0000 25%),linear-gradient(-45deg,#d9dbd6 25%,#0000 25%),linear-gradient(45deg,#0000 75%,#d9dbd6 75%),linear-gradient(-45deg,#0000 75%,#d9dbd6 75%);background-position:0 0,0 11px,11px -11px,-11px 0;background-size:22px 22px;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.canvas-viewport.select{cursor:crosshair}.canvas-viewport.pan{cursor:grab}.canvas-viewport.panning{cursor:grabbing}.canvas-image-wrap{-webkit-user-select:none;user-select:none;will-change:transform;flex:none;position:relative;box-shadow:0 14px 40px #16191533}.canvas-image-wrap>img{pointer-events:none;width:100%;height:100%}.component-box{cursor:move;background:#d7ff550f;border:1.5px solid #d7ff55d9;padding:0;position:absolute}.component-box:not(.selected):before,.component-box:not(.selected):after,.draft-box:before,.draft-box:after{content:"";background:var(--acid);border:1px solid #263010;width:6px;height:6px;position:absolute}.component-box:not(.selected):before,.draft-box:before{top:-4px;left:-4px}.component-box:not(.selected):after,.draft-box:after{bottom:-4px;right:-4px}.component-box-label{min-width:18px;height:18px;font:9px var(--font-geist-mono);background:#d7ff55e6;border-radius:4px 4px 0 0;place-items:center;display:grid;position:absolute;top:-21px;left:-2px}.component-box.selected{z-index:4;background:#6c54d91c;border-color:#8e74fa}.component-box.selected .component-box-label{color:#fff;background:#8e74fa}.handle{background:#fff;border:1.5px solid #8e74fa;border-radius:2px;width:10px;height:10px;position:absolute}.handle-nw{cursor:nwse-resize;top:-6px;left:-6px}.handle-ne{cursor:nesw-resize;top:-6px;right:-6px}.handle-sw{cursor:nesw-resize;bottom:-6px;left:-6px}.handle-se{cursor:nwse-resize;bottom:-6px;right:-6px}.draft-box{pointer-events:none;border:1.5px solid var(--acid);z-index:10;background:#d7ff5521;position:absolute}.draft-box span{background:var(--acid);font:9px var(--font-geist-mono);white-space:nowrap;padding:4px 6px;position:absolute;top:-22px;left:-1px}.canvas-hint{color:#fff;pointer-events:none;background:#1b1f1bdb;border:1px solid #ffffff1a;border-radius:9px;align-items:center;gap:8px;padding:9px 13px;font-size:11px;display:flex;position:absolute;bottom:23px;left:50%;transform:translate(-50%);box-shadow:0 8px 22px #0000002b}.canvas-hint svg{color:var(--acid)}.canvas-status{color:#92978f;font:9px var(--font-geist-mono);background:#f7f8f4;border-top:1px solid #d7dad3;justify-content:space-between;align-items:center;gap:12px;padding:0 14px;display:flex}.field{border:1px solid var(--line);background:var(--surface);height:28px;color:var(--ink);border-radius:5px;outline:none;min-width:0;padding:0 8px;font-size:12px}.field:focus{border-color:var(--purple)}.field.flush{background:0 0;border-color:#0000;width:100%;padding-left:4px}.field.flush:hover{border-color:var(--line)}.field.flush:focus{border-color:var(--purple);background:var(--surface)}.form{display:grid}.form .row{border-bottom:1px solid var(--line-soft);cursor:pointer;justify-content:space-between;align-items:center;gap:20px;padding:12px 14px;display:flex}.form .row:last-child{border-bottom:0}.form .row.static{cursor:default}.form .row>div{gap:3px;display:grid}.form .row b{font-size:12px;font-weight:600}.form .row small{color:var(--dim);max-width:46ch;font-size:11px;line-height:1.6}.form .row code{font-family:var(--mono);background:var(--line-soft);border-radius:3px;padding:1px 4px;font-size:10px}.form .row input[type=checkbox]{width:15px;height:15px;accent-color:var(--purple);cursor:pointer;flex:none}.form .row .field{flex:none;width:180px}@media (width<=1100px){.stat-row{grid-template-columns:repeat(2,1fr)}.workbench{grid-template-columns:minmax(0,1fr) 240px}}@media (width<=820px){.shell{grid-template-columns:52px minmax(0,1fr)}.shell-brand span:last-child,.nav-item span,.nav-item b,.shell-nav-foot{display:none}.nav-item{justify-content:center}.shell-head{padding:0 10px}.shell-title h1{font-size:14px}.crumbs{display:none}.shell-actions .btn-ghost span,.btn-ghost{gap:0;padding:0 8px;font-size:0}.workbench{grid-template-rows:minmax(0,1fr) 220px;grid-template-columns:minmax(0,1fr)}.inspector{border-left:0;border-top:1px solid var(--line)}.panel{overflow-x:auto}.toolbar{flex-wrap:wrap}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
