/* HomeLab CMS – Frontend Stylesheet */
/* Fonts: JetBrains Mono + Syne + Inter via Google Fonts */

:root {
  --bg:       #0a0c10;
  --bg2:      #0f1218;
  --bg3:      #161b24;
  --bg4:      #1c2333;
  --surface:  #1e2533;
  --surface2: #252d3d;
  --border:   rgba(99,179,255,.12);
  --border2:  rgba(99,179,255,.22);
  --accent:   #3b9eff;
  --accent2:  #00d4aa;
  --accent3:  #ff6b6b;
  --text:     #e8edf5;
  --text2:    #8b9ab3;
  --text3:    #5a6a82;
  --mono:     'JetBrains Mono', monospace;
  --sans:     'Syne', sans-serif;
  --body:     'Inter', sans-serif;
  --radius:   10px;
  --radius-lg:14px;
  --shadow:   0 4px 24px rgba(0,0,0,.4);
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--text);font-family:var(--body);font-size:15px;line-height:1.7;min-height:100vh}
img{max-width:100%;height:auto;display:block}
a{color:var(--accent);text-decoration:none;transition:color .18s}
a:hover{color:var(--accent2)}

/* ── Typography ──────────────────────────────────────────────────────────── */
h1,h2,h3,h4,h5{font-family:var(--sans);font-weight:700;letter-spacing:-.02em;line-height:1.2;color:var(--text)}
h1{font-size:clamp(1.8rem,5vw,2.8rem);font-weight:800}
h2{font-size:clamp(1.4rem,3vw,2rem)}
h3{font-size:1.25rem}
h4{font-size:1.05rem}
p{margin-bottom:1rem}

/* ── Scrollbar ───────────────────────────────────────────────────────────── */
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:var(--bg2)}
::-webkit-scrollbar-thumb{background:var(--surface2);border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:var(--text3)}

/* ── Layout ──────────────────────────────────────────────────────────────── */
.container{max-width:1060px;margin:0 auto;padding:0 24px}
.container-sm{max-width:760px;margin:0 auto;padding:0 24px}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}

/* ── Topbar ──────────────────────────────────────────────────────────────── */
#topbar{
  background:rgba(10,12,16,.94);
  backdrop-filter:blur(20px);
  -webkit-backdrop-filter:blur(20px);
  border-bottom:1px solid var(--border);
  position:sticky;top:0;z-index:200;
  height:62px;
}
.topbar-inner{
  display:flex;align-items:center;justify-content:space-between;
  height:100%;gap:8px;min-width:0;
}
.logo{
  font-family:var(--mono);font-size:17px;font-weight:700;
  color:var(--text);text-decoration:none;white-space:nowrap;
  display:flex;align-items:center;gap:6px;flex-shrink:0;
}
.logo-dot{width:7px;height:7px;background:var(--accent2);border-radius:50%;display:inline-block;margin:0 1px}

/* Main Nav */
#main-nav{display:flex;align-items:center;gap:2px;flex:1;padding-left:24px;flex-wrap:wrap}
#main-nav a{
  font-size:13px;font-weight:500;color:var(--text2);
  padding:6px 11px;border-radius:7px;transition:all .18s;white-space:nowrap;
}
#main-nav a:hover,#main-nav a.active{color:var(--text);background:var(--bg4)}
#main-nav a.active{color:var(--accent)}

/* Search */
.search-wrap{position:relative;display:flex;align-items:center}
.search-wrap svg{position:absolute;left:10px;pointer-events:none;opacity:.5}
.search-input{
  background:var(--bg3);border:1px solid var(--border);border-radius:8px;
  padding:7px 12px 7px 32px;font-size:13px;color:var(--text);width:200px;
  font-family:var(--body);outline:none;transition:border-color .18s,width .3s;
}
.search-input:focus{border-color:var(--border2);width:240px}
.search-input::placeholder{color:var(--text3)}
/* Mobile: Suche als Icon-Button (default hidden, shown on mobile) */
.search-icon-btn{
  display:none;background:none;border:none;cursor:pointer;
  padding:8px;color:var(--text2);border-radius:8px;transition:background .18s;
  align-items:center;justify-content:center;
}
.search-icon-btn:hover{background:var(--bg4)}
.search-icon-btn svg{display:block;flex-shrink:0}

/* Hamburger */
#hamburger{display:none;flex-direction:column;gap:5px;cursor:pointer;padding:6px;background:none;border:none}
#hamburger span{display:block;width:21px;height:2px;background:var(--text2);border-radius:2px;transition:.25s}
#hamburger.open span:nth-child(1){transform:rotate(45deg) translate(5px,5px)}
#hamburger.open span:nth-child(2){opacity:0}
#hamburger.open span:nth-child(3){transform:rotate(-45deg) translate(5px,-5px)}

