:root{--color-bg: #0D1117;--color-surface: #161B22;--color-surface-2: #1C232C;--color-primary: #0A1628;--color-accent: #00C2FF;--color-accent-dim: rgba(0, 194, 255, .15);--color-accent-glow: rgba(0, 194, 255, .35);--color-warn: #FF6B35;--color-success: #3FB950;--color-error: #F85149;--color-text: #E6EDF3;--color-text-dim: #8B949E;--color-border: rgba(0, 194, 255, .15);--color-border-strong: rgba(0, 194, 255, .35);--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--font-ui: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--radius-card: 6px;--radius-input: 4px}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;background:var(--color-bg);color:var(--color-text);font-family:var(--font-ui);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{background-image:radial-gradient(circle at 20% 0%,rgba(0,194,255,.04) 0%,transparent 50%),radial-gradient(circle at 80% 100%,rgba(255,107,53,.03) 0%,transparent 50%);background-attachment:fixed}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}input,select,textarea{font-family:inherit;color:inherit}.app{display:flex;flex-direction:column;min-height:100vh}.app-header{display:flex;align-items:center;justify-content:space-between;padding:14px 24px;border-bottom:1px solid var(--color-border);background:#0d1117d9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);position:sticky;top:0;z-index:10}.brand{display:flex;align-items:center;gap:10px;font-family:var(--font-mono);font-weight:700;font-size:13px;letter-spacing:.25em;color:var(--color-text)}.brand-dot{width:8px;height:8px;border-radius:50%;background:var(--color-accent);box-shadow:0 0 12px var(--color-accent-glow);animation:pulse-dot 2.4s ease-in-out infinite}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(.85)}}.brand-tag{color:var(--color-text-dim);font-weight:400;margin-left:4px}.header-status{display:flex;align-items:center;gap:16px;font-family:var(--font-mono);font-size:11px;color:var(--color-text-dim);letter-spacing:.1em}.header-status .indicator{display:inline-flex;align-items:center;gap:6px}.header-status .led{width:6px;height:6px;border-radius:50%;background:var(--color-success);box-shadow:0 0 6px #3fb950b3}.app-body{display:grid;grid-template-columns:1.5fr 1fr;gap:20px;padding:20px 24px;flex:1;max-width:1600px;width:100%;margin:0 auto}@media(max-width:1024px){.app-body{grid-template-columns:1fr}}.panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-card);overflow:hidden;display:flex;flex-direction:column}.panel-header{padding:12px 16px;border-bottom:1px solid var(--color-border);background:#00c2ff08;font-family:var(--font-mono);font-size:11px;letter-spacing:.15em;color:var(--color-text-dim);text-transform:uppercase;display:flex;align-items:center;justify-content:space-between}.panel-header .panel-title{display:flex;align-items:center;gap:8px;color:var(--color-text)}.panel-header .panel-meta{color:var(--color-text-dim);font-size:10px}.panel-body{padding:16px}.preview-column{position:sticky;top:78px;align-self:start;max-height:calc(100vh - 100px);overflow:hidden;display:flex;flex-direction:column}@media(max-width:1024px){.preview-column{position:static;max-height:none}}.dropzone{border:2px dashed var(--color-border-strong);border-radius:var(--radius-card);padding:48px 24px;text-align:center;background:#00c2ff05;transition:background .16s,border-color .16s;cursor:pointer}.dropzone:hover,.dropzone.is-dragging{background:#00c2ff0f;border-color:var(--color-accent)}.dropzone-icon{font-family:var(--font-mono);color:var(--color-accent);font-size:24px;letter-spacing:.4em;margin-bottom:12px}.dropzone-title{font-size:15px;font-weight:600;color:var(--color-text);margin-bottom:6px}.dropzone-hint{font-size:12px;color:var(--color-text-dim);font-family:var(--font-mono)}.dropzone-error{margin-top:12px;color:var(--color-error);font-family:var(--font-mono);font-size:12px}.uploader-mini{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-input);margin-bottom:12px}.uploader-mini .info{font-family:var(--font-mono);font-size:12px;color:var(--color-text-dim)}.uploader-mini .info strong{color:var(--color-text)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;border-radius:var(--radius-input);font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;transition:background .14s,border-color .14s,color .14s,opacity .14s;border:1px solid transparent;white-space:nowrap}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--color-accent);color:var(--color-primary);font-weight:700}.btn-primary:hover:not(:disabled){background:#33ceff;box-shadow:0 0 16px var(--color-accent-glow)}.btn-secondary{background:transparent;border-color:var(--color-border-strong);color:var(--color-text)}.btn-secondary:hover:not(:disabled){border-color:var(--color-accent);color:var(--color-accent)}.btn-warn{background:var(--color-warn);color:#1a0a04;font-weight:700}.btn-warn:hover:not(:disabled){background:#ff8552}.btn-ghost{background:transparent;color:var(--color-text-dim);border-color:var(--color-border)}.btn-ghost:hover:not(:disabled){color:var(--color-text);border-color:var(--color-border-strong)}.contact-table-wrap{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-input);max-height:480px;overflow-y:auto}.contact-table{width:100%;border-collapse:collapse;font-family:var(--font-mono);font-size:12px}.contact-table thead{background:#00c2ff0d;position:sticky;top:0;z-index:1}.contact-table th{text-align:left;padding:10px 12px;font-weight:500;letter-spacing:.08em;color:var(--color-text-dim);text-transform:uppercase;font-size:10px;border-bottom:1px solid var(--color-border)}.contact-table td{padding:9px 12px;border-bottom:1px solid rgba(255,255,255,.04);color:var(--color-text);vertical-align:middle}.contact-table tr{cursor:pointer;transition:background .1s}.contact-table tbody tr:hover{background:#00c2ff0a}.contact-table tr.is-active{background:#00c2ff14;box-shadow:inset 3px 0 0 var(--color-accent)}.contact-table tr.is-invalid td{color:var(--color-error)}.contact-table tr.is-excluded td{opacity:.35}.contact-table .col-checkbox{width:32px}.contact-table .col-num{width:40px;color:var(--color-text-dim)}.contact-table .col-status{width:100px}.row-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:14px;height:14px;border:1px solid var(--color-border-strong);border-radius:2px;background:var(--color-surface);cursor:pointer;position:relative;transition:background .12s,border-color .12s}.row-checkbox:checked{background:var(--color-accent);border-color:var(--color-accent)}.row-checkbox:checked:after{content:"";position:absolute;left:3px;top:0;width:4px;height:8px;border:solid var(--color-primary);border-width:0 2px 2px 0;transform:rotate(45deg)}.status-pill{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:10px;font-size:10px;letter-spacing:.05em;text-transform:uppercase;font-weight:500;border:1px solid transparent}.status-pill.idle{color:var(--color-text-dim);background:#8b949e14;border-color:#8b949e26}.status-pill.queued{color:var(--color-text-dim);background:#8b949e1a;border-color:#8b949e33}.status-pill.sending{color:var(--color-accent);background:#00c2ff1a;border-color:#00c2ff4d;animation:pulse-status 1.2s ease-in-out infinite}.status-pill.sent{color:var(--color-success);background:#3fb9501a;border-color:#3fb9504d}.status-pill.failed{color:var(--color-error);background:#f851491a;border-color:#f851494d;cursor:help}.status-pill.invalid{color:var(--color-error);background:#f8514914;border-color:#f8514940}@keyframes pulse-status{0%,to{opacity:1}50%{opacity:.55}}.controls-row{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:14px}.controls-row .spacer{flex:1}.test-input{display:flex;align-items:center;gap:6px}.input{background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-input);padding:7px 10px;font-family:var(--font-mono);font-size:12px;color:var(--color-text);outline:none;transition:border-color .12s;min-width:220px}.input:focus{border-color:var(--color-accent)}.input::placeholder{color:var(--color-text-dim)}.progress{margin-top:12px;font-family:var(--font-mono);font-size:12px}.progress-line{display:flex;align-items:center;justify-content:space-between;color:var(--color-text-dim);margin-bottom:6px}.progress-line .cursor:after{content:"_";color:var(--color-accent);animation:blink 1s steps(1) infinite;margin-left:4px}@keyframes blink{50%{opacity:0}}.progress-bar{height:4px;background:var(--color-surface-2);border-radius:2px;overflow:hidden;position:relative}.progress-bar>.fill{height:100%;background:linear-gradient(90deg,var(--color-accent),#66d9ff);transition:width .16s ease-out;box-shadow:0 0 8px var(--color-accent-glow)}.summary{margin-top:16px;padding:14px 16px;background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-card);display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.summary-stat{display:flex;flex-direction:column;gap:4px}.summary-stat .label{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-dim)}.summary-stat .value{font-family:var(--font-mono);font-size:20px;font-weight:700}.summary-stat.sent .value{color:var(--color-success)}.summary-stat.failed .value{color:var(--color-error)}.summary-stat.total .value{color:var(--color-text)}.summary-stat.duration .value{color:var(--color-accent)}@media(max-width:640px){.summary{grid-template-columns:repeat(2,1fr)}}.preview-pane{overflow-y:auto;flex:1;padding:18px;background:#fff;color:#1a1a1a;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.55}.preview-meta{background:var(--color-surface-2);padding:12px 16px;border-bottom:1px solid var(--color-border);font-family:var(--font-mono);font-size:11px;color:var(--color-text-dim);display:grid;grid-template-columns:60px 1fr;row-gap:4px;column-gap:12px}.preview-meta .k{color:var(--color-text-dim);letter-spacing:.08em;text-transform:uppercase}.preview-meta .v{color:var(--color-text);word-break:break-word}.preview-body{max-width:560px}.preview-body p{margin:0 0 14px;color:#2d3338}.preview-body .merge{background:#00c2ff2e;color:#006a99;padding:0 4px;border-radius:2px;font-weight:600}.preview-body .merge-unknown,.preview-meta .merge-unknown{background:#ff6b352e;color:#b8430f}.preview-meta .merge{background:#00c2ff2e;color:#00c2ff;padding:0 4px;border-radius:2px}.preview-meta .merge-unknown{background:#ff6b352e;color:var(--color-warn)}.preview-body .signature{margin-top:22px;padding-top:14px;border-top:1px solid #e5e7eb;color:#4b5563;font-size:13px}.preview-body .signature strong{color:#1a1a1a}.preview-empty{display:flex;align-items:center;justify-content:center;flex:1;color:var(--color-text-dim);font-family:var(--font-mono);font-size:12px;padding:40px;text-align:center;background:var(--color-surface)}.log-strip{margin-top:14px;padding:12px 14px;background:#000;border:1px solid var(--color-border);border-radius:var(--radius-input);font-family:var(--font-mono);font-size:11px;color:#9ad4ff;max-height:140px;overflow-y:auto;white-space:pre-wrap}.log-line{display:block;padding:1px 0}.log-line.warn{color:var(--color-warn)}.log-line.err{color:var(--color-error)}.log-line.ok{color:var(--color-success)}.log-line.dim{color:var(--color-text-dim)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#8b949e33;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#8b949e66}.tab-toggle{display:inline-flex;border:1px solid var(--color-border);border-radius:var(--radius-input);overflow:hidden}.tab{padding:4px 12px;font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;color:var(--color-text-dim);background:transparent;transition:background .12s,color .12s}.tab:hover{color:var(--color-text)}.tab.is-active{background:var(--color-accent);color:var(--color-primary);font-weight:700}.template-library{display:flex;align-items:center;gap:6px}.lib-select{flex:1;min-width:0;background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-input);padding:6px 10px;font-family:var(--font-mono);font-size:12px;color:var(--color-text);outline:none;cursor:pointer}.lib-select:focus{border-color:var(--color-accent)}.lib-btn{padding:6px 10px;font-size:11px}.lib-menu-wrap{position:relative}.lib-menu{position:absolute;top:100%;right:0;margin-top:4px;background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-card);padding:4px;z-index:30;min-width:160px;display:flex;flex-direction:column;box-shadow:0 8px 32px #00000080}.lib-menu button{text-align:left;padding:7px 10px;font-family:var(--font-mono);font-size:11px;color:var(--color-text);border-radius:3px;letter-spacing:.05em;background:transparent;border:none;cursor:pointer}.lib-menu button:hover{background:#00c2ff14}.lib-menu button.danger{color:var(--color-error)}.lib-menu button.danger:hover{background:#f851491a}.lib-menu-divider{height:1px;background:var(--color-border);margin:4px 2px}.editor-section{display:flex;flex-direction:column;gap:12px;padding-bottom:14px;border-bottom:1px dashed var(--color-border);margin-bottom:4px}.editor-section:last-of-type{border-bottom:none;padding-bottom:0}.block-list{display:flex;flex-direction:column;gap:10px}.block-card{background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-card);overflow:hidden}.block-card-head{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:#00c2ff0a;border-bottom:1px solid var(--color-border)}.block-card-title{display:flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;color:var(--color-text);text-transform:uppercase}.block-icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:3px;background:#00c2ff26;color:var(--color-accent);font-family:var(--font-mono);font-size:12px;font-weight:700}.block-card-actions{display:flex;gap:4px}.icon-btn{width:26px;height:26px;border-radius:3px;background:transparent;border:1px solid var(--color-border);color:var(--color-text-dim);font-family:var(--font-mono);font-size:10px;cursor:pointer;transition:all .12s;display:inline-flex;align-items:center;justify-content:center}.icon-btn:hover:not(:disabled){border-color:var(--color-accent);color:var(--color-accent)}.icon-btn:disabled{opacity:.3;cursor:not-allowed}.icon-btn.danger:hover:not(:disabled){border-color:var(--color-error);color:var(--color-error)}.block-card-body{padding:12px;display:flex;flex-direction:column;gap:10px}.field-row{display:flex;flex-direction:column;gap:4px}.field-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-dim)}.field-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.field-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}@media(max-width:640px){.field-grid-3{grid-template-columns:1fr 1fr}}.add-block-row{position:relative;display:flex}.add-block-menu{position:absolute;top:100%;left:0;margin-top:4px;background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-card);padding:4px;z-index:30;min-width:160px;display:flex;flex-direction:column;box-shadow:0 8px 32px #00000080}.add-block-menu button{display:flex;align-items:center;text-align:left;padding:8px 10px;font-family:var(--font-mono);font-size:11px;color:var(--color-text);border-radius:3px;background:transparent;border:none;cursor:pointer;letter-spacing:.05em}.add-block-menu button:hover{background:#00c2ff14;color:var(--color-accent)}.brand-editor{gap:6px}.brand-section{border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--color-surface);overflow:hidden}.brand-section-head{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:10px 12px;background:#00c2ff0a;font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--color-text);border:none;border-bottom:1px solid transparent;cursor:pointer;transition:background .12s}.brand-section-head:hover{background:#00c2ff14}.brand-section.is-open .brand-section-head{border-bottom-color:var(--color-border)}.brand-section-arrow{display:inline-flex;align-items:center;justify-content:center;width:14px;color:var(--color-accent)}.brand-section-body{padding:14px 12px;display:flex;flex-direction:column;gap:10px}.social-list{display:flex;flex-direction:column;gap:6px}.social-row{display:flex;align-items:center;gap:6px}.social-row .input{font-size:11px;padding:5px 8px}.block-advanced{border-top:1px dashed var(--color-border);padding-top:8px;margin-top:2px}.block-advanced>summary{cursor:pointer;font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-dim);padding:4px 0;list-style:none;outline:none}.block-advanced>summary::-webkit-details-marker{display:none}.block-advanced>summary:before{content:"▸ ";color:var(--color-accent)}.block-advanced[open]>summary:before{content:"▾ "}.block-advanced>summary:hover{color:var(--color-text)}.preview-pane-iframe{padding:0;background:#f5f6f7}.editor{display:flex;flex-direction:column;gap:14px}.editor-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media(max-width:640px){.editor-grid{grid-template-columns:1fr}}.editor-field{display:flex;flex-direction:column;gap:5px}.editor-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--color-text-dim)}.editor-label-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.editor-hint{font-family:var(--font-mono);font-size:10px;color:var(--color-text-dim)}.editor-hint code{background:var(--color-surface-2);padding:1px 5px;border-radius:3px;color:var(--color-accent);font-size:10px}.editor-input{width:100%;min-width:0}.editor-textarea{width:100%;min-width:0;resize:vertical;min-height:280px;line-height:1.55;font-size:13px;white-space:pre-wrap}.editor-tokens{border-top:1px dashed var(--color-border);padding-top:12px;display:flex;flex-direction:column;gap:8px}.editor-tokens-head{display:flex;justify-content:space-between;align-items:baseline}.editor-tokens-empty{font-family:var(--font-mono);font-size:11px;color:var(--color-text-dim);font-style:italic}.chip-row{display:flex;flex-wrap:wrap;gap:6px}.chip{display:inline-flex;align-items:center;padding:3px 8px;border-radius:3px;border:1px solid var(--color-border);background:var(--color-surface-2);color:var(--color-accent);font-family:var(--font-mono);font-size:11px;cursor:pointer;transition:background .12s,border-color .12s,color .12s}.chip:hover:not(:disabled){border-color:var(--color-accent);background:#00c2ff1a}.chip:disabled{opacity:.5;cursor:not-allowed}.chip-used{border-color:var(--color-border-strong);background:#00c2ff14}.chip-warn{background:#ff6b351f;border-color:#ff6b3559;color:var(--color-warn);margin-left:4px;cursor:default}.editor-warn{margin-top:4px;font-family:var(--font-mono);font-size:11px;color:var(--color-warn);line-height:1.6}.editor-actions{border-top:1px dashed var(--color-border);padding-top:12px;display:flex;justify-content:flex-end}[data-tip]{position:relative}[data-tip]:hover:after{content:attr(data-tip);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:#000;color:var(--color-error);padding:6px 8px;border-radius:3px;font-size:10px;font-family:var(--font-mono);white-space:nowrap;max-width:280px;white-space:normal;width:max-content;z-index:20;pointer-events:none;border:1px solid var(--color-border)}
