/* ==========================================================================
   GJONI Bau GmbH – Design System
   Brand: Rot #E5331C · Ink #131313 · Weiß · Stahl #4F4F4F
   Display: Archivo · Body: Inter
   ========================================================================== */

@font-face{
  font-family:"Archivo";
  src:url("../fonts/archivo-var.woff2") format("woff2-variations");
  font-weight:100 900; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Archivo Black";
  src:url("../fonts/archivo-black.woff2") format("woff2");
  font-weight:400; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Inter";
  src:url("../fonts/inter-var.woff2") format("woff2-variations");
  font-weight:100 900; font-style:normal; font-display:swap;
}

:root{
  --red:#E5331C;
  --red-deep:#B81E0E;
  --red-soft:#F6E3DF;
  --ink:#131313;
  --ink-2:#1C1A19;
  --ink-3:#262321;
  --steel:#4F4F4F;
  --paper:#F5F4F1;
  --paper-2:#ECEAE5;
  --white:#ffffff;
  --line-dark:rgba(255,255,255,.12);
  --line-light:rgba(0,0,0,.10);
  --txt:#1A1715;
  --txt-soft:#5A544F;
  --shadow:0 18px 50px -22px rgba(0,0,0,.45);
  --r:16px;
  --maxw:1180px;
  --stripe:repeating-linear-gradient(135deg,var(--red) 0 16px,#161616 16px 32px);
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{
  margin:0; font-family:"Inter",system-ui,Arial,sans-serif;
  color:var(--txt); background:var(--white); line-height:1.6;
  -webkit-font-smoothing:antialiased; font-size:17px;
  overflow-x:hidden;
}
img{max-width:100%; display:block}
a{color:inherit; text-decoration:none}
.wrap{max-width:var(--maxw); margin:0 auto; padding:0 22px}

h1,h2,h3,h4{font-family:"Archivo",sans-serif; line-height:1.04; margin:0; letter-spacing:-.01em; hyphens:manual}
.display{font-family:"Archivo Black",sans-serif; text-transform:uppercase; letter-spacing:-.02em}
.tile h3{hyphens:manual; overflow-wrap:normal; word-break:normal}
p,li,.tile p,.prose td{overflow-wrap:break-word}

.eyebrow{
  font-family:"Inter"; font-weight:700; font-size:.78rem; letter-spacing:.18em;
  text-transform:uppercase; color:var(--red); display:inline-flex; align-items:center; gap:10px;
}
.eyebrow::before{content:""; width:26px; height:3px; background:var(--red); display:inline-block}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex; align-items:center; gap:10px; font-family:"Archivo",sans-serif;
  font-weight:800; text-transform:uppercase; letter-spacing:.02em; font-size:.95rem;
  padding:15px 26px; border-radius:12px; cursor:pointer; border:2px solid transparent;
  transition:transform .15s ease, background .15s ease, color .15s ease, border-color .15s ease;
}
.btn svg{width:19px; height:19px}
.btn-red{background:var(--red); color:#fff}
.btn-red:hover{background:var(--red-deep); transform:translateY(-2px)}
.btn-ghost{background:transparent; color:#fff; border-color:rgba(255,255,255,.32)}
.btn-ghost:hover{border-color:#fff; transform:translateY(-2px)}
.btn-dark{background:var(--ink); color:#fff}
.btn-dark:hover{background:#000; transform:translateY(-2px)}
.btn-outline{background:transparent; color:var(--ink); border-color:rgba(0,0,0,.22)}
.btn-outline:hover{border-color:var(--ink); transform:translateY(-2px)}

/* ---------- Notdienst Top-Strip ---------- */
.alarm{background:var(--ink); color:#fff; font-size:.84rem}
.alarm .wrap{display:flex; align-items:center; justify-content:space-between; gap:14px; padding:9px 22px}
.alarm .stripe-tag{display:inline-flex; align-items:center; gap:9px; font-weight:600}
.alarm .pulse{width:9px; height:9px; border-radius:50%; background:var(--red); box-shadow:0 0 0 0 rgba(229,51,28,.6); animation:pulse 2s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(229,51,28,.55)}70%{box-shadow:0 0 0 9px rgba(229,51,28,0)}100%{box-shadow:0 0 0 0 rgba(229,51,28,0)}}
@media (prefers-reduced-motion:reduce){.pulse{animation:none}}
.alarm a.tel{color:#fff; font-family:"Archivo"; font-weight:800; letter-spacing:.02em; white-space:nowrap}
.alarm a.tel:hover{color:var(--red)}
.alarm .hide-sm{color:rgba(255,255,255,.6)}
.alarm .alarm-tail{color:rgba(255,255,255,.6)}

/* ---------- Header ---------- */
.site-head{position:sticky; top:0; z-index:60; background:rgba(19,19,19,.96); backdrop-filter:blur(8px); border-bottom:1px solid var(--line-dark)}
.site-head .wrap{display:flex; align-items:center; justify-content:space-between; gap:18px; padding:13px 22px}
.brand img{height:46px; width:auto}
.nav{display:flex; align-items:center; gap:4px}
.nav a{
  color:#E8E6E3; font-family:"Inter"; font-weight:600; font-size:.93rem; padding:10px 14px; border-radius:9px;
  transition:color .15s, background .15s;
}
.nav a:hover{color:#fff; background:rgba(255,255,255,.07)}
.nav a.active{color:#fff}
.nav a.active::after{content:""; display:block; height:3px; background:var(--red); margin-top:5px; border-radius:2px}
.head-cta{display:flex; align-items:center; gap:12px}
.head-phone{display:inline-flex; align-items:center; gap:11px; color:#fff}
.head-phone .ic{width:42px; height:42px; border-radius:50%; background:var(--red); display:grid; place-items:center; flex:none}
.head-phone .ic svg{width:20px; height:20px; color:#fff}
.head-phone .meta{line-height:1.15}
.head-phone .meta b{font-family:"Archivo"; font-weight:800; font-size:1.02rem; display:block}
.head-phone .meta span{font-size:.72rem; color:rgba(255,255,255,.6); text-transform:uppercase; letter-spacing:.08em}
.burger{display:none; background:none; border:0; cursor:pointer; padding:8px; color:#fff}
.burger svg{width:30px; height:30px}

/* ---------- Sections ---------- */
section{position:relative}
.pad{padding:86px 0}
.pad-sm{padding:58px 0}
.dark{background:var(--ink); color:#fff}
.dark .lead, .dark p{color:rgba(255,255,255,.74)}
.paper{background:var(--paper)}
.sec-head{max-width:760px; margin-bottom:46px}
.sec-head h2{font-size:clamp(2rem,4.6vw,3.1rem); text-transform:uppercase; margin:16px 0 0}
.sec-head h2 .hl{color:var(--red)}
.lead{font-size:1.06rem; color:var(--txt-soft); margin-top:18px}

.stripe-rule{height:8px; background:var(--stripe); border-radius:4px}

/* ---------- Hero ---------- */
.hero{position:relative; background:var(--ink); color:#fff; overflow:hidden}
.hero .bg{position:absolute; inset:0; background-image:url("../img/hero-haus.jpg"); background-size:cover; background-position:center right}
.hero .scrim{position:absolute; inset:0; background:linear-gradient(95deg,var(--ink) 30%,rgba(19,19,19,.78) 50%,rgba(19,19,19,.28) 78%,rgba(19,19,19,.55) 100%)}
.hero .wrap{position:relative; padding-top:96px; padding-bottom:96px}
.hero-inner{max-width:640px}
.hero h1{font-family:"Archivo Black"; text-transform:uppercase; font-size:clamp(2.5rem,6.4vw,4.6rem); letter-spacing:-.02em; margin:18px 0 0}
.hero h1 .hl{color:var(--red)}
.hero .sub{font-size:1.15rem; color:rgba(255,255,255,.8); margin:22px 0 32px; max-width:520px}
.hero .cta-row{display:flex; flex-wrap:wrap; gap:14px}
.hero .loc{display:inline-flex; align-items:center; gap:9px; margin-top:30px; font-size:.92rem; color:rgba(255,255,255,.72)}
.hero .loc svg{width:18px; height:18px; color:var(--red)}

/* trust strip under hero */
.trust{background:var(--ink-2); border-top:1px solid var(--line-dark)}
.trust .wrap{display:grid; grid-template-columns:repeat(4,1fr); gap:0}
.trust .item{display:flex; align-items:center; gap:14px; padding:24px 22px; color:#fff; border-right:1px solid var(--line-dark)}
.trust .item:last-child{border-right:0}
.trust .item svg{width:30px; height:30px; color:var(--red); flex:none}
.trust .item b{font-family:"Archivo"; font-weight:800; text-transform:uppercase; font-size:.92rem; display:block; letter-spacing:.01em}
.trust .item span{font-size:.82rem; color:rgba(255,255,255,.6)}

/* ---------- Notfall band ---------- */
.notfall{background:var(--red); color:#fff; overflow:hidden; position:relative}
.notfall::before,.notfall::after{content:""; position:absolute; left:0; right:0; height:8px; background:var(--stripe); opacity:.9}
.notfall::before{top:0}
.notfall::after{bottom:0}
.notfall .wrap{display:flex; align-items:center; justify-content:space-between; gap:26px; flex-wrap:wrap; padding:34px 22px}
.notfall .nf-left{display:flex; align-items:center; gap:20px}
.notfall .ring{width:62px; height:62px; border-radius:50%; background:rgba(0,0,0,.18); display:grid; place-items:center; flex:none}
.notfall .ring svg{width:30px; height:30px; color:#fff}
.notfall .nf-left b{font-family:"Archivo Black"; text-transform:uppercase; font-size:1.25rem; display:block; line-height:1.1}
.notfall .nf-left span{font-size:.92rem; color:rgba(255,255,255,.85)}
.notfall .nf-num{font-family:"Archivo Black"; font-size:clamp(1.7rem,4.4vw,2.6rem); letter-spacing:.01em; color:#fff; white-space:nowrap}
.notfall .nf-num:hover{color:var(--ink)}

/* ---------- Service tiles ---------- */
.tiles{display:grid; grid-template-columns:repeat(3,1fr); gap:18px}
.tile{
  background:#fff; border:1px solid var(--line-light); border-radius:var(--r); padding:26px 24px;
  display:flex; gap:18px; align-items:flex-start; transition:transform .18s ease, box-shadow .18s ease, border-color .18s;
  position:relative; overflow:hidden;
}
.tile::before{content:""; position:absolute; left:0; top:0; bottom:0; width:4px; background:var(--red); transform:scaleY(0); transform-origin:top; transition:transform .2s ease}
.tile:hover{transform:translateY(-4px); box-shadow:var(--shadow); border-color:transparent}
.tile:hover::before{transform:scaleY(1)}
.tile .ic{width:54px; height:54px; border-radius:50%; border:2px solid var(--red); display:grid; place-items:center; flex:none}
.tile .ic svg{width:26px; height:26px; color:var(--red)}
.tile h3{font-family:"Archivo"; font-weight:800; text-transform:uppercase; font-size:1.04rem; letter-spacing:0}
.tile p{margin:7px 0 0; font-size:.9rem; color:var(--txt-soft); line-height:1.5}
.dark .tile{background:var(--ink-2); border-color:var(--line-dark)}
.dark .tile h3{color:#fff}
.dark .tile p{color:rgba(255,255,255,.62)}

.center-cta{text-align:center; margin-top:44px}

/* ---------- Split (about / image) ---------- */
.split{display:grid; grid-template-columns:1.05fr 1fr; gap:54px; align-items:center}
.split.rev{grid-template-columns:1fr 1.05fr}
.split .media{border-radius:var(--r); overflow:hidden; box-shadow:var(--shadow); position:relative}
.split .media img{width:100%; height:100%; object-fit:cover; min-height:340px}
.split .media .tagbox{position:absolute; left:18px; bottom:18px; background:var(--red); color:#fff; padding:14px 18px; border-radius:12px}
.split .media .tagbox b{font-family:"Archivo Black"; font-size:1.6rem; display:block; line-height:1}
.split .media .tagbox span{font-size:.78rem; text-transform:uppercase; letter-spacing:.08em}
.split h2{font-size:clamp(1.9rem,4vw,2.7rem); text-transform:uppercase; margin:16px 0 0}
.split p{margin-top:18px}
.checks{list-style:none; padding:0; margin:24px 0 30px; display:grid; gap:12px}
.checks li{display:flex; gap:12px; align-items:flex-start; font-weight:500}
.checks li svg{width:22px; height:22px; color:var(--red); flex:none; margin-top:2px}

/* ---------- Karriere band ---------- */
.career{position:relative; background:var(--ink); color:#fff; overflow:hidden}
.career .stripe-top{height:8px; background:var(--stripe)}
.career .grid{display:grid; grid-template-columns:1.1fr 1fr; gap:48px; align-items:center; padding:72px 0}
.career h2{font-size:clamp(2rem,4.4vw,3rem); text-transform:uppercase}
.career .badge{display:inline-flex; align-items:center; gap:10px; background:var(--red); color:#fff; font-family:"Archivo"; font-weight:800; text-transform:uppercase; font-size:.82rem; letter-spacing:.06em; padding:8px 16px; border-radius:50px}
.jobcard{background:var(--ink-2); border:1px solid var(--line-dark); border-radius:var(--r); padding:26px}
.jobcard h3{font-family:"Archivo"; font-weight:800; text-transform:uppercase; color:#fff; font-size:1.1rem}
.joblist{list-style:none; padding:0; margin:18px 0 0; display:grid; gap:12px}
.joblist li{display:flex; justify-content:space-between; align-items:center; gap:14px; padding:14px 16px; background:var(--ink-3); border-radius:11px; border:1px solid var(--line-dark)}
.joblist li b{font-family:"Archivo"; font-weight:700; color:#fff; font-size:.98rem}
.joblist li span{font-size:.8rem; color:rgba(255,255,255,.55)}
.joblist li a{color:var(--red); font-weight:700; font-size:.86rem; white-space:nowrap}
.joblist li a:hover{color:#fff}

/* ---------- Forms ---------- */
.formwrap{background:#fff; border:1px solid var(--line-light); border-radius:var(--r); padding:34px; box-shadow:var(--shadow)}
.dark .formwrap, .formwrap.on-dark{background:var(--ink-2); border-color:var(--line-dark); color:#fff}
.field{margin-bottom:18px}
.field label{display:block; font-weight:600; font-size:.86rem; margin-bottom:7px}
.field input,.field textarea,.field select{
  width:100%; padding:13px 15px; border-radius:10px; border:1.5px solid var(--line-light);
  font-family:"Inter"; font-size:1rem; background:#fff; color:var(--txt); transition:border-color .15s, box-shadow .15s;
}
.on-dark .field input,.on-dark .field textarea,.on-dark .field select,.dark .field input,.dark .field textarea,.dark .field select{
  background:var(--ink-3); border-color:var(--line-dark); color:#fff;
}
.field input:focus,.field textarea:focus,.field select:focus{outline:none; border-color:var(--red); box-shadow:0 0 0 3px rgba(229,51,28,.16)}
.field textarea{min-height:130px; resize:vertical}
.grid-2{display:grid; grid-template-columns:1fr 1fr; gap:18px}
.note-sm{font-size:.78rem; color:var(--txt-soft); margin-top:6px}
.on-dark .note-sm,.dark .note-sm{color:rgba(255,255,255,.5)}

/* contact info cards */
.info-cards{display:grid; gap:14px}
.info-card{display:flex; gap:16px; align-items:flex-start; padding:20px; border:1px solid var(--line-light); border-radius:13px; background:#fff}
.dark .info-card{background:var(--ink-2); border-color:var(--line-dark)}
.info-card .ic{width:46px; height:46px; border-radius:11px; background:var(--red); display:grid; place-items:center; flex:none}
.info-card .ic svg{width:22px; height:22px; color:#fff}
.info-card b{font-family:"Archivo"; font-weight:800; text-transform:uppercase; font-size:.82rem; letter-spacing:.04em; display:block; color:var(--steel)}
.dark .info-card b{color:rgba(255,255,255,.55)}
.info-card a,.info-card p{font-size:1.05rem; margin:4px 0 0; font-weight:600}
.dark .info-card a,.dark .info-card p{color:#fff}
.info-card a:hover{color:var(--red)}
.job-grid{display:grid; grid-template-columns:repeat(2,1fr); gap:14px}

/* ---------- Page hero (interior) ---------- */
.page-hero{background:var(--ink); color:#fff; position:relative; overflow:hidden}
.page-hero::after{content:""; position:absolute; left:0; right:0; bottom:0; height:8px; background:var(--stripe)}
.page-hero .wrap{padding:64px 22px 60px}
.page-hero h1{font-family:"Archivo Black"; text-transform:uppercase; font-size:clamp(2.2rem,5.4vw,3.6rem); margin:14px 0 0}
.page-hero h1 .hl{color:var(--red)}
.page-hero p{color:rgba(255,255,255,.72); max-width:640px; margin-top:16px}
.crumb{font-size:.82rem; color:rgba(255,255,255,.5)}
.crumb a:hover{color:var(--red)}

/* ---------- Legal / prose ---------- */
.prose{max-width:820px}
.prose h2{font-size:1.5rem; text-transform:uppercase; margin:38px 0 14px; color:var(--ink)}
.prose h3{font-size:1.12rem; margin:26px 0 10px; font-family:"Archivo"; font-weight:800}
.prose p{margin:0 0 14px; color:var(--txt-soft)}
.prose ul{color:var(--txt-soft); padding-left:20px}
.prose li{margin:7px 0}
.prose a{color:var(--red); font-weight:600}
.prose a:hover{text-decoration:underline}
.prose table{width:100%; border-collapse:collapse; margin:16px 0; font-size:.92rem}
.prose th,.prose td{text-align:left; padding:11px 13px; border:1px solid var(--line-light); vertical-align:top; overflow-wrap:break-word; word-break:break-word}
.prose th{background:var(--paper); font-family:"Archivo"; text-transform:uppercase; font-size:.78rem; letter-spacing:.04em}
.table-wrap{overflow-x:auto; -webkit-overflow-scrolling:touch; margin:16px 0}
.table-wrap table{margin:0; min-width:480px}
.callout{background:var(--red-soft); border-left:4px solid var(--red); padding:16px 18px; border-radius:8px; margin:18px 0; font-size:.92rem; color:#7a2117}

/* ---------- Footer ---------- */
.site-foot{background:#0D0D0D; color:rgba(255,255,255,.62); font-size:.92rem}
.foot-emergency{background:var(--red); color:#fff}
.foot-emergency .wrap{display:flex; align-items:center; justify-content:center; gap:16px; flex-wrap:wrap; padding:20px 22px; text-align:center}
.foot-emergency b{font-family:"Archivo Black"; text-transform:uppercase; font-size:1.05rem}
.foot-emergency a{font-family:"Archivo Black"; font-size:1.4rem; color:#fff}
.foot-emergency a:hover{color:var(--ink)}
.foot-main{padding:58px 0 28px}
.foot-grid{display:grid; grid-template-columns:1.4fr 1fr 1fr 1.2fr; gap:38px}
.foot-grid img{height:52px; margin-bottom:16px}
.foot-grid h4{font-family:"Archivo"; font-weight:800; text-transform:uppercase; color:#fff; font-size:.86rem; letter-spacing:.08em; margin-bottom:16px}
.foot-grid a{color:rgba(255,255,255,.62); display:block; padding:5px 0}
.foot-grid a:hover{color:#fff}
.foot-grid p{margin:0 0 8px}
.foot-bottom{border-top:1px solid rgba(255,255,255,.1); padding:20px 0; display:flex; justify-content:space-between; gap:14px; flex-wrap:wrap; font-size:.82rem; color:rgba(255,255,255,.4)}
.foot-bottom a:hover{color:#fff}

/* ---------- Floating mobile call ---------- */
.fab{position:fixed; right:18px; bottom:18px; z-index:70; width:60px; height:60px; border-radius:50%; background:var(--red); display:none; place-items:center; box-shadow:0 12px 28px -6px rgba(229,51,28,.6); animation:pulse 2.4s infinite}
.fab svg{width:26px; height:26px; color:#fff}

/* ---------- Cookie banner ---------- */
.cookie{position:fixed; left:18px; right:18px; bottom:18px; z-index:90; background:#fff; border:1px solid var(--line-light); border-radius:16px; box-shadow:0 24px 60px -18px rgba(0,0,0,.4); padding:22px 24px; max-width:560px; margin:0 auto; display:none}
.cookie.show{display:block}
.cookie h4{font-family:"Archivo"; font-weight:800; text-transform:uppercase; font-size:1.02rem; margin:0 0 8px}
.cookie p{font-size:.88rem; color:var(--txt-soft); margin:0 0 16px}
.cookie p a{color:var(--red); font-weight:600}
.cookie .row{display:flex; gap:10px; flex-wrap:wrap}
.cookie .btn{padding:12px 18px; font-size:.82rem}

/* ---------- Responsive ---------- */
@media (max-width:1180px){
  .tile{flex-direction:column; gap:16px}
}
@media (max-width:980px){
  .nav,.head-phone .meta{display:none}
  .burger{display:block}
  .head-phone .meta{display:none}
  .tiles{grid-template-columns:1fr 1fr}
  .trust .wrap{grid-template-columns:1fr 1fr}
  .trust .item:nth-child(2){border-right:0}
  .trust .item{border-bottom:1px solid var(--line-dark)}
  .split,.split.rev,.career .grid{grid-template-columns:1fr}
  .career .grid{padding:54px 0}
  .foot-grid{grid-template-columns:1fr 1fr}
  .fab{display:grid}
  /* mobile nav panel */
  .nav.open{display:flex; position:absolute; top:100%; left:0; right:0; flex-direction:column; align-items:stretch; background:var(--ink); border-bottom:1px solid var(--line-dark); padding:10px 16px 18px; gap:2px}
  .nav.open a{padding:14px 12px; border-radius:10px}
  .nav.open a.active::after{display:none}
  .nav.open a.active{background:rgba(229,51,28,.16); color:var(--red)}
}
@media (max-width:680px){
  body{font-size:16px}
  .pad{padding:56px 0}
  .pad-sm{padding:44px 0}
  .tiles{grid-template-columns:1fr}
  .tile{flex-direction:column; gap:14px; padding:22px 20px}
  .tile h3{font-size:.96rem; line-height:1.15}
  .tile p{font-size:.88rem}
  .grid-2{grid-template-columns:1fr}
  .job-grid{grid-template-columns:1fr}
  .alarm .hide-sm,.alarm .alarm-tail{display:none}
  .alarm .wrap{padding:8px 18px; font-size:.8rem}
  .foot-grid{grid-template-columns:1fr}
  .notfall .wrap{flex-direction:column; align-items:flex-start; gap:18px; padding:30px 20px}
  .notfall .nf-num{font-size:1.6rem; overflow-wrap:anywhere; white-space:normal}
  .hero .scrim{background:linear-gradient(180deg,rgba(19,19,19,.72) 0%,rgba(19,19,19,.84) 100%)}
  .hero .wrap{padding-top:56px; padding-bottom:60px}
  .hero .sub{font-size:1.04rem}
  .split{gap:30px}
  .split .media img{min-height:240px}
  .sec-head{margin-bottom:34px}
  .formwrap{padding:24px 20px}
  .info-card{padding:16px}
  .page-hero .wrap{padding:52px 20px 50px}
  .career .grid{padding:46px 0; gap:32px}
}
@media (max-width:480px){
  .brand img{height:40px}
  .head-phone .ic{width:38px; height:38px}
  .hero .cta-row{width:100%}
  .hero .cta-row .btn{flex:1 1 100%; justify-content:center}
  .btn{padding:14px 20px; font-size:.9rem}
  .foot-emergency .wrap{flex-direction:column; gap:6px}
  .foot-emergency a{font-size:1.2rem}
  .cookie{left:10px; right:10px; padding:18px 18px}
  .cookie .row .btn{flex:1 1 100%; justify-content:center}
}
@media (max-width:430px){
  .trust .wrap{grid-template-columns:1fr}
  .trust .item{border-right:0; border-bottom:1px solid var(--line-dark)}
  .trust .item:last-child{border-bottom:0}
}