/* Mobile nav */
#mobile-nav{
  display:none;background:var(--bg2);border-bottom:1px solid var(--border);
  padding:12px 24px 16px;
  position:sticky;top:62px;z-index:190;
}
#mobile-nav.open{display:block}
#mobile-nav a{display:block;padding:9px 12px;border-radius:7px;color:var(--text2);font-size:14px;transition:all .18s}
#mobile-nav a:hover{color:var(--text);background:var(--bg4)}

/* ── Breadcrumb ──────────────────────────────────────────────────────────── */
.breadcrumb{
  background:var(--bg2);border-bottom:1px solid var(--border);
  padding:8px 0;
  font-family:var(--mono);font-size:12px;color:var(--text3);
}
.breadcrumb-inner{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.breadcrumb a{color:var(--text3);transition:color .18s}
.breadcrumb a:hover{color:var(--accent)}
.breadcrumb .sep{color:var(--text3);opacity:.4}
.breadcrumb .current{color:var(--accent)}

/* ── Hero ────────────────────────────────────────────────────────────────── */
.hero{padding:56px 0 44px;position:relative;overflow:hidden}
.hero-tag{
  font-family:var(--mono);font-size:11px;color:var(--accent2);
  text-transform:uppercase;letter-spacing:.12em;margin-bottom:14px;
  display:flex;align-items:center;gap:8px;
}
.hero-tag::before{content:'';display:block;width:20px;height:1px;background:var(--accent2)}
.hero h1 em{
  font-style:normal;
  background:linear-gradient(90deg,var(--accent),var(--accent2));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
}
.hero p{font-size:16px;color:var(--text2);max-width:600px;line-height:1.75;margin-bottom:28px}
.hero-deco{
  position:absolute;right:-40px;top:-60px;width:400px;height:400px;
  opacity:.05;pointer-events:none;
}

/* Tags */
.tag-list{display:flex;flex-wrap:wrap;gap:8px}
.tag{
  font-family:var(--mono);font-size:11px;padding:4px 10px;
  border-radius:4px;border:1px solid;letter-spacing:.04em;cursor:default;transition:all .18s;
}
.tag:hover{transform:translateY(-1px)}
.tag-blue{color:var(--accent);border-color:rgba(59,158,255,.25);background:rgba(59,158,255,.06)}
.tag-green{color:var(--accent2);border-color:rgba(0,212,170,.25);background:rgba(0,212,170,.06)}
.tag-red{color:#ff6b9d;border-color:rgba(255,107,157,.25);background:rgba(255,107,157,.06)}

/* Stats */
.stats-bar{
  display:flex;flex-wrap:wrap;border:1px solid var(--border);border-radius:var(--radius);
  overflow:hidden;background:var(--bg3);margin-top:32px;width:100%;max-width:520px;
}
.stat{
  padding:14px 20px;text-align:center;border-right:1px solid var(--border);
  flex:1;min-width:120px;
}
.stat:last-child{border-right:none}
.stat-num{font-family:var(--mono);font-size:22px;font-weight:700;color:var(--accent);line-height:1;margin-bottom:4px}
.stat-label{font-size:11px;color:var(--text3);letter-spacing:.05em;text-transform:uppercase}

/* ── Section headers ─────────────────────────────────────────────────────── */
.section-head{display:flex;align-items:center;gap:14px;margin-bottom:24px}
.section-head h2{
  font-family:var(--sans);font-size:12px;font-weight:600;
  text-transform:uppercase;letter-spacing:.1em;color:var(--text2);white-space:nowrap;
}
.section-head::after{content:'';flex:1;height:1px;background:var(--border)}

/* ── Post cards ──────────────────────────────────────────────────────────── */
.post-card{
  background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius-lg);
  overflow:hidden;display:flex;flex-direction:column;transition:border-color .2s,transform .2s;
  cursor:pointer;
}
.post-card:hover{border-color:var(--border2);transform:translateY(-2px)}
.post-card a{text-decoration:none;color:inherit}
/* Featured card vollständig klickbar */
.featured-card{cursor:pointer}

.card-thumb{
  aspect-ratio:16/9;background:var(--bg4);overflow:hidden;position:relative;
}
.card-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .4s}
.post-card:hover .card-thumb img{transform:scale(1.04)}
.thumb-placeholder{
  width:100%;height:100%;display:flex;align-items:center;justify-content:center;
  font-size:3rem;background:linear-gradient(135deg,var(--bg4),var(--surface));
}

