:root{--ink:#17241d;--green:#1d6b4d;--lime:#d9f28d;--paper:#f3f0e7;--card:#fffdf8;--muted:#69736c;--line:#dfe2d8;--danger:#a63b31}*{box-sizing:border-box}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;background:var(--paper);color:var(--ink);min-height:100dvh}.grain{position:fixed;inset:0;pointer-events:none;opacity:.035;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.hidden{display:none!important}.login-shell{min-height:100dvh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 80% 15%,#45624e 0,transparent 28%),#16251d}.login-card{width:min(430px,100%);background:var(--card);padding:44px;border-radius:5px;box-shadow:0 24px 80px #0005}.mark{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;font-weight:900;background:var(--lime);border:2px solid var(--ink);box-shadow:4px 4px 0 var(--ink)}.mark.small{width:42px;height:42px;font-size:13px;box-shadow:2px 2px 0 var(--ink)}.eyebrow{letter-spacing:.14em;font-size:11px;font-weight:800;color:var(--green);margin:22px 0 5px}.login-card h1{font-family:Georgia,serif;font-size:38px;margin:0 0 8px}.muted{color:var(--muted);line-height:1.55}.login-card form{display:grid;gap:15px;margin-top:28px}label{font-size:13px;font-weight:700;display:grid;gap:7px}input,textarea{font:inherit;border:1px solid #cbd0c8;background:#fff;padding:13px;border-radius:4px;outline:none}input:focus,textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px #1d6b4d1a}button{font:inherit;cursor:pointer}.login-card button,.panel button{border:0;background:var(--ink);color:white;padding:14px 18px;border-radius:4px;font-weight:800}.login-card button{display:flex;justify-content:space-between}.error{color:var(--danger);min-height:1.2em;font-size:13px;margin:0}.app{display:grid;grid-template-columns:250px 1fr;min-height:100dvh}aside{background:var(--ink);color:#fff;padding:26px 18px;display:flex;flex-direction:column}.brand{display:flex;gap:13px;align-items:center;padding:0 8px 28px}.brand strong,.brand span{display:block}.brand span{font-size:11px;color:#a8b2ab;margin-top:3px}nav{display:grid;gap:5px}.nav{background:transparent;border:0;color:#c6cec9;text-align:left;padding:13px;border-radius:4px;font-weight:700;font-size:15px;display:flex;gap:12px}.nav:hover,.nav.active{color:var(--ink);background:var(--lime)}.aside-foot{margin-top:auto;border-top:1px solid #ffffff1f;padding:18px 8px 0;font-size:12px;overflow-wrap:anywhere}.aside-foot button{border:0;background:none;color:#aeb7b1;padding:9px 0}main{min-width:0;display:flex;flex-direction:column;height:100dvh}header{height:88px;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:14px 34px;gap:18px;background:#f8f6ef}header .eyebrow{margin:0}header h2{font-family:Georgia,serif;margin:2px 0 0;font-size:24px}.status{margin-left:auto;font-size:12px;color:var(--muted)}.status i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#56ad5c;margin-right:5px}#menu{display:none;border:0;background:none;font-size:22px}.view{display:none;min-height:0;flex:1;padding:30px;overflow:auto}.active-view{display:block}#view-chat.active-view{display:flex;flex-direction:column}.welcome{text-align:center;margin:auto;max-width:720px;padding:30px}.avatar{margin:auto;width:74px;height:74px;border-radius:50%;display:grid;place-items:center;background:var(--green);color:white;font-family:Georgia,serif;font-size:35px;box-shadow:6px 6px 0 var(--lime)}.welcome h2{font:700 34px Georgia,serif;margin:25px 0 5px}.suggestions{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:30px}.suggestions button{border:1px solid var(--line);background:var(--card);padding:15px;text-align:left;border-radius:5px;color:var(--ink)}.suggestions button:hover{border-color:var(--green)}.messages{width:min(820px,100%);margin:0 auto;padding-bottom:18px;display:grid;gap:15px}.bubble{max-width:82%;padding:14px 17px;line-height:1.55;white-space:pre-wrap;border-radius:5px}.bubble.user{justify-self:end;background:var(--ink);color:white}.bubble.assistant{justify-self:start;background:var(--card);border:1px solid var(--line)}.composer{width:min(850px,100%);margin:auto auto 0;display:flex;align-items:flex-end;gap:8px;background:var(--card);border:1px solid #cbd0c8;padding:8px;border-radius:7px;box-shadow:0 10px 30px #18251e12}.composer textarea{border:0;box-shadow:none;resize:none;max-height:160px;flex:1;background:transparent}.composer button{border:0;border-radius:4px;width:42px;height:42px;background:var(--ink);color:white;font-weight:900}.composer #voice{background:transparent;color:var(--green)}.composer #voice.listening{color:var(--danger);animation:pulse 1s infinite}@keyframes pulse{50%{opacity:.35}}.panel{background:var(--card);border:1px solid var(--line);padding:25px;margin:0 auto 20px;max-width:900px;border-radius:5px}.panel h3{font:700 24px Georgia,serif;margin:0}.panel form{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.panel input{flex:1;min-width:220px}.list{margin-top:18px}.list-row{display:grid;grid-template-columns:1fr auto;gap:12px;padding:13px 0;border-top:1px solid var(--line);font-size:14px}.badge{font-size:11px;background:#e3efde;color:#235f3f;border-radius:30px;padding:4px 9px;height:max-content}
.permission-note{display:flex;flex-direction:column;gap:5px;background:#edf2e8;border-left:4px solid var(--green);padding:14px 16px;margin:20px 0;font-size:13px}.permission-note span{color:var(--muted);overflow-wrap:anywhere}.integration-status{display:flex;align-items:center;gap:9px;padding:14px 0;font-weight:700}.integration-status i{width:9px;height:9px;border-radius:50%;background:#9aa19b}.integration-status.connected i{background:#56ad5c}.integration-status.error i{background:var(--danger)}.integration-actions{display:flex;gap:10px;flex-wrap:wrap;margin:8px 0}.panel button.secondary{background:var(--green)}.panel button.danger-button{background:transparent;color:var(--danger);border:1px solid #d6aaa5}.mail-row{padding:13px 0;border-top:1px solid var(--line)}.mail-row strong,.mail-row span{display:block}.mail-row span{font-size:12px;color:var(--muted);margin-top:4px}
@media(max-width:760px){.app{display:block}aside{position:fixed;inset:0 auto 0 0;width:260px;z-index:10;transform:translateX(-100%);transition:.2s;box-shadow:15px 0 50px #0004}aside.open{transform:none}main{height:100dvh}#menu{display:block}header{height:76px;padding:10px 16px}.view{padding:18px 14px}.suggestions{grid-template-columns:1fr}.welcome{padding:20px 4px}.welcome h2{font-size:29px}.login-card{padding:30px 24px}.composer{position:sticky;bottom:0}.status{font-size:0}.status i{margin:0}}
.wide-panel{max-width:1200px}.catalog-filter{display:grid!important;grid-template-columns:repeat(4,minmax(150px,1fr));align-items:end}.catalog-filter label{min-width:0}.catalog-filter input{min-width:0}.table-wrap{overflow:auto;margin-top:20px}.catalog-table{width:100%;border-collapse:collapse;min-width:760px}.catalog-table th,.catalog-table td{text-align:left;border-bottom:1px solid var(--line);padding:12px 10px;vertical-align:top}.catalog-table th button,.catalog-table .table-link{background:none!important;color:var(--ink)!important;padding:0!important;text-align:left}.catalog-table a,.file-link,.series-list a{color:var(--green);text-decoration:none}.catalog-table small,.offer-position small{display:block;color:var(--muted);margin-top:4px}.series-list>a{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding:12px 0;gap:15px}.stack-form{display:grid!important}.stack-form label,.stack-form textarea{width:100%}.workflow{display:flex;gap:8px;margin:20px 0}.workflow span{padding:8px 12px;border-radius:30px;background:#e8e9e3;color:var(--muted);font-size:12px;font-weight:800}.workflow .active{background:var(--lime);color:var(--ink)}.offer-position{display:grid;grid-template-columns:1fr auto;padding:14px 0;border-top:1px solid var(--line)}.offer-position small{grid-column:1/-1}.open-points{border-left:4px solid #d88928;background:#fff4df;padding:14px 18px;margin-top:16px}.panel select{font:inherit;border:1px solid #cbd0c8;background:#fff;padding:13px;border-radius:4px}.list-row.file-link{color:var(--ink);text-decoration:none}@media(max-width:900px){.catalog-filter{grid-template-columns:1fr 1fr}}@media(max-width:560px){.catalog-filter{grid-template-columns:1fr}.series-list>a{display:grid}.offer-position{grid-template-columns:1fr}}
.chat-tools{border-top:1px solid #ffffff1f;margin-top:18px;padding-top:15px;min-height:0;overflow:auto}.chat-tools>button{width:100%;border:1px solid #ffffff35;background:transparent;color:#fff;border-radius:4px;padding:10px;text-align:left;font-weight:700}.conversation-group{display:grid;gap:2px;margin-top:15px}.conversation-group>strong{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:#859189;padding:0 8px 5px}.conversation-group button{border:0;background:transparent;color:#bdc7c0;text-align:left;padding:7px 8px;border-radius:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.conversation-group button:hover{background:#ffffff12;color:white}.filter-grid{display:grid!important;grid-template-columns:minmax(250px,2fr) 1fr 1fr auto;align-items:end}.filter-grid label{min-width:0}.filter-grid select{font:inherit;border:1px solid #cbd0c8;background:#fff;padding:13px;border-radius:4px}.progress-card{margin-top:18px;padding:16px;border:1px solid #b6c8b8;background:#edf3e9}.progress-stats{display:flex;gap:14px;flex-wrap:wrap;margin-top:8px;font-size:13px}.analysis-dashboard{display:grid;grid-template-columns:1fr 1fr;gap:20px;max-width:1100px;margin:auto}.analysis-dashboard .panel{width:100%;margin:0}.analysis-dashboard .wide{grid-column:1/-1}.price-row{width:100%;border:0;border-top:1px solid var(--line);background:transparent!important;padding:13px 0!important;display:flex;justify-content:space-between;gap:15px;text-align:left;color:var(--ink)!important}.price-row span:last-child{text-align:right}.price-row small{display:block;color:var(--muted);margin-top:4px}.price-row b{display:block;margin-top:4px}.up{color:#a63b31}.down{color:#1d6b4d}.finding{border-top:1px solid var(--line);padding:14px 0}.finding .badge{margin-left:8px}.finding p{margin:7px 0 0;color:var(--muted);line-height:1.45}.finding.confirmed{border-left:4px solid var(--danger);padding-left:12px}.finding.critical{border-left:4px solid #d88928;padding-left:12px}.series-list{display:grid}.series-list>div{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding:10px 0}@media(max-width:900px){.filter-grid{grid-template-columns:1fr 1fr}.analysis-dashboard{grid-template-columns:1fr}.analysis-dashboard .wide{grid-column:auto}}@media(max-width:560px){.filter-grid{grid-template-columns:1fr}.price-row{display:grid}.price-row span:last-child{text-align:left}}
.source-compare{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:18px}.source-compare a{display:flex;justify-content:space-between;gap:12px;padding:14px;border:1px solid var(--line);border-radius:5px;color:var(--green);text-decoration:none;background:#fff}.source-compare small,.series-list small{display:block;margin-top:5px;color:var(--muted);line-height:1.4}.charlie-avatar{background-position:center;background-size:cover}.bubble a{color:inherit;font-weight:800}@media(max-width:760px){.source-compare{grid-template-columns:1fr}}
.catalog-filter{grid-template-columns:minmax(300px,1fr) auto}.catalog-primary{font-weight:800}.family-chips{grid-column:1/-1;display:flex;gap:8px;flex-wrap:wrap}.family-chips button{border-radius:30px;padding:8px 13px;background:#e8efe9!important;color:var(--green)!important}.catalog-advanced{grid-column:1/-1}.catalog-advanced summary{cursor:pointer;color:var(--muted);font-weight:700}.catalog-advanced>div{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:12px;margin-top:12px}.catalog-group td{background:#edf2ee;color:var(--green);font-weight:900;text-transform:uppercase;letter-spacing:.05em;font-size:12px}.coverage-warning{color:#9a5b15!important;font-weight:700}.review-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:16px 0}.mail-draft{border:1px solid var(--line);background:#f7f8f5;padding:14px;margin:12px 0}.mail-draft pre{white-space:pre-wrap;font:inherit}@media(max-width:900px){.catalog-advanced>div{grid-template-columns:1fr 1fr}}@media(max-width:560px){.catalog-advanced>div{grid-template-columns:1fr}}
.charlie-face{width:48px;height:54px;object-fit:contain;background:#d9f28d;border-radius:50%;padding:3px}.charlie-welcome{width:112px;height:126px;object-fit:contain}.charlie-helper-open{position:fixed;right:20px;bottom:18px;z-index:30;border:1px solid #17241d;background:#fffdf8;color:#17241d;border-radius:40px;box-shadow:0 8px 30px #0003;padding:6px 14px 6px 7px;display:flex;align-items:center;gap:8px;font-weight:800}.charlie-helper-open img{width:42px;height:48px}.charlie-helper{position:fixed;right:20px;bottom:82px;z-index:31;width:min(360px,calc(100vw - 32px));background:#fffdf8;color:#17241d;border:1px solid #17241d;border-radius:10px;box-shadow:0 14px 45px #0003;padding:16px 42px 16px 14px;display:grid;grid-template-columns:78px 1fr;gap:12px}.charlie-helper>img{width:78px;height:90px}.charlie-helper p{font-size:13px;line-height:1.45;margin:6px 0 10px}.charlie-helper button{border:0;background:#17241d;color:#fff;padding:9px 12px;border-radius:4px;font-weight:800}.charlie-helper .charlie-helper-close{position:absolute;right:8px;top:8px;background:transparent;color:#17241d;font-size:20px;padding:4px 8px}.match-reason{color:#176d9a!important;font-weight:700}.taxonomy-line{color:var(--green)!important}.alias-actions{display:flex;gap:8px;flex-wrap:wrap}.alias-actions button{padding:8px 10px}.catalog-subgroup td{background:#f7f8f5;color:var(--muted);font-size:12px;font-weight:700}@media(max-width:560px){.charlie-helper-open span{display:none}}/* Der schwebende Tipp-Button lag auf Telefonen genau ueber dem Senden-Knopf   des Chat-Eingabefeldes (beide unten rechts, fixed). Auf kleinen Schirmen   gibt es dort keinen freien Platz, deshalb entfaellt er dort. */@media(max-width:900px){.charlie-helper-open,.charlie-helper{display:none!important}}
.rule-grid{display:grid;gap:14px;margin-top:18px}.rule-card{border:1px solid var(--line);border-radius:7px;padding:18px;background:#fff}.rule-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.rule-meta{display:flex;gap:9px;align-items:center;flex-wrap:wrap;color:var(--muted);font-size:12px;margin-top:7px}.provenance{display:flex;gap:12px;align-items:center;flex-wrap:wrap;background:#f1f4ed;border-left:4px solid var(--green);padding:11px 13px;font-size:12px}.provenance a{color:var(--green)}.rule-edit-form{display:block!important;border-top:1px solid var(--line);padding-top:16px;margin-top:16px!important}.profile-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.profile-form-grid label{min-width:0}.profile-form-grid input,.profile-form-grid textarea,.profile-form-grid select{width:100%;min-width:0}.button-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}
.supplier-wizard{overflow:hidden}.wizard-steps{list-style:none;padding:0;display:grid;grid-template-columns:repeat(6,1fr);gap:7px;margin:20px 0}.wizard-steps li{font-size:11px;font-weight:800;color:var(--muted);background:#eceee8;border-radius:30px;padding:9px;text-align:center}.wizard-steps li.active{background:var(--lime);color:var(--ink)}.wizard-page{display:none}.wizard-page.active{display:block}.compact-form{display:grid!important;grid-template-columns:1fr 2fr auto;align-items:end}.sample-card{border-top:1px solid var(--line);padding:15px 0}.sample-card>div:first-child{display:flex;justify-content:space-between;gap:12px}.sample-card dl{display:grid;grid-template-columns:170px 1fr;gap:7px 14px;font-size:13px}.sample-card dt{font-weight:800}.sample-card dd{margin:0;color:var(--muted)}.detected-position{display:grid;grid-template-columns:120px 1fr;gap:12px;padding:8px 0;border-top:1px dashed var(--line);font-size:12px}.quality-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin:15px 0}.quality-grid>div{background:#f1f4ed;border:1px solid var(--line);padding:14px;border-radius:6px}.quality-grid strong,.quality-grid span{display:block}.quality-grid strong{font-size:22px}.quality-grid span{font-size:11px;color:var(--muted)}.quality-gate{display:flex;flex-direction:column;gap:4px;padding:15px;border-left:5px solid #d88928;background:#fff4df;margin:12px 0}.quality-gate.good{border-color:var(--green);background:#edf3e9}.quality-gate.blocked strong{color:#8b4b0e}
.calendar-settings-card{max-width:980px}.connection-card{display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid var(--line);border-radius:7px;background:#f7f8f4;padding:4px 14px;margin:16px 0}.connection-actions,.calendar-toolbar{display:flex;gap:8px;flex-wrap:wrap}.connection-actions button,.calendar-toolbar button{padding:9px 12px}.login-fields{border-top:1px solid var(--line);padding-top:4px}.calendar-toolbar{margin:18px 0 10px}.calendar-groups{display:grid;gap:18px;margin-top:10px}.calendar-group h4{font:700 16px Georgia,serif;margin:0 0 7px}.calendar-row{display:grid;grid-template-columns:minmax(240px,1fr) auto 34px minmax(150px,auto);align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:6px;background:#fff;margin-bottom:7px}.calendar-identity{display:flex;align-items:center;gap:11px;min-width:0;cursor:pointer}.calendar-identity input,.calendar-default input{width:22px;height:22px;min-width:22px;margin:0}.calendar-identity strong{display:block;overflow-wrap:anywhere}.calendar-identity small{display:flex;gap:8px;color:var(--muted);font-weight:500;margin-top:3px}.calendar-details details{display:inline}.calendar-details summary{cursor:pointer}.calendar-status{font-size:11px;font-weight:800;border-radius:30px;padding:5px 9px;white-space:nowrap}.calendar-status.writable{background:#e3efde;color:#235f3f}.calendar-status.readonly{background:#ecece8;color:#555}.calendar-warning{width:30px;height:30px!important;padding:0!important;border-radius:50%!important;background:#fff4df!important;color:#8b4b0e!important;border:1px solid #e2b86b!important}.calendar-default{display:flex;align-items:center;gap:8px;cursor:pointer;white-space:nowrap}.calendar-default.disabled{color:var(--muted);cursor:not-allowed}.calendar-default span{font-size:12px}.calendar-settings-card fieldset{border:0;padding:0;margin:0}.calendar-settings-card legend{font-weight:800;margin-bottom:7px}.calendar-settings-card .error{display:block;margin-top:10px}
@media(max-width:900px){.wizard-steps{grid-template-columns:repeat(3,1fr)}.quality-grid{grid-template-columns:repeat(3,1fr)}.calendar-row{grid-template-columns:minmax(210px,1fr) auto auto}.calendar-warning{grid-column:3}.calendar-default{grid-column:1/-1;padding-left:33px}.compact-form{grid-template-columns:1fr 1fr}.compact-form button{grid-column:1/-1}}
@media(max-width:600px){.profile-form-grid{grid-template-columns:1fr}.wizard-steps{grid-template-columns:repeat(2,1fr)}.quality-grid{grid-template-columns:repeat(2,1fr)}.sample-card dl{grid-template-columns:1fr}.sample-card dt{margin-top:6px}.detected-position{grid-template-columns:1fr}.compact-form{grid-template-columns:1fr}.connection-card{align-items:flex-start;flex-direction:column}.calendar-row{grid-template-columns:1fr auto;gap:9px}.calendar-identity{grid-column:1/-1}.calendar-status{justify-self:start}.calendar-warning{grid-column:2;grid-row:2}.calendar-default{grid-column:1/-1;padding:7px 0 0;border-top:1px solid var(--line)}.calendar-identity input,.calendar-default input{width:24px;height:24px}.calendar-toolbar button{flex:1 1 130px}}
.checkup-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:20px}.checkup-card{border:1px solid var(--line);border-top:5px solid var(--green);border-radius:12px;padding:16px;background:#fff;cursor:pointer;transition:transform .15s,box-shadow .15s}.checkup-card:hover,.checkup-card:focus-within{transform:translateY(-2px);box-shadow:0 8px 24px #15241c18}.checkup-card.price_anomaly{border-top-color:#d88928}.checkup-card.needs_review{border-top-color:var(--danger)}.checkup-card>div:first-child{display:flex;justify-content:space-between;gap:12px}.checkup-count{font-size:24px;font-weight:900}.checkup-anomaly{display:grid;gap:5px;border-top:1px solid var(--line);padding-top:12px;margin-top:12px;font-size:12px}.checkup-anomaly a{color:var(--green);font-weight:800}.case-actions{display:flex;gap:7px;flex-wrap:wrap}.case-actions button,.case-actions a{padding:7px 9px;border-radius:6px}.calendar-page-head{display:flex;justify-content:space-between;align-items:center;gap:14px}.calendar-view-tabs,.calendar-filter-chips{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0}.calendar-view-tabs{align-items:center}.calendar-nav-spacer{flex:1}.calendar-view-tabs button{padding:9px 13px;border-radius:9px}.calendar-view-tabs button.active{background:var(--ink);color:#fff}.calendar-filter-menu{width:max-content;margin:12px 0}.calendar-filter-menu summary{cursor:pointer;font-weight:800}.calendar-filter-chips{position:absolute;z-index:4;background:#fff;padding:12px;border:1px solid var(--line);box-shadow:0 10px 30px #15241c20;border-radius:12px}.calendar-filter-chips label{display:flex;align-items:center;gap:7px;border-left:7px solid var(--cal-color);border-radius:8px;padding:7px 11px;background:#f7f8f4}.calendar-filter-chips input{min-width:0;width:18px;height:18px}.calendar-range-label{font:700 20px Georgia,serif;margin:18px 0 10px}.calendar-board{display:block;overflow:auto}.calendar-week-grid{display:grid;grid-template-columns:repeat(7,minmax(150px,1fr));min-width:1050px;border:1px solid var(--line);border-radius:13px;overflow:hidden}.calendar-day-grid{display:grid;grid-template-columns:minmax(280px,1fr);max-width:680px;margin:auto}.calendar-day-column{min-height:220px;border-right:1px solid var(--line);background:#fff}.calendar-day-column:last-child{border-right:0}.calendar-day-column>header{display:flex;justify-content:center;align-items:center;gap:8px;padding:12px;border-bottom:1px solid var(--line);position:sticky;top:0;background:#fff;z-index:2}.calendar-day-column>header b{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--lime)}.calendar-all-day{padding:8px;background:#f4f7f0;border-bottom:1px solid var(--line)}.calendar-timeline{display:grid;gap:5px;padding:6px}.calendar-timeline>.muted{font-size:11px;padding:3px}.calendar-event-card{display:grid;gap:3px;border:0;border-left:5px solid var(--cal-color);padding:6px;background:#edf3e9;border-radius:7px}.calendar-event-card.all-day{background:#e2edda}.calendar-event-card time,.calendar-event-card span,.calendar-event-card small{color:var(--muted);font-size:11px}.calendar-event-card.compact{padding:3px 5px;margin-top:3px;font-size:10px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-event-card.compact time{display:none}.calendar-month-weekdays,.calendar-month-grid{display:grid;grid-template-columns:repeat(7,minmax(110px,1fr));min-width:770px}.calendar-month-weekdays span{text-align:center;font-weight:800;padding:8px}.calendar-month-grid{border:1px solid var(--line);border-radius:12px;overflow:hidden}.calendar-month-cell{min-height:120px;padding:7px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff}.calendar-month-cell.outside{background:#f5f5f2}.calendar-sheet{position:fixed;inset:0;z-index:20;background:#10201988;display:grid;place-items:center;padding:18px}.calendar-sheet-card{width:min(520px,100%);display:grid;gap:13px;background:#fff;border-radius:18px;padding:20px;box-shadow:0 24px 80px #0004}.calendar-sheet-head{display:flex;align-items:center;justify-content:space-between}.calendar-sheet-head h4{margin:0}.all-day-toggle{display:flex!important;align-items:center;gap:8px}.all-day-toggle input{width:20px!important;min-width:20px}.article-stat-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:16px 0}.article-stat-grid>div{display:grid;gap:5px;background:#f1f4ed;padding:13px;border-radius:6px}.article-stat-grid small{color:var(--muted)}.article-stat-grid strong{font-size:18px}@media(max-width:800px){.checkup-grid{grid-template-columns:1fr}.article-stat-grid{grid-template-columns:repeat(2,1fr)}.calendar-page-head{align-items:flex-start}.calendar-view-tabs{gap:5px}.calendar-nav-spacer{flex-basis:100%}}
.checkup-card{color:var(--ink)!important;text-align:left!important;display:grid;gap:9px}.checkup-card>span{color:var(--green);font-weight:800}.review-list{display:grid;gap:10px;margin-top:20px}.price-case-card{width:100%;display:grid!important;grid-template-columns:minmax(260px,2fr) 1fr 1fr auto;gap:16px;align-items:center;text-align:left!important;background:#fff!important;color:var(--ink)!important;border:1px solid var(--line)!important;border-left:6px solid #d88928!important;border-radius:10px!important;padding:16px!important}.price-case-card span{display:grid;gap:4px}.price-case-card small{color:var(--muted)}.button-like{display:inline-flex;align-items:center;justify-content:center;background:var(--ink);color:#fff!important;text-decoration:none;font-weight:800;border-radius:6px;padding:10px 13px}.case-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.case-head .eyebrow{margin-top:0}.coverage{padding:7px 10px;background:#edf3e9;border-radius:30px;font-size:12px;font-weight:800}.coverage.unvollständig{background:#fff4df;color:#8b4b0e}.case-metrics,.controller-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:20px 0}.case-metrics>div,.controller-grid>div{display:grid;gap:7px;background:#f1f4ed;border:1px solid var(--line);border-radius:9px;padding:14px}.case-metrics span,.controller-grid span{font-size:12px;color:var(--muted)}.case-metrics strong,.controller-grid strong{font-size:20px}.price-timeline{margin-top:22px}.price-timeline summary{cursor:pointer;font-weight:900}.timeline-list{display:grid;margin-top:10px}.timeline-list a{display:grid;grid-template-columns:110px 1fr auto;gap:12px;padding:12px 0;border-top:1px solid var(--line);color:var(--ink);text-decoration:none}.complaint-preview{background:#f7f8f5;border:1px solid var(--line);padding:16px;margin-top:15px}.complaint-preview pre{white-space:pre-wrap;font:inherit}.case-invoice-stack{display:grid;gap:10px;margin-top:15px}.case-invoice-stack article{display:grid;grid-template-columns:auto 1fr 1fr auto;gap:12px;padding:12px;border:1px solid var(--line);border-radius:8px}.invoice-stack-card{max-width:780px;margin:18px auto 0}.stack-counter{font-weight:900;color:var(--green)}.invoice-totals{display:flex;gap:28px;margin:14px 0}.invoice-totals span{display:grid;gap:4px}.important-positions{display:grid}.important-positions>div{display:grid;grid-template-columns:1fr auto auto;gap:12px;padding:12px 0;border-top:1px solid var(--line)}.critical{color:var(--danger)}.confidential-panel{border-top:7px solid var(--danger)}.confidential-panel .eyebrow{color:var(--danger)}.success{color:var(--green);font-weight:800}.panel button:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:900px){.price-case-card{grid-template-columns:1fr 1fr}.price-case-card .button-like{justify-self:start}.case-metrics,.controller-grid{grid-template-columns:repeat(2,1fr)}.timeline-list a{grid-template-columns:90px 1fr}.timeline-list strong{grid-column:2}.case-invoice-stack article{grid-template-columns:1fr 1fr}.important-positions>div{grid-template-columns:1fr auto}.important-positions b{grid-column:1/-1}}
@media(max-width:600px){.price-case-card,.case-metrics,.controller-grid,.timeline-list a,.case-invoice-stack article,.important-positions>div{grid-template-columns:1fr}.case-head{display:grid}.case-actions>*{flex:1 1 145px}.invoice-totals{justify-content:space-between}.timeline-list strong{grid-column:auto}.panel{padding:18px}.review-list{margin-top:14px}}
.checkup-card{background:#fff!important}
#view-price-review{overflow:visible}.price-filter-bar{display:grid!important;grid-template-columns:repeat(4,minmax(145px,1fr));align-items:end}.price-filter-bar label{min-width:0}.price-filter-bar input,.price-filter-bar select{width:100%;min-width:0}.coverage-warning-box{padding:12px 14px;background:#fff4df;border-left:5px solid #d88928;color:#7c470d;font-weight:800}.coverage-years{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.coverage-years span{padding:7px 10px;background:#f1f4ed;border-radius:20px;font-size:12px}.cost-breakdown{width:100%;border-collapse:collapse;margin-top:12px}.cost-breakdown th,.cost-breakdown td{padding:8px;border-bottom:1px solid var(--line);text-align:right}.cost-breakdown th:first-child,.cost-breakdown td:first-child{text-align:left}.learning-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:18px 0}.learning-summary>div{padding:14px;background:#f1f4ed;border-radius:8px}.learning-summary strong,.learning-summary span{display:block}.learning-summary strong{font-size:24px}.learning-summary span{font-size:11px;color:var(--muted)}.calculation-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}.calculation-tabs button{background:#e8efe9!important;color:var(--green)!important;padding:9px 12px}.calculation-tabs button.active{background:var(--ink)!important;color:#fff!important}.decision-card{border-left:6px solid #d88928}.decision-card.conflict{border-left-color:var(--danger)}
@media(max-width:900px){.price-filter-bar{grid-template-columns:repeat(2,1fr)}.learning-summary{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.price-filter-bar{grid-template-columns:1fr 1fr}.price-filter-bar label:nth-of-type(n+3){display:none}.price-filter-bar::before{content:'Sortieren ▾   Filter ▾';grid-column:1/-1;font-weight:900;color:var(--green)}.learning-summary{grid-template-columns:1fr 1fr}.cost-breakdown{font-size:11px}}
.price-mobile-toggles{display:none}@media(max-width:600px){.price-filter-bar::before{content:none}.price-filter-bar label{display:none}.price-filter-bar.show-sort label:nth-of-type(-n+2),.price-filter-bar.show-filter label:nth-of-type(n+3){display:grid}.price-mobile-toggles{display:flex;grid-column:1/-1;gap:8px}.price-mobile-toggles button{flex:1}}
.calendar-page{border-radius:18px;padding:clamp(18px,3vw,34px);box-shadow:0 16px 50px #15241c0d}.calendar-page-head h3{font-size:clamp(24px,3vw,34px)}.calendar-view-tabs{background:#edf1e9;padding:7px;border-radius:14px}.calendar-view-tabs button{min-height:42px}.calendar-view-tabs button:focus-visible,.calendar-event-card:focus-visible,.calendar-day-open:focus-visible,.calendar-more:focus-visible{outline:3px solid var(--green);outline-offset:2px}.calendar-board{border-radius:14px}.calendar-day-column>header button,.calendar-day-open,.calendar-more{background:transparent!important;color:var(--ink)!important;padding:5px!important}.calendar-day-column>header button{display:flex;align-items:center;gap:8px}.calendar-event-card{width:100%;color:var(--ink)!important;text-align:left!important;min-height:38px;transition:transform .12s,box-shadow .12s}.panel .calendar-event-card{background:#edf3e9}.panel .calendar-event-card.all-day{background:#e2edda}.panel .calendar-event-card strong{color:var(--ink)}.calendar-event-card:hover{transform:translateY(-1px);box-shadow:0 5px 16px #15241c18}.calendar-month-cell{position:relative}.calendar-day-open{font-size:15px!important;width:34px;height:34px;border-radius:50%!important}.calendar-day-open:hover{background:var(--lime)!important}.calendar-more{font-size:11px!important;color:var(--green)!important}.calendar-detail-list{display:grid;grid-template-columns:100px 1fr;gap:10px 14px;margin:0}.calendar-detail-list dt{font-weight:800;color:var(--muted)}.calendar-detail-list dd{margin:0;white-space:pre-wrap}.calendar-skeleton{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.calendar-skeleton i{height:260px;border-radius:12px;background:linear-gradient(90deg,#ecefe8 25%,#f8faf5 50%,#ecefe8 75%);background-size:200% 100%;animation:calendar-loading 1.2s infinite}@keyframes calendar-loading{to{background-position:-200% 0}}
@media(max-width:800px){.calendar-page-head{display:grid}.calendar-page-head #calendar-new{width:100%}.calendar-view-tabs{display:grid;grid-template-columns:repeat(3,1fr)}.calendar-nav-spacer{display:none}.calendar-view-tabs #calendar-prev,.calendar-view-tabs #calendar-today,.calendar-view-tabs #calendar-next{grid-row:2}.calendar-week-grid{min-width:910px}.calendar-month-weekdays,.calendar-month-grid{min-width:700px}.calendar-skeleton{grid-template-columns:1fr}.calendar-skeleton i:nth-child(n+2){display:none}}
@media(max-width:520px){.calendar-page{padding:14px}.calendar-filter-chips{left:14px;right:14px}.calendar-range-label{font-size:17px}.calendar-sheet{padding:8px}.calendar-sheet-card{border-radius:14px;max-height:94dvh;overflow:auto}.calendar-detail-list{grid-template-columns:1fr}.calendar-detail-list dt{margin-top:7px}.calendar-week-grid{min-width:760px;grid-template-columns:repeat(7,minmax(108px,1fr))}}
.invoice-review-counts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:18px 0}.invoice-review-counts>div{display:grid;gap:4px;padding:14px;background:#f1f4ed;border-radius:9px}.invoice-review-counts strong{font-size:24px}.invoice-review-counts span{font-size:12px;color:var(--muted)}.invoice-review-filter{display:grid!important;grid-template-columns:1fr minmax(240px,360px);align-items:end}.invoice-filter-tabs{display:flex;gap:6px;flex-wrap:wrap}.invoice-filter-tabs button{padding:9px 11px;background:#e8efe9;color:var(--green)}.invoice-filter-tabs button.active{background:var(--ink);color:#fff}.invoice-table-wrap{width:100%;overflow-x:auto}.invoice-review-table{width:100%;border-collapse:collapse;min-width:980px}.invoice-review-table th,.invoice-review-table td{padding:11px 9px;border-bottom:1px solid var(--line);text-align:left;font-size:13px}.invoice-review-table tbody tr{cursor:pointer}.invoice-review-table tbody tr:hover,.invoice-review-table tbody tr:focus{background:#f1f4ed;outline:none}.invoice-review-table button{padding:8px 10px}.invoice-status{display:inline-block;padding:5px 8px;border-radius:30px;font-size:10px;font-weight:900;white-space:nowrap}.invoice-status.unseen{background:#fff1cc;color:#7c4b00}.invoice-status.seen{background:#e5edf4;color:#315a77}.invoice-status.reviewed{background:#e3efde;color:#235f3f}.invoice-review-detail{margin-top:24px;border-top:4px solid var(--green);padding-top:22px}.invoice-position-link{display:grid;grid-template-columns:1fr auto auto;gap:12px;padding:12px 0;border-top:1px solid var(--line);color:var(--ink);text-decoration:none}.invoice-position-link:hover{background:#f7f8f4}.invoice-empty{padding:24px;text-align:center;background:#f1f4ed;border-radius:8px}.calendar-day-column.is-today,.calendar-month-cell.is-today{background:#f3f9e6;box-shadow:inset 0 0 0 2px var(--lime)}.calendar-today-label{display:block;color:var(--green);font-size:9px;letter-spacing:.08em}.calendar-event-card strong{font-size:12px;line-height:1.25}
@media(max-width:760px){.invoice-review-filter{grid-template-columns:1fr}.invoice-review-counts{grid-template-columns:1fr 1fr 1fr}.invoice-review-counts>div{padding:10px}.invoice-review-counts strong{font-size:19px}.invoice-position-link{grid-template-columns:1fr}.invoice-filter-tabs{overflow-x:auto;flex-wrap:nowrap}.invoice-filter-tabs button{white-space:nowrap}}

/* Metric-level KPI cards and the controlling document table (Abschnitt 25/29). */
#controlling-summary .kpi-ok strong{color:var(--ink)}
#controlling-summary .kpi-review strong,#controlling-summary .kpi-missing strong{font-weight:700;opacity:.85}
#controlling-summary .kpi-review{border-left:3px solid #bf7b45}
#controlling-summary .kpi-missing{border-left:3px solid #cbd0c8}
#controlling-summary .kpi-ok{border-left:3px solid #2f6f5e}
#controlling-summary small{display:block;margin-top:4px;font-size:11px;line-height:1.35;color:var(--muted)}
.controlling-table{width:100%;border-collapse:collapse;font-size:13px}
.controlling-table th,.controlling-table td{text-align:left;padding:8px 10px;border-bottom:1px solid #e3e6e0;vertical-align:top}
.controlling-table th{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.controlling-table .doc-hint{max-width:280px;color:var(--muted);font-size:12px}
.doc-badge{display:inline-block;padding:3px 8px;border-radius:20px;font-size:11px;font-weight:800;white-space:nowrap}
.doc-badge.doc-ok{background:#dff0e4;color:#1d5b3f}
.doc-badge.doc-partial{background:#fbeedd;color:#8a5520}
.doc-badge.doc-review{background:#fbeedd;color:#8a5520}
.doc-badge.doc-bad{background:#f8dcdc;color:#7d2626}
.doc-badge.doc-archived{background:#eceee9;color:#5b635a}
.controlling-table tr.doc-archived{opacity:.62}
@media(max-width:700px){.controlling-table .doc-hint{max-width:none}.controlling-table th:nth-child(6),.controlling-table td:nth-child(6){display:none}}

/* Baustellenboard. Auf dem Desktop fuenf Spalten, auf dem Telefon
   untereinander - ein horizontal scrollendes Board ist am Handy mit
   Handschuhen nicht bedienbar. */
.site-board{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:18px;align-items:start}.site-column{background:#f6f4ec;border:1px solid var(--line);border-radius:5px;padding:12px;min-width:0}.site-column h4{margin:0 0 10px;font:800 13px Inter,sans-serif;letter-spacing:.02em;display:flex;justify-content:space-between;align-items:center;gap:8px}.site-column .site-empty{margin:0;font-size:13px}.site-card{background:var(--card);border:1px solid var(--line);border-left:3px solid var(--green);border-radius:4px;padding:10px 11px;margin-bottom:9px;display:grid;gap:5px}.site-card strong{font-size:14px;overflow-wrap:anywhere}.site-meta{font-size:12px;color:var(--muted);overflow-wrap:anywhere}.site-note{margin:2px 0 0;font-size:12px;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere}.site-actions{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-top:4px}.site-actions .site-move{min-width:32px;min-height:32px;padding:0;display:inline-grid;place-items:center;font-size:13px;line-height:1}.site-actions .site-move-zeichen{font-size:13px}.site-actions .site-move-text{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.site-actions .site-step{border:1px solid #cbd0c8;background:#fff;color:var(--ink);font:700 12px Inter,sans-serif;padding:7px 9px;border-radius:4px;min-height:34px}.site-actions .site-step:hover{border-color:var(--green);background:var(--lime)}.site-actions .site-step.back{color:var(--muted)}.site-actions .site-step.done-step{background:var(--green);color:#fff;border-color:var(--green)}.site-actions .site-step.done-step:hover{background:var(--green);border-color:var(--green)}.site-actions .site-edit-open{font-weight:700;padding:6px 7px;min-height:32px}.site-actions .danger-button{border:1px solid #d6aaa5;background:transparent;color:var(--danger);font:700 12px Inter,sans-serif;padding:7px 9px;border-radius:4px;min-height:34px}.site-note-field{grid-column:1/-1}
@media(max-width:1100px){.site-board{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.site-board{grid-template-columns:1fr}.site-actions .site-step,.site-actions .danger-button{flex:1 1 auto;min-height:40px;font-size:13px}.site-actions .site-move{min-width:0;padding:7px 10px;display:inline-flex;align-items:center;gap:6px}.site-actions .site-move-text{position:static;width:auto;height:auto;margin:0;overflow:visible;clip-path:none}}

/* Bearbeiten an Ort und Stelle: die Karte wird zum Formular. */
.site-edit{display:grid;gap:8px;margin-top:6px}.site-edit .site-field{font-size:12px;font-weight:700;gap:4px}.site-edit input,.site-edit textarea{font-size:13px;padding:8px 9px;width:100%}.site-edit textarea{resize:vertical;min-height:52px}.site-actions .site-edit-open{margin-left:auto}
@media(max-width:700px){.site-edit input,.site-edit textarea{font-size:16px}}

/* Nachrichten im Morgen-Check-up: einzeln gegliedert, Bild links, am Telefon
   darueber. Die Kacheln oben bleiben das Wichtige, die Meldungen stehen
   darunter und duerfen Platz brauchen. */
.news-list{display:grid;gap:0;margin-top:6px}.news-item{display:grid;grid-template-columns:168px 1fr;gap:16px;align-items:start;padding:16px 0;border-top:1px solid var(--line)}.news-item:first-child{border-top:0;padding-top:4px}.news-item.ohne-bild{grid-template-columns:1fr}.news-image{overflow:hidden;border-radius:5px;background:#eceadf;aspect-ratio:16/10}.news-image img{width:100%;height:100%;object-fit:cover;display:block}.news-body{min-width:0}.news-body h4{margin:0 0 5px;font:700 17px Georgia,serif;line-height:1.3}.news-body h4 a{color:var(--ink);text-decoration:none}.news-body h4 a:hover{color:var(--green);text-decoration:underline}.news-meta{margin:0 0 6px;font-size:12px;color:var(--muted);letter-spacing:.01em}.news-summary{margin:0;font-size:14px;line-height:1.55;color:var(--ink);overflow-wrap:anywhere}
@media(max-width:700px){.news-item{grid-template-columns:1fr;gap:10px}.news-image{aspect-ratio:16/9}.news-body h4{font-size:18px}}
.invoice-review-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:16px 0 4px;padding:10px 12px;background:#f1f4ed;border:1px solid var(--line);border-radius:9px}.invoice-review-nav span{font-weight:800;color:var(--muted);font-size:13px}.invoice-review-nav button{min-height:42px;padding:9px 14px}.invoice-review-nav button:disabled{opacity:.45;cursor:default}
.nav-group{display:grid;gap:2px;margin-bottom:18px}.nav-group h2{font:700 11px/1 inherit;letter-spacing:.13em;text-transform:uppercase;color:#8da392;margin:0 0 7px;padding:0 12px}.nav-group-fuss{margin-bottom:0;border-top:1px solid #2b3b32;padding-top:12px}.nav-group-fuss h2{display:none}
@media(min-width:761px){.app{height:100dvh;overflow:hidden}.app>aside{min-height:0;overflow-y:auto}.app>aside .chat-tools{flex:0 0 auto;min-height:0}}
.site-summary{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:0}.site-summary-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:11px 2px;border-top:1px solid var(--line)}.site-summary-row:first-child{border-top:0}.site-summary-name{display:flex;flex-direction:column;gap:2px;min-width:0;font-weight:700}.site-summary-name small{font-weight:400;color:var(--muted);font-size:12px}.site-summary-state{flex-shrink:0;font-size:12px;font-weight:700;letter-spacing:.03em;padding:4px 11px;border-radius:20px;background:#eceee8;color:var(--ink)}.site-summary-state.state-active{background:#d9f28d}.site-summary-state.state-billing{background:#f3e3c4}
.wetter-jetzt{display:flex;align-items:center;gap:20px;flex-wrap:wrap;margin-top:6px}.wetter-symbol{width:28px;height:28px;color:var(--green);flex-shrink:0}.wetter-symbol.gross{width:58px;height:58px}.wetter-symbol.klein{width:22px;height:22px}.wetter-jetzt-text{display:flex;flex-direction:column;min-width:0}.wetter-jetzt-text strong{font:700 44px/1 Georgia,serif;font-variant-numeric:tabular-nums}.wetter-jetzt-text span{color:var(--muted);font-size:14px}.wetter-werte{display:flex;gap:26px;flex-wrap:wrap;margin:0 0 0 auto}.wetter-werte div{display:flex;flex-direction:column;gap:3px}.wetter-werte dt{font-size:12px;color:var(--muted)}.wetter-werte dd{margin:0;font-weight:700;font-variant-numeric:tabular-nums}.wetter-abschnitte{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.wetter-abschnitt{flex:1 1 140px;display:flex;flex-direction:column;align-items:center;gap:4px;background:#f3f6ef;border:1px solid var(--line);border-radius:10px;padding:11px 8px}.wetter-abschnitt small{color:var(--muted);font-size:11px;text-align:center}.wetter-abschnitt b{font-size:18px;font-variant-numeric:tabular-nums}.wetter-abschnitt span{font-size:12px;color:var(--muted)}.wetter-tage{display:grid;grid-template-columns:repeat(auto-fit,minmax(74px,1fr));gap:8px;margin-top:18px;border-top:1px solid var(--line);padding-top:16px}.wetter-tag{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 4px;border-radius:9px}.wetter-tag small{font-weight:700;font-size:12px}.wetter-tag b{font-size:16px;font-variant-numeric:tabular-nums}.wetter-tief{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}.wetter-regen{font-size:11px;color:#1c5f7a}.wetter-hinweise{margin:16px 0 0;padding-left:18px;color:var(--ink);font-size:14px;line-height:1.6}@media(max-width:700px){.wetter-werte{margin-left:0}.wetter-jetzt{gap:14px}}
.chat-history{margin-top:10px}.chat-history>summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;padding:9px 12px;border-radius:8px;color:#bfd0bc;font-size:13px;font-weight:700;letter-spacing:.04em}.chat-history>summary::-webkit-details-marker{display:none}.chat-history>summary::before{content:'\25B8';font-size:11px;transition:transform .15s}.chat-history[open]>summary::before{transform:rotate(90deg)}.chat-history>summary:hover{background:#ffffff12;color:#fff}.chat-history .conversation-list{margin-top:4px}
.site-summary-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:14px}.site-summary-head label{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--muted);font-weight:700}.site-summary-head select{font:inherit;padding:8px 11px;min-height:40px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink)}.site-summary-gruppe{margin:18px 0 0;font:700 12px/1 inherit;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);padding-bottom:6px;border-bottom:1px solid var(--line)}.site-summary-gruppe:first-child{margin-top:10px}
.checkup-calendar{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:0}.checkup-termin{display:flex;align-items:flex-start;gap:16px;padding:12px 2px;border-top:1px solid var(--line)}.checkup-termin:first-child{border-top:0}.checkup-termin time{flex:0 0 112px;font-weight:700;font-variant-numeric:tabular-nums;font-size:14px}.checkup-termin.ganztaegig time{color:var(--green)}.checkup-termin span{display:flex;flex-direction:column;gap:2px;min-width:0}.checkup-termin strong{font-size:15px;line-height:1.35}.checkup-termin small{color:var(--muted);font-size:12px}@media(max-width:560px){.checkup-termin{flex-direction:column;gap:4px}.checkup-termin time{flex:none}}
#invoice-detail-row>td{padding:0;background:transparent;border:0}#invoice-detail-row .invoice-review-detail{margin:0 0 14px}

/* Belegliste: Lieferant zuerst, Status in Klartext */
.beleg-zeile{align-items:flex-start;gap:12px}.beleg-text{display:grid;gap:2px;min-width:0}.beleg-text strong{font-size:14px;overflow-wrap:anywhere}.beleg-text .beleg-offen{color:var(--muted);font-weight:700}.beleg-meta{font-size:12px;color:var(--muted);overflow-wrap:anywhere}.beleg-grund{font-size:12px;color:#7a5b16;overflow-wrap:anywhere}.beleg-status{white-space:nowrap;align-self:center;margin-left:0}.beleg-status.pruefen{background:#fbf0d8;border-color:#dcc188;color:#6b4e12}.beleg-status.fertig{background:#e6f0df;border-color:#b9cfa8;color:#2c4a1e}.beleg-status.offen{background:#eef0ee;border-color:#cfd4cc;color:#4a524a}.beleg-status.alt{background:#f1f0ec;border-color:#d6d3cb;color:#6a6760}@media(max-width:700px){.beleg-zeile{grid-template-columns:1fr;gap:6px}.beleg-status{justify-self:start}}

/* Belegansicht mit eigenem Schliessen-Knopf */
.pdf-sheet{position:fixed;inset:0;z-index:40;background:#10201988;display:grid;place-items:center;padding:8px}
.pdf-sheet.hidden{display:none}
.pdf-sheet-card{width:min(1100px,100%);height:min(94dvh,100%);display:grid;grid-template-rows:auto 1fr auto;gap:10px;background:#fff;border-radius:14px;padding:12px 14px 10px;box-shadow:0 24px 80px #0004}
.pdf-sheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.pdf-sheet-head h4{margin:0;font-size:16px;min-width:0;overflow-wrap:anywhere}
.pdf-sheet-knoepfe{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pdf-sheet-knoepfe .button-like{font:700 13px Inter,sans-serif;padding:8px 12px;border-radius:6px;border:1px solid #cbd0c8;background:#fff;color:var(--ink)!important;text-decoration:none;min-height:40px;display:inline-flex;align-items:center}
.pdf-sheet-knoepfe #pdf-sheet-close{font:700 13px Inter,sans-serif;padding:8px 14px;border-radius:6px;border:0;background:var(--ink);color:#fff;min-height:40px}
.pdf-sheet-card iframe{width:100%;height:100%;border:1px solid var(--line);border-radius:8px;background:#f6f4ec}
.pdf-sheet-hinweis{margin:0;font-size:12px}
body.blatt-offen{overflow:hidden}
/* Als App vom Home-Bildschirm fuehrt "im Browser oeffnen" zurueck in
   genau die Ansicht ohne Schliessen-Knopf. Dort bleibt Herunterladen. */
.als-app #pdf-sheet-extern{display:none}
@media(max-width:700px){.pdf-sheet{padding:0}.pdf-sheet-card{height:100dvh;border-radius:0;padding:10px}.pdf-sheet-knoepfe{width:100%}.pdf-sheet-knoepfe #pdf-sheet-close{margin-left:auto}}

/* Diktat: der Knopf erscheint nur, wenn der Dienst wirklich antwortet */
/* Vom alten Diktierknopf bleibt nur das Pochen: der runde
   Sprechknopf benutzt dieselbe Animation. Der Knopf selbst ist mit
   REV28 entfallen - zwei Bedienstellen fuer dieselbe Sache. */
@keyframes diktat-pulsieren{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.72)}}

/* ------------------------------------------------- Angebotsmodus
   Der Sprechknopf ist rund und sitzt am rechten Rand. Zwei Masse, an
   einer Stelle aenderbar: Durchmesser und Hoehe in Prozent. Beide
   Werte kommen aus der Daumenprobe am iPad, nicht aus dem Gefuehl.
   Ein Kreis ist eine kleinere Flaeche als eine Saeule - deshalb eher
   gross, und deshalb bleibt der Rand frei (siehe .sprech-platz). */
:root{--sprech-durchmesser:104px;--sprech-hoehe:55}
.sprech-knopf{position:fixed;right:calc(14px + env(safe-area-inset-right,0px));
  top:calc(var(--sprech-hoehe) * 1%);transform:translateY(-50%);
  width:var(--sprech-durchmesser);height:var(--sprech-durchmesser);
  border:0;border-radius:50%;background:var(--green);color:#fff;
  font:800 13px/1.2 Inter,sans-serif;text-align:center;
  display:grid;place-items:center;gap:3px;padding:0 6px;
  touch-action:none;-webkit-user-select:none;user-select:none;
  -webkit-touch-callout:none;z-index:40;box-shadow:0 6px 20px #0003}
.sprech-knopf.hidden{display:none!important}
.sprech-knopf:active{box-shadow:0 3px 10px #0004}
.sprech-knopf:focus-visible{outline:3px solid var(--lime);outline-offset:3px}
.sprech-knopf[data-an="1"]{background:var(--danger)}
.sprech-knopf[data-wartet="1"]{background:var(--muted)}
.sprech-punkt{width:12px;height:12px;border-radius:50%;background:var(--lime)}
.sprech-knopf[data-an="1"] .sprech-punkt{animation:diktat-pulsieren 1.1s ease-in-out infinite}
@media(prefers-reduced-motion:reduce){.sprech-knopf[data-an="1"] .sprech-punkt{animation:none;opacity:1}}
.sprech-wort{white-space:nowrap}
.sprech-uhr{font-variant-numeric:tabular-nums;font-size:12px;min-height:1em}
/* Solange der Knopf steht, bleibt rechts Platz - sonst liegt er auf
   der letzten Spalte der Angebotsliste. */
body.sprechmodus-an #view-offers{padding-right:calc(var(--sprech-durchmesser) + 26px)}
@media(max-width:700px){body.sprechmodus-an #view-offers{padding-right:calc(var(--sprech-durchmesser) + 14px)}}

.sprech-liste{display:flex;flex-direction:column;gap:8px;margin:14px 0 0}
.sprech-leer{margin:0;font-size:13px;line-height:1.5}
/* Stilles Sichern: die Zeile sagt, wo das Diktat gerade liegt. */
.offer-sicherung{margin:8px 0 0;font-size:12px;line-height:1.45}
.offer-sicherung.gut{color:var(--green);font-weight:700}
.offer-sicherung.error{color:var(--danger);font-weight:700}
.offer-wiederherstellen{margin:14px 0 0;padding:12px;border:1px solid var(--danger);
  border-radius:6px;background:var(--card)}
.offer-wiederherstellen.hidden{display:none!important}
.offer-wiederherstellen p{margin:0 0 10px;font-size:13px;line-height:1.5;font-weight:700}
.offer-wiederherstellen-knoepfe{display:flex;gap:10px;flex-wrap:wrap}
.panel .offer-wiederherstellen button{min-height:46px}
/* Meine Woerter */
.sprache-liste{display:flex;flex-direction:column;gap:8px;margin:14px 0 0}
.sprache-zeile{background:var(--card);border:1px solid var(--line);border-left:3px solid var(--line);
  border-radius:6px;padding:10px 12px;display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.sprache-zeile.aktiv{border-left-color:var(--green)}
.sprache-paar{font-weight:800;font-size:15px}
.sprache-zustand{font-size:12px;color:var(--muted);margin-left:auto}
.panel .sprache-zeile button{min-height:40px;padding:0 12px;font-size:13px;
  background:var(--card);color:var(--ink);border:1px solid var(--line)}
/* Der Positionsbereich ist jetzt Teil des Editors, kein eigenes Panel. */
.sprechmodus{margin:18px 0 0;padding:14px;border:1px solid var(--line);border-radius:6px;
  background:var(--paper)}
.sprech-kopf{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}
.sprech-kopf .eyebrow{margin:0}
.sprech-anleitung{margin:6px 0 0;font-size:13px}
.offer-anlegen{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:14px 0 0}
.offer-anlegen.hidden{display:none!important}
.panel .offer-anlegen button{min-height:48px;font-size:15px}
.offer-anlegen-hinweis{margin:0;font-size:12px;flex:1 1 200px}
.offer-anlegen-hinweis.gut{color:var(--green);font-weight:700}
.offer-anlegen-hinweis.error{color:var(--danger);font-weight:700}
.offer-freitext{margin:18px 0 0;border-top:1px solid var(--line);padding-top:12px}
.offer-freitext summary{font-size:13px;font-weight:700;color:var(--muted);cursor:pointer;
  min-height:44px;display:flex;align-items:center}
.offer-freitext[open] summary{color:var(--ink)}
.sprech-mannstunden{border-color:var(--muted);color:var(--muted)}
/* Der Positionsbereich steht immer da - er hebt sich nur hervor, wenn
   der Schritt "Positionen" aktiv ist. Vorher war er ganz versteckt,
   solange man in einem anderen Schritt stand, und man hat gesucht. */
#sprechmodus{transition:border-color .15s ease}
@media(prefers-reduced-motion:reduce){#sprechmodus{transition:none}}
#sprechmodus.schritt-aktiv{border-color:var(--green);box-shadow:0 0 0 3px #1d6b4d1a}
.sprech-zeile{background:var(--card);border:1px solid var(--line);border-left:3px solid var(--green);
  border-radius:6px;padding:8px 10px;display:grid;
  grid-template-columns:auto auto minmax(0,1fr) auto auto;gap:4px 10px;align-items:center}
.sprech-zeile.offen{border-left-color:var(--danger)}
.sprech-zeile.zieht{opacity:.45}
.sprech-zeile.ziel{border-top:3px solid var(--green)}
.sprech-zeile.neu{animation:sprech-auftauchen .25s ease-out}
@keyframes sprech-auftauchen{from{opacity:.3;transform:translateY(-4px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.sprech-zeile.neu{animation:none}}
/* Der Griff ist bewusst 46 px gross: er wird mit dem Daumen getroffen,
   nicht mit der Maus gezielt. touch-action:none nur hier, damit die
   Liste beim Ziehen nicht mitscrollt. */
.sprech-griff{width:46px;height:46px;display:grid;place-items:center;border:0;background:none;
  color:var(--muted);touch-action:none;cursor:grab;border-radius:8px;padding:0;
  /* REV47: derselbe Schutz, den der Sprechknopf oben schon hat. Ohne
     ihn haelt iPadOS das lange Druecken fuer den Beginn einer
     Textauswahl - dann sind mehrere Zeilen blau und die Geste reisst
     ab. preventDefault() im Skript allein reicht dafuer nicht. */
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.sprech-griffkasten{display:flex;flex-direction:column;align-items:center;gap:2px;align-self:start}
/* Die zwei Pfeile liegen hinter einem Antippen des Griffs. Ein Knopf
   kann nicht danebengehen - eine Geste schon. */
.sprech-schieben{display:none;flex-direction:column;gap:2px}
.sprech-zeile.schiebt .sprech-schieben{display:flex}
.sprech-schieb{width:46px;height:34px;border:1px solid var(--line);background:var(--card);
  color:var(--ink);border-radius:8px;font-size:13px;line-height:1;padding:0;
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.panel .sprech-schieb{background:var(--card);color:var(--ink)}
.sprech-schieb:active{background:var(--lime)}
.sprech-zeile.schiebt{border-left-color:var(--lime);box-shadow:0 0 0 2px #d9f28d80}
/* Waehrend des Ziehens ist die ganze Liste unmarkierbar, und die
   Felder nehmen keine Beruehrung an: so liefert elementFromPoint die
   ZEILE statt eines Eingabefelds, und Safari faengt nichts an. */
.sprech-liste.zieht-gerade{touch-action:none;-webkit-user-select:none;user-select:none;
  -webkit-touch-callout:none}
.sprech-liste.zieht-gerade .sprech-text,
.sprech-liste.zieht-gerade .sprech-feld,
.sprech-liste.zieht-gerade .sprech-weg{pointer-events:none}
.panel .sprech-griff{background:none;color:var(--muted)}
.sprech-griff:active{cursor:grabbing;background:#0000000f}
.sprech-griff:focus-visible{outline:3px solid var(--green);outline-offset:-2px}
.sprech-griff svg{width:18px;height:26px;pointer-events:none}
.sprech-feld{font:700 14px Inter,sans-serif;font-variant-numeric:tabular-nums;color:var(--ink);
  background:var(--paper);border:1px solid var(--line);border-radius:5px;
  padding:7px 8px;min-height:40px;text-align:right}
.sprech-feld:focus{border-color:var(--green);box-shadow:0 0 0 3px #1d6b4d1a}
.sprech-feld.nr{width:5em;text-align:left}
.sprech-feld.menge{width:5.5em}
.sprech-feld.preis{width:6em}
select.sprech-feld{text-align:left;width:6em;padding-right:4px}
.sprech-text{font:400 14px Inter,sans-serif;min-width:0;background:var(--card);
  border:1px solid transparent;border-radius:5px;padding:7px 6px;color:var(--ink)}
.sprech-text:focus{border-color:var(--green);background:var(--paper);box-shadow:0 0 0 3px #1d6b4d1a}
.sprech-zahlen{display:flex;align-items:center;gap:5px;flex-wrap:nowrap}
.sprech-zahlen small{font-size:12px;color:var(--muted)}
/* Bereichskopf: eine Ueberschrift MIT Nummer, wie "03 Holzterrasse" im
   gedruckten Angebot. Keine Menge, kein Preis - die stehen in den
   Unterpositionen. Rechts die Bereichssumme, auch das wie im Angebot. */
.sprech-zeile.bereich{background:var(--paper);border-left-width:6px;
  grid-template-columns:auto auto minmax(0,1fr) auto auto auto}
.sprech-zeile.bereich .sprech-feld.nr{font-weight:800}
.sprech-text.bereichstext{font-weight:800;font-size:15px;background:transparent}
.sprech-text.bereichstext:focus{background:var(--card)}
.sprech-bereichsmarke{font-size:11px;font-weight:800;letter-spacing:.06em;color:var(--green);
  border:1px solid var(--green);border-radius:999px;padding:2px 8px;white-space:nowrap}
.sprech-bereichssumme{font:800 14px Inter,sans-serif;font-variant-numeric:tabular-nums;
  color:var(--ink);white-space:nowrap;min-width:5em;text-align:right}
@media(max-width:700px){.sprech-zeile.bereich{grid-template-columns:auto minmax(0,1fr) auto auto}
  .sprech-bereichsmarke{grid-column:2}
  .sprech-zeile.bereich .sprech-weg{grid-column:4;grid-row:1}}

.sprech-roh{grid-column:1/-1;font-size:11px;color:var(--muted);overflow-wrap:anywhere;margin:0}
.sprech-offen{grid-column:1/-1;font-size:12px;font-weight:700;color:var(--danger);margin:0;
  display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.sprech-marke{font-size:11px;font-weight:800;letter-spacing:.06em;color:var(--green);
  border:1px solid var(--green);border-radius:999px;padding:2px 8px;white-space:nowrap}
.sprech-nummer-vorschlag{font:700 12px Inter,sans-serif;border:1px dashed var(--green);
  background:none;color:var(--green);border-radius:999px;padding:3px 9px;min-height:32px}
.panel .sprech-nummer-vorschlag{background:none;color:var(--green)}
.sprech-fuss{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:12px 0 0}
.sprech-summe{font-size:13px;color:var(--muted);margin-left:auto}
.sprech-summe b{color:var(--ink);font-variant-numeric:tabular-nums}
.sprech-hinweis{margin:8px 0 0;font-size:12px;line-height:1.45}
.sprech-hinweis.error{color:var(--danger)}
@media(max-width:700px){.sprech-zeile{grid-template-columns:auto minmax(0,1fr) auto}
  .sprech-zahlen{grid-column:2}
  .sprech-weg{grid-column:3;grid-row:1}}

/* Das Bauvorhaben steht auf der Karte in einer eigenen Zeile: es ist
   der Satz, an dem man die Baustelle wiedererkennt - so wie im Angebot
   ueber der Anrede. */
.site-bauvorhaben{display:block;font-size:13px;font-weight:700;color:var(--green);
  margin:2px 0 0;overflow-wrap:anywhere}

/* ---------------------------------------------- Angebotsliste
   Beim Oeffnen der Angebotsansicht steht hier, was geschrieben ist -
   nicht ein leeres Formular. Sortieren nach Datum oder Kunde, ein
   Suchfeld, und der Knopf fuer ein neues Angebot zuerst. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap;border:0}
.offer-werkzeug{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:14px 0 0}
.offer-werkzeug>button#offer-neu{min-height:46px;white-space:nowrap}
.offer-suche{flex:1 1 220px;min-width:160px;display:block;margin:0}
.offer-suche input{width:100%;min-height:46px}
.offer-sortierung{display:flex;gap:0;border:1px solid var(--line);border-radius:6px;overflow:hidden}
.panel .offer-sort{background:var(--card);color:var(--muted);border:0;border-radius:0;
  padding:0 14px;min-height:46px;font-weight:700}
.panel .offer-sort+.offer-sort{border-left:1px solid var(--line)}
.panel .offer-sort.active{background:var(--green);color:#fff}
.offer-zahl{margin:10px 0 0;font-size:12px}
.offer-liste{display:flex;flex-direction:column;gap:8px;margin:10px 0 0}
.offer-zeile{background:var(--card);border:1px solid var(--line);border-left:3px solid var(--green);
  border-radius:6px;padding:10px 12px;display:grid;
  grid-template-columns:minmax(0,1fr) auto auto;gap:3px 14px;align-items:center;
  text-align:left;width:100%;font:inherit;color:var(--ink)}
.panel .offer-zeile{background:var(--card);color:var(--ink)}
.offer-zeile:hover{border-color:var(--green)}
.offer-zeile:focus-visible{outline:3px solid var(--green);outline-offset:-2px}
.offer-zeile.offen{border-left-color:var(--danger)}
.offer-zeile b{font-size:15px;font-weight:800}
.offer-zeile .offer-bv{grid-column:1;font-size:13px;color:var(--muted);overflow-wrap:anywhere}
.offer-zeile .offer-datum{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.offer-zeile .offer-marke{font-size:11px;font-weight:800;letter-spacing:.06em;
  border:1px solid var(--line);border-radius:999px;padding:3px 9px;white-space:nowrap;color:var(--muted)}
.offer-zeile .offer-marke.freigegeben{border-color:var(--green);color:var(--green)}
.offer-zeile .offer-marke.pruefung{border-color:var(--danger);color:var(--danger)}
.offer-aufklappen{background:var(--paper);border:1px solid var(--line);border-radius:6px;
  padding:10px 12px;margin:-2px 0 0;font-size:13px;line-height:1.5}
.offer-aufklappen ol{margin:6px 0 0;padding-left:20px}
.offer-aufklappen li{margin:2px 0}
.offer-leer{margin:14px 0 0;font-size:14px}

.offer-editor-kopf{display:flex;gap:12px;align-items:flex-start;justify-content:space-between;flex-wrap:wrap}
.offer-schritte{display:flex;gap:0;margin:14px 0 0;border:1px solid var(--line);
  border-radius:6px;overflow:hidden}
.panel .offer-schritt{flex:1 1 0;background:var(--card);color:var(--muted);border:0;border-radius:0;
  min-height:46px;font-weight:800;font-size:13px}
.panel .offer-schritt+.offer-schritt{border-left:1px solid var(--line)}
.panel .offer-schritt.active{background:var(--lime);color:var(--ink)}
.panel .offer-schritt.fertig{color:var(--green)}
.offer-kopffelder{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin:14px 0 4px}
.offer-kopffelder input{min-height:46px}
.offer-kopffelder label.spricht input{border-color:var(--green);box-shadow:0 0 0 3px #1d6b4d1a}
/* Speichern und Fassungen */
.offer-speichern{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;margin:14px 0 0;
  padding:12px;background:var(--paper);border:1px solid var(--line);border-radius:6px}
.offer-speichern.hidden{display:none!important}
.panel .offer-speichern button#offer-sichern{min-height:46px}
.offer-notiz{flex:1 1 220px;min-width:160px;font-size:13px;font-weight:700;display:grid;gap:7px}
.offer-notiz input{min-height:46px}
.offer-sicher-hinweis{flex:1 1 100%;margin:0;font-size:12px}
.offer-sicher-hinweis.gut{color:var(--green);font-weight:700}
.offer-sicher-hinweis.error{color:var(--danger);font-weight:700}
.offer-fassungen{margin:18px 0 0}
.offer-fassungen.hidden{display:none!important}
.offer-fassungen-kopf{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.offer-fassungen-kopf h4{margin:0;font-size:14px}
.offer-fassungen-liste{display:flex;flex-direction:column;gap:6px;margin:10px 0 0}
.offer-fassung{background:var(--card);border:1px solid var(--line);border-radius:6px;
  padding:8px 10px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:13px}
.offer-fassung time{font-variant-numeric:tabular-nums;font-weight:700;white-space:nowrap}
.offer-fassung .offer-fassung-wer{color:var(--muted)}
.offer-fassung .offer-fassung-knoepfe{margin-left:auto;display:flex;gap:8px}
.panel .offer-fassung button{min-height:40px;padding:0 12px;font-size:13px}
.panel .offer-fassung button.secondary{background:var(--card);color:var(--ink);border:1px solid var(--line)}
@media(max-width:700px){.offer-werkzeug>button#offer-neu{width:100%}
  .offer-zeile{grid-template-columns:minmax(0,1fr) auto}
  .offer-schritte{flex-direction:column}
  .panel .offer-schritt+.offer-schritt{border-left:0;border-top:1px solid var(--line)}}
/* Bearbeiter an der Karte: eine Zeile, nicht zu laut */
.site-bearbeiter{display:inline-flex;align-items:center;align-self:start;gap:5px;font:700 11px Inter,sans-serif;letter-spacing:.03em;padding:2px 8px;border-radius:20px;background:#e9efe3;color:#2c4a1e;border:1px solid #cddcc1}
.site-edit .site-field select{font-size:13px;padding:8px 9px;width:100%}
/* Loeschen an der Karte: erreichbar, aber nicht einladend */
.site-actions .site-weg{border-color:#dcc2bf;color:#8a3a30;background:#fff;font-weight:700;padding:6px 7px;min-height:32px}
.site-actions .site-weg:hover{background:#fbeeec;border-color:var(--danger);color:var(--danger)}
.site-loeschfrage{display:grid;gap:7px}
.site-loeschfrage p{margin:0;font-size:14px}
.site-loeschfrage small{font-size:12px;line-height:1.45;color:#7a4038}
.site-actions .site-weg-ja{background:var(--danger);border-color:var(--danger);color:#fff}
.site-actions .site-weg-ja:hover{background:#8f2f26;border-color:#8f2f26}

/* Angebot als PDF. Gleiche Daumenmasse wie die uebrigen Knoepfe im
   Angebotsfenster - bedient wird das auf einem iPad im Freien. */
.offer-pdf{margin-top:18px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--card)}
.offer-pdf-kopf{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;justify-content:space-between}
.offer-pdf-kopf h4{margin:0}
.offer-unterzeichner{display:flex;flex-direction:column;gap:4px;font-size:.85rem}
.offer-unterzeichner select{min-height:46px;min-width:200px;font-size:1rem;padding:0 10px}
.offer-pdf-knoepfe{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.panel .offer-pdf-knoepfe button{min-height:46px;min-width:170px}
.offer-pdf-bericht{margin-top:10px}
.offer-pdf-bericht p{margin:4px 0}
.offer-pdf-fehlt,.offer-pdf-warnung{margin:4px 0 4px 18px;padding:0}
.offer-pdf-fehlt li{color:var(--danger)}
.offer-pdf-warnung li{color:var(--muted)}
@media(max-width:560px){
  .offer-pdf-kopf{flex-direction:column;align-items:stretch}
  .offer-unterzeichner select{min-width:0;width:100%}
  .panel .offer-pdf-knoepfe button{flex:1 1 100%}
}

/* Position loeschen. Klein und am Rand - aber mit 44 px Trefferflaeche,
   sonst erwischt ein Daumen auf dem iPad die Nachbarzeile. Zwei
   Klicks: beim ersten wird gefragt. */
.sprech-weg{border:0;background:transparent;color:var(--muted);
  min-width:44px;min-height:44px;font-size:20px;line-height:1;border-radius:6px;
  align-self:center;padding:0 6px}
.sprech-weg:hover{color:var(--danger);background:#a63b310f}
.sprech-weg.fragt{background:var(--danger);color:#fff;font-size:13px;font-weight:800}
.sprech-hinweis.gut{color:var(--green)}

/* Artikel nachschlagen im Angebot. Einkauf links, Vorschlag rechts -
   und darunter, woraus er entstanden ist. Die beiden Zahlen stehen
   bewusst nebeneinander und nicht untereinander: wer nur eine sieht,
   haelt sie fuer den Preis. */
.offer-artikel{margin-top:18px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--card)}
.offer-artikel summary{font-weight:800;cursor:pointer;min-height:44px;display:flex;align-items:center}
.offer-artikel-suche{display:flex;gap:10px;margin-top:10px;flex-wrap:wrap}
.offer-artikel-suche input{flex:1;min-width:200px;min-height:46px}
.panel .offer-artikel-suche button{min-height:46px;min-width:120px}
.offer-artikel-treffer{margin-top:12px;display:grid;gap:10px}
.artikel-zeile{border:1px solid var(--line);border-left:3px solid var(--green);
  border-radius:8px;padding:10px 12px;background:var(--paper)}
.artikel-kopf{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline}
.artikel-wer{font-size:12px;color:var(--muted)}
.artikel-zahlen{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:baseline;margin-top:6px;
  font-variant-numeric:tabular-nums}
.artikel-ek{font-weight:700}
.artikel-vk{font-weight:800;color:var(--green)}
.artikel-einheit{color:var(--muted)}
.artikel-herkunft{margin:4px 0 0;font-size:12px}
.artikel-warnung{margin:4px 0 0;font-size:12px;color:var(--danger);font-weight:700}
.artikel-hinweis{margin:2px 0 0;font-size:12px}
@media(max-width:560px){
  .offer-artikel-suche input{min-width:0;width:100%}
  .panel .offer-artikel-suche button{flex:1 1 100%}
}
/* Nachrichten im Zeitungsaufbau: oben ein Aufmacher, darunter drei weitere
   Meldungen, dann eine Spalte "Kurz gemeldet". Der Aufbau ist von einer
   Zeitungsseite geborgt, der Inhalt nicht: Schlagzeile, Ressort, Quelle und
   Uhrzeit stehen woertlich so in der Quelle. */
.zeitung{display:grid;gap:34px;margin-top:10px}
.zeitung-gruppe{display:grid;gap:20px}
.zeitung-titel{margin:0;font:900 12px Inter,sans-serif;text-transform:uppercase;letter-spacing:.14em;color:var(--green);border-bottom:2px solid var(--ink);padding-bottom:7px}
.zeitung-hinweis{margin:-12px 0 0;font-size:11.5px;color:var(--muted)}
.zeitung-auf{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:22px;align-items:start}
.zeitung-auf.ohne-bild{grid-template-columns:1fr}
.zeitung-auf-bild{overflow:hidden;border-radius:5px;background:#eceadf;aspect-ratio:16/10}
.zeitung-auf-bild img{width:100%;height:100%;object-fit:cover;display:block}
.zeitung-auf-text{min-width:0}
.zeitung-dach{margin:0 0 7px;font:800 11px Inter,sans-serif;text-transform:uppercase;letter-spacing:.12em;color:var(--green)}
.zeitung-schlagzeile{margin:0 0 9px;font:900 30px/1.14 Georgia,serif;letter-spacing:-.01em;text-wrap:balance}
.zeitung-schlagzeile a{color:var(--ink);text-decoration:none}
.zeitung-schlagzeile a:hover{color:var(--green);text-decoration:underline}
.zeitung-anriss{margin:0;font-size:15px;line-height:1.6;color:var(--ink);overflow-wrap:anywhere}
.zeitung-weitere{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;border-top:1px solid var(--line);padding-top:4px}
.zeitung-weitere[data-spalten="1"]{grid-template-columns:1fr}
.zeitung-weitere[data-spalten="1"] .news-item{grid-template-columns:200px 1fr;gap:18px;align-items:start}
.zeitung-weitere[data-spalten="2"]{grid-template-columns:repeat(2,minmax(0,1fr))}
.zeitung-weitere .news-item{grid-template-columns:1fr;border-top:0;padding:12px 0 0}
.zeitung-weitere .news-image{aspect-ratio:16/10}
.zeitung-weitere .news-body h4{font-size:16px}
.zeitung-weitere .news-summary{font-size:13px}
.zeitung-kurz{border-top:1px solid var(--line);padding-top:14px}
.zeitung-kurz h5{margin:0 0 9px;font:900 11px Inter,sans-serif;text-transform:uppercase;letter-spacing:.14em;color:var(--muted)}
.zeitung-kurz ul{list-style:none;margin:0;padding:0;display:grid;gap:0}
.zeitung-kurz li{display:grid;gap:2px;padding:9px 0;border-top:1px solid var(--line)}
.zeitung-kurz li:first-child{border-top:0;padding-top:0}
.zeitung-kurz a{font:700 15px/1.35 Georgia,serif;color:var(--ink);text-decoration:none}
.zeitung-kurz a:hover{color:var(--green);text-decoration:underline}
.zeitung-kurz-dach{font-size:11.5px;color:var(--muted);letter-spacing:.01em}
@media(max-width:860px){.zeitung-weitere{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.zeitung-auf{grid-template-columns:1fr;gap:12px}.zeitung-schlagzeile{font-size:25px}.zeitung-weitere{grid-template-columns:1fr;gap:0}.zeitung-weitere .news-item{border-top:1px solid var(--line);padding:16px 0}.zeitung-weitere .news-item:first-child{border-top:0}.zeitung-weitere[data-spalten="1"] .news-item{grid-template-columns:1fr;gap:10px}}
/* Archiv: ein Schalter, keine zweite Liste nebenan. Lebendes und
   Archiviertes zusammen in einer Liste ist der Grund, warum man spaeter
   im falschen Angebot weiterschreibt. */
.offer-archiv{border:1px solid var(--line);background:#fff!important;color:var(--ink)!important;border-radius:4px;padding:9px 14px;font-weight:700}
.offer-archiv.active{background:var(--ink)!important;color:#fff!important;border-color:var(--ink)}
.offer-aktionen{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.offer-loeschvorschau:not(:empty){margin-top:12px;border-top:1px solid var(--line);padding-top:12px}
.offer-loeschvorschau ul{margin:6px 0;padding-left:20px;font-size:13px;color:var(--muted)}
.offer-loeschvorschau p{margin:6px 0;font-size:14px}
.offer-loeschvorschau button{margin-top:6px}
/* Die zwei Plus: eine Position haengt unter den laufenden Bereich, ein
   Bereich macht einen neuen auf. Position ist der haeufigere Griff und
   steht deshalb vorn und kraeftiger. */
.sprech-plus{font-weight:800}
.sprech-plus.secondary{font-weight:700}
@media(max-width:700px){.sprech-fuss{display:flex;flex-wrap:wrap;gap:8px}.sprech-fuss button{flex:1 1 46%}}
/* Baustellenkarte: Name links, geschaetzte Dauer rechts, eine Zeile. */
.site-kopf{display:flex;align-items:baseline;justify-content:space-between;gap:8px;min-width:0}
.site-kopf strong{min-width:0;overflow-wrap:anywhere}
.site-tage{flex:none;font:800 11px Inter,sans-serif;letter-spacing:.02em;color:var(--green);background:#edf2e8;border-radius:30px;padding:3px 9px;white-space:nowrap}
/* Positionszeile neu: oben Nummer und Text ueber die volle Breite,
   darunter die Zahlen. Vorher war der Text das schmalste Element der
   Zeile - 220 Pixel fuer die Leistung, 571 fuer Menge, Einheit und
   Preis. Die Breiten stehen hier fest, damit keine allgemeine
   Feldregel sie wieder verschiebt. */
.sprech-zeile{grid-template-columns:auto minmax(0,1fr) auto;align-items:start}
.sprech-inhalt{display:grid;gap:6px;min-width:0}
.sprech-kopf{display:flex;align-items:flex-start;gap:8px;min-width:0}
.sprech-kopf .sprech-feld.nr{flex:none;width:5.5em}
.sprech-text{flex:1 1 auto;width:auto;min-width:0;resize:none;overflow:hidden;
  font:400 15px/1.45 Inter,sans-serif;background:var(--paper);border:1px solid var(--line);
  padding:8px 10px;min-height:38px}
.sprech-fuss-zeile{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-left:calc(5.5em + 8px)}
.sprech-fuss-zeile .sprech-zahlen{flex-wrap:wrap}
.sprech-zahlen .sprech-feld{flex:none}
.sprech-zahlen .sprech-feld.menge{width:5.5em}
.sprech-zahlen .sprech-feld.preis{width:6.5em}
.sprech-zeile .sprech-griff{align-self:start}
.sprech-weg{align-self:start}
@media(max-width:700px){
  .sprech-kopf{flex-wrap:wrap}
  .sprech-kopf .sprech-feld.nr{width:4.5em}
  .sprech-fuss-zeile{padding-left:0}
  .sprech-text{font-size:16px}
}
}
/* Die Angebotsnummer neben dem Speichern-Knopf. */
.offer-nummer-stand{font:700 13px Inter,sans-serif;align-self:center}
.offer-nummer-stand.gut{color:var(--green)}

/* Ziehen zum Neuladen. Vom Startbildschirm aus hat CHARLIE keine
   Safari-Leiste und damit keinen Neu-laden-Knopf. */
.zieh-band{position:fixed;top:0;left:50%;z-index:30;display:none;align-items:center;gap:9px;
  transform:translate(-50%,0);background:var(--card);border:1px solid var(--line);
  border-radius:0 0 14px 14px;padding:9px 16px;box-shadow:0 8px 24px #15241c20;
  font:700 13px Inter,sans-serif;color:var(--muted);pointer-events:none}
.zieh-band.sichtbar{display:flex}
.zieh-band.bereit{color:var(--green);border-color:var(--green)}
.zieh-punkt{width:9px;height:9px;border-radius:50%;background:currentColor}

/* Der Kundenstamm im Angebotseditor. Eingeklappt, weil er beim
   Diktieren nicht im Weg stehen soll. */
.offer-kundenstamm{border:1px solid var(--line);border-radius:8px;padding:10px 12px;
  margin:10px 0;background:var(--card)}
.offer-kundenstamm summary{font:700 14px Inter,sans-serif;cursor:pointer}
.offer-kundenstamm .kunde-wahl{display:block;margin:10px 0}
.kunde-felder{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px 12px;
  margin:8px 0 12px}
.kunde-felder label{display:flex;flex-direction:column;gap:3px;font:600 12px Inter,sans-serif;
  color:var(--muted);min-width:0}
.kunde-felder input,.kunde-felder select{font:400 15px Inter,sans-serif;padding:8px 10px;
  border:1px solid var(--line);border-radius:5px;background:var(--card);color:var(--ink);min-width:0}
@media(max-width:700px){
  .kunde-felder{grid-template-columns:1fr 1fr}
  .kunde-felder input,.kunde-felder select{font-size:16px}
}

/* "+ Material" und "+ Gerät" unter den Kalkulationszeilen. */
.kalk-mehr{display:flex;gap:8px;flex-wrap:wrap;padding:4px 0 2px}
.kalk-mehr-knopf{font:700 12px Inter,sans-serif;border:1px dashed var(--line);
  background:none;color:var(--ink);border-radius:4px;padding:4px 10px}

/* Die Eventualposition. Gedrueckt ist sie dunkel - dasselbe Muster wie
   der Bezugsschalter in der Kalkulation. */
.sprech-ev{flex:none;border:1px solid var(--line);background:var(--card);color:var(--muted);
  font:700 12px Inter,sans-serif;border-radius:5px;padding:6px 10px;white-space:nowrap}
.sprech-ev[data-ev="1"]{background:var(--ink);color:#fff;border-color:var(--ink)}
.sprech-zeile.ist-bedarf{border-left-style:dashed}
.sprech-zeile.ist-bedarf .sprech-zeilensumme{color:var(--muted)}

/* Der Ausweg aus "Menge der Position fehlt". Gestrichelt wie der alte
   Nummernvorschlag: ein Angebot, kein Befehl. */
.kalk-pauschal{font:700 12px Inter,sans-serif;border:1px dashed var(--green);
  background:none;color:var(--green);border-radius:4px;padding:3px 8px;white-space:nowrap}

/* Die Summe der Position, rechts neben dem Sigma. Tabellenziffern,
   damit die Betraege untereinander auf derselben Stelle stehen. */
.sprech-zeilensumme{flex:none;margin-left:auto;font:800 15px Inter,sans-serif;
  font-variant-numeric:tabular-nums;color:var(--ink);white-space:nowrap}

/* Die Zeile, in die gerade gesprochen wird. Auf dem Knopf steht
   dasselbe Wort - zwei Anzeigen fuer eine Sache, weil der Daumen den
   Knopf verdeckt und der Blick auf der Liste liegt. */
.sprech-zeile.spricht{border-left-color:var(--green);box-shadow:0 0 0 3px #1d6b4d1a}

/* Das Sigma an der Zeile und die Kalkulation darunter. */
.sprech-kalk-knopf{flex:none;border:1px solid var(--line);background:var(--card);color:var(--green);
  font:800 17px/1 Inter,sans-serif;min-width:40px;min-height:40px;border-radius:5px;padding:0}
.sprech-kalk-knopf.hat-kalkulation{background:#edf2e8;border-color:#c6d8c6}
.sprech-kalk-knopf[aria-expanded="true"]{background:var(--ink);color:#fff;border-color:var(--ink)}
.sprech-zeile.kalk-offen{border-left-color:var(--ink)}
.sprech-kalk{grid-column:1/-1;border-top:1px solid var(--line);margin-top:4px;padding-top:10px;
  display:grid;gap:6px}
.kalk-kopf{margin:0 0 2px;font-size:12px}
.kalk-reihe{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.kalk-name{font:800 12px Inter,sans-serif;min-width:5.5em}
.kalk-reihe .sprech-feld{flex:none}
.kalk-menge{width:5.5em}
.kalk-satz{width:6.5em}
.kalk-einheit{font-size:11.5px;color:var(--muted);min-width:5em}
.kalk-je{font-size:12px;color:var(--muted)}
.kalk-zuschlag{font:700 11px Inter,sans-serif;color:var(--green);background:#edf2e8;
  border-radius:30px;padding:2px 8px;white-space:nowrap}
.kalk-betrag{margin-left:auto;font:800 14px Inter,sans-serif;font-variant-numeric:tabular-nums}
.kalk-fuss{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border-top:1px solid var(--line);
  padding-top:9px;margin-top:3px}
.kalk-summe{font:900 17px Inter,sans-serif;font-variant-numeric:tabular-nums;margin-left:auto}
.kalk-fuss button{flex:none}
.kalk-fuss button[disabled]{opacity:.45}
@media(max-width:700px){.kalk-name{min-width:100%}.kalk-betrag{margin-left:0}.kalk-summe{margin-left:0}}
/* Die allgemeine Feldregel im Panel (.panel input{flex:1;min-width:220px})
   hat die schmalen Felder wieder aufgeblasen - gemessen: das Nummernfeld
   410 Pixel breit. Hier wird sie fuer die Positionszeile ausdruecklich
   zurueckgenommen, mit min-width, sonst greift die Untergrenze weiter. */
.sprech-kopf .sprech-feld.nr{flex:0 0 5.5em;width:5.5em;min-width:0}
.sprech-zahlen .sprech-feld,.kalk-reihe .sprech-feld{flex:0 0 auto;min-width:0}
.sprech-zahlen .sprech-feld.menge{width:5.5em}
.sprech-zahlen .sprech-feld.preis{width:7em}
.kalk-reihe .kalk-menge{width:5.5em}
.kalk-reihe .kalk-satz{width:7em}
/* Zugeklappt heisst zugeklappt: display:grid schlaegt sonst das
   eingebaute [hidden], und unter jeder Zeile blieb ein Strich stehen. */
.sprech-kalk[hidden]{display:none}
@media(max-width:700px){.sprech-kopf .sprech-feld.nr{flex:0 0 4.5em;width:4.5em}}
/* Auch der Bereichskopf haengt an der Panel-Regel: am Telefon lag die
   Nummer ueber der Ueberschrift, weil das Feld 220 Pixel breit bleiben
   wollte. Die Untergrenze wird fuer JEDES Feld der Positionszeile
   zurueckgenommen, nicht nur fuer die im neuen Kopf. */
.sprech-zeile .sprech-feld{min-width:0}
.sprech-zeile.bereich .sprech-feld.nr{flex:none;width:5.5em}
@media(max-width:700px){
  .sprech-zeile.bereich .sprech-feld.nr{width:4.5em}
  /* Menge, Einheit und Preis bleiben beieinander - sie gehoeren
     zusammen gelesen. Umbrechen darf die Zeile darum herum. */
  .sprech-fuss-zeile .sprech-zahlen{flex-wrap:nowrap}
  .sprech-zahlen .sprech-feld.menge{width:4.2em}
  .sprech-zahlen .sprech-feld.preis{width:5.4em}
  .sprech-kalk-knopf{min-width:38px;min-height:38px}
}
/* Der Bereichskopf hat jetzt denselben Aufbau wie eine Position. */
.sprech-zeile.bereich{grid-template-columns:auto minmax(0,1fr) auto}
.sprech-zeile.bereich .sprech-weg{grid-column:3;grid-row:1}
.sprech-zeile.bereich .sprech-fuss-zeile{gap:10px}
/* Mitarbeiter, Bezug und die Rechnung in Worten. */
.kalk-ma{width:3.6em}
.kalk-bezug{flex:none;border:1px solid var(--line);background:var(--card);color:var(--green);
  font:700 11px Inter,sans-serif;border-radius:30px;padding:4px 10px;white-space:nowrap}
.kalk-bezug[data-kalk-bezug="gesamt"]{background:var(--ink);color:#fff;border-color:var(--ink)}
.kalk-rechnung{font-size:11.5px;color:var(--muted);flex:1 1 100%;order:9;padding-left:5.5em}
.kalk-rechnung.fehlt{color:var(--danger);font-weight:700}
.kalk-betrag{order:8}
/* REV34: Maschinenauswahl und Herkunft in der Kalkulation.
   Die Auswahl steht neben der Beschriftung und darf schrumpfen (min-width:0),
   sonst schiebt sie am Telefon die Zeile auf. Die Herkunft laeuft unter der
   Reihe durch - wie die Rechnung, nur eine Stufe leiser. */
.kalk-reihe .kalk-maschine{flex:1 1 13em;min-width:9em;max-width:22em;width:auto;
  text-align:left;padding-right:4px}
.kalk-herkunft{flex:1 1 100%;order:10;padding-left:5.5em;font-size:11.5px;
  color:var(--muted);line-height:1.35;margin-bottom:2px}
.kalk-herkunft.geaendert{color:var(--ink);font-weight:700}
.kalk-herkunft[hidden]{display:none}
@media(max-width:700px){.kalk-rechnung{padding-left:0}}
/* Maschinen und Geraete. Der Stundensatz gilt ohne Fahrer. */
.maschine-liste{display:grid;gap:10px;margin-top:10px}
.maschine-zeile{background:var(--card);border:1px solid var(--line);border-left:3px solid var(--green);
  border-radius:6px;padding:10px 12px;display:grid;gap:8px}
.maschine-zeile.ausgemustert{border-left-color:#b9bfb7;opacity:.72}
.maschine-kopf{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.maschine-feld-name{flex:1 1 14em;min-width:0;width:auto;text-align:left}
.maschine-feld-satz{flex:none;width:7em}
.maschine-feld-notiz{width:100%;text-align:left}
.maschine-marke{font:700 11px Inter,sans-serif;color:var(--muted);background:#eceadf;
  border-radius:30px;padding:3px 9px;white-space:nowrap}
.maschine-aktionen{display:flex;gap:8px;flex-wrap:wrap}
.maschine-aktionen button{flex:none}
.maschine-schalter{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted);margin-top:6px}
.maschine-schalter input{flex:none;min-width:0;width:auto}
@media(max-width:700px){.maschine-feld-name{flex:1 1 100%}}

/* REV35: Das Nachrichtenfenster.
   Dominic: "ein popup in charlie ... das fenster sollte man auch wieder
   schliessen koennen am ipad". Also ein echtes <dialog>: Escape faengt
   es selbst, der Rand ist antippbar, und das Kreuz ist 44 px gross -
   dasselbe Daumenmass wie am Loeschknopf der Positionszeile. */
.news-fenster{width:min(640px,calc(100vw - 24px));max-height:88dvh;overflow:auto;
  border:none;border-radius:14px;padding:18px 20px 16px;background:var(--card);
  color:var(--ink);box-shadow:0 24px 80px #0005}
.news-fenster::backdrop{background:#10201999}
.news-fenster-kopf{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.news-fenster-kopf .zeitung-dach{margin:0;flex:1 1 auto;min-width:0}
.news-fenster-zu{flex:none;min-width:44px;min-height:44px;margin:-10px -8px 0 0;
  border:1px solid var(--line);background:var(--card);color:var(--ink);
  border-radius:8px;font:700 22px/1 Inter,sans-serif;cursor:pointer}
.news-fenster-zu:hover{background:var(--paper)}
.news-fenster .zeitung-schlagzeile{font-size:24px;margin:8px 0 10px}
.news-fenster-bild{margin:0 0 12px;border-radius:10px;overflow:hidden;background:var(--paper)}
.news-fenster-bild img{display:block;width:100%;height:auto}
.news-fenster-bild[hidden]{display:none}
.news-fenster .zeitung-anriss[hidden]{display:none}
.news-fenster-rest{margin:10px 0 0;font-size:12px}
.news-fenster-knoepfe{display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  margin-top:16px;padding-top:12px;border-top:1px solid var(--line)}
.news-fenster-knoepfe .button{font:700 13px Inter,sans-serif;padding:10px 14px;border-radius:6px;
  border:1px solid var(--ink);background:var(--ink);color:#fff;text-decoration:none;
  min-height:44px;display:inline-flex;align-items:center}
.news-fenster-knoepfe .button:hover{background:var(--green);border-color:var(--green)}
.news-fenster-knoepfe .button[hidden]{display:none}
.news-fenster-knoepfe button{flex:none;min-height:44px}
@media (max-width:520px){
  .news-fenster{padding:14px 14px 12px}
  .news-fenster .zeitung-schlagzeile{font-size:20px}
}

/* REV35: Widersprueche entscheiden.
   Die einzelnen Werte stehen untereinander, jeder mit seiner Herkunft und
   seinem eigenen Knopf. Eine Spanne "6,9 bis 33,3" ist keine
   Entscheidungsgrundlage - eine Liste mit Positionsnummern schon. */
.kalk-werte{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:8px}
.kalk-wert{display:grid;grid-template-columns:auto 1fr auto;align-items:baseline;
  gap:4px 12px;padding:8px 10px;background:var(--paper);border-radius:8px;
  border:1px solid var(--line)}
.kalk-wert strong{font:800 15px Inter,sans-serif;font-variant-numeric:tabular-nums;
  white-space:nowrap}
.kalk-wert-herkunft{font-size:11.5px;color:var(--muted);min-width:0;overflow-wrap:anywhere}
.kalk-wert-text{grid-column:1/-1;font-size:12.5px;color:var(--ink);overflow-wrap:anywhere}
.kalk-wert-nehmen{flex:none;min-height:40px;white-space:nowrap}
.kalk-entscheidung-knoepfe{margin-top:12px;display:flex;gap:8px;flex-wrap:wrap}
/* Gemessen bei 420 px: "Das sind zwei verschiedene Leistungen" war 391 px
   breit und schob die Seite 12 px ueber den Rand. Der Text darf umbrechen -
   ihn abzuschneiden hiesse, die Antwort unleserlich zu machen. */
.kalk-entscheidung-knoepfe button{flex:0 1 auto;min-width:0;max-width:100%;
  min-height:44px;white-space:normal;text-align:left;line-height:1.25}
.kalk-eigener{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px;
  padding-top:10px;border-top:1px solid var(--line)}
.kalk-eigener .sprech-feld{flex:0 0 7em;width:7em;min-width:0;text-align:right}
.kalk-eigener .kalk-eigener-warum{flex:1 1 16em;width:auto;text-align:left}
.kalk-eigener button{flex:none;min-height:44px}
.kalk-entscheidung-meldung{margin:8px 0 0;font-size:12.5px;min-height:1em}
.kalk-entscheidung-meldung.error{color:var(--danger);font-weight:700}
.kalk-entscheidung-meldung.gut{color:var(--green);font-weight:700}
.kalk-stand{margin:6px 0 0;font-weight:700}
.rule-card.decision-card.entschieden{border-left:3px solid var(--green);opacity:.92}
.kalk-entschieden-titel{grid-column:1/-1;margin:18px 0 0;font:800 13px Inter,sans-serif;
  text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}
@media (max-width:620px){
  .kalk-wert{grid-template-columns:1fr}
  .kalk-wert-nehmen{justify-self:start}
}

/* REV36: Kennzeichen in der Maschinenzeile. Schmal - es ist eine
   Unterscheidung, kein Hauptfeld. */
.maschine-feld-kennzeichen{flex:none;width:9em;min-width:0;text-align:left}
@media (max-width:520px){
  .maschine-feld-kennzeichen{flex:1 1 7em;width:auto}
}

/* REV46: eine Kalkulationszeile, der etwas fehlt. Sie wird NICHT
   versteckt und nicht auf 0 gerechnet - ohne Stundensatz oder ohne
   Dichtefaktor ist der Preis zu niedrig, und genau das sieht sonst
   niemand. */
.kalk-reihe.kalk-unvollstaendig{box-shadow:inset 3px 0 0 var(--danger)}
.kalk-reihe.kalk-unvollstaendig .kalk-herkunft{color:var(--danger);font-weight:700}
[data-kalk-knopf].kalk-hat-offen::after{content:' •';color:var(--danger)}
.sprech-kalk-hinweis{grid-column:1/-1;margin:6px 0 0;font-size:12px;line-height:1.45;
  color:var(--danger)}

/* REV48: Modulrechte und Erstpasswort. */
.modulwahl{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:4px 14px;
  margin:12px 0 0;font-size:13px}
.modulwahl label{display:flex;gap:7px;align-items:flex-start;font-weight:600;flex-wrap:wrap}
/* .panel input setzt flex:1 und min-width:220px - ein Kaestchen wurde
   damit 220 Pixel breit, und der Text stand irgendwo rechts daneben.
   Gemessen im Pruefstand, nicht geraten. */
.modulwahl input[type=checkbox],.benutzer-kopf input[type=checkbox],
.rapport-zeile input[type=checkbox]{flex:none;min-width:0;width:16px;height:16px;
  padding:0;margin:2px 0 0;accent-color:var(--green)}
.modulwahl label.nicht-erlaubt{opacity:.5}
.modulwahl label.nicht-erlaubt::after{content:'Rolle erlaubt das nicht';font-weight:400;
  font-size:11px;color:var(--muted);flex-basis:100%;padding-left:23px}
.benutzer-kopf label{display:flex;gap:7px;align-items:center;font-weight:600}
.rapport-zeile input[type=text]{flex:none}
.erstpasswort{margin:14px 0 0;padding:14px;border:2px solid var(--green);border-radius:6px;
  background:#f1f7ee}
.erstpasswort code{display:block;font:800 22px ui-monospace,Menlo,Consolas,monospace;
  letter-spacing:.06em;margin:4px 0 10px;overflow-wrap:anywhere}
.benutzer-zeile{display:grid;gap:8px;padding:13px 0;border-top:1px solid var(--line);font-size:14px}
.benutzer-kopf{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.benutzer-kopf strong{overflow-wrap:anywhere}
.passwort-pflicht{border:2px solid var(--danger);border-radius:6px;padding:14px;margin:0 0 16px;
  background:#fdf3f2}

/* REV46: Rapporte. */
.rapport-entwurf{margin:16px 0 0;padding:14px;border:1px solid var(--line);border-radius:6px;
  background:var(--paper)}
.rapport-zeilen{display:grid;gap:6px;margin:12px 0}
.rapport-zeile{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:14px}
.rapport-zeile .rapport-art{font-size:11px;font-weight:800;letter-spacing:.06em;color:var(--green);
  border:1px solid var(--green);border-radius:999px;padding:2px 8px;white-space:nowrap}
.rapport-zeile input{min-width:0}
.rapport-zeile .rapport-name{flex:1 1 180px;text-align:left}
.rapport-zeile .rapport-menge,.rapport-zeile .rapport-ma{width:5.5em}
.rapport-zeile .rapport-weg{border:0;background:none;color:var(--danger);font-weight:800;
  width:36px;height:36px;border-radius:8px}
.rapport-summe{font:700 15px Inter,sans-serif;margin:10px 0 0}
.rapport-offen{color:var(--danger);font-weight:700;font-size:12px}

/* REV49 - Flachdachwartung.
   Auf dem iPad wird das hier mit Handschuhen bedient: grosse
   Trefferflaechen, keine engen Reihen, und die Kaestchen bleiben
   Kaestchen (das 220-Pixel-Problem aus REV46 kam von .panel input). */
.wartung-reiter{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.wartung-reiter-knopf{background:var(--panel,#f7f7f4);border:1px solid rgba(0,0,0,.18);
  border-radius:8px;padding:9px 16px;min-height:42px;cursor:pointer;font:inherit}
.wartung-reiter-knopf.aktiv{background:var(--akzent,#2f6f5e);color:#fff;border-color:transparent}
.wartung-seite{margin-top:0}
.klein{font-size:.84em}

.wartung-zeile{display:flex;justify-content:space-between;align-items:center;gap:12px;
  padding:10px 0;border-bottom:1px solid rgba(0,0,0,.08);flex-wrap:wrap}
.wartung-zeile small{display:block}

.wartung-faellig{margin:10px 0}
.wartung-faellig-zeile{display:flex;justify-content:space-between;gap:10px;
  padding:7px 10px;border-radius:7px;background:rgba(191,123,69,.12);margin-bottom:5px;
  flex-wrap:wrap}
.wartung-faellig-zeile.ueberfaellig{background:rgba(190,60,45,.16)}

.wartung-bogenkopf{display:flex;justify-content:space-between;align-items:flex-start;
  gap:14px;flex-wrap:wrap;margin-bottom:8px}
.wartung-abschnitte{margin:10px 0}
.wartung-abschnitt{margin-bottom:18px}
.wartung-abschnitt h4{margin:0 0 6px}
.wartung-punkt{display:flex;justify-content:space-between;align-items:center;gap:14px;
  padding:9px 2px;border-bottom:1px solid rgba(0,0,0,.06);min-height:44px}
.wartung-punkt>span{flex:1 1 auto;min-width:0}
.wartung-punkt.pflicht>span{font-weight:600}
/* Gezielt, damit .panel input{flex:1;min-width:220px} nicht greift -
   das hat in REV46 die Modulkaestchen 220 Pixel breit gemacht. */
.wartung-punkt input[type=checkbox]{flex:0 0 auto;width:24px;height:24px;min-width:0;margin:0}
.wartung-punkt input[type=text],.wartung-punkt input[type=number]{
  flex:0 0 auto;width:130px;min-width:0}

.wartung-maengel{margin:8px 0}
.wartung-mangel{border:1px solid rgba(0,0,0,.14);border-radius:9px;padding:11px;
  margin-bottom:11px;display:flex;flex-direction:column;gap:7px}
.wartung-mangel-kopf{display:flex;justify-content:space-between;gap:10px;align-items:center}
.wartung-mangel-kopf select{flex:1 1 auto;min-width:0}
.wartung-mangel input,.wartung-mangel textarea{min-width:0;width:100%}
.wartung-mangel-foto{display:block}

.wartung-vorlage{margin:10px 0}
.wartung-abschnitt-pflege{border:1px solid rgba(0,0,0,.12);border-radius:9px;
  padding:11px;margin-bottom:12px}
.wartung-abschnitt-titel{font-weight:600;width:100%;min-width:0;margin-bottom:8px}
.wartung-punkt-pflege{display:flex;gap:7px;align-items:center;flex-wrap:wrap;
  padding:6px 0;border-bottom:1px solid rgba(0,0,0,.06)}
.wartung-punkt-pflege .wartung-punkt-text{flex:1 1 240px;min-width:0}
.wartung-punkt-pflege select{flex:0 0 auto;min-width:0;width:auto}
.wartung-punkt-pflege input[type=checkbox]{width:18px;height:18px;min-width:0;flex:0 0 auto}

@media(max-width:700px){
  .wartung-punkt{flex-wrap:wrap}
  .wartung-zeile{flex-direction:column;align-items:flex-start}
}

/* REV51 - Skizzen und Notizen.
   touch-action:none auf der Leinwand ist Pflicht: ohne das scrollt
   iPadOS beim Zeichnen die Seite weg, und der Strich bleibt als
   Krakel stehen. Dieselbe Lehre wie beim Sprechknopf in REV46. */
.skizze-kopf{display:flex;justify-content:space-between;align-items:center;gap:12px;
  flex-wrap:wrap;margin-bottom:10px}
.skizze-titel{flex:1 1 240px;min-width:0;font-weight:600;font-size:1.05em}

.skizze-werkzeuge{display:flex;gap:8px;align-items:center;flex-wrap:wrap;
  padding:8px 0;border-bottom:1px solid rgba(0,0,0,.1);margin-bottom:8px}
.skizze-werkzeug{background:var(--panel,#f7f7f4);border:1px solid rgba(0,0,0,.18);
  border-radius:8px;padding:8px 13px;min-height:42px;cursor:pointer;font:inherit}
.skizze-werkzeug.aktiv{background:var(--akzent,#2f6f5e);color:#fff;border-color:transparent}
.skizze-farben{display:flex;gap:5px}
/* Zwei Klassen tief, weil .panel button (0,1,1) sonst gewinnt und aus
   den Kaestchen dunkle Rechtecke mit 14 Pixel Innenabstand macht.
   Die Farbe selbst kommt aus .style.background - ein style-Attribut
   wuerde die CSP (style-src 'self') still verwerfen. */
.skizze-werkzeuge .skizze-farbe{width:32px;height:32px;min-width:0;flex:0 0 auto;
  border-radius:50%;border:2px solid rgba(0,0,0,.25);cursor:pointer;padding:0}
.skizze-werkzeuge .skizze-farbe.aktiv{border-color:#fff;
  box-shadow:0 0 0 3px var(--green,#1d6b4d)}
.skizze-zoom{display:inline-flex;gap:5px;align-items:center}
.skizze-zoom #skizze-zoomstand{font-variant-numeric:tabular-nums;min-width:54px;
  text-align:center;font-size:.85em}

/* REV52: das Textfeld. Vorher war das ein window.prompt - in ein
   Browserfenster kann kein Diktat laufen. */
.skizze-textkasten{display:grid;gap:7px;background:var(--card,#fffdf8);
  border:1px solid var(--line,#dfe2d8);border-radius:10px;padding:12px;margin:8px 0}
.skizze-textkasten textarea{width:100%;min-width:0}
.skizze-textzeile{display:flex;justify-content:space-between;align-items:center;
  gap:10px;flex-wrap:wrap}
#skizze-rechenstand{font-weight:800;color:var(--green,#1d6b4d)}

/* REV52: frei platzierte Bilder. Sie liegen IM Blatt, die Leinwand
   darueber - darum kann man auf ein Foto schreiben. */
/* REV54a. Dominic am 07.10.2026: "wenn ich was verschiebe druecke
   ich drauf, was ist wenn ich auf ein bild schreiben will, linien
   zeichnen etc... dann wuerde ich das ja auch verschieben?"

   Richtig, und das war ein Entwurfsfehler von mir. Ein Bild oder eine
   Beschriftung, die IMMER auf eine Beruehrung reagiert, macht das
   Blatt unbemalbar: ueber einem Foto kaeme nie ein Strich an.

   Die Regel, die jedes Zeichenprogramm benutzt: DAS WERKZEUG
   ENTSCHEIDET. Mit Stift, Radierer und Beschriftung sind die Objekte
   fuer den Finger gar nicht da - man zeichnet ueber sie hinweg. Erst
   das Werkzeug "Schieben" macht sie anfassbar, und dann sieht man
   auch, welche es gibt.

   Technisch: ohne Schieben liegen sie UNTER der Leinwand und nehmen
   keine Beruehrung an. Sichtbar bleiben sie trotzdem, denn die
   Leinwand ist ausser den Strichen durchsichtig. */
.skizze-bildrahmen{position:absolute;z-index:1;touch-action:none;pointer-events:none}
.skizze-bildrahmen img{position:absolute;inset:0;width:100%;height:100%;
  object-fit:contain;pointer-events:none;user-select:none}
.skizze-bildrahmen.gewaehlt{outline:2px solid var(--green,#1d6b4d);outline-offset:2px}
.skizze-griff{position:absolute;right:-9px;bottom:-9px;width:22px;height:22px;
  border-radius:50%;background:var(--green,#1d6b4d);border:2px solid #fff;
  cursor:nwse-resize;touch-action:none}
.skizze-bildweg{position:absolute;left:-9px;top:-9px;width:22px;height:22px;
  min-width:0;padding:0;border-radius:50%;background:var(--ink,#17241d);color:#fff;
  border:2px solid #fff;line-height:1;font-size:13px;cursor:pointer}
/* Gezielt gegen .panel input{flex:1;min-width:220px} - sonst ist der
   Schieberegler fuer die Strichstaerke so breit wie die Seite. */
.skizze-werkzeuge input[type=range]{flex:0 0 auto;width:120px;min-width:0}
.skizze-seitenwahl{display:flex;gap:5px;align-items:center}
.skizze-laden{display:inline-flex;align-items:center;gap:6px;font-size:.85em}
.skizze-laden input[type=file]{flex:0 0 auto;min-width:0;width:auto;max-width:170px}
/* REV69: Papierwahl in der Werkzeugleiste */
.skizze-papierwahl{display:inline-flex;align-items:center;gap:6px;font-size:.85em;font-weight:600}
.skizze-papierwahl select{width:auto;min-width:0;padding:6px 8px;font-weight:400}
.skizze-papierwahl.gesperrt{opacity:.45}

.skizze-flaeche{overflow:auto;background:rgba(0,0,0,.05);border-radius:10px;
  padding:4px;-webkit-overflow-scrolling:touch}
.skizze-blatt{position:relative;margin:0 auto;background:#fff;
  box-shadow:0 1px 6px rgba(0,0,0,.18);border-radius:3px}
.skizze-blatt img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;
  pointer-events:none;user-select:none}
#skizze-leinwand{position:absolute;inset:0;width:100%;height:100%;z-index:2;
  touch-action:none;-webkit-user-select:none;user-select:none;
  -webkit-touch-callout:none;cursor:crosshair}
#skizze-leinwand.schiebt{cursor:grab}

@media(max-width:700px){
  .skizze-werkzeuge{gap:6px}
  .skizze-werkzeug{padding:8px 10px}
  .skizze-laden input[type=file]{max-width:120px}
}


/* ---------------------------------------------------------------
   REV53 - Vollbild fuer die Skizze
   ---------------------------------------------------------------
   Dominic am 07.10.2026: "Das Blatt ist ja viel zu klein."
   Gemessen an seinem Bildschirmfoto: 502 x 532 Pixel auf 2732 x 2048
   - 23 Prozent der Breite, 26 Prozent der Hoehe.

   Die Ursache war meine Rechnung aus REV52: die Hoehe des Blattes war
   der REST, der nach Navigation, Kopfzeile, Werkzeugleiste und
   geoeffnetem Textfeld uebrig blieb. Auf dem iPad bleibt da fast
   nichts. Und weil A4 hochkant an der Hoehe haengt, zieht die Hoehe
   die Breite mit herunter.

   Vollbild nimmt der Seite alles weg, was nicht das Blatt ist. Das
   ist kein Trick, sondern die Loesung: ein Aufmassblatt braucht die
   Flaeche, nicht die Navigation. */

/* REV54. Dominic am 07.10.: "Ich hatte ja gesagt, dass auf der
   linken Seite, das soll weg. Die Bearbeitung der Skizze soll ueber
   ein komplettes Vollbild laufen."

   In REV53 habe ich den Block nur breit gemacht und aside und header
   ausgeblendet. Die UEBERSCHRIFT der Ansicht ("SERVICE / Skizzen und
   Notizen") stand aber weiter im Fluss, und .view rollt - also war
   das Blatt um die Hoehe der Ueberschrift nach unten geschoben und
   unten abgeschnitten. Auf dem Bildschirmfoto sieht man genau das:
   die Ueberschrift halb weggerollt.

   Jetzt liegt der Block als FESTE Flaeche ueber allem. Was darunter
   steht, spielt dann keine Rolle mehr - es ist verdeckt, nicht
   wegversteckt. Das ist der Unterschied zwischen "breiter gemacht"
   und "Vollbild". */
.app.skizze-vollbild>aside{display:none}
.app.skizze-vollbild header{display:none}
.app.skizze-vollbild{grid-template-columns:1fr}
.app.skizze-vollbild #skizze-block{
  position:fixed;inset:0;z-index:25;
  max-width:none;margin:0;border:0;border-radius:0;
  padding:6px 10px;background:var(--paper,#f3f0e7);
  display:flex;flex-direction:column;overflow:hidden}
/* Titelzeile, "Als PDF" und "Zur Liste" gehoeren zur Ansicht, nicht
   zum Zeichnen. Im Vollbild sind sie weg - und mit ihnen eine ganze
   Zeile, die das Blatt bekommt. */
.app.skizze-vollbild .skizze-kopf{display:none}
.app.skizze-vollbild .skizze-blattkopf{display:none}
.app.skizze-vollbild .skizze-werkzeuge{padding:2px 0;margin:0 0 4px;gap:5px;
  border-bottom:1px solid rgba(0,0,0,.08)}
.app.skizze-vollbild .skizze-werkzeug{padding:8px 11px;min-height:38px}
.app.skizze-vollbild #skizze-hinweis,
.app.skizze-vollbild #skizze-stand{display:none}
.app.skizze-vollbild .skizze-flaeche{flex:1;min-height:0}
/* Das Textfeld SCHWEBT ueber dem Blatt, statt es nach unten zu
   schieben. Vorher nahm es ein Drittel der Hoehe weg - und genau
   dann, wenn man hinsehen will, wohin der Text kommt. */
.app.skizze-vollbild .skizze-textkasten{
  position:absolute;left:10px;right:10px;bottom:10px;z-index:8;
  margin:0;box-shadow:0 10px 36px #0004}
/* Selten Gebrauchtes hinter einen Griff. Zwanzig Knoepfe in zwei
   Reihen sind keine Werkzeugleiste, sondern eine Suchaufgabe. */
.skizze-mehr{position:relative}
/* REV61, Bildschirmfoto vom 07.10. 21:17: bricht die Werkzeugleiste um,
   steht "Mehr" ganz links - und das Menue klappte nach links aus dem
   Bild ("...tfernen", "...gen"). Jetzt rechnet das Skript beim Oeffnen
   nach und klappt zur Seite, auf der Platz ist. */
.skizze-mehr.nach-rechts .skizze-mehr-inhalt{left:0;right:auto}
.skizze-mehr>summary{list-style:none;cursor:pointer;padding:8px 13px;
  min-height:42px;display:inline-flex;align-items:center;
  background:var(--panel,#f7f7f4);border:1px solid rgba(0,0,0,.18);
  border-radius:8px;font-weight:800}
.skizze-mehr>summary::-webkit-details-marker{display:none}
.skizze-mehr[open]>summary{background:var(--green,#1d6b4d);color:#fff;
  border-color:transparent}
.skizze-mehr-inhalt{position:absolute;right:0;top:calc(100% + 6px);z-index:12;
  display:flex;flex-direction:column;gap:8px;align-items:stretch;
  background:var(--card,#fffdf8);border:1px solid var(--line,#dfe2d8);
  border-radius:10px;padding:12px;min-width:260px;
  box-shadow:0 14px 40px #0003}

/* Das X. Es schliesst das Bearbeiten, nicht die Skizze. */
.skizze-vollbild-zu{position:fixed;top:10px;right:14px;z-index:30;
  width:46px;height:46px;min-width:0;padding:0;border-radius:50%;
  font-size:20px;line-height:1;background:var(--ink,#17241d);color:#fff;
  box-shadow:0 4px 16px #0003}

/* Ansicht ohne Werkzeuge: das fertige Blatt, so wie es aussieht. */
#skizze-block.nur-ansicht .skizze-werkzeuge,
#skizze-block.nur-ansicht .skizze-textkasten,
#skizze-block.nur-ansicht #skizze-hinweis{display:none}
#skizze-block.nur-ansicht #skizze-leinwand{cursor:default}
#skizze-block.nur-ansicht .skizze-griff,
#skizze-block.nur-ansicht .skizze-bildweg{display:none}


/* REV54 - Beschriftungen als verschiebbare Felder.
   Dominic am 07.10.2026: "das textfeld mit den zahlen sollte flexibel
   auf der skizze einzufuegen sein, also am besten auch ein knopf fuer
   text, den ich dann auf dem bild/skizze verschieben und eingeben
   kann".

   Dieselbe Bauweise wie die Bilder: ein Feld IM Blatt, die Leinwand
   darueber. Auf der Leinwand lagen die Texte vorher - und was auf der
   Leinwand liegt, kann man nicht anfassen.

   Helvetica, weil das PDF dieselbe Schrift setzt. Sonst sieht das
   Blatt auf dem Schirm anders aus als auf dem Papier. */
.skizze-textfeld{position:absolute;z-index:1;pointer-events:none;
  font-family:Helvetica,Arial,sans-serif;line-height:1.25;
  white-space:pre-wrap;overflow-wrap:anywhere;
  padding:1px 2px;cursor:move;touch-action:none;
  border:1px dashed transparent;border-radius:3px}
.skizze-textfeld:hover{border-color:rgba(0,0,0,.25)}
.skizze-textfeld.gewaehlt{border-color:var(--green,#1d6b4d);border-style:solid}
.skizze-textweg{position:absolute;left:-10px;top:-10px;width:20px;height:20px;
  min-width:0;padding:0;border-radius:50%;background:var(--ink,#17241d);color:#fff;
  border:2px solid #fff;line-height:1;font-size:12px;cursor:pointer;
  opacity:0;transition:opacity .12s}
.skizze-textfeld:hover .skizze-textweg,
.skizze-textfeld.gewaehlt .skizze-textweg{opacity:1}
#skizze-block.nur-ansicht .skizze-textfeld{cursor:default;border-color:transparent}
#skizze-block.nur-ansicht .skizze-textweg{display:none}

/* Nur im Werkzeug "Schieben" sind Bilder und Beschriftungen
   anfassbar - und liegen dann ueber der Leinwand, damit Griff und x
   erreichbar sind. */
#skizze-block.verschieben .skizze-bildrahmen,
#skizze-block.verschieben .skizze-textfeld{z-index:5;pointer-events:auto}
#skizze-block.verschieben .skizze-bildrahmen{outline:1px dashed rgba(0,0,0,.3);
  outline-offset:1px}
#skizze-block.verschieben .skizze-textfeld{border-color:rgba(0,0,0,.3)}
/* REV69b. Dominic am 08.10.2026, Bildschirmfoto vom iPad: "Das auf den
   Bildern ist sehr stoerend." Die Kreuze, der runde Griff und der gruene
   Rahmen standen auf JEDEM Bild und jeder Beschriftung - auch beim
   Zeichnen, wo man sie gar nicht anfassen kann. Jetzt nur noch im
   Werkzeug "Schieben", und nur am Bild oder Text, das gerade gewaehlt
   ist. Beim Zeichnen ist das Blatt so sauber wie im PDF. */
.skizze-griff,.skizze-bildweg,.skizze-textweg{display:none}
#skizze-block.verschieben .skizze-bildrahmen.gewaehlt .skizze-griff,
#skizze-block.verschieben .skizze-bildrahmen.gewaehlt .skizze-bildweg,
#skizze-block.verschieben .skizze-textfeld.gewaehlt .skizze-textweg{display:block;opacity:1}
/* REV196: Breitengriff der Beschriftung - rechts mittig, nur im Schieben */
.skizze-textfeld .skizze-textgriff{top:50%;bottom:auto;right:-16px;margin-top:-11px;cursor:ew-resize}
#skizze-block.verschieben .skizze-textfeld.gewaehlt .skizze-textgriff{display:block}
#skizze-block:not(.verschieben) .skizze-bildrahmen.gewaehlt{outline:none}
#skizze-block:not(.verschieben) .skizze-textfeld,
#skizze-block:not(.verschieben) .skizze-textfeld:hover,
#skizze-block:not(.verschieben) .skizze-textfeld.gewaehlt{border-color:transparent}
/* REV56: Kunden und Mitarbeiter. Die Zeilen benutzen den Aufbau der
   Maschinenliste - dieselbe Leiste links, dieselbe Marke - und
   ergaenzen nur, was es dort nicht gibt. */
.stamm-name{font-size:16px;flex:1 1 14em;min-width:0}
.stamm-angaben{display:flex;flex-wrap:wrap;gap:4px 18px;font-size:14px;color:var(--ink)}
.stamm-angaben a,.stamm-anrufen{color:var(--green);text-decoration:none;font-weight:700}
.stamm-notiz{margin:0;white-space:pre-line}
.stamm-suche{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px}
.stamm-suche input[type=search]{flex:1 1 18em;min-width:0}
.stamm-daten{display:flex;flex-wrap:wrap;align-items:end;gap:8px 14px}
.stamm-daten label{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--muted)}
.stamm-daten input{width:11em;min-width:0}
/* REV101 Mitarbeiter: Haken, Anschrift, Lohndaten */
.ma-haken{display:inline-flex;align-items:center;gap:6px;font-size:13px;white-space:nowrap}
.ma-haken input{width:auto;min-width:0;flex:none;padding:0}
.stamm-daten input.ma-breit{width:18em}
.ma-lohn{margin-top:10px;border-top:1px dashed var(--line);padding-top:8px}
.ma-lohn summary{cursor:pointer;font-weight:700;font-size:13px}
.ma-lohn .stamm-daten{margin-top:8px}
.ma-lohn select{min-width:0}
.ma-lohn-verlauf{margin:6px 0 0;padding-left:18px;font-size:12px;color:var(--muted)}
.maschine-kopf .ma-feld-kurz{flex:none;width:6em;min-width:0;text-transform:uppercase}
.maschine-kopf .ma-feld-telefon{flex:none;width:11em;min-width:0}
.stamm-knoepfe{grid-column:1/-1;margin-top:4px}
@media(max-width:700px){.maschine-kopf .ma-feld-telefon{flex:1 1 9em;width:auto}.stamm-daten input{width:auto}}
/* REV57: Kopf des Aufmassblatts - drei Felder unter dem Titel. */
.skizze-blattkopf{display:grid;grid-template-columns:minmax(0,9em) minmax(0,1fr) minmax(0,1fr);gap:8px 12px;margin:4px 0 10px}
.skizze-blattkopf[hidden]{display:none}
.skizze-blattkopf label{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--muted);min-width:0}
.skizze-blattkopf input{min-width:0;width:100%}
@media(max-width:700px){.skizze-blattkopf{grid-template-columns:1fr}}
/* REV57, Befund beim Bauen: .skizze-textkasten setzt display:grid, und
   eine Autorenregel schlaegt das hidden-Attribut. In der Ansicht hat
   das eine nur-ansicht-Regel verdeckt - im Vollbild stand der Kasten
   IMMER offen ueber dem unteren Blattdrittel. Mein Fehler aus REV54. */
.skizze-textkasten[hidden]{display:none}
/* REV58: Nachrichten an charlie@. */
.nachricht-betreff{margin:2px 0 0;font-weight:700}
.nachricht-zeile .stamm-notiz{margin:2px 0 0}
.nachricht-zeile .error{color:var(--danger,#a63b31);margin:2px 0 0}
.maschine-aktionen .button-link{display:inline-flex;align-items:center;padding:10px 16px;border-radius:4px;
  background:var(--ink);color:#fff;text-decoration:none;font-weight:700}
/* REV59: der Ausgang. Liegt ueber allem, auch ueber dem Vollbild der
   Skizze (z-index 25) - wer auf dem Dach zeichnet, soll sehen, dass
   etwas noch nicht beim Server ist. */
.ausgang-stand{position:fixed;left:12px;bottom:calc(12px + env(safe-area-inset-bottom, 0px));z-index:31;
  border:0;border-radius:999px;padding:9px 14px;background:#2f4a3c;color:#fff;font-weight:700;
  font-size:13px;box-shadow:0 6px 20px #0003;cursor:pointer}
.ausgang-stand[hidden]{display:none}
.ausgang-stand.abgelehnt{background:var(--danger,#a63b31)}

/* REV62 - Gartenpflege. Gleiche Grundregeln wie die Flachdachwartung:
   grosse Trefferflaechen, Kaestchen bleiben Kaestchen, und nichts von
   .panel input{min-width:220px} darf eine Zeile sprengen. */
.pflege-seite{margin-top:0}
.pflege-druck{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;margin:10px 0}
.pflege-druck label{min-width:0}
.pflege-druck select{min-width:0}
.pflege-bereich{font:700 15px Georgia,serif;margin:16px 0 4px;color:var(--green)}
.pflege-positionen{margin:8px 0}
.pflege-position{border-bottom:1px solid var(--line);padding:8px 4px;display:flex;
  flex-direction:column;gap:6px}
.pflege-position.gewaehlt{background:#f1f6ec}
.pflege-position-kopf{display:flex;gap:10px;align-items:center;font-weight:600;
  grid-template-columns:none;cursor:pointer}
.pflege-position-kopf input[type=checkbox]{flex:0 0 auto;width:24px;height:24px;min-width:0;margin:0}
.pflege-name{flex:1 1 auto;min-width:0}
.pflege-felder{display:flex;gap:7px;flex-wrap:wrap;align-items:center;padding-left:34px}
.pflege-position:not(.gewaehlt) .pflege-felder{display:none}
.panel .pflege-felder input{min-width:0;flex:0 0 auto}
.panel .pflege-felder .pflege-menge{width:90px}
.panel .pflege-felder .pflege-einsaetze{width:72px}
.panel .pflege-felder .pflege-stunden{width:72px}
.panel .pflege-felder .pflege-notiz,.panel .pflege-position>.pflege-notiz{flex:1 1 220px;min-width:0;width:auto}
.pflege-monate{display:flex;gap:3px;flex-wrap:wrap}
.panel button.pflege-monat{background:#eceee8;color:var(--muted);padding:6px 7px;min-width:34px;
  min-height:34px;border-radius:5px;font-size:12px;font-weight:700}
.panel button.pflege-monat.an{background:var(--green);color:#fff}
.pflege-fotoknopf{flex:0 0 auto;position:relative;display:inline-flex;align-items:center;
  border:1px solid var(--green);color:var(--green);background:#fff;border-radius:4px;
  padding:9px 14px;min-height:42px;cursor:pointer;font-weight:700}
/* Das Dateifeld selbst bleibt unsichtbar - der ganze Knopf ist das Label. */
.panel .pflege-fotoknopf input[type=file]{position:absolute;inset:0;width:100%;height:100%;
  min-width:0;opacity:0;cursor:pointer;padding:0;border:0}
.pflege-anweisung{margin:0;padding-left:34px}
.pflege-fotos{display:flex;gap:10px;flex-wrap:wrap;margin:8px 0}
.pflege-foto{margin:0;width:150px;max-width:100%}
.pflege-foto img{width:100%;height:110px;object-fit:cover;border-radius:5px;display:block}
.pflege-foto figcaption{font-size:11px;color:var(--muted);margin-top:3px;overflow-wrap:anywhere}
.pflege-arbeiten{margin:8px 0}
.pflege-arbeit{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:8px 0;
  border-bottom:1px solid var(--line)}
.pflege-arbeit.ausgemustert{opacity:.55}
.pflege-arbeit>span,.pflege-arbeit>strong{flex:1 1 240px;min-width:0}
.panel .pflege-arbeit input.pflege-minuten,.panel .pflege-arbeit input.pflege-einsaetze{flex:0 0 auto;width:80px;min-width:0}
@media(max-width:700px){
  .pflege-felder,.pflege-anweisung{padding-left:0}
  .pflege-foto{width:46%}
}

/* REV63 - Zusagen und Erinnerungen. */
.er-eingabe{display:grid!important;gap:8px;margin-top:12px}
.er-eingabe textarea{width:100%;min-width:0}
.er-form{display:block!important;border:1px solid var(--line);border-radius:7px;padding:16px;margin:14px 0;background:#fff}
.er-form.hidden{display:none!important}
.er-form h4{margin:0 0 8px}
.er-hinweis{background:#fff4df;border-left:4px solid #d88928;padding:9px 12px;margin:0 0 10px;font-size:13px}
.er-fach{font:700 15px Georgia,serif;margin:18px 0 4px;color:var(--green)}
.er-fach.ueberfaellig{color:var(--danger)}
.er-zeile{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;
  padding:11px 0;border-top:1px solid var(--line)}
.er-zeile.unbestaetigt{background:#fffaf0}
.er-text{flex:1 1 300px;min-width:0}
.er-text small{display:block;color:var(--muted);margin-top:3px;overflow-wrap:anywhere}
.er-text .maschine-marke{margin-left:6px}
.er-text small.er-angebot{color:var(--green);font-weight:700}
.er-text small.er-satz{font-style:italic}
.er-offen-marke{background:#fff4df}
.er-zeile .button-row{margin-top:0}
.er-zeile .button-row button{padding:9px 12px}
/* REV64 - Bewertungsanfrage: der Text muss ganz lesbar sein. */
.er-form textarea{width:100%;min-width:0;font:inherit;font-weight:400;line-height:1.45}
.er-form>label{display:grid;margin-top:10px}

/* REV65 - Sprechleiste ueber der Handytastatur. Eine Zeile, ganze
   Breite; der Knopf so gross wie ein Daumen. bottom setzt app.js
   (visualViewport), damit die Leiste auf der Tastatur sitzt. */
.sprechleiste{position:fixed;left:0;right:0;bottom:0;z-index:45;display:flex;align-items:center;gap:10px;
  padding:7px calc(10px + env(safe-area-inset-right,0px)) 7px calc(12px + env(safe-area-inset-left,0px));
  background:var(--card);border-top:1px solid var(--line);box-shadow:0 -6px 18px #0002}
.sprechleiste.hidden{display:none!important}
.sprechleiste-text{flex:1 1 auto;min-width:0;display:grid;gap:1px}
.sprechleiste-text b{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sprechleiste-text small{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sprechleiste-text small.fehler{color:var(--danger)}
.sprechleiste-knopf{flex:0 0 auto;display:flex;align-items:center;gap:8px;border:0;border-radius:24px;
  background:var(--green);color:#fff;font:800 15px Inter,sans-serif;padding:0 18px;min-height:48px;
  touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.sprechleiste[data-an="1"] .sprechleiste-knopf{background:var(--danger)}
.sprechleiste[data-an="1"] .sprech-punkt{animation:diktat-pulsieren 1.1s ease-in-out infinite}
/* Damit das letzte Feld einer Seite nicht unter der Leiste liegt. */
body.sprechleiste-an .view{padding-bottom:84px}
/* REV139 - der Knopf am Feld statt ueber der Tastatur. */
.sprechleiste.am-feld{position:fixed;right:auto;bottom:auto;width:max-content;max-width:calc(100vw - 16px);
  flex-direction:column;align-items:flex-end;gap:4px;padding:0;background:transparent;border:0;box-shadow:none}
.sprechleiste.am-feld .sprechleiste-text{display:none;max-width:70vw}
.sprechleiste.am-feld.meldet .sprechleiste-text,.sprechleiste.am-feld[data-an="1"] .sprechleiste-text{display:grid}
.sprechleiste.am-feld .sprechleiste-text b{display:none}
.sprechleiste.am-feld .sprechleiste-text small{white-space:normal;background:var(--card);border:1px solid var(--line);
  border-radius:8px;padding:4px 8px;color:var(--ink);box-shadow:0 4px 12px #0002}
.sprechleiste.am-feld .sprechleiste-knopf{min-height:44px;padding:0 16px;box-shadow:0 4px 14px #0003}

/* REV66 - Optik. Dominic am 07.10. zur Erinnerungsseite: "optik nicht so
   schoen". Drei Ursachen:
   1. .panel button (0,1,1) schlug .wartung-reiter-knopf - die Reiter
      waren schwarze Bloecke statt Reiter. Betrifft auch Wartung und Pflege.
   2. label{font-weight:700} vererbte sich in die Eingabefelder.
   3. Nebenknoepfe sahen aus wie Hauptknoepfe. */
.panel button.wartung-reiter-knopf{background:#fff;color:var(--ink);border:1px solid var(--line);
  border-radius:999px;padding:8px 16px;min-height:40px;font-weight:700}
.panel button.wartung-reiter-knopf:hover{border-color:var(--green)}
.panel button.wartung-reiter-knopf.aktiv{background:var(--green);color:#fff;border-color:var(--green)}
.panel button.er-nebenknopf{background:transparent;color:var(--green);border:1px solid var(--green)}
.panel button.er-nebenknopf:hover{background:#edf3e9}
.er-form input,.er-form select,.er-form textarea{font-weight:400}
.er-form select{font:inherit;font-weight:400}
.er-eingabe .button-row{margin-top:0}
.er-reiter{margin-top:26px;padding-top:18px;border-top:1px solid var(--line)}
.er-leerstand{display:grid;gap:4px;padding:22px;text-align:center;border:1px dashed #cfd5cb;
  border-radius:7px;color:var(--muted);background:#fbfaf5}
.er-leerstand strong{color:var(--ink)}
.er-form .er-breit{grid-column:1/-1}
/* REV67 - Zeit, Material und Entsorgung je Garten. */
.pflege-kosten{display:flex;gap:7px;flex-wrap:wrap;align-items:center;width:100%}
.panel .pflege-kosten .pflege-material-text{flex:1 1 220px;min-width:0;width:auto}
.panel .pflege-kosten .pflege-material,.panel .pflege-kosten .pflege-entsorgung{flex:0 0 auto;width:80px;min-width:0}

/* REV67. Dominic am 08.10., 00:16 vom Handy: "Ich kann links nicht nach
   oben oder unten". Die Leiste ist seit REV62/63 laenger als ein
   Handybildschirm und hatte kein eigenes Scrollen - die untere Haelfte
   (Service, Stammdaten, Einkauf, Einstellungen) war nicht erreichbar. */
@media(max-width:760px){
  aside{overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;
    padding-bottom:calc(26px + env(safe-area-inset-bottom,0px))}
}

/* REV67. Dominic am 08.10., 00:13 mit Bildschirmfoto vom Angebot am
   Handy: "Geht das besser?" Drei Ursachen:
   1. Rechts blieben 118 px frei fuer den runden Knopf - auf 390 px
      Breite blieb fuer die Positionen ein schmaler Streifen.
   2. ".panel button" machte das Loeschen-Kreuz, Summe und Eventual zu
      grossen schwarzen Bloecken, die ueber dem Text lagen.
   3. Panel und Zeile hatten Rechner-Abstaende. */
.panel button.sprech-weg{background:transparent;color:var(--muted);padding:0 6px;font-weight:400}
.panel button.sprech-weg.fragt{background:var(--danger);color:#fff;font-weight:800}
/* Dieselben Zustaende wie oben bei .sprech-ev / .sprech-kalk-knopf -
   nur so, dass .panel button sie nicht mehr ueberstimmt. */
.panel button.sprech-ev,.panel button.sprech-kalk-knopf{background:var(--card);border:1px solid var(--line);
  padding:6px 12px;min-height:38px;font-weight:700}
.panel button.sprech-ev{color:var(--muted)}
.panel button.sprech-kalk-knopf{color:var(--green)}
.panel button.sprech-ev[data-ev="1"],.panel button.sprech-kalk-knopf[aria-expanded="true"]{
  background:var(--ink);color:#fff;border-color:var(--ink)}
.panel button.sprech-kalk-knopf.hat-kalkulation{background:#edf2e8;border-color:#c6d8c6}
@media(max-width:700px){
  :root{--sprech-durchmesser:76px}
  /* Unten rechts statt mitten am Rand - dort deckt er keine Zeile. */
  .sprech-knopf{top:auto;bottom:calc(18px + env(safe-area-inset-bottom,0px));transform:none;font-size:11px}
  body.sprechmodus-an #view-offers{padding-right:14px;padding-bottom:calc(var(--sprech-durchmesser) + 40px)}
  .panel{padding:16px}
  .sprech-zeile{padding:8px 6px;gap:4px 6px}
  .sprech-griff{width:34px}
  .sprech-kopf .sprech-text{flex:1 1 100%;width:100%}
  /* Ohne feste Spur nimmt das Raster die Breite der Textbox (cols=20)
     als Mindestmass - dann ragen Text und Zahlen aus der Zeile. */
  .sprech-inhalt{grid-template-columns:minmax(0,1fr);min-width:0}
  .sprech-fuss-zeile .sprech-zahlen{flex:1 1 100%;min-width:0}
  .sprech-zahlen{flex-wrap:wrap;row-gap:6px}
  .sprech-zahlen .sprech-feld.menge{width:4.6em}
  .sprech-zahlen select.sprech-feld{width:5.6em}
  .sprech-zahlen .sprech-feld.preis{width:5.6em}
}

/* REV71: Sprachnachricht vom Anrufbeantworter */
.nachricht-transkript{font-size:15px;line-height:1.5;margin:4px 0}
.nachricht-audio{width:100%;max-width:420px;margin:4px 0 8px}

/* REV73: Arbeitsanweisung */
.anw-eintraege{display:grid;gap:14px;margin:14px 0}
.anw-eintrag{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,3fr);gap:14px;padding:12px;
  border:1px solid var(--line);border-radius:6px;background:var(--card)}
@media(max-width:700px){.anw-eintrag{grid-template-columns:minmax(0,1fr)}}
.anw-foto{position:relative;display:flex;flex-direction:column;gap:8px;align-items:stretch;justify-content:center;
  min-height:160px;background:#f3f4f1;border-radius:5px;padding:8px}
.anw-foto img{width:100%;max-height:280px;object-fit:contain;border-radius:4px}
.anw-nr{position:absolute;top:8px;left:8px;width:26px;height:26px;border-radius:50%;background:#14693C;color:#fff;
  font-weight:800;display:grid;place-items:center;font-size:14px;z-index:1}
.anw-fotoknopf{display:flex;align-items:center;justify-content:center;min-height:140px;cursor:pointer;
  font-size:15px;font-weight:700;color:var(--green);border:2px dashed #c9cfc6;border-radius:5px;text-align:center}
.anw-fotoknopf input{position:absolute;width:1px;height:1px;opacity:0}
/* REV75: .panel input gibt jedem Feld min-width 220px - das unsichtbare
   Dateifeld lag dann ueber dem Nachbarn und fing dessen Tippen ab. */
.anw-fotoknopf input{min-width:0;padding:0;border:0;left:0;top:0}
.anw-rechts{display:flex;flex-direction:column;gap:8px;min-width:0}
.anw-rechts textarea{width:100%;min-height:120px;resize:vertical}
.anw-marken{display:flex;flex-wrap:wrap;gap:6px}
.panel button.anw-marke{padding:6px 12px;border-radius:999px;font-size:13px;background:#eef0ec;color:var(--ink);
  border:1px solid #d6dad2}
.panel button.anw-marke.aktiv.anw-aufgabe{background:#14693C;color:#fff;border-color:#14693C}
.panel button.anw-marke.aktiv.anw-problem{background:#b3261e;color:#fff;border-color:#b3261e}
.panel button.anw-marke.aktiv.anw-aenderung{background:#c77700;color:#fff;border-color:#c77700}
.panel button.anw-marke.aktiv.anw-hinweis{background:#40618c;color:#fff;border-color:#40618c}
.panel button.anw-punktweg,.panel button.anw-fotoweg{align-self:flex-start;padding:6px 10px;font-size:13px}
#anw-block .filter-grid input{min-width:0;width:100%}
/* REV74: Meldung aufs Handy */
.anw-push{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;margin:10px 0}
.anw-push .klein{flex:1 1 260px;min-width:0}
.anw-senden{margin:12px 0;padding:12px;border:1px solid var(--line,#d8d4c8);border-radius:8px}
.anw-empfaenger{display:grid;gap:6px;margin:8px 0}
.anw-empfaenger label{display:flex;gap:10px;align-items:center;font-weight:400}
.anw-empfaenger label input{flex:0 0 auto;min-width:0;width:22px;height:22px;margin:0;padding:0}
.anw-empfaenger label span:first-of-type{flex:1 1 auto;min-width:0}
.anw-empfaenger label{padding:6px 0;border-top:1px solid var(--line)}
.anw-empfaenger .muted{font-size:.85em}
/* REV75: Angemeldet bleiben, Rueckmeldung */
.login-bleiben{display:flex;gap:10px;align-items:center;font-weight:600}
.login-bleiben input{width:20px;height:20px;padding:0;margin:0;flex:0 0 auto}
.anw-rueck{margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
.anw-rueck h4{margin:0 0 10px}
.anw-rueck-liste{display:grid;gap:10px;margin-bottom:12px}
.anw-rueck-eintrag{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:10px;border:1px solid var(--line);border-radius:6px;background:var(--card)}
.anw-rueck-eintrag p{margin:4px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}
.anw-rueck-eintrag img{width:110px;max-height:110px;object-fit:cover;border-radius:4px}
.anw-rueck-kopf{font-size:13px;color:var(--muted)}
.anw-rueck-kopf strong{color:var(--ink)}
.anw-rueck-ok{display:inline-block;margin-left:6px;padding:1px 8px;border-radius:20px;background:#e3efde;color:#235f3f;font-weight:700;font-size:12px}
.anw-rueck-vorschau img{max-width:160px;max-height:160px;border-radius:4px;display:block;margin:6px 0}
.anw-fotoknopf.anw-rueck-foto{display:inline-flex;position:relative;min-height:0;padding:12px 18px}
.anw-rueck textarea{width:100%}
@media(max-width:560px){.anw-rueck-eintrag{grid-template-columns:minmax(0,1fr)}.anw-rueck-eintrag img{width:100%;max-height:260px}}
#anw-rueck-erledigt{width:22px;height:22px;padding:0;margin:0;min-width:0;flex:0 0 auto}
/* REV76: Skizze in der Arbeitsanweisung, gerade Linie */
.anw-skizzen-wahl{margin:12px 0;padding:12px;border:1px solid var(--line);border-radius:8px;background:var(--card)}
.anw-skizzen-liste{display:grid;gap:8px}
.anw-skizzen-zeile{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;padding:8px 0;border-top:1px solid var(--line)}
.anw-skizzen-zeile strong{flex:1 1 180px;min-width:0;overflow-wrap:anywhere}
.anw-skizzen-zeile .muted{font-size:12px}
.anw-skizzen-zeile button{padding:8px 12px}
.anw-skizzeknopf{margin:0 auto;padding:8px 14px}
/* REV76a: oben rechts neben dem X - dort, wo man "fertig" sucht. */
.panel .skizze-uebernehmen,.skizze-uebernehmen{position:fixed;top:10px;right:calc(72px + env(safe-area-inset-right,0px));
  z-index:35;height:46px;border:0;border-radius:23px;padding:0 20px;background:#14693C;color:#fff;font-weight:800;font-size:16px;
  box-shadow:0 6px 20px #0004}
.anw-fotoknoepfe{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}
.anw-fotoknoepfe button,.anw-fotoknoepfe .anw-fotoknopf.klein{padding:8px 12px;font-size:13px}
.anw-fotoknopf.klein{min-height:0;position:relative;border-width:1px;border-style:solid}
.anw-skizzenbild{cursor:pointer}
.skizze-uebernehmen[hidden]{display:none}
/* Platz fuer "Speichern" und das X, damit sie keine Werkzeuge verdecken. */
.app.skizze-vollbild.skizze-fuer-anweisung .skizze-werkzeuge{padding-right:200px}
@media(max-width:700px){.app.skizze-vollbild.skizze-fuer-anweisung .skizze-werkzeuge{padding-right:0;padding-top:52px}}
/* REV77: die rote Zahl an "Nachrichten" */
.nav-zahl{margin-left:auto;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:#d22f27;color:#fff;
  font-size:12px;font-weight:800;line-height:20px;text-align:center;font-variant-numeric:tabular-nums}
.nav-zahl[hidden]{display:none}
#menu{position:relative}
.menu-zahl{position:absolute;top:-2px;right:-6px;margin:0;min-width:18px;height:18px;line-height:18px;font-size:11px;padding:0 5px}
/* REV78. Dominic am 09.10.2026 (Bildschirmfoto iPad): "ansicht nicht
   perfekt kacheln pruefen".
   1. Kopf: Datum stand hoeher als Baustelle und Von - Safari gibt dem
      Datumsfeld eine eigene Hoehe und setzt den Wert in die Mitte. */
#anw-block .filter-grid{grid-template-columns:minmax(220px,2fr) minmax(150px,1fr) minmax(160px,1fr);gap:12px;align-items:end}
#anw-block .filter-grid label{align-self:end}
#anw-block .filter-grid input{width:100%;height:50px;box-sizing:border-box;margin:0}
#anw-datum{-webkit-appearance:none;appearance:none;display:block;text-align:left;min-width:0;background:#fff}
#anw-datum::-webkit-date-and-time-value{text-align:left}
@media(max-width:900px){#anw-block .filter-grid{grid-template-columns:1fr 1fr}#anw-block .filter-grid label:first-child{grid-column:1/-1}}
@media(max-width:560px){#anw-block .filter-grid{grid-template-columns:1fr}}
/* 2. Die Knoepfe unter dem Fotokasten: alle gleich, zwei je Reihe -
      vorher einer schwarz, einer gruen, verschieden breit. */
.anw-fotoknoepfe{display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%}
.panel .anw-fotoknoepfe button,.anw-fotoknoepfe .anw-fotoknopf.klein{width:100%;min-height:42px;padding:8px 10px;font-size:14px;
  background:var(--card);color:var(--green);border:1px solid #c9cfc6;border-radius:6px;font-weight:700;justify-content:center}
.panel .anw-fotoknoepfe button.anw-fotoweg{color:var(--danger);align-self:stretch}
/* 3. Der runde Sprechknopf lag ueber dem Textfeld der Punkte. */
body.sprech-anweisung #view-anweisungen{padding-right:calc(var(--sprech-durchmesser) + 26px)}
@media(max-width:700px){body.sprech-anweisung #view-anweisungen{padding-right:14px;padding-bottom:calc(var(--sprech-durchmesser) + 40px)}}
/* REV81: "im Web" neben "In Outlook-App oeffnen" - klein, weil Nebenweg. */
.button-link.nebenlink{background:transparent!important;color:var(--green)!important;border:1px solid var(--line);font-weight:700}
/* REV82: Punkt verschieben - unter "Punkt entfernen" */
.anw-reihe{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.panel button.anw-pfeil{min-width:44px;min-height:36px;padding:4px 12px;font-size:16px;line-height:1}
.panel button.anw-pfeil:disabled{opacity:.35;cursor:default}
/* REV83: Freigeben */
.freigabe-hintergrund{position:fixed;inset:0;z-index:60;background:#0006;display:grid;place-items:center;padding:16px}
.freigabe-hintergrund.hidden{display:none}
.freigabe-kasten{width:min(460px,100%);max-height:calc(100dvh - 32px);overflow:auto;margin:0}
.freigabe-kasten h3{margin:0 0 6px}
.freigabe-marke{display:inline-block;margin-left:6px;padding:1px 8px;border-radius:20px;background:#e8efe9;color:var(--green);font-size:12px;font-weight:700}
/* REV84: offenes Menue auf dem Handy - der Rest wird leicht abgedunkelt,
   damit klar ist: ein Tipp daneben schliesst es. */
@media(max-width:760px){body.menue-offen main{filter:brightness(.82);transition:filter .15s}}
/* REV85: eigene Artikel und Materialwahl */
.kalk-name-wahl{cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px}
.kalk-name-wahl::after{content:" 🔍";font-size:.85em}
.artikel-wahl{position:fixed;inset:0;z-index:70;background:var(--paper);display:flex;flex-direction:column;padding:env(safe-area-inset-top,0px) 0 env(safe-area-inset-bottom,0px)}
.artikel-wahl.hidden{display:none}
.artikel-wahl-kopf{display:flex;gap:10px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line);background:var(--card)}
.artikel-wahl-kopf h3{margin:0;font:700 18px Georgia,serif;white-space:nowrap}
.artikel-wahl-kopf input{flex:1;min-width:0;font-size:17px;padding:12px}
.artikel-wahl-kopf button{border:0;background:var(--ink);color:#fff;width:44px;height:44px;border-radius:4px;font-size:18px;flex:none}
.artikel-wahl-liste{flex:1;overflow:auto;padding:8px 16px 24px;-webkit-overflow-scrolling:touch}
.artikel-wahl-gruppe{margin:14px 0 6px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--green)}
.artikel-wahl-zeile{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;width:100%;text-align:left;border:1px solid var(--line);background:var(--card);color:var(--ink);padding:14px;border-radius:4px;margin:0 0 6px;font-size:15px}
.artikel-wahl-zeile:hover,.artikel-wahl-zeile:focus{border-color:var(--green)}
.artikel-wahl-nr{font-variant-numeric:tabular-nums;min-width:3.5em}
.artikel-wahl-name{min-width:0;overflow-wrap:anywhere}
.artikel-wahl-preis{color:var(--muted);font-size:13px;text-align:right}
.artikel-wahl-feld{margin:-4px 0 10px;padding:6px 10px 10px;border:1px solid var(--line);border-top:0;background:#fbfaf5;border-radius:0 0 4px 4px}
@media(max-width:600px){.artikel-wahl-zeile{grid-template-columns:auto 1fr}.artikel-wahl-preis{grid-column:1/-1;text-align:left}.artikel-wahl-kopf h3{display:none}}
.eigen-preise{display:grid;gap:6px;margin:8px 0}
.eigen-preis{display:grid;grid-template-columns:1fr auto;gap:4px 12px;padding:8px 0;border-top:1px solid var(--line)}
.eigen-preis.guenstigst .eigen-preis-zahl strong{color:var(--green)}
.eigen-preis-wer,.eigen-preis-zahl{display:grid;gap:2px;min-width:0}
.eigen-preis-zahl{text-align:right;font-variant-numeric:tabular-nums}
.eigen-ort{font-size:13px}
.eigen-preis-tun{grid-column:1/-1;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.eigen-ort-feld{grid-column:1/-1;display:flex;gap:8px}
.eigen-ort-feld input{flex:1;min-width:0}
.panel .eigen-haupt,.eigen-haupt{border:0;background:var(--ink);color:#fff;padding:11px 16px;border-radius:4px;font-weight:800}
.panel .eigen-klein,.eigen-klein,.panel .eigen-nehmen,.eigen-nehmen{border:1px solid var(--line);background:var(--card);color:var(--ink);padding:8px 12px;border-radius:4px;font-weight:700;font-size:13px}
.panel .eigen-nehmen,.eigen-nehmen{background:var(--lime);border-color:var(--ink)}
.eigen-werkzeug{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}
.panel .eigen-werkzeug input{flex:1;min-width:0}
.eigen-artikel{border-top:1px solid var(--line)}
.panel .eigen-kopf{display:grid;grid-template-columns:auto 1fr auto;gap:12px;width:100%;text-align:left;background:none;color:var(--ink);padding:12px 2px;font-weight:400;border-radius:0}
.eigen-nummer{font-variant-numeric:tabular-nums;min-width:3.5em}
.eigen-best{color:var(--muted);font-size:13px;text-align:right}
@media(max-width:600px){.panel .eigen-kopf{grid-template-columns:auto 1fr}.eigen-best{grid-column:1/-1;text-align:left}}
.eigen-detail{padding:0 2px 12px}
.eigen-tun{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.eigen-form{display:grid;gap:10px;margin:10px 0;padding:12px;border:1px solid var(--line);border-radius:4px;background:#fbfaf5}
.eigen-reihe{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media(max-width:600px){.eigen-reihe{grid-template-columns:1fr}}
.eigen-feld{display:grid;gap:4px}
.panel .eigen-form input,.panel .eigen-form select,.panel .eigen-zuordnung input,.panel .eigen-kategorien input{min-width:0;flex:none;width:100%}
.eigen-form select{font:inherit;padding:12px;border:1px solid #cbd0c8;border-radius:4px;background:#fff}
.eigen-umr-kopf{display:flex;justify-content:space-between;gap:8px;align-items:center;font-size:13px}
.eigen-umrechnung{display:flex;gap:6px;align-items:center}
.panel .eigen-umrechnung input{width:7em;flex:none}
.eigen-kategorien{margin:8px 0 14px}
.eigen-kategorie{display:grid;grid-template-columns:5em 1fr 4.5em 1.4fr auto;gap:6px;align-items:center;margin-bottom:6px}
.eigen-kategorie>.error{grid-column:1/-1}
@media(max-width:600px){.eigen-kategorie{grid-template-columns:5em 1fr 4.5em}.eigen-kategorie-kopf{display:none}}
.eigen-zuordnung{margin:14px 0}
.eigen-bei-mir{margin:0 0 8px}
.eigen-zuordnen-platz{margin-top:10px;display:grid;gap:8px}
.eigen-zuordnen-treffer{display:grid;gap:4px}
.panel .eigen-treffer{text-align:left;background:var(--card);color:var(--ink);border:1px solid var(--line);font-weight:400;padding:10px}
.eigen-umrechnen{display:grid;gap:8px;padding:10px;border:1px solid var(--green);border-radius:4px}
body.artikel-wahl-offen{overflow:hidden}
.eigen-ort{white-space:nowrap}
@media(max-width:600px){.eigen-preis{grid-template-columns:1fr}.eigen-preis-zahl{text-align:left}}
/* REV87: Infotafel pflegen */
.tafel-liste{display:grid;gap:0}
.tafel-zeile{display:grid;grid-template-columns:120px 1fr auto;gap:12px;align-items:center;padding:10px 0;border-top:1px solid var(--line)}
.tafel-zeile.tafel-aus{opacity:.55}
.tafel-zeile-text{display:grid;gap:2px;min-width:0}
.tafel-zeile-tun{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
@media(max-width:700px){.tafel-zeile{grid-template-columns:80px 1fr}.tafel-zeile-tun{grid-column:1/-1;justify-content:flex-start}}
.tafel-klein{width:100%;aspect-ratio:16/9;background:#fff;border:1px solid var(--line);border-radius:4px;display:grid;place-items:center;overflow:hidden}
.tafel-klein img{width:100%;height:100%;object-fit:cover}
.tafel-vorlagen-raster{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.panel .tafel-vorlage{display:grid;gap:6px;text-align:left;background:var(--card);color:var(--ink);border:1px solid var(--line);padding:10px;border-radius:5px;font-weight:400;align-content:start}
.tafel-vorlage img{width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:3px;background:#fff}
.tafel-vorlage.schon{opacity:.6}
.tafel-schon{font-size:12px;color:var(--green);font-weight:700}
.tafel-gruppe{margin:16px 0 8px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--green)}
.tafel-foto{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.tafel-foto-bild{width:200px;max-width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:4px}
.tafel-hoch{position:relative;overflow:hidden;cursor:pointer}
.tafel-hoch input{position:absolute;inset:0;opacity:0;min-width:0;cursor:pointer}
.tafel-fotowahl{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:6px;width:100%}
.panel .tafel-fotowahl-bild{padding:0;background:none;border:2px solid transparent;border-radius:4px;overflow:hidden}
.panel .tafel-fotowahl-bild:hover{border-color:var(--green)}
.tafel-fotowahl-bild img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block}
.tafel-ki,.tafel-schirme{display:grid;gap:8px;margin:0 0 14px;padding:12px;border:1px solid var(--line);border-radius:4px;background:#fbfaf5}
.tafel-schirme.hidden,.tafel-ki.hidden{display:none}
.tafel-schirm{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.tafel-schirm-neu{display:flex;gap:8px;flex-wrap:wrap}
.panel .tafel-schirm-neu input,.panel .tafel-link input,.panel .tafel-ki input{min-width:0;flex:1}
/* REV134: Koppeln per Code */
.panel .tafel-koppeln-zeile #tafel-koppel-code{flex:0 1 11em;font-size:1.25rem;letter-spacing:.12em;font-variant-numeric:tabular-nums}
.tafel-link-alt{margin-top:12px}
.tafel-link-alt summary{cursor:pointer;color:var(--muted,#5d675f)}
.tafel-link-alt[open] summary{margin-bottom:8px}
.tafel-link{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.tafel-link p{width:100%;margin:0}
a.eigen-klein{display:inline-flex;align-items:center;text-decoration:none}
.eigen-feld-titel{font-size:13px;font-weight:700;width:100%}
/* REV88: Infotafel-Kacheln, Reiter, Quiz */
.tafel-kacheln{margin:6px 0 18px}
.checkup-card.bildschirm{border-top-color:#2f6f8f}.checkup-card.quiz{border-top-color:#d88928}.checkup-card.mitspieler{border-top-color:#7a5aa6}
.tafel-reiter{display:flex;gap:6px;border-bottom:2px solid var(--line);margin:0 0 14px}
.panel .tafel-reiter-knopf{background:none;color:var(--muted);border-radius:6px 6px 0 0;padding:10px 16px;font-weight:800}
.panel .tafel-reiter-knopf.aktiv{background:var(--ink);color:#fff}
.tafel-wochenvorschlaege{display:grid;gap:8px;margin:0 0 16px;padding:12px;border:1px dashed #d88928;border-radius:6px;background:#fffaf0}
.tafel-wochenvorschlaege.hidden{display:none}
.quiz-abschnitt{margin:18px 0 0}
.quiz-abschnitt h4{margin:0 0 8px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--green)}
.quiz-zeile{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;padding:10px 0;border-top:1px solid var(--line)}
.quiz-zeile-text{display:grid;gap:3px;min-width:0}
.quiz-zeile-tun{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
@media(max-width:700px){.quiz-zeile{grid-template-columns:1fr}.quiz-zeile-tun{justify-content:flex-start}}
.quiz-antwortliste{margin:4px 0 0;padding-left:18px;font-size:13px;color:var(--muted)}
.quiz-antwortliste .richtig{color:var(--green);font-weight:800}
.quiz-code{font:800 26px ui-monospace,Menlo,monospace;letter-spacing:.2em;background:#fffaf0;border:1px dashed #d88928;padding:8px 12px;border-radius:6px;display:inline-block}
.quiz-quote{font-weight:900;font-variant-numeric:tabular-nums}
.quiz-quote.schwach{color:var(--danger)}
.quiz-antwort-feld{display:grid;grid-template-columns:auto 1fr;gap:8px;align-items:center}
.panel .quiz-antwort-feld input[type=text]{min-width:0}
.panel .quiz-antwort-feld input[type=radio]{min-width:0;width:22px;height:22px;flex:none}

/* REV89 Touren und Fahrzeuge */
.touren-kopf{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.touren-liste{display:grid;margin-top:10px}
.touren-zeile{display:grid;grid-template-columns:minmax(140px,220px) minmax(0,1fr) minmax(90px,260px);gap:12px;align-items:center;padding:11px 0;border-top:1px solid var(--line);font-size:14px}
.touren-zeile select{width:100%}.touren-zeile>span:last-child{text-align:right}
.touren-reiter{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:14px}
.panel .touren-reiter .aktiv{background:var(--green);color:#fff;border-color:var(--green)}
.touren-filter{display:flex;align-items:center;gap:6px;font-weight:600;margin-left:auto}
.touren-filter input{min-width:0;flex:none}
.panel form.touren-adresse{display:grid;grid-template-columns:minmax(140px,1.3fr) minmax(0,1.4fr) 80px minmax(0,1fr) minmax(0,1.4fr) auto auto;gap:8px;align-items:center;margin-top:0;padding:10px 0;border-top:1px solid var(--line)}
.panel form.touren-adresse input{min-width:0;padding:9px}
.touren-punkt{font-size:12px;color:var(--muted);white-space:nowrap}
.touren-punkt.ok{color:var(--green);font-weight:700}
.touren-ort-neu input{max-width:320px}
.touren-tabelle{width:100%;border-collapse:collapse;font-size:14px;margin:6px 0 18px}
.touren-tabelle th,.touren-tabelle td{text-align:left;border-bottom:1px solid var(--line);padding:8px 6px}
.touren-tabelle .zahl{font-variant-numeric:tabular-nums;white-space:nowrap}
@media(max-width:900px){.panel form.touren-adresse{grid-template-columns:1fr 1fr}.panel form.touren-adresse strong{grid-column:1/-1}.touren-zeile{grid-template-columns:1fr}}

/* REV90 Buero-Karte */
.touren-karte{height:520px;margin-top:12px;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#eef0e8}
.touren-karte.leer{display:grid;place-items:center;padding:24px;color:var(--muted);text-align:center;height:auto;min-height:140px}
.touren-legende{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;font-size:13px;color:var(--muted);margin-top:8px}
.touren-legende .punkt{display:inline-block;width:12px;height:12px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px var(--line);margin-right:-8px}
.touren-legende .punkt.hof{background:#17241d}.touren-legende .punkt.lieferant{background:#2f6f8f}
.touren-legende .punkt.baustelle{background:#14693C}.touren-legende .punkt.lkw{background:#d88928}
.touren-karte-quelle{font-size:12px;margin:8px 0 0}
.panel form.touren-adresse{grid-template-columns:minmax(140px,1.3fr) minmax(0,1.4fr) 80px minmax(0,1fr) minmax(0,1.4fr) auto auto auto}
@media(max-width:900px){.touren-karte{height:380px}.panel form.touren-adresse{grid-template-columns:1fr 1fr}}
/* REV90: Haekchen in Formularen nicht auf volle Breite ziehen (Infotafel:
   "laeuft auf dem Bildschirm" stand rechts neben dem Feld). */
.panel .eigen-form input[type=checkbox],.panel .eigen-form input[type=radio]{width:auto;flex:none}
.panel .eigen-form .maschine-schalter{justify-content:flex-start}
/* REV91: Lieferanten ausblenden */
.touren-zahl{display:block;font-weight:400;font-size:12px;margin-top:2px}
.panel form.touren-adresse.touren-aus{opacity:.55}
.panel form.touren-adresse{grid-template-columns:minmax(140px,1.3fr) minmax(0,1.4fr) 80px minmax(0,1fr) minmax(0,1.4fr) auto auto auto auto}
@media(max-width:900px){.panel form.touren-adresse{grid-template-columns:1fr 1fr}}
.panel form.touren-adresse.touren-lager{padding-left:22px;border-top-style:dashed}
.panel form.touren-lager-neu{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 10px 22px}
.panel form.touren-lager-neu input{min-width:0;flex:1;max-width:360px;padding:9px}
.panel form.touren-adresse{grid-template-columns:minmax(140px,1.2fr) minmax(0,1.3fr) 76px minmax(0,1fr) minmax(0,1.3fr) auto auto}
.touren-knoepfe{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
@media(max-width:900px){.panel form.touren-adresse{grid-template-columns:1fr 1fr}.touren-knoepfe{grid-column:1/-1;justify-content:flex-start}}
.touren-knoepfe{max-width:230px}
/* REV92 */
.touren-meldung{margin:10px 0 0;padding:8px 12px;border-left:4px solid var(--green);background:#edf2e8;color:var(--ink)}

/* REV93 Taschenrechner */
.rechner-knopf{position:fixed;right:20px;bottom:calc(76px + env(safe-area-inset-bottom,0px));z-index:900;width:46px;height:46px;border-radius:50%;border:1px solid var(--line);background:var(--card);color:var(--ink);display:grid;place-items:center;box-shadow:0 6px 18px #18251e26;padding:0}
.rechner-knopf svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.6}
.rechner-knopf svg circle{fill:currentColor;stroke:none}
.rechner-knopf svg .rechner-anzeige-icon{fill:var(--lime)}
.rechner-knopf:hover,.rechner-knopf.offen{background:var(--ink);color:#fff}
.rechner{position:fixed;right:20px;bottom:calc(132px + env(safe-area-inset-bottom,0px));max-height:calc(100dvh - 160px);overflow:auto;z-index:901;width:min(300px,calc(100vw - 32px));background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:0 18px 50px #18251e33;padding:12px;display:grid;gap:8px}
.rechner[hidden]{display:none}
.rechner-kopf{display:flex;justify-content:space-between;align-items:center;font-weight:800;font-size:14px}
.rechner-kopf button{border:0;background:none;font-size:20px;line-height:1;padding:2px 6px;color:var(--muted)}
.rechner-verlauf{list-style:none;margin:0;padding:0;display:grid;gap:2px;max-height:110px;overflow:auto}
.rechner-verlauf button{width:100%;text-align:right;border:0;background:none;color:var(--muted);font-size:12px;padding:2px 4px;font-variant-numeric:tabular-nums}
.rechner-verlauf button:hover{color:var(--ink);background:#edf2e8}
.rechner-eingabe{font:inherit;font-size:18px;text-align:right;padding:8px 10px;border:1px solid #cbd0c8;border-radius:6px;width:100%;font-variant-numeric:tabular-nums}
.rechner-ergebnis{text-align:right;font-size:24px;font-weight:800;font-variant-numeric:tabular-nums;min-height:30px}
.rechner-ergebnis.fehler{font-size:13px;font-weight:600;color:var(--danger)}
.rechner-tasten{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.rechner-tasten button{font:inherit;font-size:17px;font-weight:700;padding:11px 0;border-radius:6px;border:1px solid var(--line);background:#fff;color:var(--ink)}
.rechner-tasten button.neben{background:#f3f0e7}
.rechner-tasten button.op{background:#edf2e8;color:var(--green)}
.rechner-tasten button.gleich{grid-column:span 2;background:var(--ink);color:#fff;border-color:var(--ink)}
.rechner-tasten button.uebernehmen{grid-column:span 2;background:var(--green);color:#fff;border-color:var(--green);font-size:15px}
.rechner-tasten button.uebernehmen:disabled{opacity:.45}
.rechner-ziel{margin:0;font-size:12px;color:var(--muted)}
@media(max-width:600px){.rechner-tasten button{padding:14px 0;font-size:19px}}
/* Im Chat steht unten rechts das Eingabefeld - dort kein Rechner-Knopf. */
body[data-ansicht="chat"] .rechner-knopf,body[data-ansicht="chat"] .rechner{display:none}
/* REV94 Fuhrpark */
.panel form.fuhrpark-zeile{display:grid;grid-template-columns:minmax(150px,1.6fr) minmax(90px,.8fr) minmax(90px,.7fr) minmax(100px,.8fr) 80px 80px 80px auto auto auto;gap:8px;align-items:end;margin-top:0;padding:10px 0;border-top:1px solid var(--line)}
.panel form.fuhrpark-zeile input,.panel form.fuhrpark-zeile select{min-width:0;padding:9px}
.fuhrpark-zahl{display:grid;gap:2px;font-size:11px;font-weight:700;color:var(--muted)}
.fuhrpark-kran{display:flex;align-items:center;gap:6px;font-size:13px;padding-bottom:9px}
.panel .fuhrpark-kran input{width:auto;min-width:0;flex:none}
.fuhrpark-tracker{font-size:12px;padding-bottom:10px;white-space:nowrap}
/* REV103: Aufbau, km, TUEV, SP als zweite Zeile */
.fuhrpark-mehr{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px;align-items:end}
.fuhrpark-mehr .fuhrpark-zahl{min-width:0;flex:0 1 9.5em}
.fuhrpark-mehr input,.fuhrpark-mehr select{min-width:0;width:100%;padding:9px}
.fuhrpark-fristen{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding-bottom:9px}
.fuhrpark-frist{font-size:12px;border-radius:999px;padding:3px 9px}
.fuhrpark-frist.bald{background:#fff4df;color:#6e4a0e}
.fuhrpark-frist.abgelaufen{background:#fbeceb;color:#8a2c23}
.panel form.fuhrpark-neu{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.panel form.fuhrpark-neu input{flex:1;min-width:160px;max-width:320px;padding:9px}
@media(max-width:900px){.panel form.fuhrpark-zeile{grid-template-columns:1fr 1fr}}
/* REV96 Dienstplan */
.dp-kopf{display:flex;flex-wrap:wrap;align-items:center;gap:10px;max-width:1200px;margin:0 auto 14px}
.dp-titel{flex-basis:100%}
.dp-titel .eyebrow{margin-top:0}
.dp-titel h2{margin:0}
.dp-tag{display:flex;align-items:center;gap:6px}
.dp-tag input{padding:8px;min-width:0}
.dp-tag strong{min-width:130px;font-size:15px}
.dp-luecke{flex:1}
#dp-status{font-size:12px;white-space:nowrap}
.dp-meldung{max-width:1200px;margin:0 auto 12px;padding:10px 14px;border-radius:5px;background:#edf2e8;border:1px solid #cfe0c6;font-size:14px}
.dp-meldung.fehler{background:#fbeceb;border-color:#efc9c5;color:var(--danger)}
/* REV123: Dienstplan ohne Netz */
.dp-offline{max-width:1200px;margin:0 auto 12px;padding:10px 14px;border-radius:5px;background:#fff4df;border:1px solid #f0d9a8;color:#6e4a0e;font-size:14px;display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline}
.dp-offline strong{color:#8a5a0b}
.dp-konflikt{max-width:1200px;margin:0 auto 12px;padding:12px 14px;border-radius:5px;background:#fffdf8;border:2px solid #d9a441;font-size:14px;display:flex;flex-direction:column;gap:8px}
.dp-konflikt p{margin:0}
.dp-konflikt ul{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:4px;overflow-wrap:anywhere}
.dp-konflikt-knoepfe{display:flex;flex-wrap:wrap;gap:8px}
body.offline-start .nav:not([data-view="dienstplan"]){opacity:.45}
.dp-offline[hidden],.dp-konflikt[hidden]{display:none}
.dp-kopf button:disabled{opacity:.45;cursor:not-allowed}
.panel.dp-verfuegbar{padding:12px 16px;margin-bottom:10px}
.dp-leiste{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px;margin-bottom:8px;font-size:14px}
.dp-leiste .muted{font-size:12px}
.dp-chips{display:flex;flex-wrap:wrap;gap:6px;min-height:34px;align-items:center}
.dp-chip,.panel .dp-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 6px 5px 10px;border-radius:999px;font-size:13px;font-weight:700;cursor:grab;user-select:none;border:1px solid transparent;max-width:100%;white-space:nowrap;line-height:1.2}
.dp-chip.dp-ma{background:#e3efe0;color:#123d2a;border-color:#c9dcc4}
.dp-chip.dp-fz{background:#e2ebf2;color:#173246;border-color:#c5d5e2}
.dp-chip small{font-size:10px;font-weight:800;opacity:.7;text-transform:uppercase;letter-spacing:.04em}
.dp-chip.gewaehlt{outline:3px solid var(--green);outline-offset:1px}
.dp-chip .dp-weg{border:0;background:transparent;color:inherit;opacity:.55;padding:0 4px;font-size:13px;font-weight:800;line-height:1;border-radius:50%}
.dp-chip .dp-weg:hover{opacity:1}
.dp-tabelle-wrap{overflow-x:auto}
.dp-zeile{display:grid;grid-template-columns:44px 34px repeat(3,minmax(104px,1.2fr)) repeat(2,minmax(92px,1fr)) repeat(3,minmax(100px,1fr)) 28px;gap:6px;align-items:center;min-width:990px;padding:6px 0;border-top:1px solid var(--line)}
.dp-kopfzeile{border-top:0;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding-bottom:4px}
.dp-kol{display:flex;align-items:center;gap:4px}
.dp-kol strong{font-size:16px;min-width:16px}
.dp-reihe-knoepfe{display:grid;gap:1px}
.panel .dp-reihe-knoepfe button{background:transparent;color:var(--muted);border:0;padding:0 3px;font-size:10px;line-height:1.2;border-radius:3px}
.panel .dp-reihe-knoepfe button:disabled{opacity:.25;cursor:default}
.panel .dp-reihe-knoepfe button:not(:disabled):hover{color:var(--ink);background:#edf2e8}
.dp-feld{min-height:38px;border-radius:6px;display:flex;align-items:center;padding:2px;min-width:0}
.dp-feld.leer{border:1px dashed #c8cec4;background:#faf8f2;cursor:pointer}
.dp-feld.dp-feld-fz.leer{background:#f6f8fa}
.dp-feld.drueber,.dp-chips.drueber{border-color:var(--green);background:#e9f3e3}
.panel .dp-feld .dp-chip{min-width:0;font-size:12px;padding:4px 4px 4px 8px;gap:3px}
.dp-feld .dp-chip>span:first-child{overflow:hidden;text-overflow:ellipsis;min-width:0}
.dp-feld .dp-chip small{display:none}
.panel input.dp-bs{min-width:0;width:100%;padding:8px 9px;font-size:13px}
.panel input.dp-bs.bekannt{border-color:#9fc39a;background:#f4faf1;font-weight:700}
.panel button.dp-reihe-weg{background:transparent;color:var(--muted);border:0;padding:6px;font-size:14px;border-radius:4px}
.panel button.dp-reihe-weg:hover{color:var(--danger);background:#fbeceb}
.dp-hinweis{margin:0 0 4px 94px;font-size:12px;color:#8a5a12;background:#fff4df;border-radius:4px;padding:4px 8px;min-width:0}
#dp-reihe-neu{margin:10px 0 4px}
.dp-pruef{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;border:2px solid #c8cec4;background:#fff;cursor:pointer}
.panel .dp-pruef input{appearance:none;-webkit-appearance:none;margin:0;padding:0;border:0;width:100%;height:100%;min-width:0;flex:none;border-radius:50%;cursor:pointer;background:transparent;box-shadow:none}
.dp-pruef.an{background:var(--green);border-color:var(--green)}
.dp-pruef.an::after{content:"✓";color:#fff;font-weight:900;font-size:15px;position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}
.dp-pruef{position:relative}
.dp-pruef:focus-within{outline:3px solid #1d6b4d55;outline-offset:1px}
.dp-zeile.geprueft{background:#f2f8ee}
.dp-abwesend{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:10px;padding:10px 12px;border-radius:6px;background:#faf8f2;border:1px solid var(--line)}
.dp-abwesend strong{min-width:60px}
.dp-abwesend .dp-chips{flex:1;min-width:180px}
.dp-abwesend .muted{font-size:12px}
.dp-krank{background:#fdf1ef;border-color:#f0d5d0}
/* REV130: Hinweis fuer den Aushang - rot und fett, wie er gedruckt wird */
.dp-aushang-hinweis input{flex:1 1 240px;min-width:0;font:inherit;font-weight:800;color:#d10000;padding:8px 10px;border:1px solid var(--line);border-radius:6px;background:#fff}
.dp-aushang-hinweis input::placeholder{color:#b8a9a6;font-weight:400}
.dp-druckkopf{display:none}
@media(max-width:700px){.dp-tag strong{min-width:0}.dp-luecke{display:none}#dp-senden{width:100%}.dp-chip{font-size:14px;padding:7px 8px 7px 12px}}
/* Drucken: nur der Plan, quer auf A4. Urlaub bleibt aus dem Aushang. */
@page dienstplan{size:A4 landscape;margin:10mm}
@media print{
  body.druck-dienstplan *{visibility:hidden}
  body.druck-dienstplan,body.druck-dienstplan *{overflow:visible!important}
  body.druck-dienstplan #dp-plan,body.druck-dienstplan #dp-plan *{visibility:visible}
  body.druck-dienstplan #dp-plan{page:dienstplan;position:absolute;left:0;top:0;width:100%;max-width:none;border:0;padding:0;margin:0;background:#fff}
  body.druck-dienstplan .dp-druckkopf{display:block;margin:0 0 6mm;font-family:Georgia,serif;font-size:20pt}
  body.druck-dienstplan .dp-aushang-hinweis{background:none;border:0;justify-content:center}
  body.druck-dienstplan .dp-aushang-hinweis strong{display:none}
  body.druck-dienstplan .dp-aushang-hinweis input{border:0;text-align:center;font-size:20pt;color:#e00000;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  body.druck-dienstplan .dp-aushang-hinweis.leer{display:none!important}
  body.druck-dienstplan .dp-nicht-drucken,body.druck-dienstplan .dp-urlaub,body.druck-dienstplan .dp-krank,body.druck-dienstplan .dp-abwesend .muted,body.druck-dienstplan .dp-chip .dp-weg{display:none!important}
  body.druck-dienstplan .grain,body.druck-dienstplan .rechner-knopf{display:none!important}
  body.druck-dienstplan .dp-zeile{min-width:0;grid-template-columns:36px repeat(3,1fr) repeat(2,1fr) repeat(3,1.4fr);font-size:10pt;break-inside:avoid;background:none}
  body.druck-dienstplan .dp-feld,body.druck-dienstplan .dp-feld.leer{border:0;background:none;min-height:0}
  body.druck-dienstplan .dp-chip{background:none!important;border:0;padding:0;font-weight:700;color:#000}
  body.druck-dienstplan{background:#fff}
  body.druck-dienstplan #dp-plan input{border:0;background:none;padding:0;font-size:10pt;color:#000;-webkit-appearance:none;appearance:none}
  body.druck-dienstplan #dp-plan input::placeholder{color:transparent}
  body.druck-dienstplan #dp-plan input::-webkit-calendar-picker-indicator{display:none}
}
/* ===== REV104 Rechnungen pruefen ===== */
.rp-titel{font:700 28px Georgia,serif;margin:2px 0 4px;text-wrap:balance}
.rp-filter{display:flex;flex-wrap:wrap;gap:10px;align-items:end;justify-content:space-between;margin:14px 0}
.rp-chips{display:flex;flex-wrap:wrap;gap:8px}
.rp-chip{font:700 13px Inter,sans-serif;border:1px solid var(--line);background:var(--card);color:var(--ink);padding:8px 14px;border-radius:999px}
.rp-chip.aktiv{background:var(--ink);color:#fff;border-color:var(--ink)}
.rp-lieferant{font-size:12px;color:var(--muted)}
.rp-lieferant select{min-width:12em;padding:8px}
.rp-tabelle-panel{padding:0;overflow:hidden}
.rp-zeile{display:grid;grid-template-columns:minmax(120px,1.1fr) minmax(90px,.7fr) 90px minmax(0,2.2fr) 150px auto;gap:12px;padding:11px 18px;align-items:center;border-top:1px solid var(--line);font-variant-numeric:tabular-nums}
.rp-zeile-kopf{border-top:0;font-size:11px;font-weight:800;letter-spacing:.08em;color:var(--muted)}
.rp-zeile .rp-was{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center;min-width:0}
.rp-zeile .rp-was small{color:var(--muted);font-size:13px;overflow-wrap:anywhere}
.rp-r{text-align:right;font-variant-numeric:tabular-nums}
.rp-marke{border-radius:4px;padding:3px 8px;font-size:12px;font-weight:800;white-space:nowrap}
.rp-marke.position_fehlt{background:#fbeceb;color:#8a2c23}
.rp-marke.summe_weicht_ab{background:#fff4df;color:#6e4a0e}
.rp-marke.keine_position,.rp-marke.kopf_fehlt{background:#eef0ec;color:#4b544e}
.rp-seiten{display:flex;gap:12px;align-items:center;justify-content:center;padding:10px;border-top:1px solid var(--line)}
.rp-erklaer{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:14px;font-size:13px;line-height:1.5;color:var(--muted)}
.rp-erklaer>div{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:12px 14px}
.rp-erklaer strong{color:var(--ink)}
.rp-kopf{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-bottom:12px}
.rp-kopf .rp-titel{font-size:22px;margin:0;flex:1 1 20em;min-width:0}
.rp-raster{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:16px;align-items:start}
.rp-pdf{position:sticky;top:0;display:grid;grid-template-rows:auto 1fr;gap:6px;height:calc(100dvh - 190px);min-height:420px;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:10px}
.rp-pdf-leiste{display:flex;justify-content:space-between;align-items:center;font-size:13px}
.rp-pdf iframe{width:100%;height:100%;border:1px solid var(--line);border-radius:4px;background:#fff}
.rp-rechts{display:flex;flex-direction:column;gap:12px;min-width:0}
.rp-probe{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;border-radius:8px;padding:14px 18px;font-variant-numeric:tabular-nums}
.rp-probe>div{display:flex;flex-direction:column;gap:2px}
.rp-probe-titel{font-size:12px;letter-spacing:.08em}
.rp-probe.fehlt{background:#fbeceb;border:1px solid #efc9c5;color:#17241d}
.rp-probe.fehlt .rp-probe-titel,.rp-probe.fehlt .rp-probe-ergebnis{color:#8a2c23}
.rp-probe.passt{background:#e8f2e6;border:1px solid #bcd8b8}
.rp-probe.passt .rp-probe-titel,.rp-probe.passt .rp-probe-ergebnis{color:#14693C}
.rp-probe-ergebnis{font-size:20px;font-weight:800}
.rp-netto{display:flex;gap:8px;align-items:end;flex-wrap:wrap}
.rp-netto input{min-width:0;width:10em;padding:9px}
.rp-verdacht{display:flex;flex-direction:column;gap:10px}
.rp-verdacht-block{background:#fff8f6;border:1px solid #efc9c5;border-radius:8px;padding:12px 14px;display:flex;flex-direction:column;gap:8px}
.rp-verdacht-kopf{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-weight:700}
.rp-originalzeile{font-size:13px;color:var(--muted);overflow-wrap:anywhere}
.rp-originalzeile code{font-family:ui-monospace,Menlo,Consolas,monospace;background:#f1f1ee;padding:2px 6px;border-radius:3px;color:var(--ink)}
.rp-vorschlag-hinweis{font-size:13px;font-weight:700;color:#14693C}
#view-rechnung-pruefen [hidden]{display:none!important}
.panel form.rp-form,.rp-form{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:0;align-items:end}
.rp-form .rp-breit{grid-column:span 2}
.rp-form label{display:flex;flex-direction:column;gap:3px;font-size:11px;font-weight:700;color:var(--muted);min-width:0}
.rp-form input,.rp-form select{min-width:0;width:100%;padding:8px;font-size:14px}
.rp-form .rp-form-knoepfe{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px}
.rp-form[data-rp-form="nebenkosten"]{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 110px}
.rp-positionen{background:var(--card);border:1px solid var(--line);border-radius:8px;overflow:hidden}
.rp-positionen>.rp-form{padding:10px 14px;background:#fffdf3;border-top:1px solid var(--line)}
.rp-pos{display:grid;grid-template-columns:22px 48px minmax(0,1fr) 90px 90px auto;gap:10px;padding:8px 14px;align-items:center;border-top:1px solid var(--line);font-size:14px;font-variant-numeric:tabular-nums}
.rp-pos-kopf{border-top:0;font-size:11px;font-weight:800;letter-spacing:.08em;color:var(--muted)}
.rp-pos>span{min-width:0;overflow-wrap:anywhere}
.rp-haken{color:#14693C;font-weight:900}
.rp-tag{background:#eef0ec;color:#4b544e;border-radius:4px;padding:1px 6px;font-size:11px;font-weight:700}
.rp-pos-knoepfe{display:flex;gap:4px}
.rp-pos-knoepfe .eigen-klein{padding:4px 8px;min-height:0}
.rp-nebenkosten{display:flex;flex-direction:column;gap:4px}
.rp-nk-titel{font-size:12px;font-weight:800;color:var(--muted)}
.rp-nk{display:grid;grid-template-columns:minmax(0,1fr) 90px auto;gap:10px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:6px;padding:6px 12px;font-size:14px}
.rp-ergaenzen{display:flex;flex-wrap:wrap;gap:8px}
#rp-formular-platz .rp-form{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:12px 14px}
.rp-fuss{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:4px}
.rp-fuss>span{flex:1 1 16em;font-size:13px}
.rp-fuss input{flex:1 1 14em;min-width:0;padding:9px}
#rp-bestaetigen{background:#b8beb6;color:#fff;border:0}
#rp-bestaetigen.rp-gruen{background:#14693C}
.rp-meldung{margin:0;font-size:14px;font-weight:700}
.rp-meldung.gut{color:#14693C}
@media(max-width:1000px){
  .rp-raster{grid-template-columns:1fr}
  .rp-pdf{position:static;height:55dvh}
  .rp-zeile{grid-template-columns:1fr 1fr;gap:6px 12px}
  .rp-zeile-kopf{display:none}
  .rp-zeile .rp-was{grid-column:1/-1}
  .rp-erklaer{grid-template-columns:1fr}
  .rp-form,.panel form.rp-form{grid-template-columns:1fr 1fr}
  .rp-form .rp-breit{grid-column:1/-1}
  .rp-form label:first-child{grid-column:auto}
  .rp-form[data-rp-form="nebenkosten"]{grid-template-columns:1fr 1fr}
  .rp-pos{grid-template-columns:18px 40px minmax(0,1fr) 80px auto}
  .rp-pos>span:nth-child(4){display:none}
}

/* ===== REV106 Urlaub ===== */
#view-urlaub [hidden]{display:none!important}
.ul-kopfzeile{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;justify-content:space-between;margin-bottom:12px}
.ul-titel{font:700 28px Georgia,serif;margin:2px 0 0}
.ul-steuer{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.ul-steuer strong{min-width:9em;text-align:center;font-size:17px}
.ul-umschalter{display:inline-flex;border:1px solid var(--line);border-radius:6px;overflow:hidden}
.ul-umschalter button{font:700 13px Inter,sans-serif;border:0;background:var(--card);color:var(--ink);padding:9px 13px}
.ul-umschalter button.aktiv{background:var(--ink);color:#fff}
.ul-meldung{margin:0 0 10px;font-weight:700;color:#14693C}
.ul-meldung.error{color:var(--danger)}
.ul-antraege{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,420px),1fr));gap:12px;margin-bottom:14px}
.ul-antrag{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:12px 14px;display:flex;flex-direction:column;gap:7px;font-size:14px}
.ul-antrag-kopf{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.ul-antrag-kopf .muted{margin-left:auto;font-size:13px}
.ul-marke{border-radius:4px;padding:3px 8px;font-size:11px;font-weight:800}
.ul-marke.beantragt{background:#fff4df;color:#6e4a0e}
.ul-warnung{color:#8a2c23;font-size:13px}
.ul-ok{color:#14693C;font-size:13px}
.ul-knoepfe{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.ul-knoepfe .ul-grund{flex:1 1 12em;min-width:0;padding:8px}
.ul-raster-panel{padding:0;overflow-x:auto;max-width:none}
.ul-raster{min-width:900px;font-variant-numeric:tabular-nums}
.ul-zeile{display:grid;grid-template-columns:120px repeat(31,minmax(0,1fr)) repeat(4,58px);border-bottom:1px solid #ebede7;min-height:40px;align-items:stretch}
.ul-zeile[data-spalten="30"]{grid-template-columns:120px repeat(30,minmax(0,1fr)) repeat(4,58px)}
.ul-zeile[data-spalten="29"]{grid-template-columns:120px repeat(29,minmax(0,1fr)) repeat(4,58px)}
.ul-zeile[data-spalten="28"]{grid-template-columns:120px repeat(28,minmax(0,1fr)) repeat(4,58px)}
.ul-kopf{font-size:11px;color:var(--muted);min-height:0}
.ul-name{padding:6px 10px;display:flex;flex-direction:column;justify-content:center;font-size:14px;min-width:0}
.ul-name small{font-size:11px;color:var(--muted)}
.ul-kopf .ul-name{font-weight:800;letter-spacing:.06em;font-size:11px}
.ul-tag{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;border-left:1px solid #f1f1ec;font-size:11px;padding:4px 0}
.ul-tag.frei{background:#dcd9cf}
.ul-tag.heute{outline:2px solid var(--ink);outline-offset:-2px}
.ul-tag.viele{background:#fbeceb;color:#8a2c23;font-weight:800}
.ul-zahl{display:flex;align-items:center;justify-content:flex-end;padding:0 6px;font-size:13px}
.ul-kopf .ul-zahl{font-size:10px}
.ul-kopf .ul-zahl{font-weight:800}
.ul-geplant{color:#6e4a0e}
.ul-rest{font-weight:800;color:#14693C}
.ul-raster .ul-zelle{border:0;border-left:1px solid #f1f1ec;border-radius:0;background:transparent;padding:0;min-width:0;font-size:10px;font-weight:800;color:#fff;cursor:pointer}
.ul-raster .ul-zelle:hover{background:#eef3ea}
.ul-raster .ul-zelle.frei{background:#dcd9cf;cursor:default}
.ul-raster .ul-zelle.c-g,.ul-legende .c-g{background:#14693C}
.ul-raster .ul-zelle.c-a,.ul-legende .c-a{background:#f0c070;color:#6e4a0e}
.ul-raster .ul-zelle.c-p,.ul-legende .c-p{background:#2f5f9e}
.ul-raster .ul-zelle.c-u,.ul-legende .c-u{background:#7b6aa8}
.ul-raster .ul-zelle.c-k,.ul-legende .c-k{background:#d9827a}
.ul-raster .ul-zelle.halb{background-image:linear-gradient(90deg,transparent 50%,rgba(255,253,248,.85) 50%)}
.ul-fuss{background:#f6f5ef;font-weight:800;min-height:32px}
.ul-legende{display:flex;flex-wrap:wrap;gap:14px;align-items:center;font-size:13px;color:#4b544e;margin-top:10px}
.ul-legende span{display:inline-flex;gap:6px;align-items:center}
.ul-legende i{display:inline-block;width:18px;height:14px;border-radius:3px}
.ul-legende i.frei{background:#dcd9cf}
.ul-jahr{min-width:900px;font-variant-numeric:tabular-nums}
.ul-jzeile{display:grid;grid-template-columns:140px repeat(12,minmax(0,1fr)) 64px 80px 64px 8px;gap:4px;padding:8px 12px;border-bottom:1px solid #ebede7;align-items:center;font-size:14px}
.ul-jzeile span{text-align:right}
.ul-jzeile span.voll{color:#14693C;font-weight:800}
.ul-jzeile .ul-uebertrag{width:100%;min-width:0;padding:6px;text-align:right}
.mm-leiste{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:10px}
.mm-leiste #mm-stand{margin-right:auto}
.mm-offen{background:#fff4df;color:#6e4a0e;border-radius:8px;padding:10px 12px;margin:0 0 10px;font-weight:700}
.mm-tabelle{min-width:1000px;font-variant-numeric:tabular-nums}
.mm-zeile{display:grid;grid-template-columns:70px minmax(0,1.3fr) repeat(9,minmax(0,.7fr)) minmax(0,2fr);gap:8px;padding:9px 14px;border-bottom:1px solid #ebede7;align-items:center;font-size:14px}
.mm-zeile>span{min-width:0;overflow-wrap:anywhere}
.mm-zeile small{display:block;font-size:12px}
.mm-kopf{font-size:11px;font-weight:800;letter-spacing:.06em;color:var(--muted)}
.mm-zeile .r{text-align:right}
.mm-urlaub{color:#14693C;font-weight:700}
.mm-krank{color:#8a2c23}
.mm-bem{font-size:13px;color:#4b544e}
.dp-urlaub-dialog{border:1px solid #cbd0c8;border-radius:12px;padding:20px 22px;max-width:min(520px,calc(100vw - 32px));background:var(--card);color:var(--ink)}
.dp-urlaub-dialog::backdrop{background:#10201966}
.dp-urlaub-dialog form{display:flex;flex-direction:column;gap:12px;margin:0}
.dp-urlaub-dialog h3{margin:0;font-size:18px}
.dp-ud-arten{display:flex;flex-wrap:wrap;gap:8px}
.dp-ud-arten label{display:flex;align-items:center;gap:6px;min-height:44px;padding:0 12px;border:1px solid #cbd0c8;border-radius:6px;font-size:14px;font-weight:600}
.dp-ud-arten input{width:auto;min-width:0}
.dp-ud-zeile{display:flex;flex-wrap:wrap;gap:12px;align-items:end}
.dp-ud-zeile input[type=date]{padding:8px;min-width:0}
.dp-ud-halb{display:flex;align-items:center;gap:6px;flex-direction:row;font-size:14px}
.dp-ud-halb input{width:auto;min-width:0}
.dp-ud-knoepfe{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}
.dp-ud-wrap{display:inline-flex;flex-wrap:wrap;gap:4px;align-items:center}
.dp-ud-nachtragen{font:700 11px Inter,sans-serif;border:1px dashed #2f5f9e;background:#e6eef8;color:#24497a;border-radius:999px;padding:3px 8px}
.dp-chip.dp-planung{cursor:default;background:#e8f2e6;color:#14693C;border:1px solid #bcd8b8}
.dp-chip.dp-planung.beantragt{background:#fff4df;color:#6e4a0e;border-color:#f0d9a8}

/* ===== REV107 Maschinen-Standort, Dienstplan-Kalender ===== */
.maschine-standort{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:end;margin-top:8px}
.maschine-standort label{display:flex;flex-direction:column;gap:3px;font-size:12px;font-weight:700;color:var(--muted);flex:1 1 18em;min-width:0}
.maschine-standort input{min-width:0;width:100%}
.maschine-standort input.bekannt{border-color:#14693C}
.maschine-seit{font-size:13px;padding-bottom:9px}
.maschine-verlauf{flex-basis:100%;margin:0;padding-left:18px;font-size:13px;color:var(--muted)}
.maschine-verlauf[hidden]{display:none}
.dp-archiv-raster{display:grid;grid-template-columns:minmax(0,340px) minmax(0,1fr);gap:18px;align-items:start;margin-top:10px}
.dp-kal-kopf{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.dp-kal-tage{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.dp-kal-wt{font-size:11px;font-weight:800;color:var(--muted);text-align:center}
.panel .dp-kal-tag,.dp-kal-tag{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-height:44px;padding:2px;border:1px solid var(--line);border-radius:6px;background:var(--card);color:var(--ink);font-weight:600}
.panel .dp-kal-tag small,.dp-kal-tag small{font-size:10px;color:var(--muted);font-weight:700}
.panel .dp-kal-tag.plan,.dp-kal-tag.plan{background:#eef3ea;border-color:#bcd8b8}
.panel .dp-kal-tag.gesendet,.dp-kal-tag.gesendet{background:#d9ecd6}
.panel .dp-kal-tag.aktiv,.dp-kal-tag.aktiv{outline:2px solid var(--ink);outline-offset:-2px}
.dp-kal-legende{font-size:12px;margin:8px 0 0}
.dp-kal-punkt{display:inline-block;width:10px;height:10px;border-radius:3px;background:#eef3ea;border:1px solid #bcd8b8;vertical-align:middle}
.panel form.dp-suche-form,.dp-suche-form{display:flex;flex-wrap:wrap;gap:8px;align-items:end;margin:0}
.dp-suche-form label{display:flex;flex-direction:column;gap:3px;font-size:12px;font-weight:700;color:var(--muted)}
.dp-suche-form label:first-child{flex:1 1 16em}
.panel .dp-suche-form input{min-width:0;padding:9px}
.dp-suche-treffer{display:flex;flex-direction:column;gap:6px;margin-top:10px;max-height:520px;overflow:auto}
.panel .dp-treffer,.dp-treffer{display:grid;gap:2px;text-align:left;border:1px solid var(--line);border-radius:6px;background:var(--card);color:var(--ink);padding:9px 12px;font-weight:400}
.dp-treffer b{font-size:14px}
@media(max-width:800px){.dp-archiv-raster{grid-template-columns:1fr}}

/* REV108 Lieferanten zusammenfuehren */
.panel form.touren-zusammen,.touren-zusammen{display:flex;flex-direction:column;gap:8px;margin:0 0 10px;padding:12px 14px;border:1px dashed #c7781a;border-radius:8px;background:#fffaf0}
.touren-zusammen p{margin:0}
.touren-zusammen label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:700;color:var(--muted)}
.touren-zusammen select{min-width:0;max-width:420px;padding:8px}
.touren-zusammen [hidden]{display:none!important}

/* REV109 */
.rp-nachlesen{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;margin:0 0 12px;padding:10px 14px;border:1px dashed #cbd0c8;border-radius:8px;font-size:13px;color:#4b544e}
.rp-nachlesen p{flex-basis:100%;margin:0}

/* REV110 Plan leeren */
.dp-leeren-frage{display:inline-flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:13px;font-weight:700;color:#8a2c23}
.dp-leeren-frage[hidden],#dp-rueckgaengig[hidden],#dp-leeren[hidden]{display:none}

/* ===== REV111 Drucken-Knopf und Aushang zum Drucken ===== */
.pdf-sheet-knoepfe #pdf-sheet-drucken{font:800 15px Inter,sans-serif;padding:8px 18px;border-radius:6px;border:0;background:#14693C;color:#fff;min-height:44px}
.dp-aushang{display:none}
@media print{
  @page{size:A4 landscape;margin:10mm}
  body.druck-aushang>*:not(#dp-aushang){display:none!important}
  body.druck-aushang{background:#fff!important;margin:0}
  body.druck-aushang #dp-aushang{display:block;color:#17241d;font-family:Helvetica,Arial,sans-serif;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .dpa-kopf{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:2px solid #14693C;padding-bottom:3mm;margin-bottom:4mm}
  .dpa-kopf img{height:16mm;width:auto}
  .dpa-tag{display:flex;flex-direction:column;align-items:flex-end}
  .dpa-tag strong{font-size:20pt}
  .dpa-tag span{font-size:9pt;color:#6b746d}
  .dpa-tabelle{width:100%;border-collapse:collapse;table-layout:auto}
  .dpa-tabelle th{text-align:left;font-size:7.5pt;letter-spacing:.06em;text-transform:uppercase;color:#6b746d;padding:0 3mm 2mm 0}
  .dpa-tabelle td{height:var(--dpa-zeile,20mm);font-size:var(--dpa-schrift,20pt);padding:0 4mm 0 0;vertical-align:middle;white-space:nowrap;overflow:hidden}
  .dpa-tabelle tbody tr:nth-child(odd) td{background:#f2f6ef;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .dpa-tabelle td.dpa-nr{font-size:9pt;color:#6b746d;width:8mm;padding-left:2mm}
  .dpa-tabelle td.dpa-fett{font-weight:700}
  .dpa-hinweis{margin:8mm 0 0;text-align:center;color:#e00000;font-weight:800;font-size:22pt;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .dpa-hinweis[hidden]{display:none}
  .dpa-tabelle tbody tr:last-child td{border-bottom:1px solid #d5dbd2}
}
/* REV112: Er und Sie bei "Familie" - Zwischenkopf ueber die ganze Breite */
#kd-form .kd-person-kopf{grid-column:1/-1;margin:6px 0 -4px;font:800 12px Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--green);border-top:1px solid var(--line);padding-top:8px}
#kd-form .kd-person-kopf.hidden,#kd-form .kd-nur-familie.hidden{display:none!important}
.stamm-angaben .kd-person b{font-weight:700;margin-right:2px}
/* REV112: Einzelpreis je 1 / 100 / 1000 */
.rp-form .rp-preis-je{display:flex;gap:4px;min-width:0}.rp-form .rp-preis-je input{flex:1;min-width:0}.rp-form .rp-preis-je select{flex:0 0 auto;width:auto;max-width:64px;padding:0 2px;font:inherit;font-size:13px;border:1px solid #cbd0c8;border-radius:4px;background:#fff;padding:0 4px}
.rp-form .rp-je-hinweis{grid-column:1/-1;margin:0;color:var(--green);font-weight:700}
.rp-form .rp-je-hinweis[hidden]{display:none!important}
/* REV113: Baustellenadresse aus dem Kundenstamm vorgeschlagen */
.touren-adresse .touren-aus-kunde{display:block;font-size:11px;font-weight:700;color:var(--green);margin-top:2px}
.touren-adresse.touren-vorschlag input[name="strasse"],.touren-adresse.touren-vorschlag input[name="plz"],.touren-adresse.touren-vorschlag input[name="ort"]{background:#eef6ea;border-color:#a9cfa0}
/* REV114: Strasse | Nr. - das Original bleibt unsichtbar und haelt den Wert */
input.strasse-nr-original{display:none!important}
.strasse-nr{display:flex;gap:6px;min-width:0;width:100%}
.strasse-nr input{min-width:0}
.panel .strasse-nr input.strasse-nr-strasse,.strasse-nr input.strasse-nr-strasse{flex:1 1 auto;min-width:0;width:auto}
.panel .strasse-nr input.strasse-nr-nr,.strasse-nr input.strasse-nr-nr{flex:0 0 5.5em;width:5.5em;min-width:0}
.ma-name-vorschlag{background:#fff9e8}
/* REV114: Felder im Stammdaten-Raster laufen nicht mehr ins Nachbarfeld
   (.panel input hatte min-width:220px - breiter als die Spalte). */
.stamm-form label>input:not([type=checkbox]):not([type=radio]),.stamm-form label>select{min-width:0;width:100%}
.panel form.touren-adresse{grid-template-columns:minmax(140px,1.3fr) minmax(0,2.2fr) 80px minmax(0,1fr) minmax(0,1.2fr) auto auto}
.touren-adresse .strasse-nr input.strasse-nr-nr{flex:0 0 3.8em;width:3.8em}
@media(max-width:900px){.panel form.touren-adresse{grid-template-columns:1fr 1fr}}
/* REV115: Ansprechpartner beim Lieferanten */
.lk-block{margin:0 0 10px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:#f7f8f3;display:flex;flex-direction:column;gap:6px}
.lk-titel{margin:0;font:800 12px Inter,sans-serif;letter-spacing:.06em;text-transform:uppercase;color:var(--green)}
.panel form.lk-zeile,.lk-zeile{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1.3fr) minmax(0,1.1fr) minmax(0,1.4fr) minmax(0,1.3fr) 24px auto;gap:6px;align-items:center;margin:0}
.lk-zeile input,.lk-zeile select,.lk-felder input,.lk-felder select{min-width:0;width:100%;padding:8px;font-size:13px;border:1px solid #cbd0c8;border-radius:4px;background:#fff;font-family:inherit}
.lk-wahl a{text-decoration:none;font-size:16px}
.lk-vorschlag{display:flex;flex-direction:column;gap:6px;padding:8px 10px;border-radius:6px;background:#eef6ea}
.lk-felder{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.touren-zusammen .lk-haken{flex-direction:row;align-items:center;gap:8px;color:var(--ink)}
@media(max-width:900px){.panel form.lk-zeile,.lk-zeile,.lk-felder{grid-template-columns:1fr 1fr}}
/* REV116: Muell - Band im Dienstplan, Kalender, Hinweis im Eck */
.dp-muell{display:flex;flex-direction:column;gap:6px;margin:0 0 12px;padding:10px 14px;border-radius:8px;background:#fff4df;border:1px solid #f0d9a8;color:#5a3d08}
.dp-muell[hidden]{display:none!important}
.dp-muell-zeile{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-weight:700}
.dp-muell-zeile.erledigt{color:#3c5a44;font-weight:600}
.dp-muell-zeile small{font-weight:600}
.dp-muell-zeile button{margin-left:auto}
.mk-panel .mk-import{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:10px 0}
.mk-panel .mk-datei{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:700;color:var(--muted)}
.mk-panel .mk-datei input{min-width:0;flex:none}
.mk-fraktionen{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0 12px}
.mk-fraktion{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 12px;border:1px solid #b9d7b2;border-radius:999px;background:#e8f2e6;font-size:13px;font-weight:700;color:var(--ink)}
.mk-fraktion.aus{background:#f1f1ec;border-color:#d3d7cf;color:var(--muted);text-decoration:line-through}
.mk-fraktion.aus small{text-decoration:none}
.panel form.mk-neu,.mk-neu{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap;margin:0 0 10px}
.mk-neu label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:700;color:var(--muted)}
.mk-neu input,.mk-neu select{min-width:0;padding:8px;font:inherit;font-size:14px;border:1px solid #cbd0c8;border-radius:4px;background:#fff}
.mk-termine{display:flex;flex-direction:column}
.mk-termin{display:grid;grid-template-columns:minmax(0,1.2fr) 170px minmax(0,1.4fr) auto;gap:10px;align-items:center;padding:8px 0;border-top:1px solid var(--line)}
.mk-termin input{min-width:0;padding:7px;font:inherit;font-size:14px;border:1px solid #cbd0c8;border-radius:4px}
.mk-termin.aus strong{text-decoration:line-through;color:var(--muted)}
@media(max-width:700px){.mk-termin{grid-template-columns:1fr 1fr}}
.charlie-hinweise{position:fixed;right:16px;bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:900;display:flex;flex-direction:column;gap:8px;max-width:min(360px,calc(100vw - 32px))}
.charlie-hinweis{background:var(--card);border:1px solid var(--line);border-left:0;border-radius:10px;box-shadow:0 10px 30px #18251e26;padding:12px 14px;display:flex;flex-direction:column;gap:8px;font-size:14px;font-weight:600}
.charlie-hinweis-knoepfe{display:flex;gap:6px;justify-content:flex-end}
.checkup-card.muell{border-top-color:#c7781a}
.mk-fraktionen label.mk-fraktion{display:inline-flex;grid-template-columns:none}
.mk-fraktionen .mk-fraktion input{flex:none;min-width:0;width:18px;height:18px;padding:0;margin:0}
.mk-panel .mk-datei input{min-width:0;padding:8px}
.mk-termin{grid-template-columns:220px 170px minmax(0,1fr) auto}
@media(max-width:700px){.mk-termin{grid-template-columns:1fr 1fr}}
/* REV118: Was CHARLIE gelernt hat */
.gl-zahlen{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:14px 0}
.gl-zahl{display:flex;flex-direction:column;gap:4px;padding:12px 14px;border:1px solid var(--line);border-radius:8px;background:var(--card)}
.gl-zahl span{font-size:12px;font-weight:800;color:var(--muted);letter-spacing:.04em}
.gl-zahl strong{font-size:26px;font-variant-numeric:tabular-nums}
.gl-zahl.gl-gewohnheit{background:#e8f2e6;border-color:#b9d7b2}.gl-zahl.gl-gewohnheit strong{color:#14693C}
.gl-zahl.gl-vorschlag{background:#e6eef8;border-color:#b9cbe4}.gl-zahl.gl-vorschlag strong{color:#24497a}
.gl-reiter{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 10px}
.panel .gl-reiter button.gl-tab,.gl-tab{border:1px solid #cbd0c8;background:var(--card);color:var(--ink);border-radius:999px;padding:10px 16px;font-weight:700;min-height:44px}
.panel .gl-reiter button.gl-tab.aktiv,.gl-tab.aktiv{background:#14693C;color:#fff;border-color:#14693C}
.gl-liste{display:flex;flex-direction:column}
.gl-zeile{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:12px;align-items:center;padding:10px 0;border-top:1px solid var(--line)}
.gl-was{display:flex;flex-direction:column;gap:2px;min-width:0}
.gl-was strong{overflow-wrap:anywhere}
.gl-was small{color:var(--muted)}
.gl-stand{font-size:12px;font-weight:800;padding:4px 10px;border-radius:999px;white-space:nowrap}
.gl-stand.gl-gewohnheit{background:#e8f2e6;color:#14693C}
.gl-stand.gl-vorschlag{background:#e6eef8;color:#24497a}
.gl-stand.gl-zurueck{background:#fff4df;color:#8a5a0b}
.gl-stand.gl-aus{background:#ebede7;color:#5d675f}
.gl-schalter{display:inline-flex!important;align-items:center;gap:6px;font-size:13px}
.gl-schalter input{min-width:0!important;width:18px;height:18px;flex:none}
@media(max-width:700px){.gl-zahlen{grid-template-columns:1fr 1fr}.gl-zeile{grid-template-columns:1fr auto}}
/* REV119: Artikel-Steckbrief */
.sb-block{display:flex;flex-direction:column;gap:12px;margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.sb-block h4{margin:0;font:700 18px Georgia,serif}
.sb-tipp{margin:0;padding:10px 12px;border-radius:8px;background:#e8f2e6;color:#14693C;font-weight:800}
.panel form.sb-wissen,.sb-wissen{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0}
.sb-wissen label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:700;color:var(--muted);min-width:0}
.sb-wissen label:first-child{grid-column:1/-1}
.sb-wissen input,.sb-wissen textarea{min-width:0;width:100%;font:inherit;font-size:14px;padding:9px;border:1px solid #cbd0c8;border-radius:4px;background:#fff;color:var(--ink)}
.sb-knoepfe{grid-column:1/-1;display:flex;align-items:center;gap:10px}
.sb-vergleich{display:flex;flex-direction:column}
.sb-zeile{display:grid;grid-template-columns:minmax(0,1fr) auto 80px auto;gap:10px;align-items:center;padding:9px 0;border-top:1px solid var(--line)}
.sb-name{display:flex;flex-direction:column;gap:2px;min-width:0}
.sb-name strong{overflow-wrap:anywhere}
.sb-name small{color:var(--muted)}
.sb-zeile a{font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
.sb-abstand{text-align:right;font-weight:800;font-variant-numeric:tabular-nums}
.sb-abstand.guenstiger{color:#14693C}.sb-abstand.teurer{color:var(--danger)}
.sb-aehnlich .sb-name strong{font-weight:600}
@media(max-width:700px){.panel form.sb-wissen,.sb-wissen{grid-template-columns:1fr}.sb-zeile{grid-template-columns:1fr auto}}
/* REV120: Aufgaben je Mitarbeiter */
.ma-aufgaben{grid-column:1/-1;border:1px solid var(--line);border-radius:6px;padding:8px 12px;display:flex;gap:14px;flex-wrap:wrap;margin:0}
.ma-aufgaben legend{font-size:12px;font-weight:800;color:var(--muted);padding:0 4px}
.ma-aufgaben label{display:inline-flex!important;flex-direction:row!important;align-items:center;gap:6px;font-size:13px;font-weight:700}
.ma-aufgaben input{min-width:0!important;width:18px;height:18px;flex:none}
.dp-muell-wer{font-weight:600;color:#6e4a0e}
.stamm-daten .ma-aufgaben{flex-basis:100%}
/* REV121: Material vom Hof - Buero */
.lg-liste{display:flex;flex-direction:column;gap:16px;margin-top:10px}
/* REV124: Steine und Platten */
.lg-steine{display:flex;flex-direction:column;gap:8px;margin:10px 0}
.lg-stein{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;align-items:start;padding:10px 12px;border:1px solid var(--line,#dfe2d8);border-radius:6px}
.lg-stein.ruht{opacity:.55}
.lg-stein-text{display:flex;flex-direction:column;gap:2px;min-width:0;overflow-wrap:anywhere}
.lg-stein-text small{color:var(--muted,#5d675f)}
.lg-stein-knopfreihe{display:flex;gap:6px;flex-wrap:wrap}
.lg-stein-form{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-top:12px}
.lg-stein-form[hidden]{display:none}
.lg-stein-form label{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:700;min-width:0}
.lg-breit{grid-column:1/-1}
.lg-stein-knoepfe{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.lg-gruppe{display:flex;flex-direction:column}
.lg-kopf{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;padding:6px 0;border-bottom:2px solid var(--line)}
.lg-kopf span{color:var(--muted);font-size:13px;font-weight:700}
.lg-zeile{display:grid;grid-template-columns:56px minmax(0,1fr) auto 90px;gap:12px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}
.lg-zeile.unklar{background:#fff8ea}
.lg-foto{display:block;width:56px;height:56px;border-radius:6px;object-fit:cover;background:#e2e5dc}
.lg-text{display:flex;flex-direction:column;gap:3px;min-width:0}
.lg-text input{min-width:0;padding:7px;font:inherit;font-size:14px;border:1px solid #cbd0c8;border-radius:4px}
.lg-verbraucht{display:flex;gap:4px;flex-wrap:wrap;font-size:13px;font-weight:700}
.lg-wert{text-align:right;font-weight:800;font-variant-numeric:tabular-nums}
@media(max-width:700px){.lg-zeile{grid-template-columns:56px 1fr}.lg-verbraucht,.lg-wert{grid-column:2}}
/* REV122: Posteingang info@ */
.pe-kopf{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:12px}
.pe-kopf h2{font:700 26px Georgia,serif;margin:2px 0 0}
.pe-kopf .eyebrow{margin:0}
.pe-hinweis{margin-left:auto;font-size:13px}
.pe-schalter{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 14px;margin-bottom:12px;border:1px solid var(--line);border-radius:8px;background:var(--card);font-size:14px}
.pe-schalter[hidden],.pe-meldung[hidden]{display:none!important}
.pe-meldung{margin:0 0 10px;padding:8px 12px;border-radius:6px;background:#e8f2e6;color:#14693C;font-weight:700}
.pe-meldung.error{background:#fbeceb;color:var(--danger)}
.pe-raster{display:grid;grid-template-columns:minmax(260px,360px) minmax(0,1fr);gap:14px;align-items:start}
.pe-liste{background:var(--card);border:1px solid var(--line);border-radius:8px;overflow:hidden}
.pe-gruppe{border-bottom:1px solid #ebede7}
.pe-gruppe-kopf{display:flex;justify-content:space-between;padding:10px 14px 6px;font-size:11px;font-weight:800;letter-spacing:.08em;color:#4b544e}
.pe-gruppe-kopf.pe-blau{color:#24497a}.pe-gruppe-kopf.pe-gruen{color:#14693C}.pe-gruppe-kopf.pe-leise{color:#8a908b}
.pe-mail{display:flex!important;flex-direction:column;gap:2px;width:100%;text-align:left!important;border:0!important;background:transparent!important;color:var(--ink)!important;padding:8px 14px 10px!important;border-radius:0!important;font-weight:400!important;cursor:pointer}
.pe-mail.aktiv{background:#e6eef8!important}
.pe-mail-oben{display:flex;gap:8px}.pe-mail-oben small{margin-left:auto;color:var(--muted)}
.pe-betreff{font-size:13px;color:#4b544e;overflow-wrap:anywhere}
.pe-leer{margin:0;padding:0 14px 10px;font-size:12px}
.pe-detail{display:flex;flex-direction:column;gap:12px;min-width:0}
.pe-karte{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:16px 18px;display:flex;flex-direction:column;gap:8px;min-width:0}
.pe-karte h3{margin:0;font-size:18px}
.pe-marken{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pe-marken select{font:inherit;font-size:13px;font-weight:700;padding:6px 8px;border:1px solid #b9cbe4;border-radius:999px;background:#e6eef8;color:#24497a}
.pe-marke{font-size:12px;font-weight:800;padding:4px 10px;border-radius:999px;background:#f3f0e7}
.pe-marke.pe-gruen{background:#e8f2e6;color:#14693C}
.pe-marken small{margin-left:auto}
.pe-text{white-space:pre-wrap;font-size:14px;line-height:1.55;color:#33403a;max-height:360px;overflow:auto;overflow-wrap:anywhere}
.pe-hinweise{display:flex;gap:6px;flex-wrap:wrap}
.pe-hinweise span{font-size:13px;padding:5px 9px;border-radius:6px;background:#f3f0e7}
.pe-klein-titel{font-size:12px;letter-spacing:.06em;color:var(--muted)}
.pe-chips{display:flex;gap:6px;flex-wrap:wrap}
.pe-antwort textarea{font:inherit;font-size:14px;line-height:1.55;padding:12px;border:1px solid #cbd0c8;border-radius:6px;min-width:0;width:100%;resize:vertical}
.pe-knoepfe{display:flex;gap:8px;flex-wrap:wrap}
.pe-knoepfe .pe-rechts{margin-left:auto}
.pe-bausteine-panel{margin-top:16px}
.pe-bausteine-panel summary{cursor:pointer;font:700 18px Georgia,serif}
.pe-bausteine{display:flex;flex-direction:column;gap:10px;margin:10px 0}
.panel form.pe-baustein-form,.pe-baustein-form{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:8px;padding:10px 0;border-top:1px solid var(--line);margin:0;align-items:start}
.pe-baustein-form.aus{opacity:.55}
.pe-baustein-form label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:700;color:var(--muted);min-width:0}
.pe-baustein-form input,.pe-baustein-form textarea{min-width:0;width:100%;font:inherit;font-size:14px;padding:8px;border:1px solid #cbd0c8;border-radius:4px}
.pe-baustein-form .pe-breit{grid-column:2}
.pe-bs-kat{grid-column:1/-1;display:flex;gap:12px;flex-wrap:wrap}
.pe-bs-kat label{flex-direction:row;align-items:center;gap:6px;color:var(--ink)}
.pe-bs-kat input{width:16px;height:16px;flex:none}
@media(max-width:900px){.pe-raster{grid-template-columns:1fr}.pe-baustein-form{grid-template-columns:1fr}.pe-baustein-form .pe-breit{grid-column:1}}
/* REV126: Suche in den Arbeitsanweisungen */
.anw-suche{display:flex;flex-direction:column;gap:4px;margin:12px 0 6px;font-size:13px;font-weight:700;max-width:520px}
.anw-suche input{min-height:44px}
/* REV127: Kundenformular aufgeklappt unter der Zeile */
#kd-panel.kd-inline{margin:4px 0 12px;border:2px solid #14693C;box-shadow:0 4px 16px #0000001a}
/* REV128: 5 Vorschlaege unter einem Feld (Kunde an der Baustelle) */
.vs-wrap{position:relative}
.vs-box{position:absolute;left:0;right:0;top:100%;z-index:30;margin-top:2px;background:#fffdf8;border:1px solid #cbd0c8;border-radius:6px;box-shadow:0 8px 24px #0000002a;display:flex;flex-direction:column;overflow:hidden}
.vs-box{min-width:min(340px,90vw);right:auto}
.vs-wrap .vs-box button.vs-eintrag{display:flex;flex-direction:column;align-items:flex-start;gap:1px;width:100%;margin:0;text-align:left;padding:8px 12px;min-height:44px;border:0;border-radius:0;border-bottom:1px solid #ebede7;background:#fffdf8;color:#17241d;font:600 14px/1.3 system-ui,-apple-system,'Segoe UI',sans-serif;box-shadow:none;cursor:pointer}
.vs-wrap .vs-box button.vs-eintrag:last-child{border-bottom:0}
.vs-wrap .vs-box button.vs-eintrag:hover,.vs-wrap .vs-box button.vs-eintrag.aktiv{background:#e8f2e6}
.vs-wrap .vs-box button.vs-eintrag small{color:#5d675f;font-weight:400;font-size:12px}
/* REV128: Ansprechpartner beim Kunden */
.kd-kontakte{display:flex;flex-direction:column;gap:8px;margin-top:14px;padding-top:12px;border-top:1px solid var(--line,#dfe2d8)}
.kd-kontakte[hidden]{display:none}
.kd-kontakte h4{margin:0;font-size:15px}
.kd-kontakt-liste{display:flex;flex-direction:column;gap:8px}
.kd-kontakt{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;padding:10px;border:1px solid #dfe2d8;border-radius:6px;align-items:end}
.kd-kontakt label{display:flex;flex-direction:column;gap:3px;font-size:12px;font-weight:700;min-width:0}
.kd-kontakt .kd-kontakt-haken{flex-direction:row;align-items:center;gap:6px;font-weight:600}
.kd-kontakt-knoepfe{grid-column:1/-1;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.kd-kontakt.ausgemustert{opacity:.55}


/* REV130: Wegweiser im Chat - Knopf "Dorthin" */
.bubble .chat-dorthin{display:inline-flex;align-items:center;margin-top:6px;min-height:40px;padding:0 14px;border-radius:8px;border:0;background:#14693C;color:#fff;font:inherit;font-weight:700;cursor:pointer}

/* REV132: Benutzer - Rolle waehlbar, gesperrte unten und grau */
.benutzer-kopf .benutzer-rolle{font:inherit;font-size:13px;padding:5px 8px;border:1px solid #cbd0c8;border-radius:6px;background:#fff}
.benutzer-zeile.benutzer-aus{opacity:.65}
.benutzer-gesperrte{margin-top:14px;border-top:1px solid var(--line);padding-top:10px}
.benutzer-gesperrte summary{cursor:pointer;font-weight:700}

/* REV133: Rechnungen schreiben */
.ag-hinweis{background:#fff4df;border:1px solid #f0d9a8;border-radius:6px;padding:8px 12px;color:#6e4a0e;font-weight:700}
.ag-kennzahlen{display:flex;flex-wrap:wrap;gap:18px;margin:12px 0;font-size:14px;color:var(--muted)}
.ag-kennzahlen b{color:var(--ink);margin-left:6px}
.ag-filter{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 12px}
.panel .ag-filter .ag-reiter{background:#fffdf8;color:var(--ink);border:1px solid #cbd0c8;padding:8px 14px;font-weight:700}
.panel .ag-filter .ag-reiter.aktiv{background:var(--ink);color:#fff}
.ag-neu-block{margin:8px 0 12px}
.ag-neu-block summary{cursor:pointer;font-weight:800}
.panel form.ag-neu{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;align-items:end}
.ag-neu select,.ag-feld select{font:inherit;padding:10px;border:1px solid #cbd0c8;border-radius:4px;background:#fff}
.ag-liste{display:flex;flex-direction:column;margin-top:8px}
.ag-zeile{display:grid;grid-template-columns:120px 130px minmax(0,1.6fr) 90px 90px 110px 110px minmax(0,1fr);gap:10px;align-items:center;text-align:left;padding:10px 6px;border:0;border-top:1px solid var(--line);background:transparent;color:var(--ink);font:inherit;font-size:14px}
.panel button.ag-zeile{background:transparent;color:var(--ink);padding:10px 6px;border-radius:0;font-weight:400}
.panel button.ag-zeile:hover{background:#f3f6ef}
.ag-kopfzeile{font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.ag-zeile.ag-entwurf{color:var(--muted)}
.ag-zeile.ag-ueber .ag-stand{color:var(--danger);font-weight:700}
.ag-geld{text-align:right;font-variant-numeric:tabular-nums}
.ag-ed-kopf{display:flex;align-items:center;justify-content:space-between;gap:10px}
.ag-ed-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;margin:12px 0}
.ag-feld{display:flex;flex-direction:column;gap:4px}
.ag-feld input,.ag-feld textarea{min-width:0}
.ag-haken{display:flex;flex-direction:row;align-items:center;gap:8px;font-weight:600}
.ag-pos{display:flex;flex-direction:column;gap:4px;overflow-x:auto}
.ag-pos-zeile{display:grid;grid-template-columns:70px minmax(220px,1fr) 80px 70px 90px 110px 36px;gap:6px;align-items:start;min-width:720px}
.ag-pos-zeile.ag-bereich .ag-p-text{font-weight:800}
.ag-pos-zeile input,.ag-pos-zeile textarea{padding:7px 8px;font-size:13px;min-width:0}
.ag-pos-zeile .ag-haken{grid-column:2 / -1;font-size:12px}
.ag-pos-kopf{font-size:11px;font-weight:800;color:var(--muted);text-transform:uppercase}
.panel button.ag-p-weg{background:transparent;color:var(--muted);border:1px solid #cbd0c8;padding:6px;font-weight:700}
.ag-knoepfe{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}
.ag-summen{margin:12px 0 0 auto;max-width:360px;display:flex;flex-direction:column;gap:4px}
.ag-sum{display:flex;justify-content:space-between;gap:12px;font-variant-numeric:tabular-nums}
.ag-sum.fett{font-weight:800;border-top:1px solid var(--line);padding-top:4px}
.ag-fehlt{background:#fdf1ef;border:1px solid #f0d5d0;border-radius:6px;padding:8px 12px;color:#7a2d22}
.panel button.ag-stellen{background:var(--green)}
.ag-zahlungen{display:flex;flex-direction:column;gap:4px}
.panel form.ag-zahlung{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px;align-items:end}
@media(max-width:700px){.ag-zeile{grid-template-columns:1fr 1fr;}.ag-kopfzeile{display:none}}
.ag-haken input,.panel .ag-haken input{flex:0 0 auto;min-width:0;width:20px;height:20px;padding:0}
.ag-ed-grid .ag-haken{grid-column:span 2}
.panel form.ag-neu input,.panel form.ag-neu select,.panel form.ag-zahlung input{min-width:0;width:100%;box-sizing:border-box}

/* REV136: Baustellenfotos und "Aufs Display" */
.site-fotos{margin-top:10px;padding-top:10px;border-top:1px solid var(--line,#dcdfd5);display:flex;flex-direction:column;gap:8px}
.site-fotos-auf{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.panel .site-fotos-auf input.site-foto-notiz,.site-fotos-auf input.site-foto-notiz{flex:1 1 160px;min-width:0}
.site-foto-knopf{position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 14px;border-radius:10px;background:#14693C;color:#fff;font-weight:600;cursor:pointer}
.site-foto-knopf input{position:absolute;inset:0;opacity:0;cursor:pointer;min-width:0;width:100%;height:100%}
.site-fotos-raster{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.panel .site-foto,.site-foto{position:relative;padding:0;border:2px solid transparent;border-radius:8px;overflow:hidden;background:#e4e7df;aspect-ratio:1;cursor:pointer;min-width:0}
.site-foto img{width:100%;height:100%;object-fit:cover;display:block}
.panel .site-foto.aktiv,.site-foto.aktiv{border-color:#14693C}
.site-foto-notizzeile{position:absolute;left:0;right:0;bottom:0;padding:2px 4px;font-size:11px;background:#0f2a1ccc;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.site-foto-aktion{display:flex;flex-direction:column;gap:6px}
.site-foto-aktion[hidden]{display:none}
.site-foto-gross{display:inline-flex;align-items:center;text-decoration:none}
.live-form{display:flex;flex-direction:column;gap:8px;padding:10px;border-radius:10px;background:#f1f3ec}
.live-feld{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:600}
.panel .live-feld input,.live-feld input,.live-feld textarea{min-width:0;width:100%;box-sizing:border-box}
.live-label{font-size:13px;font-weight:600}
.live-dauer{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.panel .live-dauer-knopf,.live-dauer-knopf{min-height:44px;border-radius:8px;border:1px solid #b9c2b6;background:#fff;color:#17241d;font-weight:600;font-size:13px}
.panel .live-dauer-knopf.aktiv,.live-dauer-knopf.aktiv{border:2px solid #14693C;background:#e3efe6}
.live-kunde{display:flex;gap:8px;align-items:flex-start;font-size:13px}
.panel .live-kunde input,.live-kunde input{min-width:0;width:20px;height:20px;flex:0 0 20px}
.tafel-live-status{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:8px 0}
.tafel-live-status[hidden]{display:none}
.tafel-live-an{background:#c62e17;color:#fff;padding:2px 8px;border-radius:6px;letter-spacing:.1em}
@media (max-width:480px){.live-dauer{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* REV137: KI-Bild und Fotowahl */
.tafel-kibild{display:flex;flex-direction:column;gap:8px;margin-top:8px;padding:10px;border-radius:8px;background:#f1f3ec}
.tafel-kibild-reihe{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.panel .tafel-kibild-bild,.tafel-kibild-bild{padding:0;border:2px solid transparent;border-radius:8px;overflow:hidden;background:#e4e7df;cursor:pointer}
.panel .tafel-kibild-bild:hover,.tafel-kibild-bild:hover{border-color:#14693C}
.tafel-kibild-bild img{width:100%;display:block}
.tafel-fotowahl-titel{grid-column:1/-1;margin:6px 0 2px;font-weight:700}

/* REV141: Einheit zur Auswahl, Rabatt in der Position */
.rp-einheit{display:flex;gap:4px;min-width:0}
.rp-einheit select{flex:1 1 auto;min-width:0}
.panel .rp-einheit input,.rp-einheit input{flex:1 1 auto;min-width:0;width:100%}
.rp-einheit input[hidden]{display:none}

/* REV142: Rabatt in Prozent oder Euro; Rabattzeile einer Position zuordnen */
.rp-rabatt{display:flex;gap:4px;min-width:0}
.panel .rp-rabatt input,.rp-rabatt input{flex:1 1 60px;min-width:0;width:100%}
.rp-rabatt select{flex:0 0 auto;min-width:0}
.rp-rabatt-zu{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;font-size:13px}
.rp-rabatt-zu select{min-width:0;max-width:100%}

/* REV143: Suche in "Stellen und Adressen" */
.touren-suche{display:flex;flex-direction:column;gap:4px;margin-top:12px;max-width:520px}
.panel .touren-suche input{min-width:0;width:100%}

/* REV144: Lieferant dieser Rechnung aendern */
.rp-lieferant-form{display:flex;flex-wrap:wrap;align-items:end;gap:8px;margin:8px 0 12px;padding:10px;border-radius:8px;background:#f1f3ec}
.rp-lieferant-form[hidden]{display:none}
.rp-lieferant-form label{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:700;flex:1 1 260px;min-width:0}
.panel .rp-lieferant-form input,.rp-lieferant-form input{min-width:0;width:100%}
/* REV145 - Rechnungen eines Haendler-Eintrags auf einen Blick */
.touren-rblick{display:flex;flex-direction:column;gap:8px;margin:0 0 10px;padding:12px 14px;border:1px solid var(--line,#dcdfd5);border-radius:8px;background:#fff}
.touren-rblick-kopf{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.touren-rblick-kopf p{margin:0}
.touren-rblick-liste{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;max-height:420px;overflow-y:auto}
.touren-rblick-liste li{padding:6px 0;border-top:1px solid #ecede6;min-width:0}
.touren-rblick-liste p{margin:2px 0 0;overflow-wrap:anywhere}
.touren-rblick-zeile{display:flex;flex-wrap:wrap;gap:4px 14px;align-items:baseline;font-size:14px}
.touren-rblick-treffer{color:#14693C;font-weight:600}
/* REV146 - Rabatt-Feld: die Auswahl (%, EUR) nimmt sich nur ihre Breite,
   die Zahl bekommt den Rest. Vorher machte ".rp-form select{width:100%}"
   die Auswahl so breit, dass das Eingabefeld auf null schrumpfte. */
.rp-form .rp-rabatt{display:flex;gap:4px;min-width:0}
.rp-form .rp-rabatt input{flex:1 1 auto;min-width:3.5em;width:auto}
.rp-form .rp-rabatt select{flex:0 0 auto;width:auto;max-width:7.5em;padding:0 4px;font-size:13px}
.rp-netto-aendern{align-self:flex-start;margin:-4px 0 4px}
/* REV147 - nach Beispielen weiterlesen */
.rp-muster-knopf{border-color:var(--green)!important}
.rp-muster{display:flex;flex-direction:column;gap:8px;padding:12px 14px;background:var(--card);border:1px solid var(--green);border-radius:8px}
.rp-muster-kopf{margin:0;font-weight:700}
.rp-muster-liste{display:flex;flex-direction:column;max-height:460px;overflow-y:auto;border-top:1px solid var(--line)}
.rp-muster-zeile{display:grid!important;grid-template-columns:auto 7.5em minmax(0,1fr) auto;gap:10px;align-items:baseline;padding:6px 0;border-bottom:1px solid #ecede6;font-size:13px!important;font-weight:400!important;color:var(--ink)!important;cursor:pointer}
.rp-muster-zeile input{min-width:0;width:auto;padding:0}
.rp-muster-was{min-width:0;overflow-wrap:anywhere}
.rp-muster-ls{font-variant-numeric:tabular-nums;color:var(--muted)}
.rp-muster-pruefen{background:#fff8e6}
.rp-muster-hinweis{color:#8a4b00;font-weight:600}
.rp-tag.rp-ls{background:#e3efe6;color:#14693C}
/* REV148 - Nebenkosten mit Stueckzahl (Paletten) */
.panel form.rp-form[data-rp-form="nebenkosten"],.rp-form[data-rp-form="nebenkosten"]{grid-template-columns:minmax(0,2fr) minmax(0,1.4fr) minmax(0,.7fr) minmax(0,.9fr) minmax(0,1fr)}
@media (max-width:760px){.panel form.rp-form[data-rp-form="nebenkosten"],.rp-form[data-rp-form="nebenkosten"]{grid-template-columns:1fr 1fr}}
/* REV149 - Preispruefung liess sich nicht mehr scrollen (Screenshot 12.10.):
   ".app{height:100dvh;overflow:hidden}" am Desktop heisst, jede Ansicht
   scrollt selbst - "#view-price-review{overflow:visible}" schnitt den Rest
   einfach ab. */
#view-price-review{overflow:auto}
/* REV149 - Absenderzeile unter dem Titel */
.rp-briefkopf{margin:2px 0 0;overflow-wrap:anywhere}
.rp-briefkopf-ab{color:#8a4b00}
.rp-zu-viel{margin:0 0 8px;padding:10px 12px;border-left:4px solid #c98a2b;background:#fff8e6;color:#5c3a00;font-size:14px}
/* REV152 - Aushang: Baustellen untereinander in einer Spalte, Zeile darf umbrechen */
@media print{
  .dpa-tabelle td{white-space:pre-line;line-height:1.15}
  .dpa-tabelle td:last-child{width:45%}
}
/* REV153 - Angebotsaufnahme und Nummer */
.panel button.anw-marke.aktiv.anw-leistung{background:#14693C;color:#fff;border-color:#14693C}
.panel button.anw-marke.aktiv.anw-menge{background:#1c4d9e;color:#fff;border-color:#1c4d9e}
.panel button.anw-marke.aktiv.anw-material{background:#c77700;color:#fff;border-color:#c77700}
.anw-nummer-marke{padding:2px 8px;border:1px solid var(--line);border-radius:4px;font:700 12px/1.4 Inter,sans-serif;
  letter-spacing:.04em;color:var(--ink);background:#f2f6ef;font-variant-numeric:tabular-nums;white-space:nowrap}
.anw-nummer{margin:0 0 10px;font:800 15px Inter,sans-serif;letter-spacing:.03em;color:var(--green)}
.panel button.anw-geschrieben,.maschine-aktionen button.anw-geschrieben{background:#14693C;color:#fff;border-color:#14693C}
.maschine-aktionen button.anw-geschrieben{white-space:normal;max-width:100%;text-align:left}
/* REV156 - Routenplanung */
.dp-zeile{grid-template-columns:44px 34px repeat(3,minmax(104px,1.2fr)) repeat(2,minmax(92px,1fr)) repeat(3,minmax(100px,1fr)) 62px}
.dp-zeilenende{display:flex;align-items:center;gap:4px;justify-content:flex-end}
.rt-lkw{position:relative;border:0;background:none;font-size:19px;line-height:1;padding:4px;cursor:pointer;opacity:.38;filter:grayscale(1)}
.rt-lkw.da{opacity:1;filter:none}
.rt-lkw.da::after{content:attr(data-zahl);position:absolute;right:-4px;top:-4px;background:#c77700;color:#fff;font:800 10px/1 Inter,sans-serif;border-radius:9px;padding:2px 5px}
.rt-lkw.frei::after{background:#14693C}
.rt-lkw:hover,.rt-lkw:focus-visible{opacity:1}
.rt-unten{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:10px 0 4px;font-weight:700;font-size:13px}
.rt-unten select{padding:6px 8px;border:1px solid #cbd0c8;border-radius:4px;font:inherit;max-width:100%}
.rt-unten[hidden],.rt-fenster[hidden],.rt-wahlbox[hidden],#rt-ganz[hidden]{display:none!important}
.rt-fenster{position:fixed;inset:0;z-index:60;background:#17241d73;display:flex;justify-content:center;align-items:flex-start;overflow:auto;padding:24px 12px}
body.rt-offen{overflow:hidden}
.rt-karte{background:var(--card);border-radius:8px;box-shadow:0 20px 60px #0004;width:min(920px,100%);padding:20px 22px}
.rt-kopf{display:flex;gap:12px;align-items:flex-start;flex-wrap:wrap}
.rt-kopf>div{flex:1;min-width:200px}.rt-kopf h3{margin:0;font:700 22px Georgia,serif}.rt-kopf p{margin:4px 0 0;font-size:13px}
.rt-status{background:#fdf0dc;color:#8a4b00;border-radius:999px;padding:4px 11px;font-weight:800;font-size:12px}
.rt-status.frei{background:#e3efde;color:#235f3f}
.rt-plan{margin:10px 0 4px;font-size:13px;color:var(--ink);font-weight:700}
.rt-liste{margin-top:8px}
.rt-zeile{display:grid;grid-template-columns:34px minmax(0,1fr) 112px 78px 170px;gap:10px;align-items:center;padding:9px 0;border-top:1px solid var(--line)}
.rt-nr{width:28px;height:28px;border-radius:50%;background:#14693C;color:#fff;display:grid;place-items:center;font-weight:800;font-size:13px}
.rt-nr-ende{background:#17241d}
.rt-ort{display:flex;flex-direction:column;min-width:0}.rt-ort b{overflow-wrap:anywhere}.rt-ort small{color:var(--muted);font-size:12px;overflow-wrap:anywhere}
.panel .rt-ort-knopf,.rt-karte .rt-ort-knopf{background:none;border:0;color:var(--ink);text-align:left;padding:0;font:inherit;cursor:pointer}
.rt-tun{padding:6px 8px;border-radius:999px;border:1px solid #cbd0c8;font:700 13px Inter,sans-serif}
.rt-tun.laden{background:#e3efde;color:#235f3f;border-color:#b8d4b0}.rt-tun.abladen{background:#fdf0dc;color:#8a4b00;border-color:#efd3a5}
.rt-pfeile{display:flex;gap:4px}.rt-karte .rt-pfeile button{padding:6px 9px}
.rt-adresse{font-size:12px}.rt-ok{color:#235f3f}
.rt-karte .rt-warn-knopf{background:none;border:0;color:#a63b31;font-weight:800;font-size:12px;padding:0;text-align:left;cursor:pointer;text-decoration:underline}
.rt-details{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 10px 44px;padding:12px;background:#f2f6ef;border-radius:6px}
.rt-details label{font-size:12px}.rt-details input{padding:8px 10px;font-size:14px;min-width:0}
.rt-ladung,.rt-dateien,.rt-detail-knoepfe{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.rt-haken{display:inline-flex;gap:6px;align-items:center;font-weight:700;font-size:13px}
.rt-datei{border:1px solid #cbd0c8;background:#fff;border-radius:4px;padding:7px 11px;font-size:13px;font-weight:700;color:var(--ink);text-decoration:none;cursor:pointer}
.rt-datei.neu{color:#14693C;border-style:dashed}.rt-datei.neu input{display:none}
.rt-klein{font-size:12px;color:var(--muted)}
.rt-wahlbox{margin:10px 0;padding:12px;border:1px solid #14693C;border-radius:6px;display:grid;gap:8px;background:#fff}
.rt-treffer{display:grid;gap:4px;max-height:280px;overflow:auto}
.rt-karte .rt-treffer-knopf{display:flex;flex-direction:column;align-items:flex-start;background:#f7f8f4;border:1px solid var(--line);color:var(--ink);padding:8px 10px;border-radius:4px;text-align:left;font-weight:400}
.rt-treffer-knopf small{color:var(--muted)}
.rt-hinweis{margin:12px 0 0;padding:10px 12px;background:#f2f6ef;border-left:4px solid #14693C;font-size:13px}
.rt-knoepfe{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.rt-karte button{border:0;background:var(--ink);color:#fff;padding:11px 15px;border-radius:4px;font-weight:800;cursor:pointer}
.rt-karte button.secondary,.rt-karte .button-like.secondary{background:#fff;color:var(--ink);border:1px solid #cbd0c8}
.rt-karte #rt-freigeben:not(.secondary){background:#14693C}
.rt-karte .button-like{display:inline-flex;align-items:center;padding:10px 14px;border-radius:4px;text-decoration:none;font-weight:800}
.rt-meldung{min-height:1.2em;font-size:13px;margin:8px 0 0}.rt-meldung.fehler{color:var(--danger)}
/* REV183 - Geraet am Kran (Greifer ...) */
.rt-tun-feld{display:grid;gap:5px;min-width:0}
.rt-tun-feld .rt-tun{width:100%}
.rt-zeile input.rt-geraet{width:100%;min-width:0;padding:4px 9px;border-radius:999px;font:600 12px Inter,sans-serif;border:1px dashed #cbd0c8;background:#fff}
.rt-zeile input.rt-geraet.gesetzt{border-style:solid;border-color:#9fb6d6;background:#e8eef7;color:#1f3f6b}
.rt-montieren{display:block;margin-top:6px;font-weight:700;color:#1f3f6b}
.rt-geraet-warn{display:block;color:var(--danger);font-weight:600}
.fuhrpark-geraete input{min-width:220px}
@media (max-width:700px){
  .rt-zeile{grid-template-columns:30px minmax(0,1fr) 96px;row-gap:6px}
  .rt-pfeile,.rt-adresse{grid-column:2/-1}
  .rt-details{grid-template-columns:1fr;margin-left:0}
}
.rt-karte a#rt-ganz{color:var(--ink)!important;background:#fff!important;border:1px solid #cbd0c8;font-size:14px}
/* REV157 - Pflanzenkunde */
.pf-werkzeug{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.pf-zahl{display:flex;gap:6px;align-items:center;font-size:13px}
.pf-suche{min-width:180px;flex:1}
.pf-liste{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px;margin-top:12px}
.pf-karte{border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--card);display:flex;flex-direction:column}
.pf-karte.aus{opacity:.5}.pf-karte.heute{border-color:#14693C;box-shadow:0 0 0 2px #14693C33}
.pf-bild{aspect-ratio:4/3;max-width:100%;background:#eef0ec;display:grid;place-items:center}
.pf-bild img{width:100%;height:100%;object-fit:cover}
.pf-text{padding:10px 12px;display:grid;gap:3px;min-width:0}
.pf-text i{color:var(--muted);font-size:13px}.pf-text small{font-size:12px;color:var(--muted);overflow-wrap:anywhere}
.pf-knoepfe{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
/* REV158 - Mitarbeiter: nach Vorname sortiert, zum Aufklappen */
.ma-klappe{border:1px solid var(--line);border-left:3px solid var(--green);border-radius:6px;background:var(--card);margin-bottom:6px}
.ma-klappe.ausgemustert{border-left-color:#b9bfb7;opacity:.75}
.ma-klappe-kopf{display:flex;gap:12px;align-items:baseline;padding:11px 14px;cursor:pointer;list-style:none;font-size:15px}
.ma-klappe-kopf::-webkit-details-marker{display:none}
.ma-klappe-kopf::before{content:"▸";color:var(--green);font-weight:800}
.ma-klappe[open]>.ma-klappe-kopf::before{content:"▾"}
.ma-klappe-kopf .muted{font-size:13px}
.ma-klappe>.maschine-zeile{border:0;border-top:1px solid var(--line);border-radius:0;margin:0}

/* REV158: Dienstplan - Baustelle verknuepft (Haken) oder mehrdeutig */
.panel input.dp-bs.bekannt{padding-left:24px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 8.5l3 3 7-7' fill='none' stroke='%2314693C' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:7px center;background-size:13px}
.panel input.dp-bs.mehrdeutig{border-color:#e0b25a;background:#fff8e6}
@media print{.panel input.dp-bs.bekannt{background-image:none;padding-left:9px}}
/* REV158: Mitarbeiter - Unterlagen, Lohnentwicklung */
.ma-klappe-zahl{margin-left:auto;font-size:13px;color:var(--muted)}
.ma-entwicklung{margin-top:10px;max-width:560px}
.ma-entwicklung h4{margin:0 0 6px;font-size:13px}
.ma-tabelle-rahmen{overflow-x:auto}
.ma-entw-tabelle{border-collapse:collapse;width:100%;font-size:13px}
.ma-entw-tabelle th{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em;text-align:left;padding:5px 8px;border-bottom:1px solid var(--line)}
.ma-entw-tabelle td{padding:5px 8px;border-bottom:1px solid var(--line)}
.ma-entw-tabelle td.zahl{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.ma-entw-tabelle td.ma-plus{color:#235f3f;font-weight:700}
.ma-entw-tabelle tfoot td{font-weight:700;border-bottom:0}
.ma-entw-tabelle tr.ma-lange-ohne td:last-child{color:#8a4b00;font-weight:700}
.ma-entw-linie{display:block;width:100%;max-width:420px;height:70px;margin-top:6px}
.ma-entw-strich{stroke:var(--green);stroke-width:2.5}
.ma-entw-punkt{fill:var(--green)}
.ma-dok-liste{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
.ma-dok{display:flex;flex-direction:column;gap:3px;border:1px solid var(--line);border-radius:5px;padding:7px 10px;background:var(--card);font-size:13px;max-width:280px}
.ma-dok a{font-weight:700;color:inherit;text-decoration:none;overflow-wrap:anywhere}
.ma-dok small{color:var(--muted)}
.ma-dok.krank{border-color:#e7b6b0;background:#fdf3f2}
.ma-dok.archiviert{opacity:.6}
.ma-dok .eigen-klein{align-self:flex-start}
.ma-dok-form label[hidden]{display:none}
.ma-lohnuebersicht summary{cursor:pointer}
.ma-lohn-tabelle{margin-top:10px}
.ma-dok-liste button.eigen-klein{background:transparent;color:var(--ink);border:1px solid var(--line);padding:5px 10px;font-size:12px;font-weight:700}

/* REV159: Minijob-Verfuegbarkeit im Dienstplan */
.dp-chip.dp-kann-nicht{opacity:.5;border-style:dashed}
.dp-chip small.dp-vf{color:#235f3f;font-weight:800}
.dp-chip.dp-kann-nicht small.dp-vf{color:var(--danger)}
/* REV159: Zeiten und Board */
.zt-leiste{align-items:center}
.zt-code{font-size:22px;letter-spacing:.18em;font-variant-numeric:tabular-nums;color:var(--green)}
.zt-tabelle,.zt-monate{display:grid;min-width:640px}
.ul-raster-panel:has(.zt-tabelle){overflow-x:auto}
.zt-zeile{display:grid;grid-template-columns:minmax(150px,1.4fr) repeat(5,minmax(52px,.5fr)) minmax(160px,2fr);gap:8px;align-items:center;padding:8px 10px;border:0;border-bottom:1px solid var(--line);background:transparent;color:inherit;text-align:left;font:inherit;font-size:13px}
button.zt-zeile{cursor:pointer}
button.zt-zeile:hover{background:#f2f6ef}
.zt-zeile span{min-width:0}
.zt-zeile small{display:block}
.zt-zeile .r{text-align:right;font-variant-numeric:tabular-nums}
.zt-kopf{color:var(--muted);font-size:11px;font-weight:800;letter-spacing:.06em}
.zt-zeile.warn .zt-hinweis,.zt-warn{color:#8a4b00;font-weight:700}
.zt-filter{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.zt-filter button{border:1px solid #cbd0c8;border-radius:999px;padding:5px 12px;font-size:12px;font-weight:700;background:#fff;color:var(--ink)}
.zt-filter button.aktiv{background:var(--green);border-color:var(--green);color:#fff}
.zt-board{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}
.zt-karte{display:grid;gap:8px;text-align:left;font:inherit;color:inherit;background:var(--card);border:1px solid var(--line);border-left:4px solid var(--green);border-radius:8px;padding:12px;cursor:pointer;min-width:0}
.zt-karte.warn{border-left-color:#c77700}
.zt-n{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.zt-n b{font-size:15px}.zt-n small{font-size:11px;color:var(--muted)}
.zt-werte{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.zt-werte span{background:#f2f6ef;border-radius:5px;padding:6px 7px;min-width:0}
.zt-werte small{display:block;font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.zt-werte b{font-size:16px;font-variant-numeric:tabular-nums}
.zt-balken{display:block;height:6px;background:#e6e9e1;border-radius:3px;overflow:hidden}
.zt-balken i{display:block;height:100%;width:var(--w,0%);background:var(--green)}
.zt-balken.mj i{background:#c77700}
.zt-zeile2{font-size:12px;color:var(--muted)}
.zt-karte .zt-warn{font-size:12px}
.zt-detail{margin-top:14px}
.zt-detail-kopf{display:flex;justify-content:space-between;align-items:center;gap:10px}
.zt-tage{display:grid;gap:6px;margin:10px 0}
.zt-tag{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:center;border:1px solid var(--line);border-radius:6px;padding:7px 10px;background:#fff;font-size:13px}
.zt-tag.warn{border-color:#e0b25a}
.zt-stempel{display:flex;flex-wrap:wrap;gap:4px}
.zt-st{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);border-radius:999px;padding:2px 8px;font-size:12px;background:#f7f8f4}
.zt-st.offen{border-color:#e0b25a;background:#fff8e6}
.zt-st.abgelehnt{text-decoration:line-through;opacity:.6}
.zt-st.ohne_code,.zt-st.buero,.zt-st.nachtrag{border-style:dashed}
.panel .zt-st button.zt-weg{background:transparent;color:var(--danger);padding:0 2px;font-weight:800}
.zt-korrektur{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:end;border-top:1px dashed var(--line);padding-top:10px}
.zt-korrektur strong{flex-basis:100%;font-size:13px}
.panel .zt-korrektur input{min-width:0;width:9em;padding:8px}
.panel .zt-korrektur .zt-breit input{width:22em;max-width:100%}
@media(max-width:700px){.panel .zt-korrektur .zt-breit input{width:100%}.zt-korrektur .zt-breit{flex-basis:100%}}
.panel button.zt-zeile{background:transparent;color:var(--ink);border-radius:0;padding:8px 10px;font-weight:400;border-bottom:1px solid var(--line)}
.panel button.zt-zeile:hover{background:#f2f6ef}

/* REV159: Fahrzeuge und Anhaenger nebeneinander - Anhaenger nur ein kleiner Block */
.dp-fz-reihe{display:flex;flex-wrap:wrap;gap:10px;max-width:1200px;margin:0 auto 10px}
.dp-fz-reihe>.panel{margin:0}
.dp-fz-reihe>.panel:first-child{flex:1 1 420px;min-width:0}
.dp-fz-reihe>.dp-an-block{flex:0 1 auto;max-width:100%}
.dp-fz-reihe>.dp-an-block[hidden]{display:none}
@media print{body.druck-dienstplan .dp-chip small.dp-vf{display:none!important}}

/* REV159: Route - am Hof laden */
.rt-start-laden{display:grid;gap:3px;margin-top:6px;font-size:12px;font-weight:700;color:var(--muted)}
.rt-start-laden input{min-width:0;width:100%;max-width:420px;padding:7px 9px;font-size:13px;font-weight:400}
.rt-frei-knopf{border-style:dashed!important}
.rt-frei-knopf b{color:var(--green)}

/* REV161: Anmeldung per QR */
.login-card .bs-start{margin-top:14px;width:100%;border:1px solid #cbd0c8;background:#fff;color:var(--ink);padding:12px;border-radius:4px;font-weight:800}
.bs-qr-block{margin-top:14px;text-align:center}
.bs-qr-block[hidden]{display:none}
.bs-qr-block .muted{text-align:left;font-size:13px}
.bs-qr svg{width:220px;height:220px;max-width:100%}
.bs-code{font-size:24px;font-weight:800;letter-spacing:.14em;margin:6px 0}
.bs-neu{border:0;background:var(--ink);color:#fff;padding:10px 14px;border-radius:4px;font-weight:800}
.aside-foot #bs-menue{border:0;background:none;color:#aeb7b1;padding:9px 0;display:block;text-align:left}
.bs-dialog{border:1px solid var(--line);border-radius:10px;padding:20px;max-width:min(420px,92vw);background:var(--card);color:var(--ink)}
.bs-dialog::backdrop{background:#17241d73}
.bs-dialog h3{font:700 20px Georgia,serif;margin:0 0 10px}
.bs-dialog [hidden]{display:none}
.bs-dialog label{display:grid;gap:6px}
#bs-d-code{font-size:20px;letter-spacing:.12em;text-transform:uppercase}
.bs-d-knoepfe{display:flex;gap:8px;flex-wrap:wrap}
.bs-d-knoepfe .eigen-haupt{flex:1;padding:14px}
.bs-d-liste{border-top:1px solid var(--line);margin-top:14px;padding-top:10px;font-size:13px}
.bs-d-zeile{display:flex;justify-content:space-between;gap:8px;align-items:center;padding:4px 0}
#bs-d-zu{margin-top:12px}
#login-form[hidden]{display:none}
.bs-neu[hidden],.bs-start[hidden]{display:none}
/* REV164: Tagesstart im Morgen-Check-up (Entwurf 13.10.2026) */
#view-checkup .ts-kopf,#view-checkup .ts-zwischen,#view-checkup .ts-kacheln,#view-checkup .ts-zwei,#view-checkup .ts-mehr{max-width:1180px;margin-left:auto;margin-right:auto}
.ts-kopf{display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap;background:var(--ink);color:#fff;border-radius:12px;padding:20px 24px}
.ts-kopf h2{font:700 30px Georgia,serif;margin:0}
.ts-zeile{margin:5px 0 0;color:#b9cdbf;font-size:14px}
.ts-wetter{display:flex;align-items:center;gap:14px}.ts-wetter[hidden]{display:none}
.ts-wetter>b{font-size:34px;font-variant-numeric:tabular-nums;color:var(--lime)}
.ts-wetter span{display:block;font-weight:700}.ts-wetter small{display:block;color:#b9cdbf;font-size:12px;margin-top:2px}
.ts-zwischen{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:11px;font-weight:800;letter-spacing:.12em;color:var(--muted);margin-top:18px;margin-bottom:8px}
.ts-legende{letter-spacing:.04em;font-weight:600}.ts-legende[hidden]{display:none}
.ts-kacheln{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.ts-kachel{display:grid;grid-template-columns:auto 1fr;gap:2px 12px;align-items:center;text-align:left;background:var(--card);color:var(--ink);border:1px solid var(--line);border-left:5px solid var(--green);border-radius:10px;padding:13px 14px;min-width:0;transition:transform .15s,box-shadow .15s}
.ts-kachel:hover,.ts-kachel:focus-visible{transform:translateY(-2px);box-shadow:0 8px 24px #15241c18}
.ts-kachel b{grid-row:span 2;font-size:28px;min-width:34px;text-align:center;font-variant-numeric:tabular-nums}
.ts-kachel span{font-weight:700;font-size:15px;min-width:0}
.ts-kachel small{color:var(--muted);font-size:12px;min-width:0}
.ts-kachel.rot{border-left-color:var(--danger);background:#fff8f6}.ts-kachel.rot b{color:var(--danger)}
.ts-kachel.gelb{border-left-color:#c77700}.ts-kachel.gelb b{color:#a35f00}
.ts-kachel.gruen b{color:var(--green)}
.ts-kachel.neutral{border-left-color:var(--ink)}
.ts-zwei{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:12px;margin-top:12px;align-items:start}
.ts-zwei .panel{max-width:none;margin:0;padding:18px}
.ts-zwei .eyebrow{margin-top:0}
.ts-zwei>.ts-eingang:only-child,.ts-zwei>.hidden+.ts-eingang{grid-column:1/-1}
.ts-eingang-raster{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:8px}
.ts-eingang .ts-eingang-raster .checkup-card{border:1px solid #e6e8e0;border-top:1px solid #e6e8e0;border-left:4px solid var(--green);border-radius:8px;padding:10px 12px;gap:3px;box-shadow:none;transform:none}
.ts-eingang .ts-eingang-raster .checkup-card.price_anomaly{border-left-color:#d88928}
.ts-eingang .ts-eingang-raster .checkup-card.needs_review{border-left-color:var(--danger)}
.ts-eingang .ts-eingang-raster .checkup-card.muell{border-left-color:#c7781a}
.ts-eingang .ts-eingang-raster .checkup-card:hover{border-color:var(--green)}
.ts-eingang .ts-eingang-raster .checkup-count{font-size:19px}
.ts-eingang .ts-eingang-raster .checkup-card>span{font-size:12px;font-weight:600;color:var(--muted)}
.ts-eingang .ts-eingang-raster .checkup-card small{font-size:11px;color:var(--muted)}
.ts-mehr{margin-top:12px;border:1px dashed #cfd4c8;border-radius:8px;padding:0 14px;background:transparent}
.ts-mehr[hidden]{display:none}
.ts-mehr>summary{cursor:pointer;padding:11px 0;font-size:14px;color:var(--muted);font-weight:700}
.ts-mehr[open]{padding-bottom:12px}
.ts-mehr .panel{max-width:none;margin:0}
@media(max-width:1000px){.ts-kacheln{grid-template-columns:repeat(2,minmax(0,1fr))}.ts-zwei{grid-template-columns:1fr}}
@media(max-width:560px){.ts-kacheln{grid-template-columns:1fr}.ts-eingang-raster{grid-template-columns:1fr}.ts-kopf h2{font-size:24px}}
/* REV164: Offene Leistungen */
.ol-leiste{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin:16px 0 12px}
.ol-filter{display:flex;gap:6px;flex-wrap:wrap}
.panel .ol-reiter{background:#ecece6;color:var(--ink);border-radius:999px;padding:6px 12px;font-size:13px;font-weight:700}
.panel .ol-reiter.aktiv{background:#e3efde;color:#235f3f}
.ol-reiter b{font-variant-numeric:tabular-nums;margin-left:3px}
.panel input#ol-suche{flex:0 1 300px;min-width:200px;padding:9px 12px}
.ol-tabelle-rahmen{overflow-x:auto;border:1px solid var(--line);border-radius:8px}
.ol-tabelle{border-collapse:collapse;width:100%;font-size:14px;background:#fff}
.ol-tabelle th,.ol-tabelle td{padding:9px 10px;border-bottom:1px solid #ecece6;text-align:left;white-space:nowrap}
.ol-tabelle th{position:sticky;top:0;background:#f6f4ec;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em;cursor:pointer;user-select:none}
.ol-tabelle th::after{content:attr(data-pfeil);margin-left:5px;color:#b8beb9}
.ol-tabelle th.ol-an{color:var(--green)}.ol-tabelle th.ol-an::after{color:var(--green)}
.ol-tabelle th:focus-visible,.ol-tabelle tbody tr:focus-visible{outline:2px solid var(--green);outline-offset:-2px}
.ol-tabelle .r{text-align:right;font-variant-numeric:tabular-nums}
.ol-tabelle tbody tr{cursor:pointer}.ol-tabelle tbody tr:hover{background:#f7f9f4}
.ol-tabelle td.ol-rot{color:var(--danger);font-weight:700}
.ol-tabelle tfoot td{font-weight:800;border-top:2px solid var(--ink);border-bottom:0;background:#fff}
.ol-hinweis{font-size:12px;color:var(--muted);margin:10px 0 0;line-height:1.5}
.ts-eingang .ts-eingang-raster .checkup-card>div:first-child{align-items:baseline}
.ts-eingang .ts-eingang-raster .checkup-card strong{font-size:14px;min-width:0;overflow-wrap:break-word;hyphens:auto}
.ts-eingang .ts-eingang-raster .checkup-card.leer{opacity:.55}
/* REV165: Rapporte beim Kunden */
.rk-panel .ol-tabelle td{vertical-align:middle}
.rk-chip{display:inline-block;border-radius:999px;padding:2px 9px;font-size:12px;font-weight:700;background:#ecece6;color:#5d675f}
.rk-chip.wartet{background:#fff1d6;color:#8a4b00}.rk-chip.alt,.rk-chip.rueckfrage{background:#fbe3e0;color:var(--danger)}
.rk-chip.bestaetigt{background:#e3efde;color:#235f3f}
.ol-tabelle tr.rk-detail{cursor:default;background:#f7f6f0}.ol-tabelle tr.rk-detail:hover{background:#f7f6f0}
.ol-tabelle tr.rk-detail td{white-space:normal}
.rk-detail-box{display:grid;gap:8px;padding:4px 2px}
.rk-verlauf{margin:0;font-size:13px;color:var(--muted)}.rk-verlauf.offen{color:var(--danger);font-weight:700}
.panel .rk-senden{display:flex;gap:8px;flex-wrap:wrap;margin:0}
.rk-senden select{font:inherit;padding:9px;border:1px solid #cbd0c8;border-radius:4px;background:#fff}
.panel .rk-senden input{flex:1 1 240px;min-width:200px;padding:9px 12px}
.rk-senden input[hidden]{display:none}
.rk-aktionen{display:flex;gap:8px;flex-wrap:wrap}
.panel .rk-aktionen button{padding:9px 13px}
.panel .rk-aktionen button.secondary{background:#fff;color:var(--ink);border:1px solid #cbd0c8}
/* REV166: Ueberbegriffe zum Aufklappen (Entwurf 13.10.2026: "ja so ist es gut") */
nav{gap:2px}
.nav-group{display:block;margin-bottom:2px;border-radius:6px}
.nav-group h2{margin:0;padding:0;font:inherit;letter-spacing:0;text-transform:none;color:inherit}
.nav-kopf{width:100%;display:flex;align-items:center;gap:10px;background:transparent;border:0;color:#e8ede9;text-align:left;padding:11px 10px;border-radius:6px;font-weight:800;font-size:15px;cursor:pointer}
.nav-kopf:hover,.nav-kopf:focus-visible{background:#ffffff12}
.nav-kopf i{font-style:normal;width:20px;text-align:center;color:var(--lime)}
.nav-kopf span{min-width:0}
.nav-kopf em{font-style:normal;margin-left:auto;color:#8f9a93;font-size:12px;transition:transform .15s}
.nav-gruppen-zahl{margin-left:auto;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:#d22f27;color:#fff;font-size:11px;font-weight:800;display:inline-grid;place-items:center}
.nav-gruppen-zahl[hidden]{display:none}
.nav-gruppen-zahl:not([hidden])+em{margin-left:8px}
.nav-unter{display:none;gap:1px;padding:0 0 8px 22px}
.nav-group.offen{background:#ffffff0d}
.nav-group.offen .nav-unter{display:grid}
.nav-group.offen .nav-kopf{color:#fff}
.nav-group.offen .nav-kopf em{transform:rotate(90deg)}
.nav-unter .nav{padding:9px 10px;font-size:14px}
.nav-group-fuss{margin-top:12px;border-top:1px solid #2b3b32;padding-top:8px}
.nav-group-fuss h2{display:block}
.nav-group-fuss .nav-kopf{font-size:13px;color:#aeb7b1}
/* REV168: Baustellen ziehen statt Pfeile, kleinere Kacheln (Entwurf 13.10.2026: "ja vorschau passt") */
.site-card{position:relative;padding:9px 10px;gap:3px}
.site-kopf .site-griff{margin-left:auto;flex:none;border:0;background:transparent;color:#9aa39c;font-size:17px;line-height:1;padding:2px 4px;border-radius:4px;cursor:grab;touch-action:none;user-select:none}
.site-kopf .site-tage+.site-griff{margin-left:4px}
.site-kopf .site-griff:hover,.site-kopf .site-griff:focus-visible,.site-kopf .site-griff[aria-expanded="true"]{color:var(--ink);background:#eef1ea}
.site-actions{gap:6px}
.site-actions .site-step{min-height:30px;padding:4px 9px}
.site-actions .site-edit-open{margin-left:0}
.site-actions .site-weg{margin-left:auto;padding:4px 8px}
.site-zieht{opacity:.35}
.site-geist{position:fixed;left:0;top:0;z-index:50;pointer-events:none;box-shadow:0 14px 30px #0003;margin:0;background:var(--card)}
body.site-ziehen-aktiv,body.site-ziehen-aktiv *{cursor:grabbing!important;user-select:none}
.site-column.site-ziel{background:#e7f2df;outline:2px dashed var(--green);outline-offset:-2px}
.site-menue{position:absolute;right:6px;top:32px;z-index:5;background:#fff;border:1px solid #cfd4c8;border-radius:8px;box-shadow:0 10px 26px #0002;padding:6px;display:grid;gap:2px;min-width:190px}
.site-menue small{color:var(--muted);padding:4px 8px;font-size:12px}
.site-menue button{border:0;background:transparent;text-align:left;padding:8px;border-radius:5px;font:700 13px Inter,sans-serif;color:var(--ink);cursor:pointer}
.site-menue button:hover,.site-menue button:focus-visible{background:#eef1ea}
.site-menue button.an{background:#e3efde;color:#235f3f;cursor:default}
@media(max-width:700px){.site-actions .site-step{flex:0 1 auto;min-height:36px}.site-actions .site-weg{margin-left:auto}.site-kopf .site-griff{font-size:20px;padding:4px 8px}}
/* REV169: Kunde im Angebot - feste Zeilen (Name | Strasse+Nr, PLZ, Ort | Telefon, E-Mail) */
.kunde-felder{grid-template-columns:repeat(6,minmax(0,1fr));align-items:start}
.kunde-felder .kf-anrede{grid-column:span 1}
.kunde-felder .kf-vorname,.kunde-felder .kf-firma{grid-column:span 2}
.kunde-felder .kf-name,.kunde-felder .kf-ansprech{grid-column:span 3}
.kunde-felder .kf-strasse{grid-column:span 3}
.kunde-felder .kf-plz{grid-column:span 1}
.kunde-felder .kf-ort{grid-column:span 2}
.kunde-felder .kf-telefon{grid-column:span 2}
.kunde-felder .kf-email{grid-column:span 4}
.kunde-felder .plz-hinweis{color:var(--danger);font-weight:600;font-size:11px}
@media(max-width:700px){
  .kunde-felder{grid-template-columns:repeat(4,minmax(0,1fr))}
  .kunde-felder .kf-anrede{grid-column:span 4}
  .kunde-felder .kf-vorname,.kunde-felder .kf-name,.kunde-felder .kf-firma,.kunde-felder .kf-ansprech{grid-column:span 2}
  .kunde-felder .kf-strasse{grid-column:span 4}
  .kunde-felder .kf-plz{grid-column:span 1}
  .kunde-felder .kf-ort{grid-column:span 3}
  .kunde-felder .kf-telefon,.kunde-felder .kf-email{grid-column:span 4}
}
/* REV169: Angebotsaufnahme im eigenen Fenster neben dem Angebot */
.offer-kopf-knoepfe{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
body.nebenfenster .app{grid-template-columns:1fr}
body.nebenfenster aside,body.nebenfenster header,body.nebenfenster #charlie-helper,body.nebenfenster .sprech-leiste{display:none!important}
body.nebenfenster .view{padding:14px}
body.nebenfenster .panel{max-width:none}

/* REV172 - Blankett fuer den Mitarbeiter (Angebote ohne Preise) */
body:not(.nur-blankett) #blankett-panel{display:none}
body.nur-blankett #view-offers > :not(#blankett-panel){display:none!important}
.blankett-liste{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;margin-top:12px}
.blankett-eintrag{min-width:0;border:1px solid var(--line);border-radius:8px;background:var(--card);padding:10px 14px}
.blankett-eintrag summary{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:baseline;cursor:pointer}
.blankett-eintrag summary strong{color:var(--ink)}
.blankett-zahl{margin-left:auto;color:var(--green);font-weight:700;font-variant-numeric:tabular-nums}
.blankett-eintrag .tabelle-rahmen{overflow-x:auto;margin:10px 0}
.blankett-tabelle{width:100%;border-collapse:collapse;font-size:.88rem}
.blankett-tabelle th:last-child{text-align:right}
.blankett-tabelle th{text-align:left;color:var(--muted);font-weight:700;border-bottom:1px solid var(--line);padding:6px 4px}
.blankett-tabelle td{padding:6px 4px;border-bottom:1px solid var(--line);vertical-align:top}
.blankett-tabelle td.zahl{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.blankett-tabelle tr.blankett-bereich td{font-weight:700;color:var(--green);padding-top:12px}
.blankett-bedarf{font-weight:700;color:var(--danger)}
.blankett-eintrag .button-link{display:inline-flex;padding:9px 14px;border-radius:4px;background:var(--green);color:#fff;text-decoration:none;font-weight:700}

/* REV173: Meldung direkt unter "Stimmt - uebernehmen" */
.rp-form-meldung{grid-column:1/-1;margin:6px 0 0;font-weight:700;color:var(--green)}
.rp-form-meldung.error{color:var(--danger)}

/* REV173 - Kundenformular am Handy zu breit (Mitarbeiter-Ansicht, 13.10.):
   die Liste ist ein Grid, dessen Spalte sich nach dem breitesten Inhalt
   richtete - das aufgeklappte Formular schob alles ueber den Rand. */
.maschine-liste{grid-template-columns:minmax(0,1fr)}
.maschine-liste > *{min-width:0}
#kd-form input,#kd-form select,#kd-form textarea{min-width:0;max-width:100%}
.stamm-angaben a{overflow-wrap:anywhere}

/* REV173 - Steine am Handy zu schmal: die Knoepfe nahmen der Beschreibung
   den Platz. Schmal: Knoepfe unter den Text. */
@media (max-width:560px){
  .lg-stein{grid-template-columns:minmax(0,1fr)}
  .lg-stein-text{overflow-wrap:normal}
}

/* REV173 - iCloud-Formular stand da, obwohl verbunden: ".stack-form
   {display:grid!important}" steht weiter unten als ".hidden" und gewann. */
.stack-form.hidden{display:none!important}

/* REV174 - Dominic am 14.10.2026 (Dienstplan): "die Ansicht rechts ist
   ueberschnitten". ".panel button" (dunkler Knopf, 14px/18px Innenabstand)
   war staerker als ".rt-lkw" - der LKW wurde ein grosser Block und schob
   sich ueber "Baustelle 3". Hier gewinnt der LKW wieder. */
.panel button.rt-lkw{background:none;color:inherit;border:0;padding:4px;border-radius:4px;font-weight:400;width:auto;height:auto;min-width:0}
.dp-zeilenende{min-width:0}
/* REV174 - Route verwerfen */
.panel button.rt-weg,.rt-karte button.rt-weg{background:transparent;color:var(--danger);border:1px solid #e6c3bf;padding:9px 12px;font-weight:700}
.rt-weg-frage{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:12px 0 0;padding:10px 12px;border:1px solid #e6c3bf;border-radius:6px;background:#fdf1ef;font-weight:700;font-size:14px}
.rt-weg-frage[hidden]{display:none!important}
.rt-weg-frage span{flex:1 1 260px;min-width:0}
.rt-karte button.rt-weg-ja{background:var(--danger);color:#fff;border:0;padding:9px 14px;border-radius:4px;font-weight:800}
/* REV175 - Datei auf die offene Station ziehen */
.rt-details.rt-ziehen{outline:2px dashed #14693C;outline-offset:3px;background:#eef6ea}
/* REV176 - Muell: wie lange vorher erinnern (je Tonne) */
.mk-fraktion-box{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}
.mk-vorlauf{min-height:40px;padding:6px 10px;border:1px solid #b9d7b2;border-radius:999px;background:#fff;font:600 13px Inter,sans-serif;color:var(--ink);max-width:100%}
/* REV176 - Wochentage und Arbeitszeit-Stufen am Mitarbeiter */
.ma-stufen-liste{display:grid;gap:6px;margin:6px 0}
.ma-stufe{display:grid;grid-template-columns:minmax(0,150px) minmax(0,90px) minmax(0,120px) minmax(0,1fr) auto;gap:6px;align-items:center}
.ma-stufe input{min-width:0;padding:8px 9px;font-size:13px}
@media (max-width:640px){.ma-stufe{grid-template-columns:1fr 1fr}.ma-stufe .ma-stufe-grund{grid-column:1/-1}}
.dp-chip small.dp-zeit{background:#fdf0dc;color:#8a4b00}
.ma-stufen{grid-column:1/-1;flex-basis:100%;border:1px solid var(--line);border-radius:6px;padding:8px 12px;margin:0;display:grid;gap:6px}
.ma-stufen legend{font-size:12px;font-weight:800;color:var(--muted);padding:0 4px}
.ma-stufen > button{justify-self:start}
.ma-stufe input{min-width:0!important;width:100%!important;box-sizing:border-box}
.ma-stufe{grid-template-columns:minmax(0,160px) minmax(0,80px) minmax(0,110px) minmax(0,1fr) auto}
.panel select.mk-vorlauf,select.mk-vorlauf{min-height:34px;height:auto;padding:5px 10px;border-radius:999px;font:600 12px Inter,sans-serif;width:auto;min-width:0}
.mk-fraktion-box{padding-right:6px}
/* REV177 - Einladen per WhatsApp */
.ma-einladung{grid-column:1/-1;display:grid;gap:8px;margin-top:10px;padding:12px;border:1px solid #b9d7b2;border-radius:8px;background:#f2f8ef}
.ma-einladung-text{white-space:pre-wrap;margin:0;font:13px/1.45 Inter,system-ui,sans-serif;background:#fff;border:1px solid var(--line);border-radius:6px;padding:10px;max-height:240px;overflow:auto;overflow-wrap:anywhere}
.ma-einladung-knoepfe{display:flex;gap:8px;flex-wrap:wrap}
.ma-einladung .ma-wa{display:inline-flex;align-items:center;padding:10px 16px;border-radius:4px;background:#1f8f4e;color:#fff;font-weight:800;text-decoration:none}
/* REV178 - Aushang immer auf EINE Seite (A4 quer = 190 mm Nutzhoehe) */
@media print{
  body.druck-aushang #dp-aushang{max-height:188mm;overflow:hidden;break-after:avoid;page-break-after:avoid}
  body.druck-aushang .dpa-hinweis{margin:4mm 0 0;font-size:20pt;line-height:1.15;break-inside:avoid;page-break-inside:avoid}
  body.druck-aushang .dpa-tabelle{break-inside:avoid;page-break-inside:avoid}
}

/* REV185: Mein Bereich im Menue (Links statt Knoepfe) */
a.nav.nav-link{text-decoration:none}

/* REV187 - Anwesenheit */
.aw-kopf{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.aw-tag{display:flex;align-items:center;gap:8px}.panel .aw-tag button{padding:6px 12px}
.aw-zeile{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;padding:11px 0;border-top:1px solid var(--line)}
.aw-zeile.abwesend{opacity:.6}
.aw-name{display:grid;gap:3px;min-width:0}.aw-name small{color:var(--muted)}
.aw-notiz{color:#235f3f}.aw-notiz.auffaellig{color:var(--danger);font-weight:700}
.panel button.aw-weg{background:none;color:var(--muted);padding:0;font-weight:600;text-decoration:underline;font-size:12px}
.aw-knoepfe{display:flex;gap:6px}
.panel button.aw-knopf{background:#fff;color:var(--ink);border:1px solid #cbd0c8;border-radius:999px;padding:9px 14px;font-size:14px}
.aw-tabelle{overflow-x:auto}.aw-tabelle table{width:100%;border-collapse:collapse;font-size:14px}
.aw-tabelle th,.aw-tabelle td{padding:8px;border-bottom:1px solid var(--line);text-align:left}
.aw-tabelle th{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.aw-tabelle td.z{text-align:right;font-variant-numeric:tabular-nums}.aw-rot{color:var(--danger);font-weight:700}
.aw-unter{margin:16px 0 6px}
.aw-einst{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;align-items:end}
.aw-einst select,.aw-einst input[type=time],.aw-einst input[type=number]{font:inherit;padding:11px;border:1px solid #cbd0c8;border-radius:4px;background:#fff}
.aw-einst .aw-haken{display:flex;gap:8px;align-items:center}.aw-einst .aw-haken input{flex:0 0 auto;min-width:0}

/* REV191 Buero-Chat-Knopf, Pflicht-Band, Anruf-Band */
.bc-knopf{margin-left:auto;display:inline-flex;align-items:center;gap:6px;border:1px solid #cbd0c8;background:#fff;color:var(--ink);border-radius:999px;padding:8px 14px;font-weight:800;position:relative}
.bc-knopf+.status{margin-left:12px}
.bc-knopf .nav-zahl{position:static}
.bc-pflicht,.al-klingel{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin:12px 34px 0;padding:12px 16px;border-radius:8px}
.bc-pflicht{background:#fdf0dc;border:1px solid #e9c98a;color:#5a3d00}
.bc-pflicht button{border:0;background:var(--ink);color:#fff;border-radius:4px;padding:9px 14px;font-weight:800}
.bc-pflicht small{flex-basis:100%;color:#7a5a1a}
.al-klingel{background:#0f2a1c;color:#fff}
.al-klingel>div{display:grid;gap:2px;min-width:0;flex:1}
.al-klingel strong{font-size:17px;overflow-wrap:anywhere}.al-klingel small{color:#c9d6cd}
.al-k-ring{width:42px;height:42px;border-radius:50%;background:var(--lime);color:#0f2a1c;display:grid;place-items:center;font-size:20px}
.al-klingel button{border:0;background:#fff;color:#0f2a1c;border-radius:4px;padding:9px 14px;font-weight:800}
@media (max-width:760px){.bc-pflicht,.al-klingel{margin:10px 12px 0}}

/* REV191 Anrufliste */
.al-raster{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,420px);gap:16px;align-items:start}
@media (max-width:1100px){.al-raster{grid-template-columns:minmax(0,1fr)}}
.al-leiste{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:6px}
.al-filter{display:flex;flex-wrap:wrap;gap:6px}
.panel button.al-f{background:#fff;color:var(--ink);border:1px solid #cbd0c8;border-radius:999px;padding:7px 13px;font-size:13px}
.panel button.al-f.aktiv{background:var(--ink);color:#fff;border-color:var(--ink)}
.al-f b{background:var(--danger);color:#fff;border-radius:999px;padding:0 6px;margin-left:3px;font-size:11px}
.al-f b:empty{display:none}
#al-suche{flex:1;min-width:180px;padding:9px 11px}
.al-geraet{margin:4px 0 8px;font-size:13px}
.al-tabelle-rahmen{overflow-x:auto}
.al-tabelle{width:100%;border-collapse:collapse;font-size:14px}
.al-tabelle th,.al-tabelle td{text-align:left;padding:9px 8px;border-bottom:1px solid var(--line);vertical-align:top}
.al-tabelle th{font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}
.al-tabelle td small{display:block;color:var(--muted);font-size:12px}
.al-tabelle tbody tr{cursor:pointer}
.al-tabelle tbody tr:hover td{background:#f6f8f2}
.al-tabelle tr.aktiv td{background:#eef4e9}
.al-tabelle tr.al-laeuft td{background:#fdf6e3}
.al-worum{min-width:170px;max-width:300px;overflow-wrap:break-word}
.al-ab{color:#1f3f6b!important;font-weight:700}
.al-chip{display:inline-block;background:#eef4e9;border:1px solid #b8d4b0;color:#235f3f;border-radius:999px;padding:1px 8px;font-size:12px;font-weight:700;margin:0 4px 3px 0}
.al-st{display:inline-block;border-radius:999px;padding:3px 9px;font-size:11px;font-weight:800;white-space:nowrap}
.al-st-offen{background:#f8e1de;color:var(--danger)}.al-st-erledigt{background:#e3efde;color:#235f3f}.al-st-notiz{background:#eceee8;color:var(--muted)}
.al-tun{white-space:normal;min-width:44px}
.al-anrufen-klein{display:inline-grid;place-items:center;width:32px;height:32px;border:1px solid var(--green);border-radius:4px;text-decoration:none;margin-right:4px}
.panel button.al-ok{background:#fff;color:#235f3f;border:1px solid #b8d4b0;padding:5px 9px}
.al-detail h3{margin-top:0}
.panel form.al-form{display:grid;gap:10px;align-items:stretch}
.al-form label{display:grid;gap:5px}
.al-form select,.al-form input,.al-form textarea{font:inherit;padding:10px;border:1px solid #cbd0c8;border-radius:4px;background:#fff;min-width:0;width:100%}
.al-zwei{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media (max-width:520px){.al-zwei{grid-template-columns:1fr}}
.al-treffer{border:1px solid #b8d4b0;background:#e3efde;border-radius:6px;padding:9px 10px;font-size:13px;display:grid;gap:4px}
.al-treffer small{color:#35553f}
.al-ziel-treffer{display:flex;flex-direction:column;gap:4px}
.panel button.al-ziel-knopf{background:#fff;color:var(--ink);border:1px solid var(--line);text-align:left;padding:7px 9px;font-weight:600;font-size:13px}
.al-ziel-knopf small{color:var(--muted);font-weight:400}
.al-ziele{display:flex;flex-wrap:wrap;gap:6px}
.al-chip-gross{font-size:13px;padding:3px 4px 3px 10px;display:inline-flex;align-items:center;gap:6px}
.panel button.al-chip-weg{background:#fff;color:var(--ink);border:0;border-radius:50%;width:20px;height:20px;padding:0;line-height:1}
.al-audio{display:grid;gap:4px}.al-audio small{color:var(--muted);font-size:12px}.al-audio audio{width:100%}
.al-knoepfe{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.al-anrufen{display:inline-block;border:1px solid var(--green);color:var(--green);border-radius:4px;padding:12px 14px;font-weight:800;text-decoration:none}
.al-verlauf{border-top:1px solid var(--line);margin-top:14px;padding-top:6px}
.al-verlauf p{margin:6px 0;font-size:13px}.al-verlauf small{color:var(--muted)}

/* REV191: hidden gilt auch dort, wo eine Regel display setzt */
.bc-knopf[hidden],.bc-pflicht[hidden],.al-klingel[hidden],a.nav[hidden],#view-anrufe [hidden]{display:none!important}
.al-tabelle td:nth-child(4){min-width:130px}
.al-raster>.panel{min-width:0;margin:0;width:auto;max-width:none}

/* REV192 Ort aus Auswahl; "Ganztaegig" wieder links neben dem Haken */
.all-day-toggle{justify-content:flex-start}
.all-day-toggle input{flex:0 0 auto!important;min-width:20px!important;width:20px!important}
.ort-feld{position:relative;display:grid}
.ort-liste{position:absolute;left:0;right:0;top:100%;z-index:30;margin-top:-1px;background:#fff;border:1px solid #cbd0c8;border-radius:0 0 6px 6px;box-shadow:0 10px 24px #0002;max-height:340px;overflow-y:auto}
.ort-liste[hidden]{display:none!important}
.ort-gruppe{font-size:10px;font-weight:800;letter-spacing:.08em;color:var(--muted);padding:8px 12px 4px;background:#f7f6f1;text-transform:uppercase}
.ort-eintrag{display:grid;grid-template-columns:22px minmax(0,1fr);gap:1px 8px;width:100%;text-align:left;border:0;border-top:1px solid #eee;background:#fff;color:var(--ink);padding:8px 12px;font:inherit;cursor:pointer}
.panel button.ort-eintrag{background:#fff;color:var(--ink);border-radius:0;padding:8px 12px;font-weight:400}
.ort-eintrag b{font-size:13px;overflow-wrap:anywhere}.ort-eintrag small{grid-column:2;color:var(--muted);font-size:12px;overflow-wrap:anywhere}
.ort-eintrag i{grid-row:span 2;font-style:normal;color:var(--green)}
.ort-eintrag.an,.ort-eintrag:hover,.panel button.ort-eintrag.an,.panel button.ort-eintrag:hover{background:#eef4e9}
.ort-fuss{font-size:11px;color:var(--muted);padding:7px 12px;background:#f7f6f1;border-top:1px solid #eee}

/* REV193 Anhaenge einer Nachricht */
.nachricht-anhaenge{display:grid;gap:6px;margin-top:8px;padding-top:8px;border-top:1px dashed var(--line)}
.nachricht-anhaenge[hidden]{display:none!important}
.nachricht-anhang{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between}
.nachricht-anhang span{font-size:13px;overflow-wrap:anywhere;min-width:0}
.panel .nachricht-anhang button{padding:8px 12px;font-size:13px}

/* REV194 Menue einteilen */
.menue-editor{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;margin:12px 0}
.menue-gruppe{border:1px solid var(--line);border-radius:6px;background:#fff;min-width:0}
.menue-gruppe.ziel{border-color:var(--green);box-shadow:0 0 0 3px #1d6b4d22}
.menue-kopf{display:flex;gap:6px;align-items:center;padding:8px;border-bottom:1px solid #eee;background:#f7f6f1}
.panel .menue-kopf input{flex:1;min-width:0;padding:8px 9px;font-weight:800}
.menue-kopf select{padding:7px;border:1px solid #cbd0c8;border-radius:4px;background:#fff;font:inherit}
.menue-liste{display:grid}
.menue-eintrag{display:flex;gap:6px;align-items:center;padding:6px 8px;border-top:1px solid #f1f1ee;cursor:grab}
.menue-eintrag:first-child{border-top:0}
.menue-eintrag.zieht{opacity:.5}
.menue-griff{color:#9aa39c}
.menue-name{flex:1;min-width:0;font-weight:600;overflow-wrap:anywhere}
.menue-nach{max-width:150px;padding:5px;border:1px solid #b8d4b0;border-radius:4px;background:#eef4e9;color:var(--green);font:inherit;font-size:12px;font-weight:700}
.panel button.menue-mini{padding:4px 8px;font-size:12px;min-width:0;background:#fff;color:var(--ink);border:1px solid #cbd0c8}
.menue-liste .klein{padding:8px;margin:0}
.menue-knoepfe{display:flex;flex-wrap:wrap;gap:8px}
.menue-eintrag select.menue-nach,.menue-kopf select{padding:4px 6px!important;height:30px;min-height:0;width:auto}

/* REV195 Schriftgroesse der Beschriftung */
.skizze-groesse{display:inline-flex;align-items:center;gap:4px}
.skizze-groesse select{padding:6px 8px;border:1px solid #cbd0c8;border-radius:4px;background:#fff;font:inherit;font-size:13px}
.skizze-groesse button{padding:6px 10px;font-size:13px;font-weight:800;min-width:0}
.skizze-textzeile{flex-wrap:wrap;gap:8px}
/* REV197: Baustellenmappe - eigenes Fenster ueber der Seite */
.mappe-fenster{position:fixed;inset:0;z-index:60;background:rgba(15,25,20,.45);display:grid;place-items:start center;padding:24px 16px;overflow:auto}
.mappe-innen{background:var(--card,#fffdf8);border-radius:8px;box-shadow:0 18px 50px rgba(0,0,0,.25);width:100%;max-width:720px;padding:14px 16px 16px;display:grid;gap:10px}
.mappe-kopf{display:flex;align-items:center;gap:10px}
.mappe-kopf h4{margin:0;font:700 18px Georgia,serif;flex:1;overflow-wrap:anywhere}
.mappe-fenster button.mappe-zu{background:transparent;color:var(--ink);border:1px solid #cbd0c8;padding:4px 10px;font-size:16px;min-height:0}
.site-mappe{display:grid;gap:12px}
.mappe-gruppe h5{margin:0 0 4px;font:800 11px Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--green,#1d6b4d)}
.mappe-zeile{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;padding:6px 0;border-bottom:1px solid #eceee8}
.mappe-titel{font-weight:700;overflow-wrap:anywhere;color:var(--ink);text-decoration:none}
a.mappe-titel[href]{color:var(--green,#1d6b4d);text-decoration:underline;text-underline-offset:2px}
.mappe-info{color:var(--muted);font-size:12px}
.mappe-fenster label.mappe-kolonne{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;margin-left:auto;cursor:pointer}
.mappe-fenster label.mappe-kolonne input{width:auto;min-height:0;margin:0}
.mappe-fenster button.mappe-loesen{background:#fff;color:var(--ink);border:1px solid #cbd0c8;font:700 11px Inter,sans-serif;padding:4px 8px;min-height:0}
.mappe-fenster button.mappe-hinzu-knopf{justify-self:start;background:#fff;color:var(--ink);border:1px solid #cbd0c8;font:700 13px Inter,sans-serif;padding:7px 12px}
.mappe-hinzu{display:none;gap:6px}
.mappe-hinzu.offen{display:grid}
.mappe-treffer{display:grid;gap:4px;max-height:260px;overflow:auto}
.mappe-fenster button.mappe-kandidat{display:block;text-align:left;background:#fff;color:var(--ink);border:1px solid #cbd0c8;padding:7px 9px;font:600 13px Inter,sans-serif}
.mappe-fenster button.mappe-kandidat:hover{border-color:var(--green);background:var(--lime)}
/* REV198: Ausfuehrung und Aufmass */
.af-panel{display:grid;gap:12px}
.af-liste{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px;margin-top:10px}
#view-ausfuehrung button.af-karte{display:grid;gap:5px;text-align:left;background:var(--card,#fff);color:var(--ink);border:1px solid var(--line);border-left:3px solid var(--green);border-radius:5px;padding:10px 12px;font:inherit;font-weight:400}
#view-ausfuehrung button.af-karte:hover{border-color:var(--green);background:#fbfcf8}
.af-karte-kopf{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.af-karte-kopf b{overflow-wrap:anywhere}
.af-prozent{font-weight:800;font-variant-numeric:tabular-nums}
progress.af-balken{width:100%;height:9px;accent-color:var(--green,#1d6b4d);border-radius:5px}
progress.af-balken.ueber{accent-color:#c0392b}
.af-chip{display:inline-block;font-size:11px;font-weight:700;border-radius:10px;padding:1px 8px;background:#eceee8;color:var(--ink);margin-left:6px}
.af-chip.warn{background:#fff3cd;color:#7a5a00}
.af-chip.ok{background:#e3f1e5;color:var(--green,#1d6b4d)}
.af-gesamt{display:grid;grid-template-columns:auto 1fr auto auto;gap:14px;align-items:center;background:#17241d;color:#fff;border-radius:6px;padding:12px 16px}
.af-gesamt small{display:block;color:#cfe3d6;font-size:11px}
.af-gesamt-zahl b{font:700 28px Georgia,serif}
.af-gesamt-werte{display:flex;gap:16px;flex-wrap:wrap}
.af-gesamt progress.af-balken{height:12px}
#view-ausfuehrung button.af-knopf-hell{background:#fff;color:var(--ink);border:1px solid #cbd0c8;padding:8px 12px;font:700 13px Inter,sans-serif}
#view-ausfuehrung button.af-knopf{padding:8px 14px;font:800 13px Inter,sans-serif}
#view-ausfuehrung button.af-knopf-leise{background:transparent;color:var(--muted);border:1px solid #d6d9d2;padding:4px 9px;font:700 12px Inter,sans-serif}
#view-ausfuehrung button:disabled{opacity:.55;cursor:default}
.af-tabelle{display:grid;border:1px solid var(--line);border-radius:5px;overflow:hidden}
.af-zeile{display:grid;grid-template-columns:60px minmax(0,1fr) 90px 90px 150px 100px;gap:8px;align-items:center;padding:6px 10px;border-top:1px solid #f0f1ec;font-variant-numeric:tabular-nums}
.af-zeile .r{text-align:right}
.af-kopfzeile{font-size:11px;font-weight:800;letter-spacing:.06em;color:var(--muted);background:#f7f6f1;border-top:0}
.af-titelzeile{background:#eef4e9;font-weight:800}
#view-ausfuehrung button.af-pos{background:#fff;color:var(--ink);border:0;border-top:1px solid #f0f1ec;border-radius:0;text-align:left;font:inherit;font-weight:400;padding:6px 10px}
#view-ausfuehrung button.af-pos:hover,#view-ausfuehrung button.af-pos.offen{background:#fff8de}
.af-pos.bedarf .af-text{font-style:italic}
.af-nr{color:var(--muted)}
.af-text{overflow-wrap:anywhere}
.af-fort{display:grid;grid-template-columns:1fr 44px;gap:6px;align-items:center}
.af-fort b{text-align:right;font-size:12px}
.af-fort b.ueber{color:#c0392b}
.af-panel-pos{display:grid;gap:12px;padding:12px 14px;background:#fffdf6;border-top:1px solid #f0d58a}
.af-form{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.af-form > b{flex-basis:100%;font-size:13px}
.af-form input[type=text],.af-form input[type=date]{width:auto;flex:1 1 140px;min-width:0}
.af-aufmass textarea{flex-basis:100%;font-family:ui-monospace,Consolas,monospace}
.af-aufmass > small{flex-basis:100%}
.af-vorschau{flex-basis:100%;margin:0;font-weight:800;color:var(--green,#1d6b4d)}
.af-foto-knopf{display:inline-flex;align-items:center;gap:6px;border:1px solid #cbd0c8;border-radius:4px;padding:7px 10px;background:#fff;font-weight:700;cursor:pointer}
.af-foto-knopf input{max-width:190px}
.af-warn{margin:0;color:#a63b31;font-weight:700}
.af-verlauf{display:grid;gap:6px}
.af-meldung-zeile{display:grid;gap:3px;padding:6px 0;border-top:1px solid #eceee8}
.af-meldung-zeile.zurueck{opacity:.55;text-decoration:line-through}
.af-meldung-zeile button{justify-self:start}
.af-rechenweg{font-family:ui-monospace,Consolas,monospace;color:var(--muted)}
.af-fotos{display:flex;gap:6px;flex-wrap:wrap}
.af-fotos img{width:84px;height:64px;object-fit:cover;border-radius:4px;border:1px solid var(--line)}
@media(max-width:800px){
  .af-gesamt{grid-template-columns:1fr}
  .af-zeile{grid-template-columns:44px minmax(0,1fr) 70px 70px;font-size:13px}
  .af-zeile > :nth-child(5),.af-zeile > :nth-child(6){grid-column:span 2}
  .af-kopfzeile > :nth-child(5),.af-kopfzeile > :nth-child(6){display:none}
}
.af-chip{white-space:nowrap}
#view-ausfuehrung button.af-karte .af-chip{justify-self:start;margin-left:0}
#af-suche{max-width:420px}
/* REV198: Zuschlag je Kalkulationszeile von Hand */
.kalk-zuschlag{display:inline-flex;align-items:center;gap:1px;white-space:nowrap}
.kalk-zuschlag input.kalk-zuschlag-feld{width:3.2em;min-width:0;min-height:0;padding:1px 3px;border:1px solid transparent;border-radius:3px;background:transparent;font:inherit;color:inherit;text-align:right}
.kalk-zuschlag input.kalk-zuschlag-feld:hover,.kalk-zuschlag input.kalk-zuschlag-feld:focus{border-color:var(--green);background:#fff}
.kalk-zuschlag.von-hand{background:#fff3cd;color:#7a5a00}
.kalk-zuschlag button.kalk-zuschlag-zurueck{background:transparent;color:inherit;border:0;padding:0 2px;min-height:0;font:inherit;cursor:pointer}
/* REV200: Rechnungen von Hand einlesen */
.re-panel{display:grid;gap:10px}
.re-ablage{border:2px dashed #b8c4b0;border-radius:6px;padding:22px 14px;display:grid;gap:4px;place-items:center;text-align:center;cursor:pointer;background:#fbfcf8}
.re-ablage.ueber,.re-ablage:hover{border-color:var(--green);background:var(--lime)}
.re-ablage small{color:var(--muted)}
.re-knoepfe{display:flex;gap:8px;flex-wrap:wrap}
.re-panel button.re-knopf{background:#fff;color:var(--ink);border:1px solid #cbd0c8;padding:8px 12px;font:700 13px Inter,sans-serif}
.re-liste{list-style:none;margin:0;padding:0;display:grid;gap:6px;max-height:320px;overflow:auto}
.re-zeile{display:grid;gap:2px;border-left:3px solid var(--green);background:#fff;padding:6px 9px;border-radius:3px}
.re-zeile b{overflow-wrap:anywhere}
.re-zeile small{color:var(--muted)}
.re-zu_pruefen{border-left-color:#e3b23c}
.re-doppelt{border-left-color:#9aa39c}
.re-fehler{border-left-color:#c0392b}
/* REV201: Tagesberichte vom Handy */
.tb-box{display:grid;gap:8px;border:1px solid #ecd58e;background:#fffaf0;border-radius:6px;padding:10px 12px}
.tb-box h4{margin:0}
.tb-liste{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px}
#view-ausfuehrung button.tb-karte{display:grid;gap:4px;text-align:left;background:#fff;color:var(--ink);border:1px solid var(--line);border-left:3px solid #c9a227;border-radius:5px;padding:9px 12px;font:inherit;font-weight:400}
#view-ausfuehrung button.tb-karte b{overflow-wrap:anywhere}
.tb-detail{display:grid;gap:12px}
.tb-leiste{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.tb-leiste-rechts{display:flex;gap:8px;flex-wrap:wrap}
#view-ausfuehrung button.tb-knopf-gruen{background:var(--green,#1d6b4d);color:#fff;border:0;padding:9px 14px;font:800 13px Inter,sans-serif}
.tb-detail h3{margin:0}
.tb-kopf{display:grid;grid-template-columns:minmax(200px,2fr) repeat(3,minmax(80px,1fr)) auto;gap:10px;align-items:end;border:1px solid var(--line);border-radius:5px;padding:10px 12px;background:#fff}
.tb-kopf label{display:grid;gap:3px;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.tb-kopf input,.tb-kopf select{font:inherit;font-size:14px;text-transform:none;letter-spacing:0;color:var(--ink);min-width:0}
.tb-std{display:grid;gap:2px}
.tb-std small{font-size:11px;color:var(--muted)}
.tb-std b{font-size:20px;font-variant-numeric:tabular-nums}
.tb-fragen{display:grid;gap:8px}
.tb-frage{display:grid;gap:6px;background:#fff6dc;border:1px solid #ecd58e;border-radius:6px;padding:10px 12px}
.tb-frage p{margin:0}
.tb-frage-knoepfe{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.tb-zeilen{display:grid;gap:10px}
.tb-teil{display:grid;border:1px solid var(--line);border-radius:5px;overflow:hidden;background:#fff}
.tb-teil h4{margin:0;padding:8px 12px;background:#f4f2ec;border-bottom:1px solid var(--line);font-size:14px}
.tb-teil-vertrag{border-left:3px solid var(--green,#1d6b4d)}
.tb-teil-extra{border-left:3px solid #c9822a}
.tb-zeile{display:grid;grid-template-columns:150px minmax(0,1fr) 90px 70px 135px;gap:8px;align-items:center;padding:7px 12px;border-bottom:1px solid #eceee8}
.tb-zeile:last-child{border-bottom:0}
.tb-teil:not(.tb-teil-vertrag) .tb-zeile{grid-template-columns:150px minmax(0,1fr) 90px 70px}
.tb-teil-notiz .tb-zeile{grid-template-columns:150px minmax(0,1fr)}
.tb-zeile input,.tb-zeile select{font:inherit;font-size:14px;min-width:0;width:100%;box-sizing:border-box}
.tb-feld-menge{text-align:right;font-variant-numeric:tabular-nums}
.tb-gesagt{grid-column:2 / -1;overflow-wrap:anywhere}
.tb-roh p{white-space:pre-wrap;margin:6px 0 0;color:var(--muted)}
.tb-wird{font-size:12px}
@media (max-width:760px){
  .tb-kopf{grid-template-columns:1fr 1fr}
  .tb-zeile,.tb-teil:not(.tb-teil-vertrag) .tb-zeile{grid-template-columns:1fr 1fr}
  .tb-zeile .tb-feld-pos,.tb-zeile .tb-feld-text,.tb-zeile .tb-gesagt{grid-column:1 / -1}
}
#view-ausfuehrung .tb-zeile input,#view-ausfuehrung .tb-zeile select,#view-ausfuehrung .tb-kopf input,#view-ausfuehrung .tb-kopf select{padding:6px 8px;min-height:0;font-size:14px}
#view-ausfuehrung .tb-frage-knoepfe input{padding:6px 8px;width:8em}
#view-ausfuehrung button#tb-zeile-neu{justify-self:start}
/* REV203: Regiebericht */
.rg-box{border-color:#d8cfa8;background:#fdfbf3}
.rg-neu{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
#view-ausfuehrung .rg-neu select{padding:5px 8px;font-size:13px;max-width:280px}
.rg-zuschlag{display:flex;gap:8px;align-items:center;font-size:13px}
.rg-tabelle{display:grid;border:1px solid var(--line);border-radius:5px;background:#fff;overflow-x:auto}
.rg-zeile{display:grid;grid-template-columns:120px minmax(220px,1fr) 70px 90px 100px 100px minmax(160px,220px);gap:8px;align-items:center;padding:6px 10px;border-bottom:1px solid #eceee8;min-width:900px}
.rg-zeile:last-child{border-bottom:0}
.rg-kopf{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);background:#f4f2ec}
.rg-leistung{grid-template-columns:120px minmax(0,1fr);background:#f6f4ee;font-weight:700}
#view-ausfuehrung .rg-feld{font:inherit;font-size:14px;padding:5px 7px;min-width:0;width:100%;box-sizing:border-box}
.rg-zahl{text-align:right;font-variant-numeric:tabular-nums}
.rg-pq{display:flex;gap:6px;align-items:center;min-width:0}
.rg-quelle{font-size:11px;overflow-wrap:anywhere}
.rg-fuss{display:flex;justify-content:space-between;align-items:center;gap:10px}
.rg-summe b{font-size:18px;font-variant-numeric:tabular-nums}
.rg-mail{display:flex;gap:8px;flex-wrap:wrap}
#view-ausfuehrung .rg-mail input{padding:6px 8px;min-width:260px}
.rg-bestaetigt{border:1px solid #bcd9c4;background:#eef7f0;border-radius:6px;padding:10px 12px}
.rg-bestaetigt p{margin:0 0 6px;font-weight:700}
.rg-bestaetigt img{max-width:320px;max-height:140px;background:#fff;border:1px solid var(--line);border-radius:4px}
/* REV203: [hidden] muss gegen display:grid/flex gewinnen (auch fuer REV201) */
.tb-box[hidden],.tb-detail[hidden],.rg-mail[hidden],.rg-bestaetigt[hidden],#view-ausfuehrung [hidden]{display:none}
#view-ausfuehrung label.rg-zuschlag{display:flex;justify-content:flex-start;text-transform:none;letter-spacing:0}
#view-ausfuehrung .rg-zuschlag input{width:auto;margin:0}
#view-ausfuehrung .rg-zuschlag input[type=checkbox]{width:18px!important;min-width:18px;height:18px;flex:0 0 18px;padding:0}
#view-ausfuehrung .rg-zuschlag span{text-align:left}
/* REV204: Fahrtkosten */
.fk-panel{display:grid;gap:10px}
.fk-panel h4{margin:8px 0 0}
.fk-wahl{display:grid;gap:4px}
.fk-wahl label{display:flex;gap:8px;align-items:center;font-weight:600}
.fk-wahl input{width:auto;margin:0}
.fk-liste{display:grid;gap:6px}
.fk-zeile{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.fk-zeile .fk-name{min-width:200px;flex:1}
.fk-panel input.fk-zahl{width:90px;text-align:right;padding:6px 8px}
.fk-panel select{max-width:280px}
.fk-panel [hidden],.rg-fahrt[hidden]{display:none}
.rg-fahrt{display:grid;gap:8px;border:2px solid var(--green,#1d6b4d);border-radius:6px;padding:10px 12px;background:#fff}
#view-ausfuehrung .rg-fahrt label{display:flex;gap:8px;align-items:center;text-transform:none;letter-spacing:0;font-size:13px}
#view-ausfuehrung .rg-fahrt select,#view-ausfuehrung .rg-fahrt input{width:auto;padding:5px 8px}
.rg-fahrt-knoepfe{display:flex;gap:8px;flex-wrap:wrap}
#view-settings .fk-wahl label{display:flex!important;justify-content:flex-start;align-items:center;gap:8px;text-align:left;font-size:14px}
#view-settings .fk-wahl input[type=radio]{width:18px!important;min-width:18px;height:18px;flex:0 0 18px;margin:0}
#view-settings .fk-panel input.fk-zahl{width:100px!important;flex:0 0 100px;min-width:0}
#view-settings label.fk-zeile{display:flex!important;justify-content:flex-start;gap:8px;align-items:center}
#view-settings .fk-zeile button.secondary{padding:6px 10px;min-height:0}
#view-settings .fk-wahl input[type=checkbox]{width:18px!important;min-width:18px;height:18px;flex:0 0 18px;margin:0}

/* REV208: Ablauf des Tages, Fotos mit Uhrzeit, Leerlauf */
.tb-ablauf{display:grid;gap:4px;border:1px solid var(--line);border-radius:5px;background:#fff;padding:8px 12px}
.tb-ablauf[hidden],.tb-fotos[hidden],.ctz-tage[hidden]{display:none}
.tb-ablauf h4{margin:0 0 4px;font-size:14px}
.tb-ablauf-liste{display:grid;gap:4px}
.tb-ab-zeile{display:grid;grid-template-columns:70px 80px 80px 190px minmax(0,1fr);gap:8px;align-items:center;font-size:13px;font-variant-numeric:tabular-nums}
.tb-ab-zeile input{font:inherit;font-size:13px;padding:4px 6px;min-width:0;width:100%;box-sizing:border-box}
.tb-ab-text{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tb-ab-leer{color:#a8641a;font-weight:700}
.tb-fotos{display:flex;flex-wrap:wrap;gap:8px}
.tb-foto{display:grid;gap:2px;font-size:12px;color:var(--muted);text-decoration:none}
.tb-foto img{width:120px;height:90px;object-fit:cover;border-radius:4px;border:1px solid var(--line)}
.tb-foto-extra{color:#a8641a;font-weight:700}
.tb-teil-leerlauf{border-left:3px solid #a8641a}
.tb-zeit-zelle{grid-column:2 / -1;display:flex;gap:6px;align-items:center;font-size:12px;color:var(--muted)}
#view-ausfuehrung .tb-zeit-zelle input{width:5.5em;padding:3px 6px;font-size:13px}
@media (max-width:760px){ .tb-ab-zeile{grid-template-columns:60px 1fr 1fr}.tb-ab-zeile .tb-ab-text,.tb-ab-zeile .tb-ab-art{grid-column:1 / -1} .tb-zeit-zelle{grid-column:1 / -1} }
/* REV208: Controlling -> Zeiten */
.ctz-ns{position:absolute;width:0;height:0;overflow:hidden}
.ctz-leiste{display:flex;gap:12px;align-items:end;flex-wrap:wrap}
.ctz-leiste label{display:grid;gap:3px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.ctz-gesamt{display:flex;flex-wrap:wrap;gap:18px;margin:10px 0}
.ctz-wert{display:grid;gap:2px}
.ctz-wert small{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.ctz-wert b{font-size:20px;font-variant-numeric:tabular-nums}
.ctz-tabelle{display:grid;border:1px solid var(--line);border-radius:5px;overflow-x:auto;background:#fff}
.ctz-zeile{display:grid;grid-template-columns:minmax(140px,1.4fr) repeat(5,80px) minmax(160px,2fr);gap:8px;align-items:center;padding:6px 10px;border:0;border-bottom:1px solid #eceee8;background:transparent;font:inherit;text-align:left;min-width:820px;font-variant-numeric:tabular-nums;color:var(--ink)}
button.ctz-zeile{cursor:pointer}
button.ctz-zeile:hover,.ctz-zeile.aktiv{background:#f4f7f4}
.ctz-kopf{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);background:#f4f2ec}
.ctz-zahl{text-align:right}
.ctz-balken{width:100%;height:14px;display:block}
.ctz-p{fill:#14693C}.ctz-l{fill:#c9822a}.ctz-u{fill:#c0392b}.ctz-r{fill:#e4e7e2}
.ctz-legende{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-top:6px}
.ctz-legende i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px;vertical-align:-1px}
.ctz-legende .p{background:#14693C}.ctz-legende .l{background:#c9822a}.ctz-legende .u{background:#c0392b}
.ctz-arten{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.ctz-chip{border:1px solid #e3cdb0;background:#fbf3ea;color:#7a4a12;border-radius:999px;padding:3px 10px;font-size:12px}
.ctz-tage{display:grid;gap:4px;margin-top:12px}
.ctz-tag{display:grid;grid-template-columns:90px minmax(160px,2fr) minmax(0,3fr);gap:10px;align-items:center;font-size:13px;font-variant-numeric:tabular-nums}
@media (max-width:760px){ .ctz-tag{grid-template-columns:70px 1fr}.ctz-tag .ctz-tag-text{grid-column:1 / -1} }

.tb-zeit-zelle .tb-feld-zeit{flex:0 0 6em;width:6em;max-width:6em}
@media (min-width:761px){ .tb-teil.tb-teil-leerlauf .tb-zeile{grid-template-columns:150px minmax(0,1fr) 90px 140px} }
.tb-ab-zeile .tb-ab-art{white-space:nowrap}
#view-controlling #ctz-tabelle button.ctz-zeile{background:#fff;color:var(--ink);border:0;border-bottom:1px solid #eceee8;border-radius:0;box-shadow:none;padding:6px 10px;min-height:0;font-size:14px;font-weight:400;width:auto;transform:none}
#view-controlling #ctz-tabelle button.ctz-zeile:hover,#view-controlling #ctz-tabelle button.ctz-zeile.aktiv{background:#eef4ef}
#view-controlling #ctz-tabelle button.ctz-zeile b{font-weight:700}
/* REV209: "Zurueck" immer links oben, ueberall gleich */
.panel > .zurueck-oben,#offer-editor > .zurueck-oben{display:inline-flex;align-items:center;gap:4px;margin:0 0 12px;align-self:flex-start;justify-self:start;width:auto}
.skizze-kopf .zurueck-oben{flex:0 0 auto;order:-1}

button.zurueck-oben.zurueck-oben{background:transparent;color:#14693C;border:1px solid var(--line);box-shadow:none;padding:6px 12px;min-height:0;font-size:14px;font-weight:700;border-radius:6px}
button.zurueck-oben.zurueck-oben:hover{background:#eef4ef}
/* REV209: Kunde zuordnen oder gleich anlegen */
.kz-schild{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:8px 0}
.kz-schild[hidden],.kz-neu[hidden],.kz-bname[hidden]{display:none}
.kz-marke{display:inline-flex;gap:8px;align-items:baseline;background:#eaf3ec;border:1px solid #b9d6c1;border-radius:999px;padding:5px 12px}
.kz-marke small{color:#4d6b56}
.kz-marke-bs{background:#f4f2ec;border-color:#d9d4c3}
.kz-neu{border:1px dashed #b9d6c1;background:#f6faf6;border-radius:8px;padding:12px;margin:8px 0;display:grid;gap:8px}
.kz-titel{margin:0;font-weight:700;color:#14693C}
.kz-raster{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.kz-raster label,.kz-bname{display:grid;gap:3px;font-size:12px;font-weight:700}
.kz-raster input,.kz-bname input{font:inherit;font-size:14px;min-width:0}
.kz-haken{display:flex;gap:6px;align-items:center;font-size:14px}
.kz-knoepfe{display:flex;gap:8px;flex-wrap:wrap}
.kz-meldung{margin:0;color:#7a4a12;font-size:13px}
.kz-meldung button{margin-left:6px}
.kz-skizze{display:grid;gap:4px;margin:6px 0 10px}
.kz-skizze label{display:grid;gap:3px;font-size:12px;font-weight:700;max-width:640px}
.app.skizze-vollbild .kz-skizze{display:none}
.vs-wrap .vs-box button.vs-eintrag.kz-neu-zeile{color:#14693C}
button.anw-loeschen-frage{border-color:#c0392b;color:#c0392b}
@media (max-width:600px){ .kz-raster{grid-template-columns:1fr} }
.kz-haken input[type=checkbox]{width:auto;flex:0 0 auto;min-height:0;margin:0;padding:0}
@media (max-width:600px){ .vs-wrap .vs-box{min-width:0;right:0} }
/* REV209: Strasse, PLZ, Ort abgleichen */
.adr-hinweis{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:12px;color:#4d6b56;margin-top:4px;grid-column:1 / -1}
.adr-hinweis.adr-warn{color:#8a4b0f}
button.adr-knopf{font-size:12px;padding:2px 8px;min-height:0;border-radius:999px;border:1px solid #b9d6c1;background:#f6faf6;color:#14693C;font-weight:700;box-shadow:none}
.panel .kz-neu .kz-haken input[type=checkbox]{width:18px;height:18px;flex:0 0 auto;min-width:0;min-height:0;margin:0;padding:0}
/* REV210: Versicherung, Finanzierung, Kosten je Fahrzeug */
.fzk-leiste{display:flex;gap:12px;align-items:end;margin:8px 0}
.fzk-leiste label{display:grid;gap:3px;font-size:11px;font-weight:700;text-transform:uppercase;color:var(--muted)}
.fzk-fristen{display:grid;gap:6px;margin:6px 0}
.fzk-warn,.fzk-frist{background:#fff6dc;border:1px solid #ecd58e;border-radius:6px;padding:8px 10px;margin:0}
.fzk-frist[hidden]{display:none}
.fzk-tabelle{display:grid;border:1px solid var(--line);border-radius:5px;background:#fff;overflow-x:auto;margin:6px 0}
.fzk-zeile{display:grid;grid-template-columns:minmax(180px,1.6fr) repeat(8,minmax(70px,1fr));gap:8px;align-items:center;padding:6px 10px;min-width:880px;font-variant-numeric:tabular-nums;border-bottom:1px solid #eceee8;text-align:left}
.fzk-jzeile{display:grid;grid-template-columns:60px repeat(6,minmax(70px,1fr));gap:8px;align-items:center;padding:6px 10px;min-width:560px;font-variant-numeric:tabular-nums;border-bottom:1px solid #eceee8;text-align:left}
#view-touren .fzk-tabelle button.fzk-zeile,#view-touren .fzk-tabelle button.fzk-jzeile{background:#fff;color:var(--ink);border:0;border-bottom:1px solid #eceee8;border-radius:0;box-shadow:none;font:inherit;font-size:13px;font-weight:400;padding:6px 10px;cursor:pointer}
#view-touren .fzk-tabelle button.fzk-zeile:hover,#view-touren .fzk-tabelle button.fzk-jzeile:hover{background:#eef4ef}
.fzk-kopf{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);background:#f4f2ec}
.fzk-z{text-align:right}.fzk-fett{font-weight:700}.fzk-rauf{color:#b23a2b}.fzk-runter{color:#14693C}
.fzk-raster{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:18px}
.fzk-teil{display:grid;gap:8px;align-content:start;margin-top:10px}
.fzk-teil .eyebrow{margin:8px 0 0}
.panel form.fzk-form{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;align-items:end;margin-top:4px}
.panel form.fzk-form label{display:grid;gap:3px;font-size:11px;font-weight:700}
.panel form.fzk-form input,.panel form.fzk-form select{min-width:0;width:100%;padding:7px 8px;font-size:14px}
.panel form.fzk-form button{padding:9px 12px;font-size:13px}
.fzk-liste{display:grid;gap:4px}
.fzk-doc{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid #eceee8;padding:6px 0;flex-wrap:wrap}
.fzk-doc a{color:#14693C;font-weight:700;text-decoration:none}
.fzk-vorschlag{background:#f6faf6;border:1px dashed #b9d6c1;border-radius:6px;padding:10px}
.fzk-vorschlag[hidden],#fzk-detail[hidden],#fzk-uebersicht[hidden]{display:none}
#view-touren button.fzk-fin{display:grid;gap:2px;text-align:left;background:#fff;color:var(--ink);border:1px solid var(--line);border-radius:6px;padding:8px 10px;font-weight:400;font-size:13px}
#view-touren button.fzk-fin.fzk-aus{opacity:.6}
.fzk-afa-stand p{margin:4px 0}
.panel .fzk-form .fzk-haken{display:flex;gap:6px;align-items:center;font-size:13px}
.panel .fzk-form .fzk-haken input{width:18px;height:18px;min-width:0;flex:0 0 auto}
@media (max-width:760px){ .fzk-raster{grid-template-columns:1fr} }
/* REV211: Angebotseditor - Gliederung links */
.sprech-zeile[hidden]{display:none}
.oe-raster{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;align-items:start}
.oe-baum{display:none}
@media (min-width:1100px){
  #offer-editor{max-width:1400px}
  .oe-raster{grid-template-columns:270px minmax(0,1fr)}
  .oe-baum{display:grid;gap:6px;position:sticky;top:10px;max-height:calc(100dvh - 140px);overflow:auto;
    border:1px solid var(--line);border-radius:6px;background:var(--card);padding:10px;margin-top:18px}
  .oe-baum .eyebrow{margin:0 0 4px}
}
.oe-baum-liste{display:grid;gap:2px}
#offer-editor .oe-baum button.oe-knoten{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;min-width:0;width:100%;text-align:left;background:transparent;
  color:var(--ink);border:1px solid transparent;border-radius:5px;padding:4px 6px;font:inherit;font-size:13px;font-weight:400;box-shadow:none;cursor:pointer}
#offer-editor .oe-baum button.oe-knoten:hover{background:#eef4ef}
#offer-editor .oe-baum button.oe-titel{font-weight:700;margin-top:4px}
#offer-editor .oe-baum button.oe-pos{padding-left:18px}
#offer-editor .oe-baum button.oe-bedarf{color:var(--muted);font-style:italic}
#offer-editor .oe-baum button.aktiv{background:#eaf3ec;border-color:#b9d6c1}
#offer-editor .oe-baum button.ziel{border-top:2px solid var(--green)}
#offer-editor .oe-baum button.zieht{opacity:.5}
.oe-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.oe-summe{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.panel .oe-filter{display:flex;gap:6px;align-items:center;font-size:12px;font-weight:600;color:var(--ink)}
.panel .oe-filter input{flex:0 0 auto;min-width:0;width:16px;height:16px}
.oe-mwst{color:var(--muted);font-size:13px;font-variant-numeric:tabular-nums}
.sprech-zeile.oe-blink{box-shadow:0 0 0 3px #1d6b4d55}
.oe-kalk{display:none}
@media (min-width:1300px){
  .oe-raster.mit-kalk{grid-template-columns:240px minmax(0,1fr) 440px}
  .oe-raster.mit-kalk .oe-kalk{display:grid;gap:6px;position:sticky;top:10px;max-height:calc(100dvh - 140px);overflow:auto;
    border:1px solid var(--line);border-radius:6px;background:var(--card);padding:10px;margin-top:18px}
  .oe-kalk[hidden]{display:none!important}
  .oe-kalk-kopf{display:flex;justify-content:space-between;align-items:center;gap:8px}
  .oe-kalk-kopf .eyebrow{margin:0}
  #offer-editor .oe-kalk-kopf button{padding:4px 9px;min-height:0;font-size:13px}
  .sprech-zeile.oe-kalk-zeile{box-shadow:0 0 0 2px #1d6b4d55}
}
/* REV212: Lieferantenangebot uebernehmen */
.la-ergebnis{display:grid;gap:8px;margin-top:8px}
.la-ergebnis[hidden]{display:none}
.la-kopf{font-weight:700;margin:0}
.panel .la-leiste{display:flex;gap:10px;flex-wrap:wrap;align-items:end}
.panel .la-leiste label{display:grid;gap:3px;font-size:12px;font-weight:700}
.panel .la-leiste input,.panel .la-leiste select{min-width:0;width:auto;padding:7px 8px;font-size:14px}
.panel .la-leiste #la-aufschlag{width:6em}
.panel .la-haken{display:flex!important;gap:6px;align-items:center}
.panel .la-haken input,.panel .la-zeile input[type=checkbox]{width:18px;height:18px;min-width:0;flex:0 0 auto}
.la-zeilen{display:grid;border:1px solid var(--line);border-radius:6px;background:#fff;overflow-x:auto}
.la-zeile{display:grid;grid-template-columns:28px minmax(240px,1fr) 70px 46px 84px 84px 90px;gap:6px;align-items:center;padding:5px 8px;border-bottom:1px solid #eceee8;min-width:700px;font-variant-numeric:tabular-nums}
.la-kopfzeile{font-size:11px;font-weight:700;text-transform:uppercase;color:var(--muted);background:#f4f2ec}
.panel .la-zeile input{min-width:0;width:100%;padding:5px 6px;font-size:13px}
.la-zeile .la-z{text-align:right}
.la-vk{text-align:right}
.la-nr{grid-column:2 / -1;margin-top:-4px}
.la-pruefen{background:#fff6dc}
.panel .la-datei{display:grid;gap:4px;font-size:12px;font-weight:700;max-width:420px}
/* REV213: Bausteine im Angebotseditor */
#offer-editor .oe-baum .bst-merken-knopf{justify-self:start;background:transparent;color:var(--green);border:0;box-shadow:none;padding:4px 0;min-height:0;font:inherit;font-size:13px;font-weight:700;cursor:pointer}
.bst-merk{display:grid;gap:6px;border:1px solid #b9d6c1;background:#f3f9f4;border-radius:6px;padding:8px}
.bst-merk[hidden]{display:none}
.panel .bst-merk .bst-name{display:grid;gap:2px}
.panel .bst-merk input#bst-name,.panel .oe-baum input.bst-suche{min-width:0;width:100%;box-sizing:border-box;padding:7px 8px;font-size:14px}
.panel .bst-merk .bst-haken{display:flex;gap:6px;align-items:flex-start;font-size:12px}
.panel .bst-merk .bst-haken[hidden]{display:none}
.panel .bst-merk .bst-haken input{width:16px;height:16px;min-width:0;flex:0 0 auto;margin-top:1px}
.bst-knoepfe{display:flex;gap:6px;flex-wrap:wrap}
#offer-editor .bst-knoepfe button{padding:5px 10px;min-height:0;font-size:13px}
.bst-meldung:empty{display:none}
.oe-baum .bst-kopf{margin-top:10px!important}
.bst-chips{display:flex;gap:5px;flex-wrap:wrap}
#offer-editor .oe-baum button.bst-chip{border:1px solid var(--line);border-radius:999px;padding:2px 9px;min-height:0;background:#fff;color:var(--ink);font:inherit;font-size:12px;font-weight:400;box-shadow:none;cursor:pointer}
#offer-editor .oe-baum button.bst-chip.an{background:var(--green);border-color:var(--green);color:#fff}
.bst-treffer{display:grid;gap:5px}
.bst-karte{display:grid;gap:2px;border:1px solid #e6e3d9;border-radius:6px;padding:6px 8px;background:#fff;cursor:grab;font-size:13px}
.bst-karte:hover{border-color:#b9d6c1}
.bst-karte.zieht{opacity:.5}
.bst-karte b{font-weight:700;overflow-wrap:anywhere}
.bst-karte .bst-mehr{display:flex;justify-content:space-between;gap:6px;color:var(--muted);font-size:11.5px;font-variant-numeric:tabular-nums}
.bst-tag{display:inline-block;font-size:10.5px;font-weight:700;border-radius:999px;padding:0 6px;margin-right:4px;border:1px solid #cfe1d4;color:var(--green);background:#eef6f0}
.bst-tag.bst-a{border-color:#cdd6e6;color:#2b4a7a;background:#eef2f9}
.bst-tag.bst-f{border-color:#e3cdb0;color:#7a4a12;background:#fbf3ea}
#offer-editor .bst-karte button.bst-weg{justify-self:end;background:transparent;border:0;box-shadow:none;color:var(--muted);padding:0 2px;min-height:0;font-size:12px;cursor:pointer}
#offer-editor .bst-karte button.bst-weg.gefragt{color:#a33}
.sprech-zeile.bst-neu{background:#eaf3ec}
.bst-herkunft{display:block;color:var(--muted);font-size:11.5px;grid-column:1 / -1}
.sprech-liste.bst-ziel-an .sprech-zeile.bst-ziel{box-shadow:0 2px 0 0 var(--green)}
/* REV213: Angebotseditor am PC als ruhige Tabelle (Entwurf vom 18.10.2026).
   Handy und iPad bleiben bei den grossen Zeilen zum Diktieren. */
.oe-kurzhilfe,.oe-tabkopf{display:none}
@media (min-width:1100px){
  #offer-editor .sprech-anleitung{display:none}
  #offer-editor .oe-kurzhilfe{display:block;margin:4px 0 0}
  #offer-editor .oe-tabkopf{display:none}
  #offer-editor .sprech-zeile{display:grid}
  #offer-editor .sprech-zeile,#offer-editor .oe-tabkopf{
    grid-template-columns:20px minmax(0,1fr) 56px 60px 80px 28px 50px 92px 22px;column-gap:4px}
  #offer-editor .oe-tabkopf{margin-top:12px;padding:0 4px 5px;border-bottom:1px solid #cfd3c9;font-size:10.5px;font-weight:700;
    letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
  #offer-editor .oe-tabkopf span:nth-child(n+3){text-align:right}
  #offer-editor .oe-tabkopf span:nth-child(4){text-align:left;padding-left:4px}
  #offer-editor .sprech-liste{gap:0;margin-top:0}
  #offer-editor .sprech-zeile{align-items:start;row-gap:2px;padding:3px 4px;margin:0;background:transparent;border:0;
    border-bottom:1px solid #eceee8;border-radius:0;box-shadow:none;animation:none}
  #offer-editor .sprech-zeile:hover{background:#fafaf6}
  #offer-editor .sprech-zeile:focus-within{background:#f5f9f4}
  #offer-editor .sprech-zeile.bereich{background:#f1efe8;border-bottom-color:#dcd9cf;margin-top:8px}
  #offer-editor .sprech-zeile.bereich:first-child{margin-top:0}
  #offer-editor .sprech-zeile.offen{box-shadow:inset 3px 0 0 var(--danger)}
  #offer-editor .sprech-zeile.ist-bedarf .sprech-text{color:var(--muted);font-style:italic}
  #offer-editor .sprech-zeile .sprech-inhalt,#offer-editor .sprech-zeile .sprech-fuss-zeile,
  #offer-editor .sprech-zeile .sprech-zahlen{display:contents}
  #offer-editor .sprech-zeile .sprech-griffkasten{grid-column:1;grid-row:1;align-self:start}
  #offer-editor .sprechmodus{container-type:inline-size}
  #offer-editor .sprech-zeile .sprech-kopf{grid-column:2 / 9;grid-row:1;display:flex;flex-wrap:nowrap;gap:4px;align-items:start;min-width:0;margin:0}
  #offer-editor .sprech-zeile .sprech-feld.menge{grid-column:3;grid-row:2}
  #offer-editor .sprech-zeile .sprech-feld.einheit{grid-column:4;grid-row:2}
  #offer-editor .sprech-zeile .sprech-feld.preis{grid-column:5;grid-row:2}
  #offer-editor .sprech-zeile .sprech-kalk-knopf{grid-column:6;grid-row:2}
  #offer-editor .sprech-zeile .sprech-ev{grid-column:7;grid-row:2}
  #offer-editor .sprech-zeile .sprech-zeilensumme{grid-column:8;grid-row:2;}
  #offer-editor .sprech-zeile .sprech-bereichssumme{grid-column:8;grid-row:1;}
  #offer-editor .sprech-zeile .sprech-zeilensumme,#offer-editor .sprech-zeile .sprech-bereichssumme{
    min-width:0;text-align:right;align-self:start;padding-top:5px!important;font-size:14px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap;margin:0;padding:0}
  #offer-editor .sprech-zeile.bereich .sprech-bereichssumme{font-weight:800}
  #offer-editor .sprech-zeile.bereich .sprech-kopf{grid-column:2 / 8}
  #offer-editor .sprech-zeile .sprech-weg{grid-column:9;grid-row:1}
  #offer-editor .sprech-zeile .sprech-zahlen>small,#offer-editor .sprech-zeile .sprech-bereichsmarke{display:none}
  #offer-editor .sprech-zeile .sprech-marke,#offer-editor .sprech-zeile .bst-herkunft{grid-column:2 / 9;justify-self:start;margin-left:3.9em}
  #offer-editor .sprech-zeile .sprech-kalk{grid-column:2 / 9;margin:4px 0 6px}
  /* Felder: ruhig, erst beim Zeigen oder Tippen mit Rahmen */
  #offer-editor .sprech-zeile .sprech-feld,#offer-editor .sprech-zeile .sprech-text{flex:none;min-width:0;width:100%;min-height:0;
    height:auto;margin:0;padding:4px 5px;border:1px solid transparent;border-radius:3px;background:transparent;box-shadow:none;
    font:inherit;font-size:14px;line-height:1.4;color:var(--ink)}
  #offer-editor .sprech-zeile .sprech-feld:hover,#offer-editor .sprech-zeile .sprech-text:hover{border-color:#d9dcd3}
  #offer-editor .sprech-zeile .sprech-feld:focus,#offer-editor .sprech-zeile .sprech-text:focus{border-color:var(--green);background:#fff;outline:none}
  #offer-editor .sprech-zeile .sprech-feld.nr{width:3.6em;flex:0 0 3.6em;font-weight:700;color:var(--muted);padding-right:0}
  #offer-editor .sprech-zeile.bereich .sprech-feld.nr{color:var(--ink);font-weight:800;width:3.6em}
  #offer-editor .sprech-zeile .sprech-text{flex:1 1 auto;resize:none;overflow:hidden}
  #offer-editor .sprech-zeile.bereich .sprech-text{font-weight:800;font-size:14px}
  #offer-editor .sprech-zeile .sprech-feld.menge,#offer-editor .sprech-zeile .sprech-feld.preis{text-align:right;font-variant-numeric:tabular-nums}
  #offer-editor .sprech-zeile select.sprech-feld.einheit{padding:4px 2px;cursor:pointer}
  /* Knoepfe klein und leise */
  #offer-editor .sprech-zeile .sprech-griff{width:20px;height:26px;padding:4px 3px;color:#b8bcb4;background:transparent;border:0;box-shadow:none;min-height:0}
  #offer-editor .sprech-zeile:hover .sprech-griff{color:var(--muted)}
  #offer-editor .sprech-zeile .sprech-griff svg{width:10px;height:15px}
  #offer-editor .panel button.sprech-kalk-knopf,#offer-editor .sprech-zeile button.sprech-kalk-knopf{width:28px;height:28px;min-width:0;min-height:0;padding:0;
    font-size:14px;border:1px solid transparent;border-radius:3px;background:transparent;color:#9aa199}
  #offer-editor .sprech-zeile button.sprech-kalk-knopf.hat-kalkulation{color:var(--green);font-weight:800}
  #offer-editor .sprech-zeile button.sprech-kalk-knopf:hover{border-color:#d9dcd3}
  #offer-editor .sprech-zeile button.sprech-kalk-knopf[aria-expanded="true"]{background:var(--green);color:#fff;border-color:var(--green)}
  #offer-editor .sprech-zeile button.sprech-ev{min-width:0;width:100%;min-height:0;height:24px;margin-top:2px;padding:0 2px;font-size:10px;letter-spacing:-.01em;font-weight:600;
    border:1px solid #dfe2d8;border-radius:3px;background:transparent;color:var(--muted)}
  #offer-editor .sprech-zeile button.sprech-ev[data-ev="1"]{background:#fbf3ea;border-color:#e3cdb0;color:#7a4a12}
  #offer-editor .sprech-zeile button.sprech-weg{width:24px;min-width:0;height:28px;min-height:0;padding:0;background:transparent;border:0;box-shadow:none;
    color:#b8bcb4;font-size:16px}
  #offer-editor .sprech-zeile:hover button.sprech-weg{color:var(--muted)}
  #offer-editor .sprech-zeile button.sprech-weg[data-gefragt="1"]{color:var(--danger)}
  #offer-editor .sprech-zeile .sprech-schieben{grid-column:1;flex-direction:column}
  #offer-editor .sprech-zeile.bst-neu{background:#eaf3ec}
}
/* Kalkulation (am PC, in der Zeile und rechts): Name und Betrag oben, darunter die Werte */
@media (min-width:1100px){
  #offer-editor .sprech-kalk{border-top:0;padding:0;display:grid;gap:0;color:var(--ink)}
  #offer-editor .sprech-kalk .kalk-betrag,#offer-editor .sprech-kalk .kalk-fuss .kalk-name,#offer-editor .sprech-kalk .kalk-summe{color:var(--ink)}
  #offer-editor .sprech-kalk .kalk-kopf{font-size:12px;margin:0 0 6px}
  #offer-editor .sprech-kalk .kalk-reihe{display:flex;flex-wrap:wrap;align-items:center;gap:4px 5px;padding:7px 0;border-bottom:1px solid #eceee8}
  #offer-editor .sprech-kalk .kalk-reihe>*{order:3}
  #offer-editor .sprech-kalk .kalk-reihe .kalk-name{order:0;flex:0 0 calc(100% - 112px);min-width:0;font:700 13px Inter,sans-serif;color:var(--ink)}
  #offer-editor .sprech-kalk .kalk-reihe .kalk-betrag{order:1;flex:0 0 100px;text-align:right;margin-left:0;font:700 14px Inter,sans-serif;font-variant-numeric:tabular-nums}
  #offer-editor .sprech-kalk .kalk-reihe .kalk-umbruch{order:2;flex:0 0 100%;height:0}
  #offer-editor .sprech-kalk .kalk-reihe .kalk-maschine{order:2;flex:0 0 100%;max-width:none}
  #offer-editor .sprech-kalk .kalk-reihe .kalk-rechnung,#offer-editor .sprech-kalk .kalk-reihe .kalk-herkunft,
  #offer-editor .sprech-kalk .kalk-reihe .kalk-pauschal{order:4;flex:0 0 100%;font-size:11.5px;color:var(--muted)}
  #offer-editor .sprech-kalk .kalk-reihe .kalk-rechnung:empty{display:none}
  #offer-editor .sprech-kalk .kalk-reihe .kalk-je,#offer-editor .sprech-kalk .kalk-reihe .kalk-einheit{font-size:12px;color:var(--muted);width:auto;min-width:0;flex:0 0 auto}
  #offer-editor .sprech-kalk .kalk-reihe .kalk-einheit:empty{display:none}
  #offer-editor .sprech-kalk .sprech-feld{flex:0 0 auto;min-width:0;min-height:0;height:30px;padding:3px 6px;font-size:13px;
    border:1px solid #d9dcd3;border-radius:3px;background:#fff;text-align:right}
  #offer-editor .sprech-kalk .kalk-menge{width:4.6em}
  #offer-editor .sprech-kalk .kalk-satz{width:5.6em}
  #offer-editor .sprech-kalk .kalk-ma{width:3em}
  #offer-editor .sprech-kalk select.kalk-maschine{text-align:left;height:32px}
  #offer-editor .sprech-kalk button.kalk-bezug{min-height:0;height:26px;padding:0 7px;font-size:11px;font-weight:600;border:1px solid #d9dcd3;
    border-radius:3px;background:#fff;color:var(--green);box-shadow:none}
  #offer-editor .sprech-kalk button.kalk-bezug[data-kalk-bezug="gesamt"]{background:var(--green);color:#fff;border-color:var(--green)}
  #offer-editor .sprech-kalk .kalk-zuschlag{font-size:11.5px;padding:1px 5px;border-radius:3px}
  #offer-editor .sprech-kalk .kalk-mehr{display:flex;gap:12px;padding:8px 0 4px}
  #offer-editor .sprech-kalk button.kalk-mehr-knopf{min-height:0;padding:0;border:0;background:transparent;color:var(--green);
    font:700 12.5px Inter,sans-serif;box-shadow:none}
  #offer-editor .sprech-kalk .kalk-fuss{display:flex;align-items:center;gap:10px;border-top:2px solid var(--ink);margin-top:4px;padding-top:8px}
  #offer-editor .sprech-kalk .kalk-fuss .kalk-name{font:700 13px Inter,sans-serif}
  #offer-editor .sprech-kalk .kalk-fuss .kalk-summe{margin-left:auto;font:800 16px Inter,sans-serif;font-variant-numeric:tabular-nums}
  #offer-editor .sprech-kalk .kalk-fuss button{min-height:0;padding:7px 12px;font-size:13px;font-weight:700;border-radius:4px;
    background:var(--green);color:#fff;border:0;flex:0 0 100%}
  #offer-editor .sprech-kalk .kalk-fuss button[disabled]{opacity:.45}
}
@media (min-width:1300px){
  #offer-editor .oe-raster.mit-kalk{grid-template-columns:220px minmax(0,1fr) 380px}
}
/* Breite Liste (ohne Kalkulation rechts): alles in einer Zeile wie im Entwurf */
@media (min-width:1100px){
  @container (min-width:720px){
    #offer-editor .oe-tabkopf{display:grid}
    #offer-editor .sprech-zeile .sprech-kopf{grid-column:2}
    #offer-editor .sprech-zeile.bereich .sprech-kopf{grid-column:2 / 8}
    #offer-editor .sprech-zeile .sprech-feld.menge,#offer-editor .sprech-zeile .sprech-feld.einheit,#offer-editor .sprech-zeile .sprech-feld.preis,
    #offer-editor .sprech-zeile .sprech-kalk-knopf,#offer-editor .sprech-zeile .sprech-ev,#offer-editor .sprech-zeile .sprech-zeilensumme{grid-row:1}
  }
}
/* REV213: Gliederung und Kalkulation sind <aside> - die globale aside-Regel (Navigation) faerbt sonst die Schrift weiss */
#offer-editor aside.oe-baum,#offer-editor aside.oe-kalk{color:var(--ink)}
/* REV215: Merkregeln */
.mr-box{border:1px solid #e3cdb0;background:#fbf3ea;border-radius:6px;padding:9px 11px;margin:10px 0 4px}
.mr-box[hidden]{display:none}
.mr-titel{color:#7a4a12;font-size:13.5px}
.mr-liste{display:grid}
.mr-zeile{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;padding:5px 0;border-top:1px dashed #e3cdb0;font-size:14px}
.mr-zeile:first-child{border-top:0}
.mr-ok{color:var(--green);font-weight:700;font-size:13px}
.mr-knoepfe{display:flex;gap:6px;flex-wrap:wrap}
#offer-editor button.mr-knopf{min-height:0;padding:4px 10px;font-size:12.5px;font-weight:700;border:1px solid var(--green);border-radius:5px;background:#fff;color:var(--green);box-shadow:none}
#offer-editor button.mr-knopf.mr-leise{border-color:#d8c3a5;color:#7a4a12}
.mr-panel[hidden]{display:none}
.mr-tabelle{display:grid;margin-top:10px;overflow-x:auto}
.mr-tzeile{display:grid;grid-template-columns:44px 120px minmax(160px,1fr) 150px 230px;gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid var(--line);font-size:14px;min-width:620px}
.mr-tkopf{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.mr-tzeile.mr-aus .mr-begriff{color:var(--muted);text-decoration:line-through}
.panel .mr-tzeile input.mr-schalter{width:20px;height:20px;min-width:0;flex:none;accent-color:var(--green)}
.panel .mr-tzeile select.mr-fuer{padding:5px 6px;font-size:13px;min-width:0;width:100%}
.panel .mr-neu{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;align-items:center}
.panel .mr-neu input{flex:1 1 240px;min-width:0;padding:9px 10px}
.panel .mr-neu select{padding:8px}
.panel .mr-neu button{padding:9px 14px}
