/* ============================================================================
   Peters-Reisen Newsletter Builder – Design System
   Phase 1 UI-Foundation. Google-Workspace-ähnlich: clean, hell, ruhig.
   Reine Präsentationsschicht – keine Businesslogik. Alle bisherigen
   Klassennamen bleiben erhalten (page-head, card, btn, chip, table, ...).
   ============================================================================ */

:root{
  /* Marke */
  --blue:#0b3d62; --blue-600:#0d4a78; --red:#e2001a; --red-700:#b8001a;
  /* Akzent (Google-Blau für Fokus/Links/Aktiv) */
  --accent:#1a73e8; --accent-700:#1557b0; --accent-bg:#e8f0fe;
  /* Neutralflächen */
  --bg:#f6f8fa; --card:#fff; --border:#e3e8ee; --border-strong:#d3dae2;
  --ink:#1f2933; --muted:#5f6b7a; --muted-2:#8a96a3;
  /* Status */
  --ok:#1a7f37; --ok-bg:#e6f4ea; --warn:#b26a00; --warn-bg:#fff3e0;
  --danger:#c1121f; --danger-bg:#fde8ea; --info:#1a73e8; --info-bg:#e8f0fe;
  /* Radius / Schatten / Spacing-Skala */
  --r-sm:6px; --r:10px; --r-lg:14px; --r-pill:999px;
  --sh-1:0 1px 2px rgba(16,24,40,.06),0 1px 3px rgba(16,24,40,.04);
  --sh-2:0 2px 6px rgba(16,24,40,.08),0 4px 12px rgba(16,24,40,.05);
  --sh-3:0 8px 28px rgba(16,24,40,.14);
  --s-1:4px; --s-2:8px; --s-3:12px; --s-4:16px; --s-5:20px; --s-6:24px;
  --fs-xs:12px; --fs-sm:13px; --fs-md:14px; --fs-lg:16px; --fs-xl:18px; --fs-2xl:24px;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;line-height:1.55;color:var(--ink);background:var(--bg);
  font-family:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  font-size:var(--fs-md);-webkit-font-smoothing:antialiased;
}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3{color:var(--blue);font-weight:600;letter-spacing:-.01em}

/* --- App Shell / Topbar ---------------------------------------------------- */
.topbar{
  position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:var(--s-6);
  background:#fff;border-bottom:1px solid var(--border);
  padding:0 var(--s-6);height:60px;box-shadow:var(--sh-1);
}
.topbar .brand{display:flex;align-items:center;gap:var(--s-2);color:var(--blue);
  text-decoration:none;font-weight:700;font-size:var(--fs-lg)}
.topbar .brand span{font-weight:400;color:var(--muted)}
.topbar nav{display:flex;gap:var(--s-1);margin-left:auto;flex-wrap:wrap}
.topbar nav a{
  color:var(--muted);text-decoration:none;padding:8px 14px;border-radius:var(--r-pill);
  font-weight:500;font-size:var(--fs-md);transition:background .15s,color .15s;
}
.topbar nav a:hover{background:var(--bg);color:var(--ink);text-decoration:none}
.topbar nav a.active{background:var(--accent-bg);color:var(--accent-700)}

.container{max-width:1180px;margin:var(--s-6) auto;padding:0 var(--s-6)}
.footer{text-align:center;color:var(--muted-2);font-size:var(--fs-sm);padding:var(--s-6)}

/* --- Page header ----------------------------------------------------------- */
.page-head{display:flex;align-items:center;justify-content:space-between;
  gap:var(--s-4);margin-bottom:var(--s-5);flex-wrap:wrap}
.page-head h1{margin:0;font-size:var(--fs-2xl)}
.head-actions{display:flex;gap:var(--s-3);align-items:center;flex-wrap:wrap}

/* --- Cards ----------------------------------------------------------------- */
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);
  padding:var(--s-6);margin-bottom:var(--s-5);box-shadow:var(--sh-1)}