.card-body{padding:18px;flex:1;display:flex;flex-direction:column}
.post-meta{display:flex;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap}
.cat-badge{
  font-family:var(--mono);font-size:10px;font-weight:700;
  text-transform:uppercase;letter-spacing:.08em;
  padding:3px 8px;border-radius:4px;border:1px solid;
}
.post-date{font-size:12px;color:var(--text3);font-family:var(--mono)}
.post-read{font-size:12px;color:var(--text3)}

.card-body h3,.card-body h2{
  font-family:var(--sans);font-size:16px;font-weight:700;
  color:var(--text);margin-bottom:8px;line-height:1.35;
  transition:color .18s;
}
.post-card:hover .card-body h3,.post-card:hover .card-body h2{color:var(--accent)}
.card-excerpt{font-size:13px;color:var(--text2);line-height:1.65;flex:1}

.card-footer{
  padding:11px 18px;border-top:1px solid var(--border);
  display:flex;justify-content:space-between;align-items:center;
  font-family:var(--mono);font-size:11px;color:var(--text3);
}
.views-count{display:flex;align-items:center;gap:5px}

/* Featured card */
.featured-card{
  background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius-lg);
  overflow:hidden;display:grid;grid-template-columns:1fr 380px;
  transition:border-color .2s;
}
.featured-card:hover{border-color:var(--border2)}
.featured-img{
  background:var(--bg4);overflow:hidden;position:relative;
  /* Feste Höhe – egal ob quer oder hochkant, immer gleiches Format */
  height:260px;min-height:unset;
}
.featured-img img{
  width:100%;height:100%;
  object-fit:cover;object-position:center 30%;
  transition:transform .5s;display:block;
}
.featured-card:hover .featured-img img{transform:scale(1.03)}
.featured-body{padding:32px 28px;display:flex;flex-direction:column;justify-content:space-between}
.featured-body h2{font-size:22px;margin-bottom:12px}
.featured-body .excerpt{font-size:14px;color:var(--text2);line-height:1.75;margin-bottom:20px}

.read-more{
  display:inline-flex;align-items:center;gap:6px;
  font-family:var(--mono);font-size:12px;color:var(--accent);letter-spacing:.04em;
  transition:gap .18s;text-decoration:none;
}
.read-more:hover{gap:10px;color:var(--accent2)}
.read-more .arr{transition:transform .18s}
.read-more:hover .arr{transform:translateX(3px)}

/* ── Single post ─────────────────────────────────────────────────────────── */
.post-header{padding:44px 0 32px}
.post-header h1{margin-bottom:16px}
.post-header .meta{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:20px}
.post-header .meta span{font-size:13px;color:var(--text3);font-family:var(--mono)}
.post-header .meta a{color:var(--text2)}
.post-header .meta a:hover{color:var(--accent)}

.post-featured-img{
  width:100%;max-height:460px;object-fit:cover;border-radius:var(--radius-lg);
  border:1px solid var(--border);margin-bottom:40px;
}

.post-content{font-size:16px;line-height:1.85;color:var(--text)}
.post-content h2{margin:2.2rem 0 .9rem}
.post-content h3{margin:1.8rem 0 .8rem}
.post-content p{margin-bottom:1.2rem}
.post-content img{border-radius:var(--radius);border:1px solid var(--border);margin:1.5rem auto}
.post-content a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}
.post-content ul,.post-content ol{padding-left:1.8rem;margin-bottom:1.2rem}
.post-content li{margin-bottom:.4rem}
.post-content blockquote{
  border-left:3px solid var(--accent);padding:1rem 1.2rem;
  background:var(--bg3);border-radius:0 var(--radius) var(--radius) 0;
  margin:1.5rem 0;color:var(--text2);font-style:italic;
}
.post-content pre{
  background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius);
  padding:1.2rem;overflow-x:auto;margin:1.5rem 0;
  font-family:var(--mono);font-size:13px;line-height:1.6;color:#e8edf5;
}
.post-content code{
  font-family:var(--mono);font-size:.875em;
  background:var(--bg3);border:1px solid var(--border);
  padding:2px 6px;border-radius:4px;color:var(--accent2);
}
.post-content pre code{background:none;border:none;padding:0;color:inherit}
.post-content table{width:100%;border-collapse:collapse;margin:1.5rem 0;font-size:14px}
.post-content th{background:var(--bg3);padding:10px 14px;text-align:left;border-bottom:1px solid var(--border);font-family:var(--mono);font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--text2)}
.post-content td{padding:10px 14px;border-bottom:1px solid var(--border)}
.post-content tr:last-child td{border-bottom:none}
.post-content hr{border:none;border-top:1px solid var(--border);margin:2rem 0}

/* Post tags */
.post-tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:32px;padding-top:24px;border-top:1px solid var(--border)}
.post-tag{
  font-family:var(--mono);font-size:11px;color:var(--text3);
  border:1px solid var(--border);border-radius:4px;padding:4px 10px;
  transition:all .18s;
}
.post-tag:hover{color:var(--accent);border-color:rgba(59,158,255,.3);background:rgba(59,158,255,.06)}

