/* DORFER 14.38.0 · Kaufvertrag / Datenschutz / Audit */
.dorfer38-grid{display:grid;grid-template-columns:minmax(250px,320px) minmax(0,1fr);gap:18px;align-items:start}
.dorfer38-list{display:flex;flex-direction:column;gap:8px;margin-top:16px}
.dorfer38-list>.btn{text-align:left;justify-content:flex-start;display:flex;flex-direction:column;align-items:start;white-space:normal}
.dorfer38-list .btn small{display:block;font-size:11px;opacity:.7}
.dorfer38-editor h3{margin:22px 0 12px;color:#243047}
.dorfer38-editor .formgrid,.dorfer38-admin .formgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.dorfer38-editor label,.dorfer38-admin label{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:13px}
.dorfer38-editor label:has(>input[type=checkbox]),.dorfer38-radio label{flex-direction:row;align-items:center;gap:10px}
.dorfer38-editor input,.dorfer38-editor select,.dorfer38-admin input,.dorfer38-admin select,.dorfer38-list input{max-width:100%;min-width:0}
.dorfer38-editor input[type=checkbox],.dorfer38-editor input[type=radio]{width:auto}
.dorfer38-lines{display:grid;gap:8px}
.dorfer38-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:15px}
.dorfer38-radio{display:flex;gap:14px;flex-wrap:wrap;margin:12px 0}
.dorfer38-log{border-bottom:1px solid #e8edf0;padding:10px 0;display:grid;gap:5px}
.dorfer38-log small{color:#666}
.dorfer38-log pre{overflow:auto;white-space:pre-wrap;font-size:11px;background:#f1f4f7;padding:10px;border-radius:8px}
.dorfer38-dialog{width:min(620px,calc(100vw - 24px));max-width:unset;border:0;border-radius:18px;padding:24px;box-shadow:0 12px 55px #0005}
.dorfer38-dialog::backdrop{background:#0009}
.dorfer38-warning{border:2px solid #a42d22;border-radius:12px;padding:18px}
.dorfer38-warning h2{color:#a42d22;font-size:19px}
.dorfer38-confirm{border:2px solid #a42d22!important;color:#a42d22!important}
@media(max-width:850px){.dorfer38-grid{grid-template-columns:1fr}.dorfer38-editor .formgrid,.dorfer38-admin .formgrid{grid-template-columns:1fr}.dorfer38-dialog{padding:12px}}
.dorfer38-access-row{border:1px solid #e6ebed;border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:8px}
.dorfer38-access-row label{font-size:13px;display:flex;align-items:center;gap:8px}

/* V14.38.1 – ruhiger Hinweis auf festgeschriebene Vertragsdaten */
.dorfer38-contract-terms{margin-top:10px;padding:10px 12px;border-left:3px solid #ac101e;background:#fff7f7;border-radius:7px;font-size:.85rem;line-height:1.45}
.dorfer38-contract-terms strong{display:block;margin-bottom:3px}
.dorfer38-contract-terms small{display:block;color:#555;margin-top:3px}
.dorfer38-contract-fields{border:0;padding:0;margin:0;min-width:0}
.dorfer38-contract-fields:disabled{opacity:.75}
.dorfer38-weeks{max-width:100%;overflow:hidden}

/* V14.38.2 – Zugängliche Kaufvertrags-Verwaltung und ruhiger Admin-Bereich */
.dorfer382-overline{display:block;font-size:.74rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:#ad3440;margin-bottom:7px}
.dorfer382-editor,.dorfer382-contract-list,.dorfer382-template-card{box-shadow:0 5px 22px rgba(30,40,55,.045);border-color:#e5e6e8}
.dorfer382-editor h2,.dorfer382-template-card h2{margin:0 0 15px;font-size:clamp(1.3rem,2.8vw,1.8rem)}
.dorfer382-editor h3{font-size:1.07rem;display:flex;align-items:center;gap:9px;border-top:1px solid #eceef0;padding-top:19px;color:#273140}
.dorfer382-editor form.stack{gap:17px}
.dorfer382-editor .formgrid>label,.dorfer382-template-card label{min-width:0}
.dorfer382-editor input:not([type=radio]):not([type=checkbox]),.dorfer382-editor select,.dorfer382-template-card select,.dorfer382-template-card input[type=file]{width:100%;min-height:48px;border:1px solid #d2d8de;background:#fff;border-radius:12px;padding:11px 13px;font-size:1rem}
.dorfer382-editor input:focus-visible,.dorfer382-editor select:focus-visible,.dorfer382-template-card input:focus-visible,.dorfer382-template-card select:focus-visible{outline:3px solid #d89ca1;outline-offset:1px;border-color:#ad2634}
.dorfer382-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;margin:12px 0 15px}
.dorfer382-options label{border:2px solid #dce0e5;border-radius:14px;min-height:65px;padding:14px;display:flex;gap:11px;align-items:center;cursor:pointer;background:white;font-weight:700}
.dorfer382-options label:has(input:checked){border-color:#a82b37;background:#fff5f6;color:#822330;box-shadow:0 0 0 1px #a82b3730}
.dorfer382-options input{accent-color:#a82b37;flex:0 0 auto}
.dorfer382-toggle{display:flex!important;flex-direction:row!important;align-items:center!important;gap:12px!important;background:#f7f8fa;border:1px solid #e2e5e8;padding:14px 15px;border-radius:13px;min-height:56px;margin:8px 0 13px;cursor:pointer}
.dorfer382-toggle:has(input:checked){background:#fff5f6;border-color:#b44852}
.dorfer382-toggle input{accent-color:#a82b37;flex:0 0 auto;width:21px!important;height:21px}
.dorfer382-reveal{border-left:3px solid #ad3440;padding:16px;background:#f8f9fa;border-radius:0 12px 12px 0;gap:14px}
[data-v38-show][hidden]{display:none!important}
.dorfer382-main-action{min-height:54px;font-size:1.02rem;padding:12px 18px;white-space:normal;text-align:center}
.dorfer382-optional{margin:15px 0;border:1px solid #e1e4e7;border-radius:13px;overflow:hidden}
.dorfer382-optional summary{cursor:pointer;padding:14px 16px;font-weight:700;background:#f8f9fb}
.dorfer382-optional .formgrid{padding:16px}
.dorfer382-payment{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:15px;border:1px solid #e1e4e8;border-radius:14px;padding:16px;background:#f8f9fb}
.dorfer382-payment div{display:flex;flex-direction:column;gap:4px}
.dorfer382-payment small{font-size:.78rem;color:#626977}
.dorfer382-payment strong{font-size:clamp(1.35rem,3.5vw,1.8rem);font-variant-numeric:tabular-nums;color:#1d6e49}
.dorfer382-payment button{grid-column:1/-1;justify-self:start}
.dorfer382-editor .dorfer38-lines{grid-template-columns:repeat(2,minmax(0,1fr))}
.dorfer382-section-head{display:flex;align-items:start;justify-content:space-between;gap:16px;flex-wrap:wrap;border-bottom:1px solid #e7e9ec;padding-bottom:18px;margin-bottom:17px}
.dorfer382-section-head h2{margin:0 0 5px}
.dorfer382-template-status{border:1px solid #dae1e6;border-radius:12px;padding:14px 16px;font-weight:650;margin:17px 0}
.dorfer382-template-status.ready{color:#18633d;background:#f0f9f3;border-color:#cfe8d8}
.dorfer382-template-status.missing{color:#813426;background:#fff6ef;border-color:#edccba}
.dorfer382-upload-form{display:grid;grid-template-columns:minmax(180px,1fr) minmax(240px,2fr);gap:14px;align-items:end;margin:18px 0 28px}
.dorfer382-upload-form>button{grid-column:1/-1;justify-self:start}
.dorfer382-dropzone{display:flex!important;align-items:center!important;justify-content:center;gap:5px;text-align:center;border:2px dashed #c7cbd1!important;background:#f8f9fc;border-radius:15px;padding:16px!important;cursor:pointer;min-height:140px}
.dorfer382-dropzone.dragging{background:#fff1f3;border-color:#a82b37!important}
.dorfer382-dropzone small{color:#687481;font-weight:450}
.dorfer382-upload-icon{display:grid;place-items:center;background:#fee7eb;color:#9d2532;width:37px;height:37px;border-radius:11px;font-size:25px;font-weight:800}
.dorfer382-dropzone input[type=file]{font-size:.82rem!important;max-width:350px;min-height:unset!important;border:0!important;padding:5px!important;background:transparent!important}
.dorfer382-file-group{margin-top:24px;display:grid;gap:10px}
.dorfer382-file-group h3{font-size:1.12rem;margin:0 0 3px}
.dorfer382-file{display:grid;grid-template-columns:48px minmax(0,1fr);gap:12px;border:1px solid #e4e7eb;background:#fff;border-radius:14px;padding:15px}
.dorfer382-file-icon{display:grid;place-items:center;align-self:start;width:43px;height:52px;border:1px solid #e6a3a9;border-radius:9px;background:#fff0f1;color:#9f2735;font-size:.8rem;font-weight:850}
.dorfer382-file-info{display:grid;gap:3px;min-width:0;overflow-wrap:anywhere}
.dorfer382-file-info small{font-size:.79rem;color:#657180}
.dorfer382-file-actions{grid-column:2;display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}
.dorfer382-file-actions .btn{min-height:40px;padding:9px 12px}
.dorfer382-state{justify-self:start;font-size:.77rem;background:#f0f2f5;color:#4d5865;padding:3px 10px;border-radius:30px}
.dorfer382-state.is-active{background:#e4f5ea;color:#166b42}
.dorfer382-audit>.dorfer382-audit-head{display:flex;gap:15px;align-items:center;margin:0 0 19px}
.dorfer382-audit-head>span{display:grid;place-items:center;font-size:26px;border-radius:13px;width:54px;height:54px;background:#fce8eb;color:#922532}
.dorfer382-audit .formgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}
.dorfer382-audit input,.dorfer382-audit select{min-height:47px;border:1px solid #d2d8df;border-radius:11px;padding:11px;max-width:100%;width:100%}
.dorfer382-audit label{display:grid;gap:6px;font-weight:650;font-size:.85rem}
.dorfer382-audit .btn.primary{min-height:49px;justify-self:start}
.dorfer382-team .dorfer38-log{padding:15px;border:1px solid #e6e8ec;border-radius:13px;margin:9px 0}
/* Gleiches Design für die Anmeldung, ohne Authentifizierungsablauf zu verändern. */
.auth{background:radial-gradient(ellipse at 85% 0%,#52525c55,transparent 48%),linear-gradient(140deg,#24272c 0%,#30353e 48%,#eeeef0 48%);padding:clamp(16px,4vw,35px)}
.auth .login{width:min(480px,100%);border:1px solid #eaebec;border-radius:24px;padding:clamp(24px,4vw,38px);box-shadow:0 28px 70px #151a2240}
.auth .login-logo{display:block;max-width:215px;width:68%;max-height:95px;object-fit:contain;margin:0 auto 18px}
.auth .login h1{font-size:clamp(26px,4vw,33px);color:#222b35;margin:4px 0 7px;text-align:center}
.auth .login>p{text-align:center;margin-bottom:21px}
.auth .login .input-group input{min-height:51px;border-radius:12px;padding:12px 13px}
.auth .login #loginButton{min-height:52px;font-size:1rem;border-radius:12px}
.auth .login .input-group input:focus-visible{outline:3px solid #dfa6ac;outline-offset:1px}
@media(max-width:730px){.dorfer382-options,.dorfer382-editor .dorfer38-lines,.dorfer382-payment,.dorfer382-upload-form,.dorfer382-audit .formgrid{grid-template-columns:1fr}.dorfer382-upload-form>button{grid-column:1}.dorfer382-file-actions{grid-column:1/-1}.dorfer382-editor .formgrid{grid-template-columns:1fr}.dorfer382-section-head .btn{width:100%}.dorfer382-payment button{grid-column:1}.dorfer382-file{grid-template-columns:43px minmax(0,1fr)}}
/* Administrationsseite (Rollenrechte) im Portalstil, ohne Rechte-Logik zu verändern. */
.dorfer28-rights{border-color:#e1e4e8;box-shadow:0 5px 20px #1b26350c}
.dorfer28-rights .dorfer28-tabs .btn{min-height:49px;padding:11px 19px;font-size:.95rem}
.dorfer28-rights-grid{gap:12px}
.dorfer28-right-row{border-radius:14px;padding:16px;border-color:#e1e6eb;background:#fdfefe}
.dorfer28-right-row>span{font-size:.9rem;color:#293443}
.dorfer28-right-controls{gap:9px}
.dorfer28-right-controls .btn{min-height:43px;border-radius:10px;padding:9px 15px;font-size:.9rem}
.dorfer28-rights>.dorfer38-actions .btn{min-height:49px;padding:12px 16px}
@media(max-width:560px){.dorfer28-rights .dorfer28-tabs{display:grid;grid-template-columns:1fr 1fr}.dorfer28-rights .dorfer28-tabs .btn{white-space:normal}}

/* V14.41.8 – Hinweisfenster „Anzahlung fällig am“ (statt Browser-Fenster) */
.v14418-deposit{width:min(520px,calc(100vw - 24px))}
.v14418-deposit-head{display:flex;gap:14px;align-items:flex-start}
.v14418-deposit-icon{flex:none;width:46px;height:46px;border-radius:12px;background:#fff4e5;display:grid;place-items:center;font-size:24px}
.v14418-deposit-head h2{margin:2px 0 4px;font-size:1.2rem;color:#7a4100}
.v14418-deposit-head p{margin:0;color:#444;line-height:1.4}
.v14418-deposit-dates{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:18px 0 6px}
.v14418-deposit-dates>div{border:1px solid #e3e6e8;border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:2px;min-width:0}
.v14418-deposit-dates small{color:#666;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em}
.v14418-deposit-dates strong{font-size:1.35rem}
.v14418-deposit-dates span{color:#555;font-size:.9rem}
.v14418-deposit-dates .is-proposal{border-color:#1b7a3a;background:#f2faf4}
.v14418-deposit-dates .is-proposal small{color:#1b7a3a}
.v14418-deposit-actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap;margin-top:16px}
.v14418-deposit-actions .btn{min-height:48px;padding:12px 18px;white-space:normal}
@media(max-width:520px){.v14418-deposit-dates{grid-template-columns:1fr}.v14418-deposit-actions .btn{flex:1 1 100%}}

/* V14.41.9 – Ordner „Abrufaufträge“ und Abruf-Modus der Seite „Montagetermin vormerken“ */
.v14419-calloff{margin:14px 0;padding:0;border:1px solid #e3e6e8;border-radius:14px;overflow:hidden}
.v14419-calloff>summary{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 16px;cursor:pointer;min-height:48px;list-style:none}
.v14419-calloff>summary::-webkit-details-marker{display:none}
.v14419-calloff>summary::after{content:'⌄';font-size:1.1rem;color:#666}
.v14419-calloff[open]>summary::after{content:'⌃'}
.v14419-calloff>:not(summary){margin-left:16px;margin-right:16px}
.v14419-badge{margin-left:auto;background:#fff4e5;color:#7a4100;border-radius:999px;padding:3px 10px;font-size:.82rem;font-weight:600;white-space:nowrap}
.v14419-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px;margin-bottom:10px}
.v14419-tabs .btn{min-height:44px;white-space:normal}
.v14419-list{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
.v14419-row{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;border:1px solid #e6ebed;border-left:4px solid #b9c2c8;border-radius:10px;padding:10px 12px}
.v14419-row.v14419-offen{border-left-color:#d97706}
.v14419-row.v14419-festgelegt{border-left-color:#1b7a3a}
.v14419-row>div:first-child{min-width:0;flex:1 1 240px;display:flex;flex-direction:column;gap:3px}
.v14419-row small{color:#555;line-height:1.4}
.v14419-actions{display:flex;gap:8px;flex-wrap:wrap}
.v14419-actions .btn,.v14419-calloff-box .btn{min-height:44px;white-space:normal}
.v14419-calloff-box{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:12px 0;padding:12px 14px;border-radius:12px;border:1px solid #e3e6e8;background:#fafbfb}
.v14419-calloff-box.v14419-offen{border-color:#f0c48a;background:#fff8ee}
.v14419-calloff-box.v14419-festgelegt{border-color:#9fd3b0;background:#f2faf4}
.v14419-calloff-box>div{display:flex;flex-direction:column;gap:2px;min-width:0}
.v14419-calloff-box small{color:#555;text-transform:uppercase;letter-spacing:.04em;font-size:.75rem}
.v14419-calloff-box .small-note{flex-basis:100%;margin:0}
.v14419-banner{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;max-width:680px;margin:0 auto 14px;box-sizing:border-box;border-left:4px solid #d97706}
.v14419-banner>div{display:flex;flex-direction:column;gap:2px;min-width:0}
.v14419-banner small{color:#666;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em}
.v14419-banner strong{overflow-wrap:anywhere}
.v14419-book-fixed{display:flex;flex-direction:column;gap:4px;padding:10px 12px;border-radius:10px;background:#f6f8f9;margin:6px 0 10px}
.v14419-book-fixed small{color:#555;line-height:1.4}
@media(max-width:700px){.v14419-banner{grid-template-columns:1fr}.v14419-actions .btn,.v14419-calloff-box .btn{flex:1 1 100%}}

/* V14.41.10 – Hinweis vereinbarte Doppel-KW im Planungsfenster */
.v144110-window{display:flex;flex-direction:column;gap:3px;margin:8px 0 12px;padding:10px 12px;border-radius:10px;border:1px solid #9fd3b0;background:#f2faf4}
.v144110-window span{color:#444;font-size:.9rem}
.v144110-window.is-out{border-color:#f0c48a;background:#fff8ee}
.v144110-window .v144110-out{color:#7a4100;font-weight:600}

/* V14.41.15 – Monat/Jahr-Auswahl und Stand der Doppel-KW (Kaufvertrag, „Montagetermin vormerken“) */
.v144115-month-picker{display:flex;flex-direction:column;gap:6px;margin:6px 0 10px}
.v144115-month-row{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap}
.v144115-select{display:flex;flex-direction:column;gap:4px;flex:1 1 140px;min-width:0}
.v144115-select span{font-size:.85rem;color:#555}
.v144115-select select{min-height:46px;width:100%;font-size:1rem}
.v144115-step{min-width:46px;min-height:46px;padding:0 12px;font-size:1rem}
.v144115-manual h4{margin:10px 0 2px}
.v144115-week-grid .v144115-week{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left}
.v144115-week small{font-size:11px;font-weight:600}
.v144115-week-frei{border-color:#9fd3b0;background:#f2faf4}.v144115-week-frei small{color:#1d653a}
.v144115-week-wenig{border-color:#e6d29c;background:#fff8e4}.v144115-week-wenig small{color:#6b581e}
.v144115-week-voll{border-color:#e7a9b0;background:#fdf0f1}.v144115-week-voll small{color:#922a35}
.v144115-week-zu_frueh,.v144115-week-vergangen,.v144115-week-zu_spaet{background:#f3f3f3;color:#777}
.v144115-week:disabled{opacity:.75;cursor:not-allowed}
.v144115-full-warning,.v144115-inbox-warning{margin:8px 0;padding:10px 12px;border-radius:10px;border:1px solid #f0c48a;background:#fff8ee;color:#7a4100}
.v144115-full-warning p{margin:4px 0 0;color:#5c3a10}
.v144115-full-days{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.v144115-full-days li{display:flex;flex-direction:column;padding:8px 10px;border-radius:8px;background:#fdf0f1;border:1px solid #e7a9b0}
.v144115-full-days span{font-size:.9rem;color:#5c1d24}
@media(max-width:520px){.v144115-select{flex:1 1 100%}.v144115-month-row .v144115-step{flex:1 1 calc(50% - 4px);order:2}}
/* V14.49.0: Küchen-Waren wie Renovierung, Umzug bei der Lieferadresse, Ort aus PLZ */
.v14490-moving{margin:4px 0 8px}.v14490-moving[hidden],.v14490-moving [hidden]{display:none!important}
.v14490-plz-box{grid-column:1/-1}.v14490-plz-box:empty{display:none}
.v14490-plz-cities{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.v14490-plz-cities small{flex-basis:100%;color:var(--muted,#666)}
.v14490-plz-cities .btn{min-height:40px}
.v14490-kitchen-line{margin:6px 0 12px}
.v14490-std{margin:6px 0}.v14490-std [hidden]{display:none!important}
.v14490-legacy{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:8px 0}
.v14490-kitchen-lines td:last-child{overflow-wrap:anywhere}
