@font-face{font-family:"Atkinson";src:url(/fonts/text-400.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Atkinson";src:url(/fonts/text-700.woff2) format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:"DMMono";src:url(/fonts/mono-400.woff2) format("woff2");font-weight:400;font-display:swap}
:root{--bg:#f3f4fa;--paper:#fff;--ink:#14172b;--soft:#4f5472;--line:#d5d8ec;--blue:#2b3fd0;--blue-d:#1d2c9a;--tint:#e6e9fb;--bad:#b83a0a;--bad-t:#fbe9e1;--warn:#8a5b00;--good:#1d2c9a;--focus:#c2410c}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:400 1.125rem/1.6 "Atkinson",system-ui,sans-serif;border-top:5px solid var(--blue)}
a{color:var(--blue);text-underline-offset:.2em}a:hover{color:var(--ink)}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.wrap{max-width:70rem;margin:0 auto;padding:0 1.25rem}
.skip{position:absolute;left:-999px}.skip:focus{left:1rem;top:1rem;background:var(--paper);padding:.5rem 1rem;z-index:9}
header.top .wrap{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.4rem 2rem;padding-top:1rem;padding-bottom:1rem}
.brand{display:flex;align-items:center;gap:.55rem;font-weight:700;font-size:1.25rem;color:var(--ink);text-decoration:none;letter-spacing:-.01em}
.brand svg{width:1.7rem;height:1.7rem}
nav.main ul{list-style:none;display:flex;flex-wrap:wrap;gap:.3rem;margin:0;padding:0}
nav.main a{display:block;padding:.35rem .8rem;border-radius:2rem;color:var(--ink);text-decoration:none;font-weight:700;font-size:1rem}
nav.main a:hover{background:var(--tint)}nav.main a[aria-current]{background:var(--blue);color:#fff}
h1,h2,h3{line-height:1.15;letter-spacing:-.02em;margin:0;font-weight:700}
h1{font-size:clamp(2.1rem,5vw,3.4rem);max-width:15ch}
h2{font-size:1.7rem;margin:3rem 0 .7rem}h3{font-size:1.2rem;margin:1.6rem 0 .4rem}
p,ul,ol{margin:.8rem 0}
.prose{max-width:41rem}.prose li{margin:.4rem 0}
.lead{font-size:1.25rem;color:var(--soft);max-width:36rem}
main{padding-bottom:4rem}
.mono,code,pre{font-family:"DMMono",ui-monospace,monospace;font-size:.86em}
code{background:var(--tint);padding:.05em .35em;border-radius:4px}
pre{background:#10132a;color:#dfe3ff;padding:1rem 1.2rem;overflow:auto;max-height:28rem;line-height:1.5;border-radius:8px}
pre code{background:none;padding:0}
/* Hero mit zwei Schichten */
.hero{display:grid;grid-template-columns:1.1fr .9fr;gap:2.5rem;align-items:center;padding:2.5rem 0 1rem}
.layers{position:relative;height:17rem;max-width:25rem;justify-self:center;width:100%}
.sheet{position:absolute;width:76%;height:88%;border-radius:6px;padding:1.1rem}
.sheet.back{right:0;top:0;background:#10132a;color:#aab3ff;font-family:"DMMono",monospace;font-size:.72rem;line-height:1.5;overflow:hidden}
.sheet.front{left:0;bottom:0;background:var(--paper);border:1px solid var(--line);box-shadow:0 12px 30px -12px rgba(20,23,43,.35);clip-path:polygon(0 0,calc(100% - 1.6rem) 0,100% 1.6rem,100% 100%,0 100%)}
.sheet.front b{display:block;font-size:1rem}.sheet.front i{display:block;height:.45rem;background:var(--tint);margin:.5rem 0;border-radius:2px}
.sheet.front i:nth-child(3){width:70%}.sheet.front i:nth-child(5){width:50%}
.sheet.front .tot{margin-top:1.2rem;font-weight:700;text-align:right}
.layers figcaption{position:absolute;right:0;bottom:0;max-width:11rem;font-size:.9rem;color:var(--soft)}
/* Werkzeug */
.tool{background:var(--paper);border:2px solid var(--ink);border-radius:12px;margin-top:2rem;overflow:hidden}
.drop{display:block;margin:1rem;padding:2.2rem 1rem;border:2px dashed #aab3ec;border-radius:10px;text-align:center;cursor:pointer;background:#f8f9ff}
.drop:hover,.drop.over{border-color:var(--blue);background:var(--tint)}
.drop input{position:absolute;opacity:0;width:1px;height:1px}.drop:focus-within{outline:3px solid var(--focus)}
.drop strong{display:block;font-size:1.25rem}
.row{display:flex;flex-wrap:wrap;gap:.6rem;padding:0 1rem 1rem}
.btn{font:inherit;font-weight:700;border:2px solid var(--blue);background:var(--blue);color:#fff;padding:.55rem 1.1rem;border-radius:2rem;cursor:pointer;text-decoration:none;display:inline-block;font-size:1rem}
.btn:hover{background:var(--blue-d);border-color:var(--blue-d);color:#fff}
.btn.ghost{background:transparent;color:var(--blue)}.btn.ghost:hover{background:var(--tint);color:var(--blue-d)}
.trust{margin:0;padding:.7rem 1rem;background:var(--tint);font-size:.95rem}
#ergebnis{padding:1.2rem 1rem 1rem}#ergebnis[hidden]{display:none}
.verdict{display:flex;flex-direction:column;gap:.15rem;padding:1rem 1.2rem;border-radius:8px;border-left:8px solid var(--blue);background:var(--tint)}
.verdict strong{font-size:1.4rem;letter-spacing:-.01em}.verdict.bad{border-left-color:var(--bad);background:var(--bad-t)}.verdict.bad strong{color:var(--bad)}.verdict.good strong{color:var(--blue-d)}
.panes{display:grid;grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));gap:1rem;margin-top:1rem}
.pane{border:1px solid var(--line);border-radius:8px;padding:.2rem 1rem 1rem}
.pane h3{margin-top:.9rem}
.kv{display:grid;grid-template-columns:max-content 1fr;gap:.25rem 1rem;margin:.6rem 0;font-size:.97rem}.kv dt{color:var(--soft)}.kv dd{margin:0;overflow-wrap:anywhere}
.pill{font-size:.8rem;font-weight:700;padding:.1rem .55rem;border-radius:1rem;background:var(--tint);color:var(--blue-d);white-space:nowrap}.pill.bad{background:var(--bad-t);color:var(--bad)}
.findings{list-style:none;padding:0;margin:.5rem 0}
.findings li{display:grid;grid-template-columns:5.5rem 1fr;gap:.2rem 1rem;padding:.8rem 0;border-top:1px solid var(--line)}
.findings .fehler b{color:var(--bad)}.findings .warnung b{color:var(--warn)}.findings .hinweis b{color:var(--soft)}
.findings p{margin:.2rem 0}.fix::before{content:"So beheben: ";font-weight:700}.path{color:var(--soft);overflow-wrap:anywhere}
.findings li.ok{display:block}
.xmlview{margin-top:1rem}.xmlview summary{cursor:pointer;font-weight:700}
.scope{font-size:.95rem;color:var(--soft);border-left:4px solid var(--line);padding-left:.8rem}
/* Inhalte */
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(19rem,1fr));gap:1rem 3rem}
.tablewrap{overflow-x:auto;margin:1rem 0}
table{border-collapse:collapse;width:100%;background:var(--paper);font-size:.97rem;border-radius:8px}
th,td{padding:.6rem .8rem;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}
th{background:var(--tint);font-weight:700}
.yes{color:var(--blue-d);font-weight:700}.no{color:var(--bad);font-weight:700}
.cards{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:1rem}
.cards a{display:block;height:100%;background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:1rem 1.1rem;text-decoration:none;color:var(--ink)}
.cards a:hover{border-color:var(--blue)}.cards strong{display:block;font-size:1.1rem;color:var(--blue-d)}.cards span{font-size:.95rem;color:var(--soft)}
.crumbs{font-size:.92rem;color:var(--soft);margin:1.5rem 0 0}
details{border-top:1px solid var(--line);padding:.8rem 0}summary{cursor:pointer;font-weight:700}
.price{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:1.4rem}.price.main{border:2px solid var(--blue)}
.price .amount{font-size:2.1rem;font-weight:700}.price ul{padding-left:1.1rem}
.nt{margin-top:0}.per{font-size:1rem;font-weight:400}.small{font-size:.9rem}.mt{margin-top:1rem}.mt3{margin-top:3rem}
.note{background:var(--tint);border-radius:8px;padding:.8rem 1rem;font-size:.97rem}
.sample{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:1rem;display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;justify-content:space-between}
form.contact label{display:block;font-weight:700;margin-top:1rem}
form.contact input,form.contact textarea{font:inherit;width:100%;max-width:36rem;padding:.55rem .7rem;border:2px solid var(--ink);border-radius:8px;background:var(--paper);color:var(--ink)}
form.contact textarea{min-height:9rem}.hp{position:absolute;left:-9999px}
.msg{margin-top:1rem;font-weight:700}.msg.err{color:var(--bad)}.msg.ok{color:var(--blue-d)}
footer.bottom{border-top:1px solid var(--line);padding:2rem 0;font-size:.95rem;color:var(--soft)}
footer.bottom ul{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:.3rem 1.4rem;margin:.5rem 0}
@media (max-width:48rem){.hero{grid-template-columns:1fr}.layers{height:14rem}.findings li{grid-template-columns:1fr}}
@media (prefers-reduced-motion:no-preference){.sheet.front{animation:lift .5s ease-out}@keyframes lift{from{transform:translate(0,.8rem);opacity:.4}to{transform:none;opacity:1}}}
@media print{body{background:#fff;border:0;font-size:11pt}body *{visibility:hidden}#ergebnis,#ergebnis *{visibility:visible}#ergebnis{position:absolute;left:0;top:0;width:100%;padding:0}.row{display:none}}
.addr{max-width:100%;height:auto;display:block}
.verdict.warn{border-left-color:var(--warn);background:#fbf1dc}.verdict.warn strong{color:var(--warn)}
.pdfa{list-style:none;padding:0;margin:.5rem 0}.pdfa li{display:grid;grid-template-columns:7rem 1fr;gap:.2rem 1rem;padding:.55rem 0;border-top:1px solid var(--line)}
.pdfa p{margin:.1rem 0}.pdfa .ok b{color:var(--blue-d)}.pdfa .fehler b{color:var(--bad)}.pdfa .warnung b{color:var(--warn)}.pdfa .hinweis b{color:var(--soft)}
@media (max-width:48rem){.pdfa li{grid-template-columns:1fr}}