/* Author box */
.author-box{
  background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius-lg);
  padding:24px;display:flex;gap:20px;align-items:flex-start;margin-top:40px;
}
.author-avatar{
  width:60px;height:60px;border-radius:50%;flex-shrink:0;
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  display:flex;align-items:center;justify-content:center;
  font-family:var(--mono);font-size:20px;font-weight:700;color:#fff;
}
.author-info h4{font-size:15px;margin-bottom:4px}
.author-info p{font-size:13px;color:var(--text2);margin:0}

/* ── Comments ─────────────────────────────────────────────────────────────── */
.comments-section{margin-top:48px}
.comments-section h3{font-size:18px;margin-bottom:24px;padding-bottom:12px;border-bottom:1px solid var(--border)}

.comment{
  background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius);
  padding:18px;margin-bottom:14px;
}
.comment-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:10px}
.comment-author{font-weight:600;font-size:14px}
.comment-date{font-family:var(--mono);font-size:11px;color:var(--text3)}
.comment-body{font-size:14px;color:var(--text2);line-height:1.7}

.comment-form input,.comment-form textarea,.comment-form select{
  width:100%;background:var(--bg3);border:1px solid var(--border);
  border-radius:var(--radius);padding:10px 14px;font-size:14px;
  color:var(--text);font-family:var(--body);outline:none;
  transition:border-color .18s;
}
.comment-form input:focus,.comment-form textarea:focus{border-color:var(--border2)}
.comment-form textarea{resize:vertical;min-height:120px}
.comment-form label{display:block;font-size:13px;color:var(--text2);margin-bottom:6px;font-weight:500}
.form-group{margin-bottom:16px}

/* ── Sidebar ─────────────────────────────────────────────────────────────── */
.sidebar-widget{
  background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius-lg);
  padding:20px;margin-bottom:20px;
}
.sidebar-widget h3{
  font-family:var(--mono);font-size:11px;text-transform:uppercase;
  letter-spacing:.1em;color:var(--text3);margin-bottom:14px;
}
.widget-post-list{list-style:none}
.widget-post-list li{padding:9px 0;border-bottom:1px solid var(--border)}
.widget-post-list li:last-child{border-bottom:none}
.widget-post-list a{font-size:13px;color:var(--text2);font-weight:500;transition:color .18s}
.widget-post-list a:hover{color:var(--accent)}
.widget-post-list .wdate{font-family:var(--mono);font-size:10px;color:var(--text3);display:block;margin-top:2px}

.cat-list{list-style:none}
.cat-list li{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--border)}
.cat-list li:last-child{border-bottom:none}
.cat-list a{font-size:13px;color:var(--text2);transition:color .18s;display:flex;align-items:center;gap:8px}
.cat-list a:hover{color:var(--accent)}
.cat-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.cat-count{font-family:var(--mono);font-size:11px;color:var(--text3)}

/* ── Pagination ──────────────────────────────────────────────────────────── */
.pagination{display:flex;justify-content:center;gap:8px;margin:40px 0;flex-wrap:wrap}
.page-btn{
  font-family:var(--mono);font-size:13px;padding:8px 14px;
  background:var(--bg3);border:1px solid var(--border);border-radius:8px;
  color:var(--text2);text-decoration:none;transition:all .18s;
}
.page-btn:hover,.page-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}
.page-btn.disabled{opacity:.4;pointer-events:none}

/* ── Buttons ─────────────────────────────────────────────────────────────── */
.btn{
  display:inline-flex;align-items:center;gap:8px;padding:10px 20px;
  border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;
  transition:all .18s;text-decoration:none;border:1px solid;font-family:var(--body);
}
.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn-primary:hover{background:#2d8fe6;border-color:#2d8fe6;color:#fff}
.btn-outline{background:transparent;border-color:var(--border2);color:var(--text2)}
.btn-outline:hover{background:var(--bg4);color:var(--text);border-color:var(--border2)}
.btn-sm{padding:7px 14px;font-size:13px}

/* ── Footer ──────────────────────────────────────────────────────────────── */
#footer{background:var(--bg2);border-top:1px solid var(--border);padding:40px 0 24px;margin-top:60px}
.footer-grid{display:grid;grid-template-columns:2fr 1fr;gap:40px;margin-bottom:32px}
.footer-brand .logo{font-size:15px;margin-bottom:10px;display:inline-flex}
.footer-brand p{font-size:13px;color:var(--text3);line-height:1.7;max-width:280px}
.footer-col h4{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--text3);margin-bottom:12px}
.footer-col ul{list-style:none}
.footer-col li{margin-bottom:8px}
.footer-col a{font-size:13px;color:var(--text2);transition:color .18s}
.footer-col a:hover{color:var(--accent)}
.footer-bottom{
  border-top:1px solid var(--border);padding-top:20px;
  display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;
}
.footer-bottom p{font-size:12px;color:var(--text3);font-family:var(--mono)}
.footer-social{display:flex;gap:10px}
.social-link{
  width:36px;height:36px;border-radius:8px;background:var(--bg4);border:1px solid var(--border);
  display:flex;align-items:center;justify-content:center;
  color:var(--text3);transition:all .18s;text-decoration:none;
  flex-shrink:0;
}
.social-link svg{width:16px;height:16px;fill:currentColor;flex-shrink:0}
.social-link:hover{background:var(--surface2);color:var(--accent);border-color:rgba(59,158,255,.3)}
.social-link:hover svg{fill:var(--accent)}

