:root{--font-sans:"Poppins",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--bg:#f8f8fb;--panel:#fff;--panel-2:#f8f9fa;--border:#eff2f7;--input-border:#ced4da;--text:#495057;--muted:#74788d;--heading:#343a40;--primary:#556ee6;--primary-soft:#556ee614;--secondary:#74788d;--success:#34c38f;--info:#50a5f1;--warning:#f1b44c;--danger:#f46a6a;--radius:0.25rem;--shadow:0 2px 4px #38414a0f}*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:14px}h1,h2,h3,h4,h5,h6{color:var(--heading);font-weight:600}button{font-family:inherit;cursor:pointer;border:1px solid var(--input-border);background:var(--panel);color:var(--text);border-radius:var(--radius);padding:8px 14px;font-size:13px;font-weight:500;transition:background .15s,border-color .15s,color .15s}button:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}button:disabled{opacity:.55;cursor:not-allowed}button.primary{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:600}button.primary:hover:not(:disabled){filter:brightness(1.08);color:#fff}input[type=text],select{font-family:inherit;background:var(--panel);color:var(--text);border:1px solid var(--input-border);border-radius:var(--radius);padding:7px 10px;font-size:13px}input[type=text]:focus,select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-soft)}a{color:var(--primary)}.app-shell{display:flex;flex-direction:column;height:100vh}.topbar{display:flex;align-items:center;gap:14px;padding:10px 16px;border-bottom:1px solid var(--border);background:var(--panel)}.brand-logo{height:26px;width:auto}.topbar .brand-title{font-weight:600;color:var(--heading);letter-spacing:.2px}.topbar .spacer{flex:1 1}.topbar .user{color:var(--muted);font-size:12px}.workspace{display:grid;grid-template-columns:240px 1fr 1fr;flex:1 1;min-height:0}.sidebar{border-right:1px solid var(--border);background:var(--panel);overflow-y:auto;padding:12px}.sidebar h3{margin:16px 4px 10px;font-size:11px;text-transform:uppercase;letter-spacing:.8px;color:var(--muted);font-weight:600}.sidebar h3:first-of-type{margin-top:6px}.campaign-row{position:relative;display:flex;align-items:center}.campaign-item{display:block;flex:1 1;min-width:0;text-align:left;border:1px solid #0000;background:#0000;padding:8px 10px;border-radius:var(--radius);color:var(--text);font-size:13px;font-weight:400}.campaign-item:hover{background:var(--panel-2);color:var(--text);border-color:#0000}.campaign-item.active{background:var(--primary-soft);border-color:#0000;color:var(--primary);font-weight:500}.campaign-link{display:flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0;margin-left:2px;border-radius:var(--radius);color:var(--muted);font-size:13px;opacity:0;pointer-events:none;transition:opacity .12s,color .12s,background .12s}.campaign-link:focus-visible,.campaign-row:hover .campaign-link{opacity:1;pointer-events:auto}.campaign-link:hover{background:var(--panel-2);color:var(--primary)}.editor-pane,.preview-pane{display:flex;flex-direction:column;min-width:0;min-height:0}.editor-pane{border-right:1px solid var(--border)}.pane-header{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--border);background:var(--panel)}.pane-header .spacer{flex:1 1}.editor-host{flex:1 1;min-height:0}.status-bar{padding:8px 14px;border-top:1px solid var(--border);background:var(--panel);font-size:12px;max-height:140px;overflow-y:auto}.status-bar.error{color:var(--danger)}.status-bar ul{margin:6px 0 0;padding-left:18px}.status-bar.ok{position:relative;padding-right:34px;background:#34c38f14}.status-close{position:absolute;top:6px;right:6px;width:22px;height:22px;padding:0;border:none;background:#0000;color:var(--muted);font-size:12px;line-height:1;border-radius:50%}.status-close:hover{background:#0000000f;color:var(--text);border-color:#0000}.publish-success{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.publish-success-label{color:var(--success);font-weight:600;font-size:12px;white-space:nowrap}.publish-link{color:var(--primary);font-weight:600;font-size:13px;text-decoration:underline;word-break:break-all}.publish-link:hover{text-decoration:none}.status-warnings{margin:6px 0 0;color:var(--warning);font-size:12px}.preview-pane.expanded{position:fixed;inset:0;z-index:100;background:var(--panel);box-shadow:0 0 0 1px var(--border)}.preview-frame-wrap{flex:1 1;min-height:0;overflow:auto;display:flex;align-items:center;justify-content:center;padding:16px;background:var(--bg)}.preview-frame{border:1px solid var(--border);border-radius:var(--radius);background:#fff;height:100%;transition:width .2s}.phone-mock{height:100%;display:flex;flex-direction:column;align-items:center;gap:8px}.phone-caption{flex:0 0 auto;font-size:11px;color:var(--muted)}.phone-frame{flex:1 1;min-height:0;width:417px;padding:12px;background:#1a1d29;border-radius:55px;box-shadow:0 16px 32px #0f172a38;flex-shrink:0;display:flex}.phone-screen-area{width:100%;height:100%;display:flex;flex-direction:column;background:#fff;border-radius:40px;overflow:hidden}.phone-status-bar{position:relative;flex:0 0 44px}.dynamic-island{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:126px;height:37px;background:#000;border-radius:20px}.phone-screen-area .preview-frame.phone-screen{flex:1 1;min-height:0;width:100%;height:auto;border:none;border-radius:0}.phone-home-bar{flex:0 0 22px;display:flex;align-items:center;justify-content:center}.phone-home-indicator{width:134px;height:5px;border-radius:4px;background:#00000040}.snippet{padding:12px 14px;border-top:1px solid var(--border);background:var(--panel)}.snippet pre{margin:8px 0 0;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius);padding:10px;font-size:12px;overflow-x:auto;white-space:pre-wrap;word-break:break-all}.centered{height:100vh;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:16px}.card{background:var(--panel);border:1px solid var(--border);border-radius:.5rem;box-shadow:var(--shadow);padding:32px;text-align:center;max-width:360px}.login-logo{height:32px;width:auto;margin-bottom:18px}.badge{font-size:11px;padding:2px 8px;border-radius:10rem;border:1px solid var(--border);color:var(--muted)}.status-chip{display:inline-flex;align-items:center;justify-content:center;gap:5px;font-size:11px;font-weight:600;line-height:1;padding:5px 10px;border-radius:10rem;white-space:nowrap}.status-chip.valid{background:#34c38f1f;color:var(--success)}.status-chip.invalid{background:#f46a6a1f;color:var(--danger)}.status-dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}.preview-empty{max-width:260px;display:flex;flex-direction:column;gap:6px;text-align:center;color:var(--muted)}.preview-empty strong{color:var(--heading);font-size:14px}.preview-empty span{font-size:12px;line-height:1.5}.image-uploader-error{color:var(--danger);font-size:12px;margin:8px 4px 0}.image-uploader-hint{color:var(--muted);font-size:11px;line-height:1.4;margin:8px 4px 0}.image-uploader-list{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}.image-uploader-item{display:flex;gap:8px;align-items:center;padding:6px;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel-2)}.image-uploader-thumb{width:40px;height:40px;object-fit:cover;border-radius:var(--radius);border:1px solid var(--border);flex-shrink:0}.image-uploader-meta{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1 1}.image-uploader-meta input[type=text]{width:100%;font-size:11px;padding:4px 6px}.image-uploader-meta button{align-self:flex-start;padding:3px 8px;font-size:11px}