@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;500;600;700&display=swap";:root{--black:#000;--ink:#111;--surface:#f7f8fb;--panel:#fff;--line:#e5e7eb;--text:#111827;--muted:#6b7280;--accent:#4fa9db;--accent-hover:#3b95c7;--accent-ink:#fff;--danger:#dc2626;--ok:#059669;--info:#2563eb;--radius:16px;--font-body:"IBM Plex Sans", sans-serif;color:var(--text);background:var(--surface);font-family:var(--font-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;line-height:1.45}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:radial-gradient(900px 420px at 0% 0%, #4fa9db24, transparent 55%), radial-gradient(700px 380px at 100% 0%, #4fa9db14, transparent 50%), var(--surface);min-width:320px}button,input,textarea{font:inherit}.shell{min-height:100vh;padding:1.25rem}.shell--auth{background:var(--black);place-items:center;display:grid;position:relative;overflow:hidden}.auth-glow{filter:blur(10px);pointer-events:none;background:radial-gradient(circle,#4fa9db59,#0000 65%);border-radius:50%;width:36rem;height:36rem;animation:10s ease-in-out infinite alternate drift;position:absolute}@keyframes drift{0%{transform:translate(-12%,-8%)scale(.95)}to{transform:translate(10%,6%)scale(1.05)}}.auth-panel,.compose-form,.history{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);width:min(100%,440px);padding:1.75rem;animation:.55s both rise;box-shadow:0 10px 30px #0000000f}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.brand-logo{object-fit:contain;width:auto;height:2.75rem;margin-bottom:1rem;display:block}.brand-logo--top{height:2.25rem;margin:0}.brand-logo--auth{height:3rem;margin:0 auto 1.1rem}h1,h2{letter-spacing:-.02em;margin:0 0 .4rem;font-weight:600}.lede,.muted{color:var(--muted);margin:0 0 1.25rem}.shell--auth .auth-panel h1,.shell--auth .auth-panel .lede{text-align:center}label{color:var(--muted);gap:.4rem;margin-bottom:1rem;font-size:.92rem;display:grid}input,textarea{border:1px solid var(--line);width:100%;color:var(--text);background:#fff;border-radius:12px;outline:none;padding:.75rem .9rem;transition:border-color .2s,box-shadow .2s}input:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #4fa9db2e}.btn{cursor:pointer;border:0;border-radius:999px;padding:.75rem 1.2rem;transition:transform .15s,opacity .15s,background .15s}.btn:disabled{opacity:.55;cursor:not-allowed}.btn:not(:disabled):hover{transform:translateY(-1px)}.btn-primary{background:var(--accent);width:100%;color:var(--accent-ink);font-weight:600}.btn-primary:not(:disabled):hover{background:var(--accent-hover)}.btn-ghost{color:var(--text);border:1px solid var(--line);background:0 0}.topbar .btn-ghost{color:#fff;border-color:#ffffff40}.topbar .btn-ghost:hover{border-color:var(--accent);color:var(--accent)}.form-error{color:var(--danger);margin:0 0 .85rem}.topbar{background:var(--black);color:#fff;justify-content:space-between;align-items:center;gap:1rem;margin:-1.25rem -1.25rem 1.5rem;padding:.85rem 1.25rem;animation:.45s both rise;display:flex}.topbar .muted{color:#ffffffb3;margin:.15rem 0 0}.topbar-brand{flex-direction:column;gap:.1rem;display:flex}.topbar-right{align-items:center;gap:.75rem;display:flex}.compose{grid-template-columns:minmax(0,1fr);gap:1.25rem;max-width:1100px;margin:0 auto;display:grid}.compose-form,.history{width:100%}.sample-row{flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.sample-hint{margin:0;font-size:.9rem}.field-row{flex-wrap:wrap;align-items:end;gap:.75rem;margin-bottom:1rem;display:flex}.file-field input{padding:.55rem}.recipient-count{margin:-.25rem 0 1rem}.warn{color:#b45309}.check{align-items:center;gap:.55rem;margin-bottom:1rem;display:flex}.check input{width:auto;accent-color:var(--accent)}.banner{border-radius:12px;margin-bottom:1rem;padding:.75rem .9rem}.banner--success{color:var(--ok);background:#0596691a}.banner--error{color:var(--danger);background:#dc26261a}.banner--info{color:#1d6f99;background:#4fa9db1f}.history-table-wrap{border:1px solid var(--line);background:#fff;border-radius:12px;max-height:min(72vh,760px);overflow:auto}.history-table{border-collapse:collapse;width:100%;min-width:980px}.history-table th,.history-table td{vertical-align:top;border-bottom:1px solid var(--line);text-align:left;padding:.85rem .9rem;font-size:.92rem}.history-table th{z-index:1;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:#f8fbfd;font-size:.8rem;position:sticky;top:0}.history-table tbody tr:hover{background:#4fa9db0d}.history-cell-index{width:72px}.history-cell-time{min-width:170px}.history-cell-subject{min-width:240px}.history-subject-main{word-break:break-word;margin-bottom:.35rem;font-weight:600}.history-subject-message{color:var(--muted);-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:.88rem;line-height:1.45;display:-webkit-box;overflow:hidden}.history-cell-recipients{min-width:220px}.history-audience-main{margin-bottom:.35rem;font-weight:600}.history-recipient-list{word-break:break-word;color:var(--muted);font-size:.9rem;line-height:1.45}.history-audience-more,.history-time-sub,.history-sender-sub{color:var(--muted);margin-top:.3rem;font-size:.84rem}.history-error-text{color:var(--danger);word-break:break-word;margin-top:.45rem;font-size:.88rem}.status-pill{text-transform:capitalize;border-radius:999px;flex-shrink:0;padding:.2rem .55rem;font-size:.75rem;font-weight:600}.status-pill--success{color:var(--ok);background:#0596691f}.status-pill--failed{color:var(--danger);background:#dc26261f}.status-pill--partial{color:#b45309;background:#b453091f}@media (width>=900px){.shell--app{padding:0 2rem 2.5rem}.topbar{margin:0 -2rem 1.75rem;padding:.9rem 2rem}}