/* ── Alerts & Flash ──────────────────────────────────────────────────────── */
.alert{padding:12px 16px;border-radius:var(--radius);border:1px solid;font-size:14px;margin-bottom:16px;display:flex;gap:10px;align-items:flex-start}
.alert-success{background:rgba(0,212,170,.08);border-color:rgba(0,212,170,.25);color:var(--accent2)}
.alert-error{background:rgba(255,107,107,.08);border-color:rgba(255,107,107,.25);color:var(--accent3)}
.alert-info{background:rgba(59,158,255,.08);border-color:rgba(59,158,255,.25);color:var(--accent)}
.alert-warning{background:rgba(255,159,67,.08);border-color:rgba(255,159,67,.25);color:#ff9f43}

/* ── 404 ─────────────────────────────────────────────────────────────────── */
.error-page{text-align:center;padding:80px 24px}
.error-code{font-family:var(--mono);font-size:100px;font-weight:700;color:var(--border);line-height:1;margin-bottom:16px}
.error-page h2{font-size:28px;margin-bottom:12px}
.error-page p{color:var(--text2);margin-bottom:28px}

/* ── Search ──────────────────────────────────────────────────────────────── */
.search-page-form{display:flex;gap:10px;max-width:500px;margin:0 auto 40px}
.search-page-form input{flex:1}

/* ── Responsive ──────────────────────────────────────────────────────────── */
@media(max-width:900px){
  .featured-card{grid-template-columns:1fr}
  .featured-img{min-height:200px}
  .grid-3{grid-template-columns:repeat(2,1fr)}
  .footer-grid{grid-template-columns:1fr 1fr}
  #main-nav{display:none}
  #hamburger{display:flex}
  /* Sidebar unter Content auf Tablet/Mobile */
  .content-with-sidebar{grid-template-columns:1fr !important}
}
@media(max-width:640px){
  .grid-2,.grid-3{grid-template-columns:1fr}
  .container,.container-sm{padding:0 16px}
  .hero{padding:36px 0 28px}
  .stats-bar{max-width:100%;width:100%}
  .stat{
    flex:1 1 calc(50% - 1px);
    min-width:0;
    border-bottom:1px solid var(--border);
  }
  /* 2x2 Grid: obere Reihe behält border-right, untere nicht */
  .stat:nth-child(even){border-right:none}
  .stat:nth-last-child(-n+2){border-bottom:none}
  .footer-grid{grid-template-columns:1fr}
  .topbar-inner{gap:6px}
  /* Suche: ganzes search-wrap ausblenden, nur Icon-Button zeigen */
  .search-wrap{display:none !important}
  .search-icon-btn{display:flex !important}
  /* Logo kleiner */
  .logo{font-size:14px}
}

/* ── Scroll-to-top ──────────────────────────────────────────────────────── */
#scroll-top{
  position:fixed;bottom:24px;right:24px;z-index:300;
  width:42px;height:42px;border-radius:50%;
  background:var(--bg3);border:1px solid var(--border);
  color:var(--text2);font-size:18px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  opacity:0;pointer-events:none;
  transition:opacity .25s,background .18s,border-color .18s,transform .18s;
  box-shadow:0 4px 16px rgba(0,0,0,.3);
}
#scroll-top.visible{opacity:1;pointer-events:auto}
#scroll-top:hover{background:var(--accent);border-color:var(--accent);color:#fff;transform:translateY(-2px)}

/* ── Custom CSS injection (from settings) ────────────────────────────────── */

