:root{font:16px/1.5 system-ui,sans-serif;color:#242d3b;background:#f5f6fa}*{box-sizing:border-box}body{margin:0}header,main,footer{max-width:1250px;margin:auto;padding:24px 40px}header{display:flex;align-items:center;gap:30px;border-bottom:1px solid #dde1e9}.brand{font-size:30px;font-weight:800;letter-spacing:-1.7px;text-decoration:none;color:inherit}.brand span{font-size:17px;font-weight:400;letter-spacing:0;color:#677187;margin-left:8px}.private{margin-left:auto;color:#697488;font-size:13px}h1{font-size:clamp(34px,5vw,61px);line-height:1.1;letter-spacing:-2px;margin:18px 0 25px}h2{font-size:23px;margin:0 0 14px;letter-spacing:-.6px}p{color:#647086}.eyebrow{text-transform:uppercase;letter-spacing:2px;font-size:12px;font-weight:700;color:#6653ca}.auth{display:grid;grid-template-columns:1.3fr 1fr;gap:80px;align-items:center;min-height:70vh}.auth h1{font-size:clamp(46px,6vw,76px)}.lead{max-width:420px;font-size:20px}a{color:#5543b6;text-underline-offset:4px}form,.card,#details{background:white;border:1px solid #dfe3ec;border-radius:18px;padding:28px}label{display:block;font-size:14px;font-weight:600;margin:16px 0}input,textarea,select{display:block;width:100%;border:1px solid #c9cedc;border-radius:8px;padding:12px;font:inherit;color:inherit;background:#fff;margin-top:7px}textarea{min-height:130px;resize:vertical}button{background:#6551ce;color:#fff;border:0;border-radius:9px;padding:12px 19px;font:600 14px system-ui;cursor:pointer}button:hover{filter:brightness(.93)}button:disabled{opacity:.5;cursor:wait}.quiet{background:#ebe9f7;color:#514291}.hint{font-size:12px}.heading{display:flex;justify-content:space-between;align-items:center;gap:25px}.heading h1{font-size:40px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:24px 0 32px}.stat{border:1px solid #dfe3ec;background:white;border-radius:14px;padding:20px}.stat strong{display:block;font-size:30px;letter-spacing:-1px}.stat span{font-size:13px;color:#697488}.tabs{display:flex;gap:12px;align-items:center;margin:24px 0}.tabs button{background:transparent;color:#647086}.tabs button[aria-pressed=true]{background:#e9e5fc;color:#514291}.tabs input{margin:0 0 0 auto;max-width:300px}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.card{padding:23px;overflow-wrap:anywhere}.card h2{margin-top:15px}.badge{font-size:11px;color:#514291;background:#ece8fb;border-radius:30px;padding:5px 10px}.meta{font-size:13px}.actions{display:flex;gap:10px;margin-top:22px}.empty{grid-column:1/-1;text-align:center;border:1px dashed #c5cbd8;border-radius:18px;padding:55px 20px}.dialog-head{display:flex;justify-content:space-between;gap:20px}dialog{border:0;border-radius:18px;padding:0;width:min(640px,94vw);max-height:90vh}dialog::backdrop{background:#1c223b77}#form-error,#message{color:#a42e46}#message:empty{display:none}#details{margin-top:22px}.notes{white-space:pre-wrap;overflow-wrap:anywhere}.task{display:flex;align-items:center;gap:12px}.task input{width:auto;margin:0}.task-form{display:flex;border:0;padding:0;gap:12px;align-items:center}.task-form input{margin:0}footer{display:flex;justify-content:space-between;font-size:12px;color:#697488;margin-top:50px}button:focus-visible,a:focus-visible{outline:3px solid #b194ee;outline-offset:4px}@media(max-width:800px){header,main,footer{padding:20px}.private{display:none}.auth{grid-template-columns:1fr;gap:30px;padding:20px 0}.grid{grid-template-columns:1fr 1fr}.heading{align-items:flex-start}.heading h1{font-size:32px}.stats{gap:8px}.stat{padding:14px}.tabs{flex-wrap:wrap}.tabs input{max-width:none;flex-basis:100%}.brand{margin-right:auto}}@media(max-width:520px){.grid{grid-template-columns:1fr}.heading{display:block}.stats{grid-template-columns:1fr 1fr}.stat:last-child{grid-column:1/-1}.task-form{flex-wrap:wrap}}

/* CampaignCraft agency design tokens, independently hosted. */
@font-face{font-family:Montserrat;src:url('/static/montserrat-latin.woff2') format('woff2');font-style:normal;font-weight:100 900;font-display:swap}
:root{--navy:#012654;--blue:#2563EB;--tint:#EEF4FB;--line:#E5E7EB;--text2:#4B5563;--muted:#6B7280;font-family:Montserrat,Arial,Helvetica,sans-serif;color:var(--navy);background:#F7F9FC}
body{font-family:Montserrat,Arial,Helvetica,sans-serif;color:var(--navy);-webkit-font-smoothing:antialiased}
header{background:#fff;border-color:var(--line);border-top:4px solid var(--blue)}
.brand{font-weight:800;letter-spacing:-.02em;font-size:25px}.brand span{color:var(--muted);font-size:13px;font-weight:600}.private{color:var(--muted)}
h1,h2,h3{font-weight:800;letter-spacing:-.02em;color:var(--navy)}
a,.eyebrow{color:var(--blue)}a:hover{color:var(--navy)}p,.lead{color:var(--text2)}
button{font-family:inherit;background:var(--navy);border:1px solid transparent;border-radius:6px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:15px 22px}button:hover{background:#00183a;filter:none}
#new-project,.auth button{background:var(--blue)}#new-project:hover,.auth button:hover{background:#1d4fd0}
.quiet{border-color:#C9D3E2;color:var(--navy);background:#fff}.quiet:hover{border-color:var(--navy);background:var(--tint)}
form,.card,#details{border-color:var(--line);border-radius:8px}.card{border-top:3px solid var(--blue)}
.auth form{background:var(--tint);border-color:#D8E4F3}.auth h1{font-size:clamp(40px,5vw,64px);line-height:1.06}
input,textarea,select{border-radius:4px;border-color:#C9D3E2;font-family:inherit}.eyebrow{font-size:11px;letter-spacing:.16em}
.stat{border-radius:6px;border-color:var(--line);border-top:3px solid var(--navy)}.stat strong{font-weight:800}.stat span,.meta,.hint{color:var(--muted)}
.tabs button{color:var(--navy)}.tabs button[aria-pressed=true]{background:var(--tint);color:var(--blue)}.tabs button:hover{background:#DBEAFE}
.badge{border-radius:3px;background:var(--tint);color:var(--blue);font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.empty{border-radius:6px;border-color:#C9D3E2;background:#fff}.empty p{max-width:520px;margin:12px auto 24px}dialog{border-radius:8px}dialog::backdrop{background:#01265480}
footer{border-top:1px solid var(--line);color:var(--muted)}:focus-visible{outline:3px solid var(--blue);outline-offset:3px}
@media(max-width:520px){.brand{font-size:20px}.brand span{font-size:11px}.heading h1{font-size:30px}.auth h1{font-size:40px}header{gap:12px}button{padding:12px 16px}}
