@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-400-normal-DQukG94-.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-400-normal-obahsSVq.woff2)format("woff2"),url(/assets/inter-cyrillic-400-normal-HOLc17fK.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2)format("woff2"),url(/assets/inter-greek-ext-400-normal-KugGGMne.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-400-normal-B4URO6DV.woff2)format("woff2"),url(/assets/inter-greek-400-normal-q2sYcFCs.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-vietnamese-400-normal-DMkecbls.woff2)format("woff2"),url(/assets/inter-vietnamese-400-normal-Bbgyi5SW.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-ext-400-normal-C1nco2VV.woff2)format("woff2"),url(/assets/inter-latin-ext-400-normal-77YHD8bZ.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2)format("woff2"),url(/assets/inter-latin-400-normal-CyCys3Eg.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-cyrillic-ext-500-normal-B0yAr1jD.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-500-normal-BmqWE9Dz.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-cyrillic-500-normal-BasfLYem.woff2)format("woff2"),url(/assets/inter-cyrillic-500-normal-CxZf_p3X.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-greek-ext-500-normal-C4iEst2y.woff2)format("woff2"),url(/assets/inter-greek-ext-500-normal-2j5mBUwD.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-greek-500-normal-BIZE56-Y.woff2)format("woff2"),url(/assets/inter-greek-500-normal-Xzm54t5V.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-vietnamese-500-normal-DOriooB6.woff2)format("woff2"),url(/assets/inter-vietnamese-500-normal-mJboJaSs.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-ext-500-normal-CV4jyFjo.woff2)format("woff2"),url(/assets/inter-latin-ext-500-normal-BxGbmqWO.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-500-normal-Cerq10X2.woff2)format("woff2"),url(/assets/inter-latin-500-normal-BL9OpVg8.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-cyrillic-ext-600-normal-Dfes3d0z.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-600-normal-Bcila6Z-.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-cyrillic-600-normal-CWCymEST.woff2)format("woff2"),url(/assets/inter-cyrillic-600-normal-4D_pXhcN.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-greek-ext-600-normal-DRtmH8MT.woff2)format("woff2"),url(/assets/inter-greek-ext-600-normal-B8X0CLgF.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-greek-600-normal-plRanbMR.woff2)format("woff2"),url(/assets/inter-greek-600-normal-BZpKdvQh.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2)format("woff2"),url(/assets/inter-vietnamese-600-normal-BuLX-rYi.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-ext-600-normal-D2bJ5OIk.woff2)format("woff2"),url(/assets/inter-latin-ext-600-normal-CIVaiw4L.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-600-normal-LgqL8muc.woff2)format("woff2"),url(/assets/inter-latin-600-normal-CiBQ2DWP.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-cyrillic-ext-700-normal-BjwYoWNd.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-700-normal-LO58E6JB.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-cyrillic-700-normal-CjBOestx.woff2)format("woff2"),url(/assets/inter-cyrillic-700-normal-DrXBdSj3.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-greek-ext-700-normal-qfdV9bQt.woff2)format("woff2"),url(/assets/inter-greek-ext-700-normal-BoQ6DsYi.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-greek-700-normal-C3JjAnD8.woff2)format("woff2"),url(/assets/inter-greek-700-normal-BUv2fZ6O.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-vietnamese-700-normal-DlLaEgI2.woff2)format("woff2"),url(/assets/inter-vietnamese-700-normal-BZaoP0fm.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-ext-700-normal-Ca8adRJv.woff2)format("woff2"),url(/assets/inter-latin-ext-700-normal-TidjK2hL.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-700-normal-Yt3aPRUw.woff2)format("woff2"),url(/assets/inter-latin-700-normal-BLAVimhd.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--red:#c8102e;--red-ink:#a00d25;--red-soft:#fbe9ec;--bg:#f3f3f0;--panel:#fff;--panel-2:#fafaf8;--line:#e1e1dc;--line-2:#cfcfc8;--ink:#1b1b1b;--ink-2:#3d3d3a;--muted:#6b6b66;--ok:#1f7a43;--ok-soft:#e7f4ec;--warn:#9a5b00;--warn-soft:#fff3dc;--err:#b42318;--err-soft:#fdecea;--info:#2f5d8a;--info-soft:#e9f0f7;--demo:#8a4b00;--demo-soft:#fff0cc;--radius:6px;--shadow:0 1px 2px #0000000d, 0 4px 16px #0000000f;--font:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;margin:0;font-size:14px}a{color:var(--red-ink);text-decoration:none}a:hover{text-decoration:underline}h1{letter-spacing:-.01em;margin:0 0 4px;font-size:24px}.h2{margin:8px 0;font-size:20px}.h3{margin:0 0 8px;font-size:15px;font-weight:600}.muted{color:var(--muted)}.small{font-size:12.5px}.strong{font-weight:600}.mono{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.92em}.grow{flex:1}.row{align-items:center;display:flex}.row.gap{gap:8px}.row.wrap{flex-wrap:wrap}.row.end{justify-content:flex-end}.row.center{align-items:center}.err-text{color:var(--err);font-size:12.5px}.shell{flex-direction:column;min-height:100%;display:flex}.shell-editor{height:100vh;overflow:hidden}.topbar{background:var(--panel);border-bottom:1px solid var(--line);z-index:10;align-items:center;gap:20px;height:56px;padding:0 20px;display:flex;position:sticky;top:0}.topbar-brand:hover{text-decoration:none}.brand{align-items:baseline;gap:8px;display:inline-flex}.brand-mark{letter-spacing:.18em;color:var(--red);font-size:16px;font-weight:800}.brand-sub{color:var(--ink);font-size:15px;font-weight:500}.topnav{flex:1;gap:4px;display:flex}.topnav a{border-radius:var(--radius);color:var(--ink-2);align-items:center;gap:6px;padding:7px 12px;font-weight:500;display:inline-flex}.topnav a:hover{background:var(--panel-2);text-decoration:none}.topnav a.active{background:var(--red-soft);color:var(--red-ink)}.mode-chip{color:var(--muted);border:1px solid var(--line);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:5px 10px;font-size:12px;display:inline-flex}.main{flex-direction:column;flex:1;min-height:0;display:flex}.page{flex-direction:column;gap:14px;width:100%;max-width:1280px;margin:0 auto;padding:24px 28px 48px;display:flex}.page.wide{max-width:1600px}.page.narrow{max-width:920px}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.back{color:var(--muted);align-items:center;gap:4px;font-size:13px;display:inline-flex}.card{background:var(--panel);border:1px solid var(--line);border-radius:8px;flex-direction:column;gap:10px;padding:16px 18px;display:flex}.grid2{grid-template-columns:1fr 1fr;gap:10px 14px;display:grid}.grid3{grid-template-columns:repeat(3,1fr);gap:10px 14px;display:grid}.grid2.cols-wide{align-items:start;gap:14px}.span2{grid-column:span 2}.toolbar-row{align-items:center;gap:8px;display:flex}.toolbar-row.wrap{flex-wrap:wrap}.empty{text-align:center;color:var(--muted);background:var(--panel);border:1px dashed var(--line-2);border-radius:8px;padding:40px}.splash{place-items:center;min-height:100vh;padding:20px;display:grid}.splash-card{background:var(--panel);border:1px solid var(--line);width:min(460px,100%);box-shadow:var(--shadow);border-radius:10px;flex-direction:column;gap:14px;padding:28px;display:flex}.btn{border-radius:var(--radius);border:1px solid var(--line-2);background:var(--panel);height:34px;color:var(--ink);font:inherit;cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;gap:6px;padding:0 14px;font-weight:500;display:inline-flex}.btn:hover:not(:disabled){background:var(--panel-2);border-color:#b9b9b2}.btn:focus-visible,.input:focus-visible,.tab:focus-visible,.chip:focus-visible,.toggle:focus-visible{outline:2px solid var(--red);outline-offset:1px}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--red);border-color:var(--red);color:#fff}.btn-primary:hover:not(:disabled){background:var(--red-ink);border-color:var(--red-ink)}.btn-ghost{background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:#ecece7;border-color:#0000}.btn-danger{color:var(--err)}.btn-danger:hover:not(:disabled){background:var(--err-soft);border-color:#f0b9b3}.btn-sm{height:28px;padding:0 9px;font-size:13px}.btn-icon{padding:0 7px}.input{border:1px solid var(--line-2);border-radius:var(--radius);height:34px;font:inherit;color:var(--ink);background:#fff;width:100%;min-width:0;padding:0 10px}textarea.input{resize:vertical;height:auto;padding:8px 10px}.input.sm{height:30px;padding:0 8px;font-size:13px}.input.num{text-align:right;font-variant-numeric:tabular-nums}.input.invalid{border-color:var(--err);background:var(--err-soft)}.input:disabled{background:var(--panel-2);color:var(--muted)}select.input{padding-right:4px}.field{flex-direction:column;gap:4px;min-width:0;display:flex}.field-label{color:var(--ink-2);font-size:12px;font-weight:500}.field-control{align-items:center;gap:6px;display:flex}.unit{color:var(--muted);font-size:12px}.field-hint{color:var(--muted);font-size:11.5px}.check{align-items:center;gap:8px;font-size:13px;display:inline-flex}.inline-field{align-items:center;gap:6px;font-size:13px;display:inline-flex}.label-sm{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-top:6px;font-size:11.5px;font-weight:600}.link{color:var(--red-ink);cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;padding:0}.link:hover{text-decoration:underline}.icon-link{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:2px;display:inline-flex}.icon-link:hover{color:var(--red)}.badge{color:var(--ink-2);white-space:nowrap;vertical-align:middle;background:#eeeeea;border-radius:999px;align-items:center;gap:4px;margin-left:4px;padding:2px 7px;font-size:11px;font-weight:600;display:inline-flex}.badge-demo{background:var(--demo-soft);color:var(--demo)}.badge-warn{background:var(--warn-soft);color:var(--warn)}.badge-error{background:var(--err-soft);color:var(--err)}.badge-ok{background:var(--ok-soft);color:var(--ok)}.badge-info{background:var(--info-soft);color:var(--info)}.badge-red{background:var(--red);color:#fff}.notice{border-radius:var(--radius);border:1px solid;align-items:flex-start;gap:10px;padding:10px 12px;font-size:13px;display:flex}.notice>svg{flex:none;margin-top:2px}.notice-error{background:var(--err-soft);color:#7a1a12;border-color:#f3c3bd}.notice-warn{background:var(--warn-soft);color:#6b4000;border-color:#f1d9a8}.notice-info{background:var(--info-soft);color:#1f3f5f;border-color:#cddcea}.tabs{background:#ebebe6;border-radius:8px;gap:2px;padding:3px;display:inline-flex}.tab{font:inherit;color:var(--ink-2);cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;gap:6px;padding:5px 12px;font-size:13px;font-weight:500;display:inline-flex}.tab.active{color:var(--ink);background:#fff;box-shadow:0 1px 2px #00000014}.chip{border:1px solid var(--line-2);font:inherit;cursor:pointer;background:#fff;border-radius:999px;padding:2px 9px;font-size:12px}.chip.active{background:var(--red);color:#fff;border-color:var(--red)}.count{background:#ddd;border-radius:999px;place-items:center;min-width:18px;height:18px;padding:0 5px;font-size:11px;font-weight:700;display:inline-grid}.count.err{background:var(--err);color:#fff}.thumb{border:1px solid var(--line);background:#fff;border-radius:4px;flex:none;place-items:center;display:inline-grid;overflow:hidden}.thumb img{object-fit:contain;max-width:100%;max-height:100%}.thumb-missing{color:var(--muted);font-weight:700}.toast{background:var(--ink);color:#fff;z-index:100;max-width:min(720px,92vw);box-shadow:var(--shadow);border-radius:8px;padding:10px 16px;font-size:13px;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.toast-error{background:var(--err)}.toast-ok{background:#1f4d33}.table-wrap{background:var(--panel);border:1px solid var(--line);border-radius:8px;overflow:auto}.table{border-collapse:collapse;width:100%;font-size:13px}.table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);background:var(--panel-2);z-index:1;white-space:nowrap;padding:9px 10px;font-size:12px;font-weight:600;position:sticky;top:0}.table td{vertical-align:middle;border-bottom:1px solid #efefeb;padding:7px 10px}.table tbody tr:hover{background:#fbfbf9}.table .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.table tr.picked{background:var(--red-soft)}.table tr.inactive td{color:var(--muted)}.table tr.row-missing{background:var(--err-soft)}.table td.actions{white-space:nowrap;text-align:right}.table tfoot td{border-top:2px solid var(--ink);background:var(--panel-2)}.cell-warn{color:var(--warn);margin-top:2px;font-size:12px}.pager{justify-content:center;align-items:center;gap:8px;padding:6px;display:flex}.radio-cards{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.radio-card{border:1px solid var(--line-2);cursor:pointer;border-radius:8px;flex-direction:column;gap:3px;padding:10px 12px;font-size:13px;display:flex}.radio-card input{opacity:0;pointer-events:none;position:absolute}.radio-card.active{border-color:var(--red);box-shadow:inset 0 0 0 1px var(--red);background:var(--red-soft)}.editor{background:var(--bg);flex-direction:column;height:100vh;display:flex}.ed-bar{background:var(--panel);border-bottom:1px solid var(--line);flex:none;align-items:center;gap:8px;height:52px;padding:0 12px;display:flex}.ed-back{width:32px;height:32px;color:var(--ink);border-radius:6px;place-items:center;display:grid}.ed-back:hover{background:var(--panel-2)}.ed-title{min-width:0;max-width:300px;margin-right:6px}.ed-name{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.ed-sub{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.save-state{white-space:nowrap;background:var(--ok-soft);color:var(--ok);border-radius:999px;padding:3px 8px;font-size:12px}.save-state.s-dirty,.save-state.s-saving{color:var(--ink-2);background:#efefea}.save-state.s-error,.save-state.s-conflict{background:var(--err);color:#fff}.data-chips{gap:2px;display:inline-flex}.status-select{width:auto}.menu-wrap{position:relative}.menu{border:1px solid var(--line);box-shadow:var(--shadow);z-index:30;background:#fff;border-radius:8px;flex-direction:column;min-width:260px;padding:6px;display:flex;position:absolute;top:calc(100% + 6px);right:0}.menu button{text-align:left;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;gap:8px;padding:8px 10px;font-size:13px;display:flex}.menu button:hover{background:var(--panel-2)}.menu-check{border-bottom:1px solid var(--line);gap:8px;margin-bottom:4px;padding:6px 10px 8px;font-size:12.5px;display:flex}.menu-backdrop{z-index:20;position:fixed;inset:0}.ed-alert{padding:8px 12px 0}.busy{background:var(--ink);color:#fff;z-index:40;border-radius:8px;padding:8px 14px;font-size:13px;position:fixed;top:64px;left:50%;transform:translate(-50%)}.mobile-note{padding:8px 12px 0;display:none}.ed-body{flex:1;grid-template-columns:280px minmax(0,1fr) 300px;min-height:0;display:grid}.ed-page{flex:1;padding:18px 22px 40px;overflow:auto}.cat-panel{background:var(--panel);border-right:1px solid var(--line);flex-direction:column;min-height:0;display:flex}.cat-filters{border-bottom:1px solid var(--line);flex-direction:column;gap:6px;padding:10px;display:flex}.filter-grid{grid-template-columns:1fr 1fr;gap:5px;display:grid}.fsel{min-width:0;position:relative}.fsel select{width:100%}.fsel.on select{appearance:none;background:var(--red-soft);border-color:var(--red);color:var(--red-ink);text-overflow:ellipsis;padding-right:24px;font-weight:600}.fsel-x{width:22px;height:22px;color:var(--red-ink);cursor:pointer;background:0 0;border:0;border-radius:4px;place-items:center;padding:0;display:inline-grid;position:absolute;top:50%;right:3px;transform:translateY(-50%)}.fsel-x:hover{background:var(--red);color:#fff}.cat-count{justify-content:space-between;align-items:center;gap:8px;display:flex}.cat-list{flex:1;margin:0;padding:4px;list-style:none;overflow:auto}.cat-item{cursor:grab;border-radius:6px;align-items:center;gap:8px;padding:6px;display:flex}.cat-item:hover{background:var(--panel-2)}.cat-item.inactive{opacity:.6}.cat-meta{flex:1;min-width:0}.cat-head{align-items:baseline;gap:6px;min-width:0;display:flex}.cat-sku{flex:none;font-family:ui-monospace,Menlo,monospace;font-size:12.5px;font-weight:600}.cat-family{color:var(--muted);letter-spacing:.02em;white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:11px;font-weight:600;overflow:hidden}.cat-name{color:var(--ink-2);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.cat-dims{color:var(--muted);font-size:11.5px}.ed-center{flex-direction:column;min-width:0;min-height:0;display:flex}.board-tools{background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:4px;padding:6px 8px;display:flex}.board-tools .sep{background:var(--line);width:1px;height:20px;margin:0 4px}.zoom-val{text-align:center;font-variant-numeric:tabular-nums;min-width:40px;font-size:12px}.toggle{font:inherit;border:1px solid var(--line-2);cursor:pointer;height:28px;color:var(--ink-2);background:#fff;border-radius:6px;align-items:center;gap:5px;padding:0 9px;font-size:12.5px;display:inline-flex}.toggle.on{background:var(--ink);border-color:var(--ink);color:#fff}.board{touch-action:none;-webkit-user-select:none;user-select:none;background:#e9e9e4;flex:1;min-height:0;position:relative;overflow:hidden}.board.panning{cursor:grab}.board>svg{display:block}.module-outer{fill:#fff;stroke:#2a2a28;stroke-width:1.5px;vector-effect:non-scaling-stroke}.module.selected .module-outer{stroke:var(--red);stroke-width:2px}.module.locked .module-outer{stroke-dasharray:6 4}.banner-band{fill:#0000000d}.module.dark .banner-band{fill:#ffffff12}.module-usable{fill:none;stroke:#9a9a93;stroke-dasharray:5 4;stroke-width:1px;vector-effect:non-scaling-stroke}.hole{fill:#00000036}.hole.on-dark{fill:#0009}.module-label{fill:var(--ink-2);cursor:pointer;font-weight:600}.module-label:hover{fill:var(--red);text-decoration:underline}.module.selected .module-label{fill:var(--red-ink)}.ruler-axis,.ruler-tick{stroke:#77776f;stroke-width:1px;vector-effect:non-scaling-stroke}.ruler-text{fill:#55554f}.shelf{fill:#8f8f88;stroke:#00000059;stroke-width:.75px;vector-effect:non-scaling-stroke}.shelf-node{cursor:ns-resize}.shelf-node.locked{cursor:pointer}.shelf-hit{fill:#0000}.shelf-node:hover .shelf{stroke:var(--red);stroke-width:1.5px}.shelf-node.selected .shelf{stroke:var(--red);stroke-width:2.5px}.shelf-label{fill:var(--red-ink);paint-order:stroke;stroke:#fff;stroke-width:3px;pointer-events:none;font-weight:700}.placement{cursor:move}.placement .phys{fill:none;stroke:#1e1e1e59;stroke-width:1px;vector-effect:non-scaling-stroke}.placement:hover .phys{stroke:var(--red)}.placement.selected .phys{stroke:var(--red);stroke-width:2.5px;fill:#c8102e0f}.placement.has-error .phys{stroke:var(--err);stroke-width:2px;stroke-dasharray:5 3}.placement.selected.has-error .phys{stroke-dasharray:none}.error-mark path{fill:var(--err);stroke:#fff;stroke-width:1.5px}.error-mark text{fill:#fff;font-weight:800}.tab-shape circle{fill:#fff;stroke:#00000040;stroke-width:.5px;vector-effect:non-scaling-stroke}.hook circle{fill:var(--red);stroke:#fff;stroke-width:1px;vector-effect:non-scaling-stroke}.hook text{fill:var(--red-ink);font-weight:600}.sku-label{fill:var(--ink);paint-order:stroke;stroke:#fff;stroke-width:3px;vector-effect:non-scaling-stroke;font-weight:600}.quote line{stroke:#2f5d8a;stroke-width:1px;vector-effect:non-scaling-stroke}.quote text{fill:#2f5d8a;paint-order:stroke;stroke:#fff;stroke-width:3px;font-weight:600}.missing-art{fill:#fdecea;stroke:var(--err);stroke-dasharray:4 3;vector-effect:non-scaling-stroke}.deco-outline{fill:none;stroke:#0000;stroke-width:2px;vector-effect:non-scaling-stroke}.decoration{cursor:move}.decoration:hover .deco-outline{stroke:#9a9a93}.deco-outline.selected{stroke:var(--red)}.marquee{fill:#c8102e12;stroke:var(--red);stroke-dasharray:4 3;vector-effect:non-scaling-stroke}.lock-mark{pointer-events:none}.excluded-tray{background:var(--panel);border-top:1px solid var(--line);flex:none}.tray-head{width:100%;font:inherit;cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:8px;padding:7px 12px;font-size:13px;font-weight:500;display:flex}.tray-body{flex-wrap:wrap;gap:8px;max-height:132px;padding:4px 12px 10px;display:flex;overflow-y:auto}.tray-item{border:1px solid var(--line);border-radius:6px;align-items:center;gap:6px;padding:4px 6px;display:flex}.diag-pill{background:var(--ok-soft);color:var(--ok);border-radius:999px;padding:2px 8px;font-size:12px}.diag-pill.err{background:var(--err-soft);color:var(--err)}.side-panel{background:var(--panel);border-left:1px solid var(--line);flex-direction:column;min-height:0;display:flex}.side-panel>.tabs{margin:8px}.side-scroll{flex:1;overflow:auto}.panel-pad{flex-direction:column;gap:10px;padding:4px 12px 16px;display:flex}.props.panel-pad{gap:0;padding-top:0}.m0{margin:0}.psec{border-top:1px solid var(--line);padding:10px 0 12px}.psec:first-child{border-top:0}.prop-headbox+.psec,.notice+.psec{border-top:1px solid var(--line)}.psec-head{align-items:center;gap:8px;min-height:22px;margin-bottom:8px;display:flex}.psec.closed .psec-head{margin-bottom:0}.psec-title{font:inherit;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:4px;margin:0;padding:0;font-size:11.5px;font-weight:700;display:inline-flex}button.psec-title{cursor:pointer}button.psec-title:hover{color:var(--ink)}.psec-chev{color:var(--muted);transition:transform .15s}.psec.closed .psec-chev{transform:rotate(-90deg)}.psec-aside{align-items:center;gap:4px;display:inline-flex}.psec-aside .badge{margin-left:0}.psec-body{flex-direction:column;gap:10px;display:flex}.prop-headbox{flex-direction:column;gap:10px;padding:12px 0;display:flex}.prop-headbox~.notice{margin-bottom:8px}.prop-icon{background:var(--panel-2);border:1px solid var(--line);width:44px;height:44px;color:var(--ink-2);border-radius:8px;flex:none;place-items:center;display:inline-grid}.prop-id{flex:1;min-width:0}.prop-title{word-break:break-word;font-size:15px;font-weight:700;line-height:1.25}.prop-sub{color:var(--ink-2);margin-top:2px}.prop-actions{flex-wrap:wrap;gap:6px;display:flex}.sep-v{background:var(--line);width:1px;height:20px;margin:0 2px}.sublabel{color:var(--ink-2);font-size:12px;font-weight:600}.shortcuts{grid-template-columns:auto 1fr;gap:5px 10px;margin:0;font-size:12px;display:grid}.shortcuts dt{color:var(--ink);font-weight:600}.shortcuts dd{color:var(--muted);margin:0}.list-row{align-items:center;gap:8px;min-height:30px;display:flex}.color-field{flex-direction:column;gap:6px;display:flex}.color-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.swatches{flex-wrap:wrap;gap:6px;display:flex}.swatch{cursor:pointer;border:1px solid #00000038;border-radius:50%;place-items:center;width:26px;height:26px;padding:0;display:inline-grid;position:relative}.swatch:disabled{cursor:not-allowed;opacity:.5}.swatch.on{box-shadow:0 0 0 2px #fff, 0 0 0 4px var(--red)}.swatch:focus-visible{outline:2px solid var(--red);outline-offset:2px}.swatch-check{color:#fff;filter:drop-shadow(0 0 1px #000000e6)drop-shadow(0 0 1px #0009)}.swatch.custom{background:conic-gradient(#e53935,#fdd835,#43a047,#1e88e5,#8e24aa,#e53935);overflow:hidden}.swatch.custom input{opacity:0;cursor:pointer;border:0;width:100%;height:100%;padding:0;position:absolute;inset:0}.module-list{flex-direction:column;gap:2px;max-height:220px;margin:0 0 8px;padding:0;list-style:none;display:flex;overflow:auto}.module-row{width:100%;font:inherit;text-align:left;cursor:pointer;color:var(--ink);background:0 0;border:1px solid #0000;border-radius:6px;grid-template-columns:22px 14px minmax(0,1fr) auto;align-items:center;gap:8px;padding:6px 8px;font-size:13px;display:grid}.module-row:hover{background:var(--panel-2)}.module-row.active{background:var(--red-soft);border-color:#f1c6cd}.module-num{width:22px;height:22px;color:var(--ink-2);background:#ebebe6;border-radius:5px;place-items:center;font-size:12px;font-weight:700;display:inline-grid}.module-row.active .module-num,.module-num.lg{background:var(--red);color:#fff}.module-num.lg{flex:none;width:30px;height:30px;font-size:14px}.module-swatch{border:1px solid #00000040;border-radius:3px;width:14px;height:14px}.module-name{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.module-meta{color:var(--muted);white-space:nowrap;font-size:11.5px}.module-editor{border-top:2px solid var(--ink);flex-direction:column;gap:10px;padding:12px 0;display:flex}.module-editor-head{align-items:center;gap:8px;display:flex}.name-input{font-size:15px;font-weight:700}.prop-head{align-items:flex-start;gap:10px;display:flex}.badges{flex-wrap:wrap;gap:3px;margin-top:4px;display:flex}.badges .badge{margin-left:0}.prop-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.kv{flex-direction:column;font-size:12px;display:flex}.kv span{color:var(--muted)}.kv strong{font-size:13px}.replace{border-top:1px solid var(--line);flex-direction:column;gap:6px;padding-top:10px;display:flex}.shelf-row{grid-template-columns:58px minmax(0,1fr) 52px 30px;align-items:center;gap:6px;display:grid}.shelf-row-head{font-size:11.5px}.shelf-pick{border:1px solid var(--line-2);height:28px;font:inherit;cursor:pointer;background:#fff;border-radius:6px;align-items:center;gap:6px;padding:0 6px;font-size:12.5px;font-weight:600;display:inline-flex}.shelf-pick:hover{border-color:var(--red);color:var(--red-ink)}.shelf-dot{border:1px solid #0000004d;border-radius:2px;width:10px;height:10px}.shelves{flex-direction:column;gap:6px;display:flex}.shelf-add{border-top:1px dashed var(--line);grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:8px;margin-top:4px;padding-top:8px;display:grid}.diag-status{border-radius:6px;gap:8px;padding:8px 10px;font-size:12.5px;display:flex}.diag-status.err{background:var(--err-soft);color:#7a1a12}.diag-status.ok{background:var(--ok-soft);color:var(--ok)}.diag-status.draft{background:var(--info-soft);color:#1f3f5f}.diag-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.diag-item{text-align:left;width:100%;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:flex-start;gap:8px;padding:6px;font-size:12.5px;display:flex}.diag-item.error{color:#7a1a12}.diag-item:hover{background:var(--err-soft)}.diag-item svg{flex:none;margin-top:1px}.diag-group{border:1px solid var(--line);border-radius:6px}.diag-group-head{width:100%;font:inherit;cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:6px;padding:7px 8px;font-size:12.5px;display:flex}.diag-group-head span:first-of-type{flex:1}.diag-group.warning .diag-group-head{color:var(--warn)}.diag-group-body{padding:0 10px 8px}.diag-group-body ul{margin:4px 0 0;padding-left:16px}.bom,.proposal{flex-direction:column;gap:14px;max-width:1500px;margin:0 auto;display:flex}.bom-summary{grid-template-columns:repeat(4,1fr);gap:10px;display:grid}.kpi{background:var(--panel);border:1px solid var(--line);border-radius:8px;flex-direction:column;gap:4px;padding:12px 14px;display:flex}.kpi span{color:var(--muted);font-size:12px}.kpi strong{font-variant-numeric:tabular-nums;font-size:22px}.kpi .badge{align-self:flex-start;margin:0}.qty-cell{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:4px;display:inline-flex}.bom-table td{font-size:12.5px}.bulk{background:var(--red-soft);border-color:#f1c6cd;flex-flow:wrap;align-items:center;gap:8px;padding:10px 14px}.modal-backdrop{z-index:50;background:#1414126b;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:10px;outline:none;flex-direction:column;width:min(640px,100%);max-height:calc(100vh - 40px);display:flex;box-shadow:0 10px 40px #00000040}.modal-wide{width:min(1120px,100%)}.modal-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.modal-head h2{margin:0;font-size:16px}.modal-body{padding:14px 16px;overflow:auto}.modal-foot{border-top:1px solid var(--line);justify-content:flex-end;align-items:center;gap:8px;padding:12px 16px;display:flex}.modal-foot .err-text{margin-right:auto}.item-editor{grid-template-columns:340px 1fr;gap:18px;display:grid}.ie-left,.ie-right{flex-direction:column;gap:10px;min-width:0;display:flex}.audit-view{border:1px solid var(--line);background:var(--panel-2);border-radius:8px;margin:0;padding:8px}.audit-view svg{width:100%;height:300px;display:block}.legend{border-top:2px solid var(--red);vertical-align:middle;width:14px;height:0;display:inline-block}.legend.dashed{border-top:1px dashed #5b6b7a}.verify-grid{flex-direction:column;gap:4px;display:flex}.verify-row{border-bottom:1px solid #f0f0ec;grid-template-columns:1fr auto auto;align-items:center;gap:8px;padding:4px 0;font-size:13px;display:grid}.verify-row .badge{margin:0}.audit summary{cursor:pointer;font-size:13px}.audit ul{max-height:180px;padding-left:16px;overflow:auto}.calib{border:1px solid var(--line);border-radius:8px;flex-direction:column;gap:8px;padding:10px;display:flex}.calib-svg{cursor:crosshair;touch-action:none;background:#f6f6f3;width:100%;max-height:300px}.compare-table{background:var(--panel);border:1px solid var(--line);border-radius:8px}@media (width<=1280px){.ed-body{grid-template-columns:240px minmax(0,1fr) 280px}.ed-title{max-width:180px}.data-chips{display:none}}@media (width<=1100px){.ed-body{grid-template-columns:220px minmax(0,1fr) 270px}.board-tools .chip,.toggle.has-icon .tl,.board-tools .btn .tl{display:none}.ed-bar .save-state{text-overflow:ellipsis;max-width:120px;overflow:hidden}.radio-cards,.bom-summary{grid-template-columns:1fr 1fr}}@media (width<=760px){.topbar{gap:8px;padding:0 10px}.mode-chip{display:none}.topnav a{padding:6px 8px;font-size:13px}.page{padding:16px 14px 40px}.grid2,.grid3,.grid2.cols-wide,.item-editor{grid-template-columns:1fr}.mobile-note{display:block}.ed-bar{flex-wrap:wrap;height:auto;padding:8px}.ed-body{grid-template-columns:1fr}.cat-panel,.side-panel,.board-tools,.ed-bar .status-select,.ed-bar .btn-ghost{display:none}}.qty-eff{font-variant-numeric:tabular-nums;color:var(--warn)}.self-start{align-self:flex-start}.diag-errgroup{flex-direction:column;gap:2px;display:flex}.diag-errhead{color:#7a1a12;align-items:center;gap:6px;padding:4px 6px 0;font-size:12.5px;font-weight:600;display:flex}.diag-errhead .link{margin-left:auto;font-weight:400}.guide{stroke:#d6006e;stroke-width:1px;vector-effect:non-scaling-stroke;pointer-events:none}.guide.align{stroke-dasharray:4 3}.guide.gap{stroke-width:2px}.guide-label{fill:#d6006e;paint-order:stroke;stroke:#fff;stroke-width:3px;pointer-events:none;font-weight:700}.cat-item{position:relative}.cat-item.picked{background:var(--red-soft);box-shadow:inset 0 0 0 1px #f1c6cd}.pick-order{z-index:1;background:var(--red);color:#fff;border-radius:999px;place-items:center;min-width:18px;height:18px;padding:0 4px;font-size:11px;font-weight:700;display:grid;position:absolute;top:2px;left:2px}.cat-batch{border-top:1px solid var(--line);background:var(--panel-2);flex-direction:column;gap:6px;padding:8px 10px;display:flex}.cat-batch .mono{word-break:break-all}.v3d{flex-direction:column;flex:1;min-height:0;display:flex}.v3d-canvas{touch-action:none;background:#d8d5cf;flex:1;min-height:0;position:relative;overflow:hidden}.v3d-canvas canvas{width:100%;height:100%;display:block}.v3d-overlay{color:var(--ink-2);pointer-events:none;background:#d8d5cfbf;place-items:center;font-size:13px;display:grid;position:absolute;inset:0}.v3d-overlay.err{color:var(--danger,#b42318);pointer-events:auto}.v3d-note{color:var(--muted,#6b6b66);background:var(--panel);border-top:1px solid var(--line);margin:0;padding:6px 10px;font-size:11.5px}.side-panel .field-control{position:relative}.side-panel .field-control>.input.num{padding-right:34px}.side-panel .field-control>.unit{pointer-events:none;position:absolute;top:50%;right:9px;transform:translateY(-50%)}.module-editor-head .btn{flex:none}.code-label .code-bg{stroke:#00000040;stroke-width:.5px;vector-effect:non-scaling-stroke}.code-label .code-text{letter-spacing:.01em;font-weight:700}.code-label.tone-warm .code-bg{fill:#f4c430}.code-label.tone-warm .code-text{fill:#3a2c00}.code-label.tone-natural .code-bg{fill:#2e9e5b}.code-label.tone-natural .code-text{fill:#fff}.code-label.tone-cold .code-bg{fill:#2f6fd6}.code-label.tone-cold .code-text{fill:#fff}.code-label.tone-variable .code-text{fill:#fff;paint-order:stroke;stroke:#0000008c;stroke-width:2px}.code-label.tone-none .code-bg{fill:#e4e3df}.code-label.tone-none .code-text{fill:#2a2a28}.tone-legend{border:1px solid var(--line);color:var(--ink-2);pointer-events:none;background:#ffffffeb;border-radius:6px;flex-wrap:wrap;gap:4px 12px;padding:6px 10px;font-size:12px;display:flex;position:absolute;bottom:10px;left:10px}.tone-legend span{align-items:center;gap:5px;display:inline-flex}.tone-dot{border:1px solid #00000040;border-radius:3px;width:12px;height:12px;display:inline-block}.tone-dot.tone-warm{background:#f4c430}.tone-dot.tone-natural{background:#2e9e5b}.tone-dot.tone-cold{background:#2f6fd6}.tone-dot.tone-variable{background:linear-gradient(90deg,#e53935,#f4b400,#2e9e5b,#2f6fd6,#8e24aa)}.tone-dot.tone-none{background:#e4e3df}.artwork-compare{border:1px solid var(--line,#ddd);border-radius:6px;margin:8px 0;padding:8px}.artwork-compare.has-mismatch{border-color:var(--red)}.artwork-compare table.compact{table-layout:fixed;width:100%}.artwork-compare table.compact td,.artwork-compare table.compact th{overflow-wrap:anywhere;padding:3px 4px;font-size:12px}.artwork-compare table.compact th:first-child,.artwork-compare table.compact td:first-child{width:42%}.artwork-compare tr.mismatch td{color:var(--red-ink,#8a0b20);background:#c8102e1a}.disc-chain{gap:3px;display:inline-flex}.disc-chain.own input{border-color:var(--red)}.nav-count{background:var(--red);color:#fff;font-variant-numeric:tabular-nums;border-radius:999px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 5px;font-size:11px;font-weight:700;display:inline-flex}.propose-box{border:1px solid var(--info);border-radius:var(--radius);background:var(--info-soft);flex-direction:column;gap:8px;margin-bottom:12px;padding:12px;display:flex}.propose-box textarea,.request-detail textarea{resize:vertical;width:100%;font:inherit}.request-detail{flex-direction:column;gap:10px;display:flex}.request-detail .table td .badge{margin-left:6px}.pre-wrap{white-space:pre-wrap;margin:0}.request-photo{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);max-width:100%;max-height:320px;display:block}.secret-box{white-space:pre-wrap;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);-webkit-user-select:all;user-select:all;margin:8px 0 0;padding:12px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:13px}