/* ── Galerie Embed (Shortcode) ───────────────────────────────────────────── */
.gallery-embed{margin:1.5rem 0}
.gallery-embed-grid{
  display:grid;
  grid-template-columns:repeat(var(--cols,4),1fr);
  gap:6px;
  border-radius:var(--radius);
  overflow:hidden;
}
.gallery-embed-thumb{
  margin:0;position:relative;overflow:hidden;cursor:pointer;
  aspect-ratio:1;background:var(--bg4);
}
.gallery-embed-thumb img{
  width:100%;height:100%;object-fit:cover;
  transition:transform .35s,filter .35s;display:block;
}
.gallery-embed-thumb:hover img{transform:scale(1.06);filter:brightness(1.1)}
.gallery-embed-thumb figcaption{
  position:absolute;bottom:0;left:0;right:0;
  background:linear-gradient(transparent,rgba(0,0,0,.7));
  color:#fff;font-size:11px;padding:16px 8px 6px;
  opacity:0;transition:opacity .2s;
}
.gallery-embed-thumb:hover figcaption{opacity:1}
.gallery-embed-footer{
  margin-top:10px;text-align:right;
}
.gallery-embed-link{
  font-family:var(--mono);font-size:12px;color:var(--text3);
  text-decoration:none;transition:color .18s;letter-spacing:.02em;
}
.gallery-embed-link:hover{color:var(--accent)}

/* ── Lightbox ────────────────────────────────────────────────────────────── */
.lb-bg{
  display:none;position:fixed;inset:0;background:rgba(0,0,0,.92);
  z-index:1000;align-items:center;justify-content:center;
}
.lb-bg.open{display:flex}
.lb-inner{
  position:relative;max-width:92vw;max-height:92vh;
  display:flex;flex-direction:column;align-items:center;
}
.lb-img{
  max-width:92vw;max-height:80vh;object-fit:contain;
  border-radius:var(--radius);display:block;
}
.lb-caption{
  color:rgba(255,255,255,.7);font-size:13px;margin-top:10px;
  text-align:center;max-width:600px;line-height:1.5;min-height:1.2em;
}
.lb-counter{
  font-family:var(--mono);font-size:11px;color:rgba(255,255,255,.4);
  margin-top:6px;
}
.lb-close{
  position:fixed;top:20px;right:24px;
  background:rgba(255,255,255,.1);border:none;border-radius:50%;
  width:40px;height:40px;color:#fff;font-size:22px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:background .18s;line-height:1;
}
.lb-close:hover{background:rgba(255,255,255,.2)}
.lb-prev,.lb-next{
  position:fixed;top:50%;transform:translateY(-50%);
  background:rgba(255,255,255,.1);border:none;border-radius:50%;
  width:46px;height:46px;color:#fff;font-size:22px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:background .18s;
}
.lb-prev{left:16px}.lb-next{right:16px}
.lb-prev:hover,.lb-next:hover{background:rgba(255,255,255,.2)}
@media(max-width:640px){
  .gallery-embed-grid{grid-template-columns:repeat(min(var(--cols,4),3),1fr)}
  .lb-prev{left:6px}.lb-next{right:6px}
}

/* ── Galerie-Seite (öffentlich) ──────────────────────────────────────────── */
.gallery-page-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(220px,1fr));
  gap:8px;
}
.gallery-page-thumb{
  margin:0;position:relative;overflow:hidden;
  border-radius:var(--radius);cursor:pointer;
  aspect-ratio:4/3;background:var(--bg4);
}
.gallery-page-thumb img{
  width:100%;height:100%;object-fit:cover;
  transition:transform .35s,filter .35s;display:block;
}
.gallery-page-thumb:hover img{transform:scale(1.05);filter:brightness(1.1)}
.gallery-page-thumb figcaption{
  position:absolute;bottom:0;left:0;right:0;
  background:linear-gradient(transparent,rgba(0,0,0,.75));
  color:#fff;font-size:12px;padding:20px 10px 8px;
  opacity:0;transition:opacity .2s;
}
.gallery-page-thumb:hover figcaption{opacity:1}

/* ── Twitch Widget ───────────────────────────────────────────────────────── */
.twitch-widget{border-radius:var(--radius);overflow:hidden;border:1px solid var(--border)}
.twitch-thumb-wrap{
  display:block;position:relative;aspect-ratio:16/9;
  background:var(--bg4);overflow:hidden;text-decoration:none;
}
.twitch-thumb-wrap img{
  width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .35s,filter .35s;
}
.twitch-thumb-wrap:hover img{transform:scale(1.04);filter:brightness(1.1)}
.twitch-overlay{
  position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:6px;
  background:rgba(0,0,0,.3);transition:background .2s;
}
.twitch-thumb-wrap:hover .twitch-overlay{background:rgba(0,0,0,.15)}
.twitch-live-dot{
  display:block;width:8px;height:8px;border-radius:50%;
  background:#f00;box-shadow:0 0 6px #f006;
  animation:twitch-pulse 1.8s ease-in-out infinite;
  position:absolute;top:8px;left:10px;
}
@keyframes twitch-pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.3)}}
.twitch-play{
  font-size:28px;color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.6);
  transition:transform .2s;
}
.twitch-thumb-wrap:hover .twitch-play{transform:scale(1.15)}

