:root{--bg:#f3f6f8;--panel:#fff;--ink:#172a34;--muted:#667b88;--border:#e1e8ed;--accent:#0d7274;--accent-dark:#07595d;--nav:#102934;--focus:#43a6a2;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;color:var(--ink)}*{box-sizing:border-box}body{margin:0;background:var(--bg)}a{color:#096d76;text-decoration:none}a:hover{text-decoration:underline}.layout{display:grid;grid-template-columns:252px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--nav);color:#e9f4f5;display:flex;flex-direction:column;padding:26px 14px;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:11px;padding:7px 12px 34px;font-weight:800;letter-spacing:.025em}.brand strong{color:#7bd3ce}.brand small{display:block;margin-top:6px;color:#92aeb6;font-size:11px;font-weight:500;letter-spacing:0}.mark{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:#0d7479;color:white;font-size:24px}.sidebar nav{display:grid;gap:5px}.sidebar nav a{display:flex;align-items:center;gap:11px;padding:12px 14px;border-radius:10px;color:#adc8d0;font-weight:600;font-size:14px}.sidebar nav a:hover,.sidebar nav a.active{color:white;background:#1e4350;text-decoration:none}.sidebar nav a span{font-size:20px;font-weight:400}.sidefoot{margin-top:auto;padding:18px 13px 8px;color:#8daab1;font-size:12px}.textbutton{background:none;border:0;color:#a7dedd;cursor:pointer;margin-top:15px;padding:0;font:inherit}.main{min-width:0;padding:42px min(4vw,55px) 70px;max-width:1560px;width:100%;margin:0 auto}.auth{max-width:660px;margin:8vh auto;padding:25px}.top{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:30px}.eyebrow{letter-spacing:.12em;color:var(--accent);font-weight:800;font-size:10px}.top h1{font-size:30px;letter-spacing:-.04em;margin:7px 0 0}.tag{border:1px solid #cbdde1;color:#567079;border-radius:20px;padding:8px 12px;font-size:12px;white-space:nowrap}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:22px}.stat,.panel{background:var(--panel);border:1px solid var(--border);border-radius:15px;box-shadow:0 8px 20px rgba(26,54,62,.025)}.stat{padding:21px}.stat small,.stat span{display:block;color:var(--muted);font-size:12px}.stat strong{font-size:31px;display:block;margin:12px 0;font-variant-numeric:tabular-nums}.panel{padding:27px;margin-bottom:22px}.panel h2{font-size:17px;margin:0 0 15px;letter-spacing:-.02em}.panel h3{font-size:15px;margin-top:27px}.panel p{line-height:1.65}.narrow{max-width:720px}.muted,.hint{color:var(--muted)}.hint{font-size:12px}.btn{display:inline-flex;justify-content:center;align-items:center;background:var(--accent);color:#fff;padding:11px 17px;border-radius:9px;border:1px solid var(--accent);font-weight:700;font-size:13px;cursor:pointer;text-decoration:none;line-height:1.3}.btn:hover{background:var(--accent-dark);color:#fff;text-decoration:none}.btn.secondary{background:#f8fafb;color:#31515c;border-color:#d7e3e8}.btn.secondary:hover{background:#eaf4f5}.btn:disabled{background:#adbcc1;border-color:#adbcc1;cursor:not-allowed}.buttonrow{display:flex;gap:9px;flex-wrap:wrap;margin-top:15px}.heading{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:15px}.heading h2{margin:0}.filter{display:flex;flex-wrap:wrap;gap:9px;margin:17px 0 23px}.filter input{flex:2;min-width:190px}.filter select{flex:1;min-width:135px}.filter input,.filter select{width:auto}.form{display:grid;gap:16px}.form label{display:grid;gap:7px;font-size:13px;font-weight:700;color:#375261}input,select,textarea{width:100%;padding:11px 12px;min-height:42px;background:#fff;border:1px solid #cedce2;border-radius:9px;color:#18343f;font:inherit;font-size:14px}textarea{resize:vertical}input:focus,textarea:focus,select:focus{outline:2px solid #7dc3c0;outline-offset:1px}.two{display:grid;grid-template-columns:1fr 1fr;gap:15px}.tablewrap{overflow:auto}table{border-collapse:collapse;width:100%;text-align:left;min-width:670px;font-size:13px}th{font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:#8598a2}td,th{padding:14px 9px;border-bottom:1px solid #ecf0f2}tbody tr:hover{background:#fbfdfd}.pill{display:inline-block;background:#eaf5f4;color:#236e70;padding:6px 9px;border-radius:100px;font-size:11px;font-weight:700;white-space:nowrap}.alert{border-radius:10px;background:#eaf8f1;color:#116042;border:1px solid #bfe4d4;padding:13px 16px;margin:0 0 20px;font-size:14px}.alert.err{background:#fdf2ee;color:#a03b28;border-color:#edccbf}.columns{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr);gap:20px}.files{list-style:none;padding:0;margin:0}.files li{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:15px 0;border-bottom:1px solid #ecf0f2}.files small{color:var(--muted);display:block;margin:5px 0;font-size:12px}code{color:#157377;background:#edf6f6;border-radius:4px;padding:2px 5px}.preview{border:1px solid #dbe7e8;background:#fbfdfd;padding:23px;border-radius:12px;margin:18px 0}.bodytext{white-space:pre-wrap;line-height:1.6;font-size:14px}.check{display:flex!important;flex-direction:row;align-items:flex-start;gap:10px!important;line-height:1.55}.check input{width:19px;min-height:19px;accent-color:#0d7274;margin-top:2px}@media(max-width:1100px){.stats{grid-template-columns:repeat(2,1fr)}.columns{grid-template-columns:1fr}}@media(max-width:740px){.layout{display:block}.sidebar{position:static;height:auto;padding:14px}.brand{padding-bottom:15px}.sidebar nav{display:flex;overflow:auto}.sidebar nav a{white-space:nowrap;padding:8px}.sidefoot{display:none}.main{padding:25px 15px}.top h1{font-size:24px}.two{grid-template-columns:1fr}.panel{padding:19px}.stats{gap:10px}.stat{padding:15px}.stat strong{font-size:24px}}
/* Version 0.1.2: single-action recipient campaigns */
.campaign-number{font-size:38px;font-weight:850;letter-spacing:-.045em;color:var(--ink);margin:16px 0 12px}
.campaign-number span{font-size:14px;letter-spacing:0;font-weight:500;color:var(--muted)}
.legal-note{font-size:13px;line-height:1.6;border-left:3px solid #c99518;padding:10px 12px;background:#faf8f1;color:#4b5360}
#campaign-meter{width:100%;height:15px;accent-color:#0d7274}
#campaign-status{font-variant-numeric:tabular-nums;font-size:14px}

/* Version 0.1.5: deliberately confirmed contact deletion */
.btn.danger{background:#a5372c;border-color:#a5372c;color:#fff}
.btn.danger:hover{background:#85281f;border-color:#85281f}
.btn.danger-outline{background:#fff;border-color:#e5c2be;color:#8e3126}
.btn.danger-outline:hover{background:#fff5f3;color:#85281f}
.delete-warning{padding:16px;border:1px solid #e7c8be;background:#fdf5f1;border-radius:9px;color:#71372c;line-height:1.65}

/* Portal 0.1.6 – responsive field-work interface */
.mobile-logout,.mobile-toolbar{display:none}
.logout-button{font:inherit;border:0;background:transparent;color:#a7dedd;cursor:pointer;text-align:left;padding:0}
.logout-button:hover{color:#fff;text-decoration:underline}
.mobile-row-link{font-weight:700}
.contact-actions{align-items:stretch}
:where(a,button,summary,input,textarea,select):focus-visible{outline:3px solid #4bb2ad;outline-offset:3px}
@media (max-width:740px){
  body{overflow-x:hidden}
  .layout{display:block;min-width:0}
  .sidebar{position:sticky;top:0;z-index:50;height:auto;display:block;padding:10px max(12px,env(safe-area-inset-right)) 11px max(12px,env(safe-area-inset-left));box-shadow:0 4px 20px rgba(10,34,42,.12)}
  .brand-row{display:flex;align-items:center;gap:8px;justify-content:space-between}
  .brand{display:flex;align-items:center;min-width:0;gap:9px;padding:0;font-size:14px;letter-spacing:0;line-height:1.18}
  .brand small{font-size:10px;margin-top:3px}
  .mark{width:37px;height:37px;min-width:37px;border-radius:10px;font-size:21px}
  .mobile-logout{display:block;flex-shrink:0}
  .mobile-logout .logout-button{display:inline-flex;align-items:center;gap:3px;min-height:43px;padding:0 6px;color:#c7e2e4;font-size:12px;white-space:nowrap;font-weight:700}
  .desktop-nav,.sidefoot{display:none!important}
  .mobile-toolbar{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:9px;margin-top:11px}
  .mobile-new,.mobile-menu summary{min-height:45px;display:flex;align-items:center;justify-content:center;gap:6px;border-radius:10px;font-size:14px;font-weight:750;cursor:pointer;text-decoration:none}
  .mobile-new{background:#137e80;color:#fff}
  .mobile-new:hover{color:#fff;background:#199092;text-decoration:none}
  .mobile-menu{min-width:0;position:relative}
  .mobile-menu summary{color:#f1ffff;border:1px solid rgba(206,241,241,.27);background:#21434f;list-style:none}
  .mobile-menu summary::-webkit-details-marker{display:none}
  .mobile-menu[open] summary{background:#2c5764}
  .mobile-menu-nav{position:absolute;top:calc(100% + 9px);right:0;width:min(340px,calc(100vw - 24px));max-height:70vh;overflow-y:auto;display:grid!important;gap:4px;white-space:normal;padding:10px;border:1px solid #315361;border-radius:13px;background:#102934;box-shadow:0 14px 32px rgba(10,28,35,.35)}
  .sidebar .mobile-menu-nav a{display:flex;align-items:center;gap:12px;min-height:46px;white-space:normal;padding:10px 12px;font-size:14px;color:#cee3e7}
  .sidebar .mobile-menu-nav a.active{background:#1e5160;color:#fff}
  .mobile-menu-nav a span{font-size:18px;width:24px;flex-shrink:0;text-align:center}
  .main{width:100%;min-width:0;max-width:100%;padding:23px 14px calc(45px + env(safe-area-inset-bottom))}
  .top{gap:10px;align-items:flex-end;margin-bottom:18px}
  .top h1{font-size:25px;margin-top:7px}
  .tag{font-size:10px;padding:7px 9px}
  .stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:15px}
  .stat{padding:16px 14px;border-radius:13px;min-width:0}
  .stat strong{font-size:29px;margin:9px 0}
  .stat small,.stat span{font-size:11px;line-height:1.4;overflow-wrap:anywhere}
  .panel{padding:18px 15px;margin-bottom:15px;border-radius:14px;min-width:0}
  .panel p{line-height:1.55}
  .panel .buttonrow{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
  .buttonrow .btn{min-width:0;text-align:center;white-space:normal;min-height:45px;padding:11px 9px}
  .heading{display:block}
  .heading .buttonrow{margin-top:12px}
  .filter{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:15px 0}
  .filter input{grid-column:1/-1;min-width:0}
  .filter select{min-width:0;max-width:100%;width:100%}
  .filter button{grid-column:1/-1}
  input,select,textarea{font-size:16px;min-height:46px;max-width:100%}
  input[type=checkbox],input[type=radio]{min-height:19px}
  .two{grid-template-columns:1fr;gap:14px}
  .form{gap:14px}
  .form label{font-size:13px}
  .contact-actions{grid-template-columns:1fr!important}
  .contact-actions button:first-child{min-height:51px;font-size:14px}
  .tablewrap:has(.responsive-table){overflow:visible}
  .responsive-table{display:block;min-width:0;width:100%;font-size:13px}
  .responsive-table thead{display:none}
  .responsive-table tbody{display:grid;gap:11px}
  .responsive-table tr{display:block;border:1px solid #e0e9eb;border-radius:12px;padding:10px 12px;background:#fff}
  .responsive-table td{display:grid;grid-template-columns:78px minmax(0,1fr);gap:8px;align-items:start;padding:5px 0;border:0;overflow-wrap:anywhere}
  .responsive-table td::before{content:attr(data-label);font-size:11px;font-weight:750;color:#768b95;padding-top:3px}
  .responsive-table td:first-child{display:block;padding:4px 0 9px;font-weight:750;font-size:15px;color:#1a3946}
  .responsive-table td:first-child::before{display:none}
  .responsive-table td:last-child{display:block;border-top:1px solid #eef2f3;margin-top:7px;padding-top:11px}
  .responsive-table td:last-child::before{display:none}
  .mobile-row-link{display:flex;justify-content:center;align-items:center;background:#eaf4f4;color:#0c666a;border-radius:8px;min-height:43px;padding:10px;text-decoration:none}
  .files li{flex-wrap:wrap;gap:8px}
  .preview{padding:15px;overflow-wrap:anywhere}
  .bodytext{overflow-wrap:anywhere}
  .campaign-number{font-size:31px}
  .campaign-number span{font-size:12px}
  #campaign-status{overflow-wrap:anywhere}
}
@media(max-width:370px){
 .brand{font-size:12px}.brand small{font-size:9px}
 .mobile-logout .logout-button{font-size:11px}
 .stats{gap:8px}.stat{padding:12px 10px}.stat strong{font-size:25px}
 .main{padding-left:10px;padding-right:10px}
}


/* Portal 0.1.7: distinct, accessible status colours and quick filtering */
.status-pill{
  display:inline-flex;align-items:center;gap:6px;min-height:25px;
  padding:5px 10px;border:1px solid transparent;
  font-size:11px;font-weight:750;line-height:1.25;letter-spacing:.005em;
  color:var(--status-ink,#314c58);background:var(--status-bg,#edf3f5);
  border-color:var(--status-border,#d7e3e7);
}
.status-pill::before{
  content:"";display:inline-block;flex:0 0 7px;width:7px;height:7px;
  border-radius:50%;background:var(--status-dot,currentColor)
}
.status-neu{--status-bg:#eff3f7;--status-ink:#425569;--status-border:#d1dce7;--status-dot:#7a8b9b}
.status-entwurf{--status-bg:#f1ebfc;--status-ink:#68419b;--status-border:#ddcef7;--status-dot:#9467ce}
.status-kontaktiert{--status-bg:#e7f0ff;--status-ink:#1d50a0;--status-border:#bed4f7;--status-dot:#377bdc}
.status-antwort{--status-bg:#e1f7ef;--status-ink:#14674c;--status-border:#afe4d1;--status-dot:#1b9b71}
.status-interesse{--status-bg:#d5f3db;--status-ink:#125a2b;--status-border:#8ed4a1;--status-dot:#14863a}
.status-absage{--status-bg:#fde8e8;--status-ink:#982536;--status-border:#f5bfc7;--status-dot:#cc3f56}
.status-gesperrt{--status-bg:#354957;--status-ink:#fff;--status-border:#354957;--status-dot:#e6eff4}
.status-unknown{--status-bg:#f0f3f4;--status-ink:#354b53;--status-border:#dce3e6;--status-dot:#82949b}
.contact-filter{display:grid;grid-template-columns:minmax(170px,1.6fr) repeat(3,minmax(115px,1fr)) auto;align-items:stretch;gap:9px}
.contact-filter input,.contact-filter select{min-width:0;width:100%;max-width:100%;height:43px}
.contact-filter .btn{white-space:nowrap;height:43px}
.contact-overview{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:11px 20px;padding:12px 0 16px;border-top:1px solid #edf1f3}
.status-legend{display:flex;flex-wrap:wrap;align-items:center;gap:7px}
.status-legend-label{font-size:11px;font-weight:800;color:#6b8490;margin-right:5px}
.contact-result{font-size:12px;color:var(--muted);white-space:normal}
.contact-result a{font-weight:700}
.contact-table tbody tr.status-row-interesse{background:#f3fbf5}
.contact-table tbody tr.status-row-absage{background:#fff5f5}
.contact-table tbody tr.status-row-interesse:hover{background:#e9f8ed}
.contact-table tbody tr.status-row-absage:hover{background:#ffeded}
@media(max-width:1200px){
  .contact-filter{grid-template-columns:repeat(2,minmax(0,1fr))}
  .contact-filter input{grid-column:1/-1}
  .contact-filter button{grid-column:1/-1}
}
@media(max-width:740px){
  .contact-filter{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
  .contact-filter input{grid-column:1/-1}
  .contact-filter button{grid-column:1/-1;height:46px}
  .contact-overview{padding:11px 0 16px;gap:13px}
  .status-legend{gap:7px}
  .status-legend-label{width:100%;margin-bottom:2px}
  .status-pill{font-size:11px;min-height:27px;padding:6px 9px}
  .contact-result{width:100%;line-height:1.5}
  .contact-table tr.status-row-interesse{background:#f1fbf4;border-color:#bde4c8}
  .contact-table tr.status-row-absage{background:#fff4f4;border-color:#f4caca}
  .contact-table tr.status-row-interesse td,.contact-table tr.status-row-absage td{background:transparent}
}
@media(max-width:350px){
  .contact-filter{grid-template-columns:1fr}
  .contact-filter input,.contact-filter button{grid-column:1}
}