.card h2{margin:0 0 var(--s-4);font-size:var(--fs-xl)}
.card-head{display:flex;align-items:center;justify-content:space-between;
  gap:var(--s-3);margin-bottom:var(--s-4)}
.card-head h2{margin:0}

/* --- Layout-Grid ----------------------------------------------------------- */
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-5)}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s-4)}
.row{display:flex;gap:var(--s-4)}
.row>label{flex:1}

/* --- Forms ----------------------------------------------------------------- */
label{display:block;margin-bottom:var(--s-4);font-size:var(--fs-sm);
  font-weight:600;color:#3a4756}
input,textarea,select{
  width:100%;margin-top:var(--s-1);padding:10px 12px;border:1px solid var(--border-strong);
  border-radius:var(--r-sm);font-size:var(--fs-md);font-family:inherit;font-weight:400;
  background:#fff;color:var(--ink);transition:border-color .15s,box-shadow .15s;
}
input:focus,textarea:focus,select:focus{
  outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg);
}
input::placeholder,textarea::placeholder{color:var(--muted-2)}
textarea{resize:vertical;min-height:64px}
select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%235f6b7a' d='M6 8L2 4h8z'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}

/* Toggle / Switch */
.switch{position:relative;display:inline-block;width:38px;height:22px;flex:0 0 auto}
.switch input{opacity:0;width:0;height:0;margin:0;position:absolute}
.switch .slider{position:absolute;inset:0;background:var(--border-strong);
  border-radius:var(--r-pill);transition:background .15s;cursor:pointer}
.switch .slider::before{content:"";position:absolute;height:16px;width:16px;left:3px;top:3px;
  background:#fff;border-radius:50%;transition:transform .15s;box-shadow:var(--sh-1)}
.switch input:checked + .slider{background:var(--accent)}
.switch input:checked + .slider::before{transform:translateX(16px)}
.switch input:focus + .slider{box-shadow:0 0 0 3px var(--accent-bg)}

/* --- Buttons --------------------------------------------------------------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);
  padding:9px 16px;border:1px solid var(--border-strong);background:#fff;
  border-radius:var(--r-sm);font-size:var(--fs-md);font-weight:600;line-height:1.2;
  cursor:pointer;text-decoration:none;color:var(--ink);
  transition:background .15s,border-color .15s,box-shadow .15s,opacity .15s;
}
.btn:hover{background:var(--bg);text-decoration:none;box-shadow:var(--sh-1)}
.btn:active{box-shadow:none}
.btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}
.btn-primary{background:var(--red);color:#fff;border-color:var(--red)}
.btn-primary:hover{background:var(--red-700);border-color:var(--red-700)}
.btn-accent{background:var(--accent);color:#fff;border-color:var(--accent)}
.btn-accent:hover{background:var(--accent-700);border-color:var(--accent-700)}
.btn-ghost{background:transparent;border-color:transparent;color:var(--accent)}
.btn-ghost:hover{background:var(--accent-bg)}
.btn-danger{color:var(--danger);border-color:#f1b8be;background:#fff}
.btn-danger:hover{background:var(--danger-bg)}
.btn-sm{padding:6px 12px;font-size:var(--fs-sm)}
.btn-icon{padding:8px;width:36px;height:36px}
.row-actions{display:flex;gap:var(--s-2);align-items:center}
.row-actions form{margin:0}
.actions{display:flex;flex-wrap:wrap;gap:var(--s-3);align-items:center}

/* Segmented control */
.seg{display:inline-flex;background:var(--bg);border:1px solid var(--border);
  border-radius:var(--r-sm);padding:2px;gap:2px}
.seg .btn{border:none;background:transparent;box-shadow:none}
.seg .btn.active{background:#fff;color:var(--accent-700);box-shadow:var(--sh-1)}

/* --- Tabs ------------------------------------------------------------------ */
.tabs{display:flex;gap:var(--s-1);border-bottom:1px solid var(--border);margin-bottom:var(--s-5)}
.tabs .tab{padding:10px 16px;border:none;background:none;cursor:pointer;font-weight:600;
  font-size:var(--fs-md);color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px}
.tabs .tab:hover{color:var(--ink)}
.tabs .tab.active{color:var(--accent-700);border-bottom-color:var(--accent)}

/* --- Tables ---------------------------------------------------------------- */
.table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--border);
  border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--sh-1)}