/* Offline-Zustand */
.twitch-thumb-wrap.twitch-offline img{display:none}
.twitch-thumb-wrap.twitch-offline .twitch-overlay{display:none}
.twitch-offline-msg{
  display:none;position:absolute;inset:0;
  align-items:center;justify-content:center;
  font-size:12px;color:var(--text3);font-family:var(--mono);
  background:var(--bg4);
}
.twitch-thumb-wrap.twitch-offline .twitch-offline-msg{display:flex}
.twitch-thumb-wrap.twitch-offline .twitch-live-dot{display:none}

.twitch-meta{
  display:flex;align-items:center;gap:8px;
  padding:8px 10px;background:var(--bg3);
  border-top:1px solid var(--border);
}

/* ── Light Mode ──────────────────────────────────────────────────────────── */
[data-theme="light"] {
  --bg:      #f5f6f8;
  --bg2:     #eef0f3;
  --bg3:     #ffffff;
  --bg4:     #e8eaee;
  --surface2:#dde0e6;
  --border:  rgba(0,0,0,.10);
  --border2: rgba(0,0,0,.20);
  --text:    #1a1e26;
  --text2:   #4a5568;
  --text3:   #8a96a8;
  --accent:  #1a7fd4;
  --accent2: #00a884;
  --red:     #dc2626;
}
[data-theme="light"] #topbar {
  background: rgba(245,246,248,.94);
}
[data-theme="light"] .sidebar-widget,
[data-theme="light"] .post-card,
[data-theme="light"] .featured-card {
  box-shadow: 0 1px 4px rgba(0,0,0,.06);
}
[data-theme="light"] code,
[data-theme="light"] pre {
  background: #f0f2f5;
}

/* ── Lesefortschritt ─────────────────────────────────────────────────────── */
#read-progress {
  position: fixed;
  top: 0; left: 0;
  height: 2px;
  width: 0%;
  background: linear-gradient(90deg, var(--accent), var(--accent2));
  z-index: 9999;
  transition: width .1s linear;
  pointer-events: none;
}

/* ── Code Syntax Highlighting (Highlight.js Overrides) ───────────────────── */
.hljs {
  background: var(--bg4) !important;
  border-radius: var(--radius);
  padding: 1.1em 1.3em !important;
  font-size: 13px;
  line-height: 1.65;
  border: 1px solid var(--border);
  overflow-x: auto;
}
/* Inline code */
.post-content code:not(.hljs) {
  font-family: var(--mono);
  font-size: .875em;
  background: var(--bg4);
  border: 1px solid var(--border);
  border-radius: 4px;
  padding: 2px 6px;
  color: var(--accent2);
}
.status-page-link{display:block;margin-top:12px;font-family:var(--mono);font-size:11px;color:var(--text3);text-decoration:none;transition:color .18s}
.status-page-link:hover{color:var(--accent)}

