:root{--bg:#f5f6f8;--surface:#fff;--border:#dfe2e7;--text:#1d2330;--muted:#667085;--accent:#2f5bea;--accent-soft:#e8eefd;--danger:#c62828;--danger-soft:#fdecec;--warn:#9a6100;--warn-soft:#fff4dc;--out-soft:#eef7ee}*,:before,:after{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px}a{color:var(--accent)}.button{background:var(--accent);color:#fff;font:inherit;cursor:pointer;border:0;border-radius:8px;padding:10px 16px;font-weight:600}.button:disabled{opacity:.6;cursor:default}.shell{flex-direction:column;min-height:100vh;display:flex}.shell .loading{color:var(--muted);margin:auto}.shell .header{background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:16px;padding:12px 24px;display:flex}.shell .brand{letter-spacing:.04em;color:var(--accent);font-weight:700;text-decoration:none}.shell .nav{gap:4px;display:flex}.shell .link{color:var(--text);border-radius:6px;padding:6px 12px;text-decoration:none}.shell .link:hover{background:var(--bg)}.shell .badge{background:var(--accent);color:#fff;border-radius:10px;margin-left:6px;padding:0 7px;font-size:12px;font-weight:600}.shell .link.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.shell .user{color:var(--muted);margin-left:auto}.shell .logout{border:1px solid var(--border);color:var(--text);font:inherit;cursor:pointer;background:0 0;border-radius:6px;padding:6px 12px}.shell .content{flex:1;padding:24px}.campaign{max-width:1080px}.campaign .back{margin-bottom:8px;font-size:14px;display:inline-block}.campaign .head{border:1px solid var(--border);background:var(--surface);border-radius:10px;flex-wrap:wrap;align-items:baseline;gap:10px;margin-bottom:16px;padding:16px;display:flex}.campaign .head .back{flex-basis:100%;margin:0}.campaign .head .title{margin:0;font-size:22px}.campaign .head>p{flex-basis:100%;margin:4px 0 0}.campaign .state{background:var(--bg);color:var(--muted);border-radius:10px;padding:1px 8px;font-size:13px}.campaign .state.running{background:var(--accent-soft);color:var(--accent)}.campaign .state.paused{background:var(--warn-soft);color:var(--warn)}.campaign .state.stopped{background:var(--danger-soft);color:var(--danger)}.campaign .stopped{background:var(--danger-soft);color:var(--danger);border-radius:8px;padding:8px 12px;font-size:14px}.campaign .actions{gap:8px;margin-left:auto;display:flex}.campaign .muted{color:var(--muted);font-size:14px}.campaign .hint{color:var(--muted);margin:6px 0;font-size:13px}.campaign .alert{background:var(--danger-soft);color:var(--danger);border-radius:8px;flex-basis:100%;margin:8px 0 0;padding:8px 12px;font-size:14px}.campaign .numbers{border-collapse:collapse;background:var(--surface);width:100%;margin-bottom:16px;font-size:14px}.campaign .numbers th,.campaign .numbers td{border:1px solid var(--border);text-align:right;padding:6px 8px}.campaign .numbers th:first-child,.campaign .numbers td:first-child{text-align:left}.campaign .numbers .total td{font-weight:600}.campaign .block{border:1px solid var(--border);background:var(--surface);border-radius:10px;margin-bottom:16px;padding:16px}.campaign .subheading{margin:0 0 8px;font-size:16px}.campaign .variant{border-top:1px solid var(--border);padding:12px 0}.campaign .fields{flex-wrap:wrap;align-items:flex-end;gap:10px;margin-bottom:10px;display:flex}.campaign .field{flex-direction:column;gap:4px;margin-bottom:8px;display:flex}.campaign .field.wide{flex:1;min-width:220px}.campaign .label{font-size:13px;font-weight:600}.campaign .input{border:1px solid var(--border);font:inherit;border-radius:6px;padding:7px 10px}.campaign .input.number{width:110px}.campaign .input.text{width:100%;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px}.campaign .input.invalid{border-color:var(--danger)}.campaign .check{align-items:center;gap:6px;padding-bottom:16px;display:flex}.campaign .inline{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.campaign .lines{margin:8px 0;padding:0;list-style:none}.campaign .line{border-bottom:1px solid var(--border);flex-direction:column;align-items:flex-start;gap:2px;padding:8px 0;display:flex}.campaign .line .who{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.campaign .line .contact{overflow-wrap:anywhere;font-weight:600}.campaign .status{background:var(--bg);border-radius:10px;padding:1px 8px;font-size:13px}.campaign .status.sent,.campaign .status.replied{background:var(--out-soft)}.campaign .status.bounced,.campaign .status.complained,.campaign .status.unsubscribed{background:var(--danger-soft);color:var(--danger)}.campaign .status.reserve{background:var(--warn-soft);color:var(--warn)}.campaign .small{border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;border-radius:6px;padding:5px 10px}.campaign .link{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-size:14px}.campaign .link.danger{color:var(--danger)}.campaign button:disabled{opacity:.6;cursor:default}.dialog{max-width:860px}.dialog .back{color:var(--muted);margin-bottom:12px;text-decoration:none;display:inline-block}.dialog .note{color:var(--muted)}.dialog .alert{background:var(--danger-soft);color:var(--danger);border-radius:8px;padding:10px 12px}.dialog .summary{margin-bottom:12px}.dialog .title{margin:0 0 4px;font-size:22px}.dialog .who{color:var(--muted);margin:0}.dialog .controls{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:16px;display:flex}.dialog .status{background:var(--bg);border-radius:12px;padding:4px 10px;font-weight:600}.dialog .status.new{background:var(--accent-soft);color:var(--accent)}.dialog .status.in_progress{background:var(--warn-soft);color:var(--warn)}.dialog .action,.dialog .remove,.dialog .danger{border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;border-radius:6px;padding:6px 12px}.dialog .remove{color:var(--danger);margin-left:auto}.dialog .danger{border-color:var(--danger);background:var(--danger);color:#fff}.dialog button:disabled{opacity:.6;cursor:default}.dialog .topic,.dialog .project{align-items:center;gap:6px;display:flex}.dialog .label{color:var(--muted);font-size:14px}.dialog .select{border:1px solid var(--border);background:var(--surface);font:inherit;border-radius:6px;padding:6px 8px}.dialog .confirm{border:1px solid var(--danger);background:var(--danger-soft);border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:16px;padding:12px;display:flex}.dialog .warning{color:var(--danger);flex-basis:100%;margin:0}.dialog .letters{flex-direction:column;gap:12px;display:flex}.dialog .letter{border:1px solid var(--border);background:var(--surface);border-radius:10px;padding:12px 16px}.dialog .letter.out{background:var(--out-soft);margin-left:48px}.dialog .letter.event{color:var(--muted);border-style:dashed;align-self:center;gap:8px;padding:4px 12px;font-size:13px;display:flex}.dialog .phone{border:1px dashed var(--border);color:var(--muted);border-radius:10px;margin-top:16px;padding:12px 16px}.dialog .head{color:var(--muted);flex-wrap:wrap;gap:8px;margin-bottom:8px;font-size:13px;display:flex}.dialog .direction{color:var(--text);font-weight:600}.dialog .time{margin-left:auto}.dialog .product{background:var(--bg);color:var(--text);border-radius:10px;padding:0 8px}.dialog .product.delivered{background:var(--accent-soft);color:var(--accent)}.dialog .product.bounced,.dialog .product.failed{background:var(--danger-soft);color:var(--danger)}.dialog .product-reason{color:var(--danger);margin:0 0 8px;font-size:13px}.dialog .subject{margin:0 0 8px;font-weight:600}.dialog .text{white-space:pre-wrap;overflow-wrap:anywhere}.dialog .files{border-top:1px dashed var(--border);flex-direction:column;gap:4px;margin:12px 0 0;padding:8px 0 0;list-style:none;display:flex}.dialog .file{margin-right:8px}.dialog .size{color:var(--muted);font-size:13px}.dialog .reply{border:1px solid var(--border);background:var(--surface);border-radius:10px;flex-direction:column;gap:8px;margin-top:16px;padding:16px;display:flex}.dialog .compose{flex-direction:column;gap:6px;display:flex}.dialog .textarea{border:1px solid var(--border);background:var(--surface);width:100%;min-height:140px;color:var(--text);font:inherit;resize:vertical;border-radius:8px;padding:10px 12px}.dialog .textarea:disabled{background:var(--bg)}.dialog .send{align-self:flex-start}.feed{max-width:960px}.feed .toolbar{flex-wrap:wrap;align-items:baseline;gap:16px;margin-bottom:16px;display:flex}.feed .title{margin:0;font-size:22px}.feed .unparsed-link{background:var(--danger-soft);color:var(--danger);border-radius:6px;padding:4px 10px;font-size:14px;text-decoration:none}.feed .filters{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.feed .control{border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;border-radius:8px;padding:8px 10px}.feed .search{flex:1;min-width:200px}.feed .reset{color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;padding:8px 12px}.feed .alert{background:var(--danger-soft);color:var(--danger);border-radius:8px;padding:10px 12px}.feed .note{color:var(--muted)}.feed .list{border:1px solid var(--border);background:var(--surface);border-radius:10px;margin:0;padding:0;list-style:none;overflow:hidden}.feed .list.stale{opacity:.6}.feed .list li+li{border-top:1px solid var(--border)}.feed .row{color:var(--text);flex-direction:column;gap:4px;padding:12px 16px;text-decoration:none;display:flex}.feed .row:hover{background:var(--bg)}.feed .row.new .subject{font-weight:700}.feed .meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;display:flex}.feed .project{color:var(--text);font-weight:600}.feed .mailbox{border:1px solid var(--accent);color:var(--accent);border-radius:10px;padding:1px 8px}.feed .status{background:var(--bg);border-radius:10px;padding:1px 8px}.feed .status.new{background:var(--accent-soft);color:var(--accent)}.feed .status.in_progress{background:var(--warn-soft);color:var(--warn)}.feed .topic{border:1px solid var(--border);border-radius:10px;padding:1px 8px}.feed .date{margin-left:auto}.feed .contact{font-size:14px}.feed .subject{align-items:baseline;gap:8px;display:flex}.feed .count{color:var(--muted);font-size:12px;font-weight:400}.feed .snippet{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:14px;overflow:hidden}.feed .pager{justify-content:space-between;align-items:center;gap:12px;margin-top:16px;display:flex}.feed .page{border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;border-radius:6px;padding:6px 12px}.feed .page:disabled{opacity:.5;cursor:default}.feed .position{color:var(--muted);font-size:14px}.home{max-width:1080px}.home .title{margin:0 0 16px;font-size:22px}.home .alert{background:var(--danger-soft);color:var(--danger);border-radius:8px;padding:10px 12px}.home .note{color:var(--muted)}.home .cards{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));align-items:start;gap:12px;display:grid}.home .card{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:10px;padding:16px;text-decoration:none;display:block}.home .card:hover{border-color:var(--accent)}.home .card.off{background:var(--bg)}.home .heading{color:var(--accent);margin:0 0 10px;font-size:18px}.home .pending{color:var(--muted);margin:0}.home .numbers{flex-wrap:wrap;gap:12px 20px;margin:0;display:flex}.home .number{flex-direction:column;display:flex}.home .label{color:var(--muted);font-size:13px}.home .value{margin:0;font-size:20px;font-weight:600}.home .fresh{color:var(--accent)}.home .rows{border-collapse:collapse;width:100%;margin-top:14px;font-size:14px}.home .rows th,.home .rows td{border-bottom:1px solid var(--border);padding:5px 0}.home .rows th{color:var(--muted);text-align:left;font-size:13px;font-weight:600}.home .rows .count{text-align:right;width:64px}.home .rows .none .name{color:var(--muted)}.home .rows .address{color:var(--muted);font-size:12px;display:block}.home .rows tr:last-child td{border-bottom:0}.home .signals{border:1px solid var(--border);background:var(--surface);border-radius:10px;margin-top:20px;padding:16px}.home .signal-list{margin:0;padding:0;list-style:none}.home .signal{border-left:3px solid var(--border);border-bottom:1px solid var(--border);padding:8px 0 8px 10px}.home .signal:last-child{border-bottom:0}.home .signal.critical{border-left-color:var(--danger)}.home .signal.warning{border-left-color:var(--accent)}.home .signal-head{flex-wrap:wrap;align-items:baseline;gap:4px 10px;display:flex}.home .signal-level{font-weight:600}.home .critical .signal-level{color:var(--danger)}.home .signal-text{margin:4px 0}.home .signal-meta{color:var(--muted);margin:0;font-size:13px}.login{justify-content:center;align-items:center;min-height:100vh;padding:24px 16px;display:flex}.login .card{background:var(--surface);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:16px;width:100%;max-width:360px;padding:32px;display:flex}.login .brand{letter-spacing:.04em;color:var(--accent);margin:0;font-size:24px}.login .subtitle{color:var(--muted);margin:-8px 0 0}.login .alert{background:var(--danger-soft);color:var(--danger);border-radius:8px;margin:0;padding:10px 12px}.login .field{flex-direction:column;gap:6px;display:flex}.login .label{font-size:14px;font-weight:600}.login .input{border:1px solid var(--border);font:inherit;border-radius:8px;padding:10px 12px}.login .input.invalid{border-color:var(--danger)}.login .error{color:var(--danger);font-size:13px}.stats{max-width:1080px;margin-top:32px}.stats .toolbar{flex-wrap:wrap;align-items:baseline;gap:16px;margin-bottom:16px;display:flex}.stats .heading{margin:0;font-size:20px}.stats .weeks{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.stats .step,.stats .current{border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;border-radius:6px;padding:6px 12px}.stats .step:disabled{opacity:.5;cursor:default}.stats .current{border-color:var(--accent);color:var(--accent)}.stats .range{text-align:center;min-width:220px;font-weight:600}.stats .alert{background:var(--danger-soft);color:var(--danger);border-radius:8px;padding:10px 12px}.stats .note{color:var(--muted);font-size:14px}.stats .board{border:1px solid var(--border);border-collapse:separate;border-spacing:0;background:var(--surface);border-radius:10px;width:100%;overflow:hidden}.stats .board th,.stats .board td{border-bottom:1px solid var(--border);vertical-align:top;padding:10px 12px}.stats .board th{color:var(--muted);text-align:left;font-size:13px;font-weight:600}.stats .board .number{text-align:right;white-space:nowrap}.stats .board th.number{white-space:normal}.stats .board .name{min-width:220px}.stats .board .row{cursor:pointer}.stats .board .row:hover{background:var(--bg)}.stats .board .row.open{background:var(--accent-soft)}.stats .board .toggle{color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;gap:6px;padding:0;font-weight:600;display:inline-flex}.stats .board .mark{width:12px;color:var(--muted)}.stats .board .address{color:var(--muted);margin-left:18px;font-size:13px;display:block}.stats .board .day{color:var(--muted);font-size:14px}.stats .board .day .name{padding-left:30px}.stats .board .unanswered{color:var(--danger);font-weight:600}.stats .board tfoot .row{background:var(--bg)}.stats .board tfoot td{border-bottom:0}.stats .board tfoot .day td{border-top:1px solid var(--border)}.stats .board.stale{opacity:.6}.stats .unparsed{margin:12px 0 0;font-size:14px}.projects{max-width:1080px}.projects>.title{margin:0 0 8px;font-size:22px}.projects .intro{max-width:860px;color:var(--muted);margin:0 0 16px}.projects .muted{color:var(--muted);font-size:14px}.projects .alert{background:var(--danger-soft);color:var(--danger);border-radius:8px;flex-basis:100%;margin:8px 0 0;padding:8px 12px;font-size:14px}.projects .cards{flex-direction:column;gap:12px;max-width:860px;display:flex}.projects .card{border:1px solid var(--border);background:var(--surface);border-radius:10px;padding:16px}.projects .card.inactive{opacity:.75}.projects .card.new{border-style:dashed}.projects .project{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.projects .card .heading{margin:0 0 4px;font-size:18px}.projects .subheading{margin:0 0 6px;font-size:15px}.projects .state{background:var(--accent-soft);color:var(--accent);border-radius:10px;padding:1px 8px;font-size:13px}.projects .state.off{background:var(--bg);color:var(--muted)}.projects .actions{gap:8px;margin-left:auto;display:flex}.projects .hint{color:var(--muted);margin:6px 0 0;font-size:13px}.projects .fields{flex-wrap:wrap;align-items:flex-end;gap:10px;margin-bottom:10px;display:flex}.projects .field{flex-direction:column;gap:4px;display:flex}.projects .field.wide{flex:1;min-width:220px}.projects .label{font-size:13px;font-weight:600}.projects .input{border:1px solid var(--border);font:inherit;border-radius:6px;padding:7px 10px}.projects .input.invalid{border-color:var(--danger)}.projects .check{align-items:center;gap:6px;padding-bottom:8px;display:flex}.projects .topics{border-top:1px solid var(--border);margin-top:12px;padding-top:10px}.projects .topic-list{margin:0 0 8px;padding:0;list-style:none}.projects .topic{flex-wrap:wrap;align-items:center;gap:8px;padding:4px 0;display:flex}.projects .leads,.projects .campaigns{border-top:1px solid var(--border);margin-top:12px;padding-top:10px}.projects .campaign-list{margin:0 0 8px;padding:0;list-style:none}.projects .campaign-list li{padding:3px 0}.projects .lead-list{margin:0 0 8px;padding:0;list-style:none}.projects .lead{border-bottom:1px solid var(--border);flex-direction:column;align-items:flex-start;gap:2px;padding:8px 0;display:flex}.projects .lead .who{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.projects .lead .contact{overflow-wrap:anywhere;font-weight:600}.projects .lead .where{overflow-wrap:anywhere}.projects .lead .consent{color:var(--muted);font-size:13px}.projects .lead .consent.yes{color:var(--accent)}.projects .inline{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.projects .confirm{color:var(--danger);flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0 0;font-size:14px;display:flex}.projects .small{border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;border-radius:6px;padding:5px 10px}.projects .small.danger{border-color:var(--danger);background:var(--danger);color:#fff}.projects .link{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-size:14px}.projects .link.danger{color:var(--danger)}.projects button:disabled{opacity:.6;cursor:default}.telegram{border:1px solid var(--border);background:var(--surface);border-radius:10px;margin-bottom:24px;padding:16px}.telegram .heading{margin:0 0 12px;font-size:16px}.telegram .connection{flex-wrap:wrap;align-items:flex-start;gap:12px;display:flex}.telegram .step{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.telegram .field{flex-direction:column;gap:4px;display:flex}.telegram .label{color:var(--muted);font-size:13px}.telegram .control{border:1px solid var(--border);background:var(--surface);min-width:220px;color:var(--text);font:inherit;border-radius:8px;padding:8px 10px}.telegram .link{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:0;padding:8px 0}.telegram .who{margin:0 0 8px}.telegram .since{color:var(--muted);font-size:13px}.telegram .confirm{flex-wrap:wrap;align-items:center;gap:12px;margin-top:8px;display:flex}.telegram .warning{flex-basis:100%;margin:0}.telegram .danger{background:var(--danger);color:#fff;font:inherit;cursor:pointer;border:0;border-radius:8px;padding:8px 14px}.telegram .hint,.telegram .note{color:var(--muted);flex-basis:100%;margin:8px 0 0;font-size:13px}.telegram .alert{background:var(--danger-soft);color:var(--danger);border-radius:8px;margin:12px 0 0;padding:10px 12px}.telegram .hidden{border-top:1px solid var(--border);margin-top:16px;padding-top:12px}.telegram .chats{margin:0;padding:0;list-style:none}.telegram .chat{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}.telegram .date{color:var(--muted);font-size:13px}.unparsed{max-width:860px}.unparsed .back{color:var(--muted);margin-bottom:12px;text-decoration:none;display:inline-block}.unparsed .title{margin:0 0 8px;font-size:22px}.unparsed .intro,.unparsed .note{color:var(--muted)}.unparsed .alert{background:var(--danger-soft);color:var(--danger);border-radius:8px;padding:10px 12px}.unparsed .list{border:1px solid var(--border);background:var(--surface);border-radius:10px;margin:0;padding:0;list-style:none}.unparsed .row{padding:12px 16px}.unparsed .row+.row{border-top:1px solid var(--border)}.unparsed .meta{flex-wrap:wrap;gap:8px;font-size:14px;display:flex}.unparsed .time{color:var(--muted);margin-left:auto}.unparsed .subject{margin:4px 0;font-weight:600}.unparsed .error{color:var(--danger);overflow-wrap:anywhere;margin:4px 0 8px;font-family:ui-monospace,monospace;font-size:13px}.unparsed .actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.unparsed .warning{color:var(--danger);font-size:14px}.unparsed .plain,.unparsed .danger{border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;border-radius:6px;padding:5px 10px}.unparsed .remove{color:var(--danger)}.unparsed .danger{border-color:var(--danger);background:var(--danger);color:#fff}.whatsapp{border:1px solid var(--border);background:var(--surface);border-radius:10px;margin-bottom:24px;padding:16px}.whatsapp .upload{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.whatsapp .field{flex-direction:column;gap:4px;display:flex}.whatsapp .label{color:var(--muted);font-size:13px}.whatsapp .file{font:inherit}.whatsapp .control{border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;border-radius:8px;padding:8px 10px}.whatsapp .hint{color:var(--muted);margin:12px 0 0;font-size:13px}.whatsapp .alert{background:var(--danger-soft);color:var(--danger);border-radius:8px;margin:12px 0 0;padding:10px 12px}.whatsapp .result{background:var(--bg);border-radius:8px;margin-top:12px;padding:12px}.whatsapp .chat{margin:0 0 8px}.whatsapp .numbers{flex-wrap:wrap;gap:16px;margin:0;display:flex}.whatsapp .number{flex-direction:column;display:flex}.whatsapp .value{margin:0;font-size:20px;font-weight:600}.whatsapp .value.warn{color:var(--warn)}