.table th,.table td{text-align:left;padding:12px 16px;border-bottom:1px solid var(--border);
  font-size:var(--fs-md)}
.table th{background:#fafbfc;font-size:var(--fs-xs);text-transform:uppercase;
  letter-spacing:.05em;color:var(--muted);font-weight:600}
.table tbody tr:last-child td{border-bottom:none}
.table tbody tr:hover{background:#fafbfc}

/* --- Badges / Chips -------------------------------------------------------- */
.badge{display:inline-block;background:#eef2f6;color:var(--muted);padding:3px 10px;
  border-radius:var(--r-pill);font-size:var(--fs-xs);font-weight:600}
.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:var(--r-pill);
  font-size:var(--fs-xs);font-weight:600;margin-right:var(--s-2)}
.chip-ok{background:var(--ok-bg);color:var(--ok)}
.chip-warn{background:var(--warn-bg);color:var(--warn)}
.chip-info{background:var(--info-bg);color:var(--accent-700)}
.chip-danger{background:var(--danger-bg);color:var(--danger)}
.status-row{margin-bottom:var(--s-5);display:flex;flex-wrap:wrap;gap:var(--s-2)}

/* --- Alerts ---------------------------------------------------------------- */
.alert{padding:12px 16px;border-radius:var(--r);margin-bottom:var(--s-4);
  font-size:var(--fs-md);border:1px solid transparent}
