/* ===========================================================
   Steuerkanzlei Ilka Seidel — Website
   =========================================================== */

:root{
  --blue: #1E4DB7;
  --blue-dark: #123785;
  --blue-darker: #0D2A63;
  --blue-light: #EAF0FC;
  --blue-lighter: #F4F7FD;
  --accent: #E8A23A;
  --text: #2B2E33;
  --text-soft: #5B6270;
  --text-faint: #8790A0;
  --border: #E2E7F0;
  --white: #FFFFFF;
  --bg: #F7F9FC;
  --radius: 10px;
  --radius-sm: 6px;
  --shadow: 0 2px 6px rgba(20,40,90,0.06), 0 10px 24px -12px rgba(20,40,90,0.15);
  --shadow-lg: 0 20px 45px -20px rgba(15,35,80,0.35);
  --font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  --maxw: 1180px;
}

*, *::before, *::after{ box-sizing: border-box; }
html{ scroll-behavior: smooth; scroll-padding-top: 96px; }
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{ animation-duration:0.001ms !important; transition-duration:0.001ms !important; }
}

body{
  margin:0;
  font-family: var(--font);
  color: var(--text);
  background: var(--bg);
  line-height: 1.65;
  font-size: 16px;
  -webkit-font-smoothing: antialiased;
}

h1,h2,h3,h4{
  font-family: var(--font);
  font-weight: 700;
  line-height: 1.25;
  color: var(--blue-darker);
  margin: 0 0 0.55em;
}
h1{ font-size: clamp(1.9rem, 1.5rem + 2vw, 2.7rem); }
h2{ font-size: clamp(1.5rem, 1.3rem + 1vw, 2rem); }
h3{ font-size: 1.25rem; }
p{ margin: 0 0 1em; color: var(--text-soft); }
a{ color: var(--blue); text-decoration: none; }
a:hover{ color: var(--blue-dark); text-decoration: underline; }
ul{ margin:0; padding:0; list-style:none; }
img{ max-width:100%; display:block; }
:focus-visible{ outline: 3px solid var(--accent); outline-offset: 2px; border-radius: 3px; }

.container{ max-width: var(--maxw); margin: 0 auto; padding: 0 24px; }
.section{ padding: 4.5rem 0; }
.section-tight{ padding: 3rem 0; }
.section-alt{ background: var(--blue-lighter); }
.section-head{ max-width: 720px; margin-bottom: 2.5rem; }
.section-head.center{ margin-left:auto; margin-right:auto; text-align:center; }
.kicker{
  display:inline-block; color: var(--blue); font-weight:700; font-size:0.82rem;
  letter-spacing:0.06em; text-transform:uppercase; margin-bottom:0.6em;
}
.lede{ font-size:1.08rem; }