/* ── PV Produktions-Widget ───────────────────────────────────────────────── */
.pv-widget-inner{display:flex;flex-direction:column;gap:10px}
.pv-current{display:flex;align-items:center;justify-content:space-between}
.pv-main-label{font-family:var(--mono);font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.08em;margin-bottom:2px}
.pv-value-wrap{display:flex;align-items:baseline;gap:5px}
.pv-value{font-family:var(--mono);font-size:2.2rem;font-weight:700;color:var(--accent2);line-height:1;transition:color .4s}
.pv-value.offline{color:var(--text3)}
.pv-unit{font-family:var(--mono);font-size:13px;color:var(--text3)}
.pv-status-dot{width:10px;height:10px;border-radius:50%;background:var(--text3);flex-shrink:0;transition:all .4s}
.pv-status-dot.live{background:#f59e0b;box-shadow:0 0 8px rgba(245,158,11,.5);animation:pv-pulse 2s ease-in-out infinite}
.pv-status-dot.peak{background:var(--accent2);box-shadow:0 0 8px rgba(0,212,170,.5)}
@keyframes pv-pulse{0%,100%{opacity:1}50%{opacity:.4}}
.pv-bar-wrap{display:flex;flex-direction:column;gap:4px}
.pv-bar{height:5px;background:var(--bg4);border-radius:3px;overflow:hidden;border:1px solid var(--border)}
.pv-bar-fill{height:100%;border-radius:3px;background:linear-gradient(90deg,#f59e0b,var(--accent2));transition:width .9s cubic-bezier(.4,0,.2,1)}
.pv-bar-labels{display:flex;justify-content:space-between;font-family:var(--mono);font-size:10px;color:var(--text3)}
.pv-graph-wrap{background:var(--bg4);border-radius:var(--radius);padding:8px 8px 4px;border:1px solid var(--border)}
.pv-graph-range{display:flex;gap:4px;margin-top:5px}
.pv-range-btn{
  background:none;border:1px solid var(--border);border-radius:4px;
  font-family:var(--mono);font-size:10px;color:var(--text3);
  padding:2px 7px;cursor:pointer;transition:all .15s;
}
.pv-range-btn:hover{border-color:var(--border2);color:var(--text2)}
.pv-range-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}
.pv-graph-line{fill:none;stroke:var(--accent2);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.pv-graph-area{opacity:1}
.pv-stats{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.pv-stat{
  background:var(--bg4);border:1px solid var(--border);border-radius:7px;
  padding:7px 9px;display:flex;flex-direction:column;gap:1px;
}
.pv-stat-icon{font-size:13px;line-height:1}
.pv-stat-label{font-family:var(--mono);font-size:9px;color:var(--text3);text-transform:uppercase;letter-spacing:.06em;margin-top:2px}
.pv-stat-val{font-family:var(--mono);font-size:13px;font-weight:700;color:var(--text)}
.pv-footer{font-family:var(--mono);font-size:10px;color:var(--text3);text-align:right;margin-top:2px}

/* ── Video Embeds (YouTube / Twitch Shortcodes) ──────────────────────────── */
.video-embed-wrap {
  position: relative;
  padding-bottom: 56.25%; /* 16:9 */
  height: 0;
  overflow: hidden;
  border-radius: var(--radius);
  margin: 1.5rem 0;
  background: var(--bg4);
  border: 1px solid var(--border);
}
.video-embed-wrap iframe {
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 100%;
  border: none;
  border-radius: var(--radius);
}

/* ── MotionEye Kamera-Widget ─────────────────────────────────────────────── */
.cam-widget { position: relative; }
.cam-viewport {
  position: relative;
  background: #000;
  border-radius: var(--radius);
  overflow: hidden;
  aspect-ratio: 16/9;
}
.cam-img {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
  transition: opacity .2s;
}
.cam-img.loading { opacity: .5; }
.cam-overlay {
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  background: rgba(0,0,0,.5);
  color: #fff; font-size: 12px; font-family: var(--mono);
  opacity: 0; transition: opacity .2s; pointer-events: none;
}
.cam-viewport:hover .cam-overlay { opacity: 1; }
.cam-live-dot {
  position: absolute; top: 8px; left: 8px;
  width: 8px; height: 8px; border-radius: 50%;
  background: #f00; box-shadow: 0 0 6px #f006;
  animation: pv-pulse 2s ease-in-out infinite;
}
.cam-controls {
  display: flex; align-items: center; justify-content: space-between;
  margin-top: 8px; gap: 8px;
}
.cam-name {
  font-family: var(--mono); font-size: 12px;
  color: var(--text2); flex: 1;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.cam-nav {
  display: flex; gap: 4px;
}
.cam-btn {
  background: var(--bg4); border: 1px solid var(--border);
  border-radius: 5px; color: var(--text2);
  font-size: 13px; padding: 4px 9px; cursor: pointer;
  transition: all .18s; line-height: 1;
}
.cam-btn:hover { background: var(--surface2); color: var(--text); }
.cam-dots {
  display: flex; gap: 4px; justify-content: center; margin-top: 6px;
}
.cam-dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--border); cursor: pointer; transition: background .18s;
  border: none; padding: 0;
}
.cam-dot.active { background: var(--accent); }

/* Fullscreen Modal */
.cam-modal-bg {
  display: none; position: fixed; inset: 0;
  background: rgba(0,0,0,.9); z-index: 900;
  align-items: center; justify-content: center;
}
.cam-modal-bg.open { display: flex; }
.cam-modal-inner {
  position: relative; max-width: 92vw; max-height: 92vh;
  display: flex; flex-direction: column; gap: 10px;
}
.cam-modal-stream {
  width: min(90vw, 1280px);
  aspect-ratio: 16/9;
  background: #000; border-radius: var(--radius); overflow: hidden;
}
.cam-modal-stream img,
.cam-modal-stream iframe {
  width: 100%; height: 100%; object-fit: contain; border: none;
}
.cam-modal-close {
  position: absolute; top: -40px; right: 0;
  background: rgba(255,255,255,.1); border: none;
  border-radius: 50%; width: 32px; height: 32px;
  color: #fff; font-size: 18px; cursor: pointer; line-height: 1;
  display: flex; align-items: center; justify-content: center;
}
.cam-modal-label {
  font-family: var(--mono); font-size: 12px;
  color: rgba(255,255,255,.6); text-align: center;
}