.alert-error{background:var(--danger-bg);color:var(--danger);border-color:#f1b8be}
.alert-warn{background:var(--warn-bg);color:var(--warn);border-color:#ffe0b2}
.alert-info{background:var(--info-bg);color:var(--accent-700);border-color:#cfe2f3}
.alert-ok{background:var(--ok-bg);color:var(--ok);border-color:#bfe3c8}
.alert ul{margin:var(--s-2) 0 0;padding-left:var(--s-5)}

/* --- Toasts / Snackbars ---------------------------------------------------- */
.toast-wrap{position:fixed;right:var(--s-5);bottom:var(--s-5);z-index:60;
  display:flex;flex-direction:column;gap:var(--s-2);max-width:380px}
.toast{display:flex;align-items:flex-start;gap:var(--s-3);background:#1f2933;color:#fff;
  padding:12px 16px;border-radius:var(--r);box-shadow:var(--sh-3);font-size:var(--fs-md);
  opacity:0;transform:translateY(8px);transition:opacity .2s,transform .2s}
.toast.show{opacity:1;transform:none}
.toast.toast-ok{background:#0f5132}
.toast.toast-error{background:#842029}
.toast.toast-warn{background:#664d03}
.toast .toast-close{margin-left:auto;background:none;border:none;color:inherit;
  cursor:pointer;font-size:var(--fs-lg);opacity:.7;padding:0 0 0 var(--s-2)}
.toast .toast-close:hover{opacity:1}

/* --- Stepper / Pipeline ---------------------------------------------------- */
.stepper{display:flex;flex-wrap:wrap;gap:var(--s-2);align-items:center;margin-bottom:var(--s-5)}
.step{display:inline-flex;align-items:center;gap:var(--s-2);padding:6px 12px;border-radius:var(--r-pill);
  font-size:var(--fs-sm);font-weight:600;background:#eef2f6;color:var(--muted)}
.step .dot{width:8px;height:8px;border-radius:50%;background:currentColor}
.step.running{background:var(--info-bg);color:var(--accent-700)}
.step.done{background:var(--ok-bg);color:var(--ok)}
.step.warn{background:var(--warn-bg);color:var(--warn)}
.step.error{background:var(--danger-bg);color:var(--danger)}
.step-sep{color:var(--muted-2)}

/* --- Empty / Loading states ------------------------------------------------ */
.empty{color:var(--muted);padding:48px 30px;text-align:center;background:#fff;
  border:1px dashed var(--border-strong);border-radius:var(--r-lg)}
.spinner{display:inline-block;width:16px;height:16px;border:2px solid var(--accent-bg);
  border-top-color:var(--accent);border-radius:50%;animation:spin .6s linear infinite;vertical-align:-3px}
@keyframes spin{to{transform:rotate(360deg)}}
.is-loading{position:relative;pointer-events:none;opacity:.7}

/* --- Modal ----------------------------------------------------------------- */
.modal-backdrop{position:fixed;inset:0;background:rgba(16,24,40,.45);z-index:50;
  display:flex;align-items:center;justify-content:center;padding:var(--s-5)}
.modal{background:#fff;border-radius:var(--r-lg);box-shadow:var(--sh-3);
  max-width:520px;width:100%;padding:var(--s-6)}
.modal h2{margin-top:0}

/* --- Reise-Item / Editor --------------------------------------------------- */
.item{border:1px solid var(--border);border-radius:var(--r);padding:var(--s-4);
  margin-bottom:var(--s-3);background:#fbfcfd}
.item .item-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--s-3)}
.item .item-head strong{font-size:var(--fs-lg)}
.item .grid-3{grid-template-columns:1fr 1fr 1fr;gap:var(--s-3)}
.item .item-warn{color:var(--warn);font-size:var(--fs-xs);margin-top:var(--s-2)}
.item-actions{display:flex;gap:var(--s-2)}

/* --- Preview --------------------------------------------------------------- */
.preview{width:100%;border:1px solid var(--border);border-radius:var(--r);background:#fff;
  transition:width .2s;box-shadow:var(--sh-1)}
.preview.desktop{height:700px}
.preview.mobile{width:390px;height:700px;margin:0 auto;display:block}

/* --- Hints ----------------------------------------------------------------- */
.mode-hint{margin-top:var(--s-2);padding:12px 14px;border-radius:var(--r-sm);
  background:var(--info-bg);color:var(--accent-700);font-size:var(--fs-sm)}
.mode-hint.warn{background:var(--warn-bg);color:var(--warn)}
.mode-hint .feed-url{margin-top:var(--s-2)}
.mode-hint input[readonly]{background:#fff}
.auto-card{display:flex;align-items:center;justify-content:space-between;gap:var(--s-5);
  border:1px solid #cfe2f3;background:linear-gradient(180deg,#f3f9ff,#fff)}
.auto-card h2{margin:0 0 var(--s-1)}
.auto-card .btn{white-space:nowrap}

/* --- Utilities ------------------------------------------------------------- */
.check{display:flex !important;align-items:center;gap:var(--s-2);font-weight:400}
.check input{width:auto;margin:0}
.example-row{display:flex;gap:var(--s-3);margin-bottom:var(--s-3)}
.example-row input{flex:0 0 200px}
.muted{color:var(--muted)}
.small{font-size:var(--fs-xs)}
.nowrap{white-space:nowrap}
.hint pre,pre{background:#1d2733;color:#e6edf3;padding:14px;border-radius:var(--r-sm);
  overflow:auto;font-size:var(--fs-sm);line-height:1.5}
code{background:#eef2f6;padding:1px 6px;border-radius:4px;font-size:.92em}
pre code{background:none;padding:0}
.logs code{white-space:pre-wrap;word-break:break-all;background:none}
.lvl-error{background:#fff6f6}

/* --- Responsive ------------------------------------------------------------ */
@media(max-width:820px){
  .grid-2,.grid-3,.item .grid-3{grid-template-columns:1fr}
  .row{flex-direction:column}
  .topbar{height:auto;padding:var(--s-3) var(--s-4);flex-wrap:wrap;gap:var(--s-3)}
  .topbar nav{margin-left:0;width:100%}
  .container{margin:var(--s-4) auto}
}