@media (max-width:640px){
  .section{ padding: 3rem 0; }
  .container{ padding: 0 18px; }
}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  padding:0.8em 1.5em; border-radius: 999px; font-weight:700; font-size:0.95rem;
  border:2px solid transparent; cursor:pointer; white-space:nowrap;
  transition: background .18s ease, color .18s ease, border-color .18s ease, transform .18s ease, box-shadow .18s ease;
  text-decoration:none;
}
.btn:hover{ text-decoration:none; }
.btn-primary{ background: var(--blue); color:#fff; }
.btn-primary:hover{ background: var(--blue-dark); transform: translateY(-1px); box-shadow: var(--shadow); color:#fff; }
.btn-accent{ background: var(--accent); color:#3a2600; }
.btn-accent:hover{ background:#d6912e; transform: translateY(-1px); color:#3a2600; }
.btn-outline{ background:#fff; color: var(--blue); border-color: var(--blue); }
.btn-outline:hover{ background: var(--blue); color:#fff; }
.btn-ghost-light{ background: rgba(255,255,255,0.12); color:#fff; border-color: rgba(255,255,255,0.55); }
.btn-ghost-light:hover{ background:#fff; color: var(--blue-darker); }
.btn-sm{ padding:0.55em 1.1em; font-size:0.85rem; }

/* ---------- Header ---------- */
.site-header{
  position: sticky; top:0; z-index:200; background: rgba(255,255,255,0.97);
  backdrop-filter: blur(6px); border-bottom:1px solid var(--border);
}
.topbar{
  background: var(--blue-darker); color:#cfe0ff; font-size:0.82rem;
}
.topbar .container, .site-header .container{ max-width: 1360px; }
.topbar .container{ display:flex; align-items:center; justify-content:space-between; height:36px; gap:1rem; }
.topbar a{ color:#e7edfb; }
.topbar a:hover{ color:#fff; }
.topbar-info{ display:flex; gap:1.4rem; align-items:center; flex-wrap:wrap; }
.topbar-info span{ display:inline-flex; align-items:center; gap:6px; }
.topbar-info svg{ width:13px; height:13px; }
@media (max-width:760px){ .topbar-info span.hide-sm{ display:none; } }

.nav-row{ display:flex; align-items:center; justify-content:space-between; gap:2.2rem; height:84px; }
.brand{ display:flex; align-items:center; gap:12px; flex:none; }
.brand img{ height:56px; width:auto; border-radius:4px; }
.brand-text{ display:flex; flex-direction:column; line-height:1.25; white-space:nowrap; }
.brand-text strong{ font-size:1.05rem; color: var(--blue-darker); font-weight:800; }
.brand-text span{ font-size:0.74rem; color: var(--text-faint); letter-spacing:0.02em; }
@media (max-width:1180px){ .brand-text span{ display:none; } }
@media (max-width:420px){ .brand-text{ display:none; } }

.main-nav{ display:flex; align-items:center; gap:0.2rem; }
.main-nav > ul{ display:flex; align-items:center; gap:0.2rem; }
.main-nav > ul > li{ position:relative; }
.main-nav > ul > li > a{
  display:flex; align-items:center; gap:4px; padding: 0.85rem 0.65rem; font-weight:600; font-size:0.89rem;
  color: var(--text); border-radius: var(--radius-sm); white-space:nowrap;
}
.main-nav > ul > li > a:hover, .main-nav > ul > li.active > a{ color: var(--blue); background: var(--blue-lighter); text-decoration:none; }
.main-nav > ul > li > a svg{ width:13px; height:13px; transition: transform .18s ease; color: var(--text-faint); }
.main-nav > ul > li:hover > a svg{ transform: rotate(180deg); }

.dropdown{
  position:absolute; top: 100%; left:0; min-width: 270px; background:#fff;
  border:1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow-lg);
  padding:0.5rem; opacity:0; visibility:hidden; transform: translateY(6px);
  transition: opacity .16s ease, transform .16s ease, visibility .16s ease;
}
.main-nav > ul > li:hover .dropdown, .main-nav > ul > li:focus-within .dropdown{
  opacity:1; visibility:visible; transform: translateY(0);
}
.dropdown a{
  display:block; padding:0.6rem 0.8rem; border-radius: var(--radius-sm); color: var(--text); font-size:0.92rem; font-weight:500;
}
.dropdown a:hover{ background: var(--blue-lighter); color: var(--blue); text-decoration:none; }
.dropdown hr{ border:none; border-top:1px solid var(--border); margin:0.35rem 0.3rem; }

.header-actions{ display:flex; align-items:center; gap:0.8rem; }
.nav-toggle{
  display:none; background:none; border:1px solid var(--border); border-radius: var(--radius-sm);
  width:44px; height:44px; align-items:center; justify-content:center; color: var(--text);
}
.nav-toggle svg{ width:20px; height:20px; }

@media (max-width: 1300px){
  .main-nav{
    position: fixed; top: var(--header-h, 120px); left:0; right:0; height: calc(100vh - var(--header-h, 120px));
    background:#fff; flex-direction:column; align-items:stretch; padding: 1rem 18px 2rem;
    transform: translateX(100%); transition: transform .25s ease; overflow-y:auto;
    border-top:1px solid var(--border);
  }
  .main-nav.open{ transform: translateX(0); }
  .main-nav > ul{ flex-direction:column; align-items:stretch; gap:0; width:100%; }
  .main-nav > ul > li > a{ padding:0.9rem 0.4rem; width:100%; justify-content:space-between; border-bottom:1px solid var(--border); border-radius:0; }
  .dropdown{
    position:static; opacity:1; visibility:visible; transform:none; box-shadow:none; border:none;
    max-height:0; overflow:hidden; padding:0 0 0 0.8rem; transition: max-height .25s ease;
  }
  .main-nav > ul > li.nav-open .dropdown{ max-height: 800px; padding:0.4rem 0 0.6rem 0.8rem; }
  .main-nav > ul > li:hover .dropdown{ max-height:0; } /* disable hover on touch */
  .main-nav > ul > li.nav-open .dropdown{ max-height:800px; }
  .header-actions .btn-outline{ display:none; }
  .nav-toggle{ display:flex; }
}

/* ---------- Hero ---------- */
.hero{
  position:relative; color:#fff; overflow:hidden; background: var(--blue-darker);
}
.hero-bg{
  position:absolute; inset:0; background-size:cover; background-position:center;
}
.hero-bg::after{
  content:""; position:absolute; inset:0;
  background: linear-gradient(100deg, rgba(10,25,60,0.92) 0%, rgba(10,25,60,0.82) 40%, rgba(30,77,183,0.55) 100%);
}
.hero-inner{ position:relative; padding: 4.5rem 0 5rem; }
.hero-eyebrow{ display:inline-flex; align-items:center; gap:8px; background: rgba(255,255,255,0.14); border:1px solid rgba(255,255,255,0.3); padding:0.35em 0.9em; border-radius:999px; font-size:0.82rem; font-weight:600; margin-bottom:1.2rem; }
.hero h1{ color:#fff; max-width: 18ch; }
.hero p.lede{ color:#dfe7fa; max-width:55ch; }
.hero-ctas{ display:flex; gap:1rem; flex-wrap:wrap; margin-top:1.8rem; }
.hero.small .hero-inner{ padding: 3rem 0 3.4rem; }
.hero.small h1{ max-width:none; font-size: clamp(1.7rem, 1.4rem + 1.4vw, 2.3rem); }

.breadcrumbs{ display:flex; gap:0.5rem; align-items:center; font-size:0.85rem; color:#c9d6f2; margin-bottom:1rem; flex-wrap:wrap; }
.breadcrumbs a{ color:#c9d6f2; }
.breadcrumbs a:hover{ color:#fff; }

/* ---------- Cards / grids ---------- */
.grid{ display:grid; gap:1.5rem; }
.grid-3{ grid-template-columns: repeat(3, 1fr); }
.grid-2{ grid-template-columns: repeat(2, 1fr); }
@media (max-width:900px){ .grid-3{ grid-template-columns: repeat(2,1fr); } }
@media (max-width:640px){ .grid-3, .grid-2{ grid-template-columns: 1fr; } }

.card{
  background:#fff; border:1px solid var(--border); border-radius: var(--radius);
  padding:1.9rem; box-shadow: var(--shadow); transition: transform .18s ease, box-shadow .18s ease;
}
.card:hover{ transform: translateY(-3px); box-shadow: var(--shadow-lg); }
.card-icon{
  width:50px; height:50px; border-radius:12px; background: var(--blue-light); color: var(--blue);
  display:flex; align-items:center; justify-content:center; margin-bottom:1rem;
}
.card-icon svg{ width:26px; height:26px; }
.card h3{ margin-bottom:0.5em; }
.card-list{ display:flex; flex-direction:column; gap:0.5rem; margin-top:0.8rem; }
.card-list li{ display:flex; gap:9px; font-size:0.93rem; color: var(--text-soft); }
.card-list li svg{ width:15px; height:15px; color: var(--blue); flex:none; margin-top:0.3em; }
a.card-link{ display:inline-flex; align-items:center; gap:6px; margin-top:1.1rem; font-weight:700; font-size:0.9rem; color: var(--blue); }
a.card-link svg{ width:14px; height:14px; flex:none; }

.stat-row{ display:flex; flex-wrap:wrap; gap:2.2rem; }
.stat{ min-width:130px; }
.stat strong{ display:block; font-size:2rem; color: var(--blue-darker); font-weight:800; }
.stat span{ color: var(--text-faint); font-size:0.88rem; }

/* ---------- Sidebar layout (sub pages) ---------- */
.with-sidebar{ display:grid; grid-template-columns: 250px 1fr; gap:2.6rem; align-items:start; }
.side-nav{ background:#fff; border:1px solid var(--border); border-radius: var(--radius); padding:0.6rem; position:sticky; top:100px; }
.side-nav a{ display:block; padding:0.65rem 0.9rem; border-radius: var(--radius-sm); color: var(--text); font-size:0.93rem; font-weight:500; }
.side-nav a:hover{ background: var(--blue-lighter); color: var(--blue); text-decoration:none; }
.side-nav a.current{ background: var(--blue); color:#fff; }
.side-nav .side-title{ font-size:0.75rem; text-transform:uppercase; letter-spacing:0.06em; color: var(--text-faint); padding:0.6rem 0.9rem 0.3rem; font-weight:700; }
@media (max-width:860px){ .with-sidebar{ grid-template-columns: 1fr; } .side-nav{ position:static; } }

.content-block h2{ margin-top:1.6rem; }
.content-block h2:first-child{ margin-top:0; }
ul.bullets{ list-style:none; margin:0 0 1.2rem; padding:0; display:flex; flex-direction:column; gap:0.65rem; }
ul.bullets li{ display:flex; gap:10px; color: var(--text-soft); }
ul.bullets li svg{ width:16px; height:16px; color: var(--blue); flex:none; margin-top:0.3em; }
.content-columns{ display:grid; grid-template-columns:1fr 1fr; gap:2.4rem; }
@media (max-width:760px){ .content-columns{ grid-template-columns:1fr; } }

.info-panel{ background:#fff; border:1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); padding:1.6rem; }
.info-panel h3{ font-size:1rem; margin-bottom:0.8rem; }
.info-panel .row{ display:flex; gap:10px; padding:0.55rem 0; border-top:1px solid var(--border); font-size:0.92rem; color: var(--text-soft); }
.info-panel .row:first-of-type{ border-top:none; }
.info-panel .row svg{ width:16px; height:16px; color: var(--blue); flex:none; margin-top:0.2em; }
.info-panel .row a{ color: var(--text); font-weight:600; }

.notice{ background: var(--blue-light); border:1px solid #cddcf7; border-radius: var(--radius-sm); padding:1rem 1.2rem; font-size:0.9rem; color: var(--text-soft); margin: 1.5rem 0; }
.notice strong{ color: var(--blue-darker); }

/* timeline */
.timeline{ position:relative; padding-left:2rem; }
.timeline::before{ content:""; position:absolute; left:6px; top:4px; bottom:4px; width:2px; background: var(--border); }
.timeline-item{ position:relative; padding-bottom:1.8rem; }
.timeline-item:last-child{ padding-bottom:0; }
.timeline-item::before{ content:""; position:absolute; left:-2rem; top:2px; width:12px; height:12px; border-radius:50%; background: var(--blue); border:3px solid #fff; box-shadow:0 0 0 2px var(--border); }
.timeline-year{ font-weight:800; color: var(--blue); display:block; font-size:0.95rem; }

/* table of contents (legal pages) */
.toc{ background:#fff; border:1px solid var(--border); border-radius: var(--radius); padding:1.4rem 1.6rem; margin-bottom:2rem; }
.toc strong{ display:block; margin-bottom:0.7rem; color: var(--blue-darker); font-size:0.8rem; text-transform:uppercase; letter-spacing:0.05em; }
.toc ol{ columns:2; column-gap:2rem; padding-left:1.2em; list-style:decimal; color: var(--text-soft); font-size:0.92rem; }
.toc li{ margin-bottom:0.35em; }
@media (max-width:640px){ .toc ol{ columns:1; } }

/* ---------- Contact ---------- */
.contact-grid{ display:grid; grid-template-columns: 1fr 1fr; gap:1.6rem; margin-bottom:2.5rem; }
@media (max-width:800px){ .contact-grid{ grid-template-columns:1fr; } }
.form-card{ background:#fff; border:1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); padding:2.2rem; }
.field{ display:flex; flex-direction:column; gap:0.35rem; margin-bottom:1.1rem; }
.field label{ font-size:0.85rem; font-weight:700; color: var(--text); }
.field input, .field select, .field textarea{
  font-family: var(--font); font-size:0.96rem; padding:0.7em 0.85em; border:1px solid var(--border);
  border-radius: var(--radius-sm); background: #fbfcfe; color: var(--text);
}
.field input:focus, .field select:focus, .field textarea:focus{ border-color: var(--blue); outline:none; background:#fff; }
.field-row{ display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
@media (max-width:480px){ .field-row{ grid-template-columns:1fr; } }
.form-foot{ display:flex; align-items:center; gap:1rem; flex-wrap:wrap; justify-content:space-between; margin-top:0.4rem; }
.form-note{ font-size:0.8rem; color: var(--text-faint); }

/* ---------- Footer ---------- */
.site-footer{ background: var(--blue-darker); color:#c9d6f2; margin-top:3rem; }
.footer-top{ padding:3.5rem 0 2.5rem; display:grid; grid-template-columns:1.3fr 1fr 1fr 1fr; gap:2.4rem; border-bottom:1px solid rgba(255,255,255,0.14); }
.footer-brand{ display:flex; align-items:center; gap:10px; margin-bottom:1rem; }
.footer-brand img{ height:44px; border-radius:4px; }
.footer-brand strong{ color:#fff; font-size:1.05rem; }
.footer-col h5{ color:#fff; font-size:0.82rem; text-transform:uppercase; letter-spacing:0.05em; margin-bottom:1rem; }
.footer-col ul{ display:flex; flex-direction:column; gap:0.6rem; }
.footer-col a{ color:#c9d6f2; font-size:0.92rem; }
.footer-col a:hover{ color:#fff; }
.footer-about p{ font-size:0.9rem; max-width:34ch; color:#b6c6ea; }
.footer-bottom{ padding:1.4rem 0; display:flex; justify-content:space-between; flex-wrap:wrap; gap:0.8rem; font-size:0.82rem; color:#93a8d6; }
.footer-bottom a{ color:#93a8d6; }
.footer-bottom a:hover{ color:#fff; }
@media (max-width:900px){ .footer-top{ grid-template-columns:1fr 1fr; } }
@media (max-width:560px){ .footer-top{ grid-template-columns:1fr; } }

/* Reveal on scroll */
.reveal{ opacity:0; transform: translateY(12px); transition: opacity .55s ease, transform .55s ease; }
.reveal.in{ opacity:1; transform:none; }

/* ---------- Admin-verwaltete Inhalte (Stellenangebote, Aktuelle News) ---------- */
.entry-loading{ color: var(--text-faint); }
.entry-empty{
  background: var(--blue-lighter); border:1px solid var(--border); border-radius: var(--radius);
  padding:2rem; text-align:center; color: var(--text-soft);
}
.entry-list{ display:flex; flex-direction:column; gap:1.2rem; margin-bottom:2.5rem; }
.entry-card{
  background:#fff; border:1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow);
  padding:1.6rem 1.8rem;
}
.entry-card-head{ display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:0.6rem 1.2rem; margin-bottom:0.6rem; }
.entry-card-head h3{ margin:0; font-size:1.15rem; }
.entry-meta{ display:flex; gap:0.9rem; flex-wrap:wrap; }
.entry-meta span{
  font-size:0.8rem; font-weight:600; color: var(--blue); background: var(--blue-lighter);
  padding:0.25em 0.7em; border-radius:999px; white-space:nowrap;
}
.entry-meta span.entry-date{ color: var(--text-soft); background: var(--bg); }
.entry-desc{ color: var(--text-soft); margin-bottom:1.1rem; white-space:pre-line; }
.entry-desc:last-child{ margin-bottom:0; }
.jobs-initiative{
  background: var(--bg); border:1px dashed var(--border); border-radius: var(--radius);
  padding:1.8rem; text-align:center;
}
.jobs-initiative h3{ margin-top:0; }

/* Utility */
.mt-0{ margin-top:0; }
.text-center{ text-align:center; }
.visually-hidden{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }

/* ---- Wartungsmodus ---- */
html.maintenance-on body{ overflow:hidden; }
html.maintenance-on body > *:not(.maintenance-overlay){ visibility:hidden; }
.maintenance-overlay{ position:fixed; inset:0; z-index:9999; display:flex; align-items:center; justify-content:center;
  padding:24px 16px; background:linear-gradient(160deg, var(--blue-lighter), var(--blue-light)); overflow:auto; }
.maintenance-box{ max-width:560px; width:100%; background:var(--white); border:1px solid var(--border); border-radius:var(--radius);
  box-shadow:var(--shadow); padding:clamp(24px,5vw,44px); text-align:center; }
.maintenance-logo{ width:72px; height:72px; object-fit:contain; margin:0 auto 12px; display:block; }
.maintenance-eyebrow{ color:var(--blue); font-weight:700; letter-spacing:.06em; text-transform:uppercase; font-size:.8rem; margin:0 0 .4rem; }
.maintenance-box h1{ font-size:clamp(1.4rem,4vw,1.9rem); color:var(--blue-darker); margin:0 0 .8rem; }
.maintenance-text{ color:var(--text-soft); margin:0 auto 1.6rem; max-width:44ch; white-space:pre-line; }
.maintenance-contact{ display:flex; gap:.7rem; justify-content:center; flex-wrap:wrap; }
.maintenance-contact .btn{ word-break:break-all; }
.maintenance-adminbar{ position:sticky; top:0; z-index:9998; display:flex; gap:1rem; align-items:center; justify-content:center; flex-wrap:wrap;
  background:#b3261e; color:#fff; font-size:.9rem; padding:.55rem 1rem; text-align:center; }
.maintenance-adminbar a{ color:#fff; font-weight:700; text-decoration:underline; }

/* ================= Responsive-Feinschliff (Handy / Tablet) ================= */
html, body{ max-width:100%; overflow-x:clip; }
img, video{ max-width:100%; height:auto; }
.field input, .field select, .field textarea{ width:100%; min-width:0; box-sizing:border-box; }
@media (max-width:1300px){
  .main-nav{ visibility:hidden; height: calc(100dvh - var(--header-h, 120px)); }
  .main-nav.open{ visibility:visible; }
}
@media (max-width:640px){
  .field input, .field select, .field textarea{ font-size:16px; } /* verhindert Auto-Zoom auf iPhone */
  .form-card{ padding:1.3rem; }
}
/* Seitenabstand links/rechts für ALLE Container erzwingen (Hero, Footer usw. klebten
   auf Handy/Tablet am Rand, weil deren padding-Kurzschreibweise ihn überschrieb) */
.container{ padding-left:24px !important; padding-right:24px !important; }
/* Topbar darf umbrechen statt hinter dem Header zu verschwinden */
.topbar .container{ height:auto; min-height:36px; padding-top:6px; padding-bottom:6px; }
@media (max-width:900px){ .topbar-info span.hide-sm{ display:none; } }
/* Schmale Handys: Name neben Logo ausblenden, damit Menü-Knopf nicht rausrutscht */
@media (max-width:520px){ .brand-text{ display:none; } }
@media (max-width:640px){
  .container{ padding-left:18px !important; padding-right:18px !important; }
  .hero-inner{ padding-top:3rem !important; padding-bottom:3.4rem !important; }
  .hero h1{ font-size: clamp(1.6rem, 1.2rem + 3vw, 2.2rem); }
  .hero-ctas .btn{ flex:1 1 100%; white-space:normal; text-align:center; }
  .brand img{ height:46px; }
}
/* Icons in Buttons immer klein halten */
.btn svg{ width:18px; height:18px; flex:none; }
/* Breite Laptops (1301–1460px): Menü etwas kompakter, damit "Anrufen" nicht rausrutscht */
@media (min-width:1301px) and (max-width:1460px){
  .main-nav > ul > li > a{ padding:0.85rem 0.42rem; font-size:0.84rem; }
  .brand-text span{ display:none; }
  .header-actions{ gap:0.5rem; }
}
