:root,:root[data-theme=dark]{--accent: #3ecf8e;--accent-hover: #34b87d;--accent-ink: #062a1a;--bg: #1c1c1c;--bg-deep: #181818;--panel: #232323;--panel-2: #1e1e1e;--border: #2e2e2e;--border-strong: #3a3a3a;--text: #ededed;--muted: #a0a0a0;--faint: #6f6f6f;--field-bg: #1a1a1a;--field-border: #333;--stripe: #262626;--module: #1f2a25;--warn: #f0a35e;--radius: 7px;--radius-sm: 6px;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}:root[data-theme=light]{--accent: #3ecf8e;--accent-hover: #30b579;--accent-ink: #05341f;--bg: #fafafa;--bg-deep: #f2f2f2;--panel: #ffffff;--panel-2: #fbfbfb;--border: #e6e6e6;--border-strong: #d6d6d6;--text: #1f1f1f;--muted: #6b6b6b;--faint: #9a9a9a;--field-bg: #ffffff;--field-border: #e0e0e0;--stripe: #f6f6f6;--module: #edf9f2;--warn: #b8562a}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;transition:background .15s,color .15s}#app{max-width:1440px;margin:0 auto;padding:20px 20px 64px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 18px;margin-bottom:18px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius)}.brand{display:flex;align-items:center;gap:10px}.brand-mark{color:var(--accent);font-size:20px}.brand-name{font-size:16px;font-weight:700;letter-spacing:.2px;color:var(--text)}.topbar-right{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.brand-sub{color:var(--muted);font-size:13px}.lang-select{font-size:13px;font-weight:600;padding:7px 10px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--panel-2);color:var(--text);cursor:pointer}.lang-select:focus{outline:none;border-color:var(--accent)}.theme-toggle{font-size:13px;font-weight:600;padding:7px 12px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--panel-2);color:var(--text);cursor:pointer;transition:border-color .12s,background .12s}.theme-toggle:hover{border-color:var(--accent)}.mode-toggle{display:inline-flex;gap:3px;padding:3px;margin-bottom:18px;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius)}.mode-btn{font-size:14px;font-weight:600;padding:8px 18px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--muted);cursor:pointer;transition:background .12s,color .12s}.mode-btn.active{background:var(--accent);color:var(--accent-ink)}.mode-btn:hover:not(.active){color:var(--text)}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:20px;margin-bottom:18px}.hidden{display:none}.field-label{display:block;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin-bottom:6px}.config-input{width:100%;min-height:190px;resize:vertical;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.45;color:var(--text);background:var(--field-bg);border:1px solid var(--field-border);border-radius:var(--radius-sm);padding:12px 14px}.config-input:focus{outline:none;border-color:var(--accent)}.logo-controls{align-items:center}.logo-input{display:none}.logo-choose{margin-top:0}.logo-preview{max-height:40px;max-width:160px;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;padding:3px 6px}.controls{display:flex;align-items:flex-end;gap:14px;margin-top:14px;flex-wrap:wrap}.control{display:flex;flex-direction:column}.vendor-select{font-size:14px;padding:8px 10px;border:1px solid var(--field-border);border-radius:var(--radius-sm);background:var(--field-bg);color:var(--text)}.size-choices{display:flex;gap:8px}.size-radio,.sfp-check{display:inline-flex;align-items:center;gap:7px;font-size:14px;cursor:pointer;color:var(--text)}.size-radio{padding:8px 14px;border:1px solid var(--field-border);border-radius:var(--radius-sm);background:var(--field-bg)}.size-radio input,.sfp-check input,.cell-check{accent-color:var(--accent);cursor:pointer}.sfp-check{margin:14px 0}.custom-count{width:90px;padding:8px 10px;border:1px solid var(--field-border);border-radius:var(--radius-sm);background:var(--field-bg);color:var(--text);font-size:14px}.custom-count:disabled{opacity:.5}.btn{font-size:14px;font-weight:600;padding:9px 18px;border-radius:var(--radius-sm);border:1px solid transparent;cursor:pointer;transition:background .12s,border-color .12s}.btn-primary{background:var(--accent);color:var(--accent-ink)}.btn-primary:hover{background:var(--accent-hover)}.btn-primary:disabled{opacity:.55;cursor:default}.btn-ghost{background:var(--panel-2);color:var(--text);border-color:var(--border-strong);margin-top:10px;padding:6px 12px;font-size:13px}.btn-ghost:hover{border-color:var(--accent)}.notice{font-size:13px;padding:6px 2px}.notice.ok{color:var(--accent);font-weight:600}.notice.warn{color:var(--warn);font-weight:600}.privacy{font-size:12px;color:var(--muted);margin:14px 0 0}.modal{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:32px}.modal.hidden{display:none}.modal-backdrop{position:absolute;inset:0;background:#0009}.modal-card{position:relative;z-index:1;width:min(900px,96vw);height:min(92vh,1100px);display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.modal-head{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--border)}.modal-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--text)}.preview-hint{font-size:12px;color:var(--faint)}.modal-close{margin-left:auto;width:30px;height:30px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--panel-2);color:var(--text);font-size:14px;cursor:pointer}.modal-close:hover{border-color:var(--accent)}body.modal-open{overflow:hidden}.preview-frame{flex:1;width:100%;border:none;background:#f0f0f0}.toolbar{display:flex;align-items:center;gap:14px;padding-bottom:16px;margin-bottom:18px;border-bottom:1px solid var(--border)}.toolbar{flex-wrap:wrap}.toolbar-group{display:flex;align-items:center;gap:10px}.toolbar-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--muted)}.guide-check{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--text);cursor:pointer}.guide-check input{accent-color:var(--accent);cursor:pointer}.style-select{font-size:13px;padding:7px 10px;border:1px solid var(--field-border);border-radius:var(--radius-sm);background:var(--field-bg);color:var(--text);cursor:pointer}.style-select:focus{outline:none;border-color:var(--accent)}.style-select:disabled{opacity:.5;cursor:not-allowed}.custom-color{width:34px;height:32px;padding:2px;border:1px solid var(--field-border);border-radius:var(--radius-sm);background:var(--field-bg);cursor:pointer}.btn-tiny{padding:5px 9px;font-size:12px;line-height:1}.style-group.custom-active .custom-color{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.custom-badge{font-size:10.5px;font-weight:700;letter-spacing:.3px;text-transform:uppercase;color:var(--accent-contrast, #05341f);background:var(--accent);padding:3px 7px;border-radius:999px;white-space:nowrap}.custom-clear{color:var(--text)}.toolbar-spacer{flex:1}.seg{display:inline-flex;padding:3px;gap:3px;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-sm)}.seg-btn{font-size:13px;font-weight:600;padding:6px 14px;border:none;border-radius:4px;background:transparent;color:var(--muted);cursor:pointer;transition:background .12s,color .12s}.seg-btn.active{background:var(--accent);color:var(--accent-ink)}.seg-btn:hover:not(.active){color:var(--text)}.section{margin-bottom:24px}.section-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--text);margin:0 0 12px;padding-bottom:6px;border-bottom:2px solid var(--accent);display:inline-block}.meta-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.meta-cell{display:flex;flex-direction:column;gap:4px;min-width:0}.meta-label{font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--muted)}.meta-input{width:100%;min-width:0;padding:8px 10px;border:1px solid var(--field-border);border-radius:var(--radius-sm);background:var(--field-bg);color:var(--text);font-size:14px}.meta-input:focus,.custom-count:focus,.vendor-select:focus,.legend-id:focus,.legend-name:focus{outline:none;border-color:var(--accent)}.legend-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;width:100%;max-width:100%}.legend-row{display:flex;gap:6px;min-width:0}.legend-id{flex:0 0 46px;width:46px;min-width:0;padding:7px 6px;border:1px solid var(--field-border);border-radius:var(--radius-sm);background:var(--field-bg);font-weight:700;color:var(--accent);text-align:center}.legend-name{flex:1 1 auto;min-width:0;padding:7px 8px;border:1px solid var(--field-border);border-radius:var(--radius-sm);background:var(--field-bg);color:var(--text)}.grid-table{border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.grid-row{display:grid;grid-template-columns:84px 52px 3fr 84px 74px 3fr;align-items:stretch;border-bottom:1px solid var(--border)}.grid-row:last-child{border-bottom:none}.grid-row:nth-child(2n of.grid-row):not(.grid-head){background:var(--stripe)}.grid-head{background:var(--panel-2);border-bottom:2px solid var(--accent)}.grid-module{background:var(--module)!important}.grid-cell{padding:0;border-right:1px solid var(--border);display:flex;align-items:center}.grid-cell:last-child{border-right:none}.grid-head .grid-cell{padding:9px 8px;font-size:10.5px;font-weight:700;letter-spacing:.5px;color:var(--muted)}.c-upl{justify-content:center}.cell-input,.cell-select{width:100%;border:none;background:transparent;padding:9px 8px;font-size:13.5px;color:var(--text);font-family:inherit}.cell-select{border-radius:0}.cell-input:focus,.cell-select:focus{outline:1px solid var(--accent);outline-offset:-1px;background:var(--field-bg)}.port-input{font-weight:700;color:var(--accent)}.cell-check{width:17px;height:17px}.btn-export{padding:9px 22px}.toolbar .btn-ghost{margin-top:0;padding:9px 16px;font-size:14px}@media (max-width: 720px){.meta-grid{grid-template-columns:1fr 1fr}.grid-row{grid-template-columns:70px 42px 2fr 66px 62px 2fr;font-size:12px}.topbar{flex-direction:column;align-items:flex-start}}
