.arf-app{max-width:1100px;margin:20px auto;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.arf-card{background:#fff;border:1px solid #d9dee5;border-radius:0;padding:22px;margin:0 0 18px;box-shadow:0 2px 10px rgba(0,0,0,.04)}.arf-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.arf-card label{display:flex;flex-direction:column;gap:6px;font-weight:600;margin-bottom:12px}.arf-card input,.arf-card select,.arf-card textarea{font-family:inherit;font-size:var(--augite-field-font-size);line-height:var(--augite-control-line-height);font-weight:var(--augite-control-weight);border:1px solid #b7c0ca;border-radius:0;padding:var(--augite-control-pad-area);background:#fff}.arf-card button{font:inherit;padding:10px 14px;border-radius:0;border:1px solid #9aa6b2;cursor:pointer}.arf-card .arf-primary{background:#111827;color:#fff;border-color:#111827}.arf-result{margin-top:14px;padding:10px 0}.arf-result--error{color:#b91c1c;font-weight:600}.arf-list>div{display:grid;grid-template-columns:1fr auto;gap:4px 12px;padding:12px 0;border-bottom:1px solid #e6e9ed}.arf-list small{grid-column:1/-1}.arf-scan-actions{display:flex;gap:10px;margin-bottom:14px}.arf-ops video{width:100%;max-height:420px;background:#111;border-radius:0;margin-top:14px}.arf-ops canvas{width:100%;height:260px;border:1px solid #b7c0ca;border-radius:0;touch-action:none;background:#fff}.arf-ops textarea{width:100%;margin-top:12px}.arf-error{border-color:#b91c1c}@media(max-width:700px){.arf-grid{grid-template-columns:1fr}.arf-card{border-radius:0;padding:16px}}

.arf-hp{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important}

.arf-product-line{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin:0 0 16px}.arf-product-line>div:first-child{display:flex;flex-direction:column;gap:3px}.arf-product-line small{opacity:.7}.arf-stock-badge{display:inline-flex;align-items:center;gap:7px;border-radius:0;padding:6px 10px;font-size:.9rem;font-weight:650;background:#f3f4f6;border:1px solid #d1d5db;white-space:nowrap}.arf-stock-badge.is-available:before,.arf-stock-badge.is-unavailable:before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:currentColor}.arf-stock-badge.is-available{color:#166534;background:#f0fdf4;border-color:#bbf7d0}.arf-stock-badge.is-unavailable{color:#991b1b;background:#fef2f2;border-color:#fecaca}.arf-availability-inline{margin:-2px 0 16px;padding:10px 12px;border-radius:0;background:#f8fafc;border:1px solid #e2e8f0;font-size:.95rem}.arf-availability-inline.is-available{border-color:#bbf7d0}.arf-availability-inline.is-unavailable{border-color:#fecaca}.arf-customer-fields{margin-top:6px}@media(max-width:700px){.arf-product-line{flex-direction:column}.arf-stock-badge{white-space:normal}}
.arf-ops-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.arf-ops-heading h2{margin-top:0}.arf-ops-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px}.arf-ops-booking{display:flex!important;flex-direction:column;align-items:flex-start;text-align:left;background:#fff!important;border:1px solid #d9dee5!important}.arf-ops-booking span,.arf-ops-booking small{margin-top:3px}.arf-status-pill{display:inline-flex;border:1px solid #d1d5db;border-radius:0;padding:5px 9px;font-size:.85rem;background:#f8fafc}.arf-ops-assets{display:grid;gap:8px;margin:14px 0}.arf-ops-item{display:flex;flex-direction:column;border:1px solid #e5e7eb;border-radius:0;padding:10px}.arf-ops-actions{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}.arf-process-card{border-top:1px solid #e5e7eb;margin-top:16px;padding-top:16px}.arf-check-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:10px}.arf-check-grid fieldset,.arf-return-asset{border:1px solid #d9dee5;border-radius:0;padding:12px;margin:0 0 12px}.arf-check-grid label{font-weight:500;flex-direction:row;align-items:center}.arf-media-box{display:grid;grid-template-columns:minmax(140px,220px) minmax(220px,1fr) minmax(180px,1fr) auto;gap:8px;align-items:center;border:1px dashed #cbd5e1;border-radius:0;padding:12px;margin:14px 0}.arf-media-box h4{grid-column:1/-1;margin:0}.arf-media-box input,.arf-media-box select{width:100%}@media(max-width:800px){.arf-media-box{grid-template-columns:1fr}.arf-ops-heading{flex-direction:column}}
.arf-booking-rules{margin:12px 0;padding:10px 12px;border:1px solid rgba(0,0,0,.12);border-radius:0;background:rgba(0,0,0,.025)}
.arf-booking-rules p{margin:.3em 0}

/* RentalFlow customer portal */
.arf-portal-header{display:flex;align-items:center;justify-content:space-between;gap:20px}.arf-portal-header h2{margin:0 0 4px}.arf-portal-header p{margin:0;opacity:.72}.arf-portal-kpis{display:flex;gap:10px;flex-wrap:wrap}.arf-portal-kpis span{display:flex;flex-direction:column;min-width:118px;padding:10px 12px;border:1px solid #e2e8f0;border-radius:0;background:#f8fafc}.arf-portal-kpis strong{font-size:1.3rem}.arf-portal-section>h3{margin-top:0}.arf-portal-booking,.arf-portal-damage{border:1px solid #e2e8f0;border-radius:0;margin:0 0 10px;background:#fff}.arf-portal-booking>summary,.arf-portal-damage>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 14px;cursor:pointer}.arf-portal-booking>summary span:first-child{display:flex;flex-direction:column}.arf-portal-booking>summary small{font-weight:400;opacity:.7;margin-top:3px}.arf-portal-booking-body,.arf-portal-damage>p,.arf-portal-damage>.arf-portal-media{padding:0 14px 14px}.arf-portal-items{margin:8px 0 14px;padding-left:20px}.arf-portal-items li{margin:5px 0}.arf-portal-items small{display:block;opacity:.7}.arf-portal-media{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}.arf-portal-media a{display:flex;flex-direction:column;gap:4px;color:inherit;text-decoration:none}.arf-portal-media img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:0;border:1px solid #e2e8f0}.arf-message-list{display:grid;gap:8px;margin-bottom:16px}.arf-message{border:1px solid #e2e8f0;border-radius:0;padding:10px 12px;background:#f8fafc}.arf-message header{font-weight:650}.arf-message header small{font-weight:400;opacity:.65;margin-left:5px}.arf-message p{margin:7px 0 0}.arf-message-outbound{background:#f9fafb}.arf-message-inbound{background:#eff6ff}.arf-portal-message-form{display:grid;grid-template-columns:1fr 1fr;gap:10px}.arf-portal-message-form label:nth-child(3),.arf-portal-message-form button,.arf-portal-message-form [data-message-result]{grid-column:1/-1}.arf-status-pill.is-completed,.arf-status-pill.is-available,.arf-status-pill.arf-status-completed,.arf-status-pill.arf-status-available{background:#f0fdf4;border-color:#bbf7d0;color:#166534}.arf-status-pill.is-cancelled,.arf-status-pill.is-damage_case,.arf-status-pill.arf-status-cancelled,.arf-status-pill.arf-status-damage_case{background:#fef2f2;border-color:#fecaca;color:#991b1b}
/* REQ-UI-STATUS-LABELS-SYSTEMWIDE-001 / decision 57: "Überfällig" always uses the warning state (existing warning palette of .arf-ops-state.is-progress), not the danger palette. */
.arf-status-pill.is-overdue,.arf-status-pill.arf-status-overdue{color:#7a5600;background:#fff4d6;border-color:#e8d49a}@media(max-width:700px){.arf-portal-header{align-items:flex-start;flex-direction:column}.arf-portal-kpis{width:100%}.arf-portal-kpis span{flex:1;min-width:90px}.arf-portal-message-form{grid-template-columns:1fr}.arf-portal-message-form>*{grid-column:1!important}}
.arf-booking-options{border:1px solid #e2e8f0;border-radius:0;padding:12px 14px;margin:14px 0}.arf-booking-options legend{font-weight:700;padding:0 5px}.arf-option-line{display:grid!important;grid-template-columns:1fr auto;gap:12px;align-items:start!important;border-bottom:1px solid #eef2f7;padding:8px 0;margin:0!important}.arf-option-line>span:first-child{display:grid;grid-template-columns:auto 1fr;gap:0 7px}.arf-option-line small{grid-column:2;display:block;font-weight:400;opacity:.72}.arf-option-rule{display:block;margin:3px 0 8px 27px;opacity:.72}.arf-booking-related{background:#f8fafc;border:1px solid #e2e8f0;border-radius:0;padding:12px 14px;margin:14px 0}.arf-booking-related h4{margin:5px 0}.arf-booking-related ul{margin:5px 0 10px 18px}.arf-booking-related small{opacity:.7}@media(max-width:600px){.arf-option-line{grid-template-columns:1fr}}

/* REV008: compact two-step booking on AssetCore detail pages */
.arf-asset-booking--compact.arf-app{max-width:760px;margin:12px 0}
.arf-compact-booking-card{padding:14px 16px!important;border-radius:0!important;box-shadow:none!important;margin:0!important}
.arf-compact-booking-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.arf-compact-booking-head h3{font-size:1.05rem;line-height:1.25;margin:0 0 2px}
.arf-compact-booking-head small{display:block;font-size:.82rem;font-weight:400;opacity:.68}
.arf-compact-availability{margin:8px 0 0;font-size:.86rem;line-height:1.35;min-height:1.35em}
.arf-compact-availability.is-available{color:#166534}.arf-compact-availability.is-unavailable{color:#991b1b}
.arf-compact-first-actions{display:flex;justify-content:flex-end;margin-top:9px}
.arf-compact-continue{padding:7px 11px!important;font-size:.88rem!important}
.arf-compact-continue:disabled{opacity:.45;cursor:not-allowed}
.arf-booking-details{border-top:1px solid #e5e7eb;margin-top:13px;padding-top:13px}
.arf-booking-step-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.arf-booking-step-head>div{display:flex;flex-direction:column;gap:2px}.arf-booking-step-head small{opacity:.7;font-weight:400}
.arf-link-button{background:transparent!important;border:0!important;padding:3px 0!important;text-decoration:underline;font-size:.82rem!important;color:inherit}
.arf-booking-detail-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:9px!important}
.arf-booking-detail-grid label{font-size:.84rem;margin-bottom:7px!important}.arf-booking-detail-grid input{padding:8px!important}
.arf-exact-availability{margin:2px 0 10px!important;padding:7px 9px!important;font-size:.84rem!important}
.arf-compact-options,.arf-compact-rules{border:1px solid #e2e8f0;border-radius:0;margin:9px 0;background:#fafafa}
.arf-compact-options>summary,.arf-compact-rules>summary{cursor:pointer;padding:8px 10px;font-size:.88rem;font-weight:650}
.arf-compact-options .arf-booking-options{border:0;margin:0;padding:0 10px 8px}.arf-compact-rules .arf-booking-rules{border:0;margin:0;padding:0 10px 8px;background:transparent}
.arf-asset-booking--compact .arf-customer-fields{gap:9px!important;margin-top:10px}.arf-asset-booking--compact .arf-customer-fields label{font-size:.84rem;margin-bottom:7px!important}
.arf-asset-booking--compact .arf-customer-fields input,.arf-asset-booking--compact textarea{padding:8px!important}
.arf-label-optional{font-weight:400;opacity:.65}
.arf-asset-booking--compact .arf-result{font-size:.88rem;margin-top:8px;padding:6px 0}
@media(max-width:700px){.arf-asset-booking--compact.arf-app{max-width:none;margin:10px 0}.arf-booking-detail-grid{grid-template-columns:1fr 1fr!important}.arf-booking-detail-grid label:last-child{grid-column:1/-1}.arf-compact-booking-head{align-items:flex-start}}
@media(max-width:460px){.arf-booking-detail-grid{grid-template-columns:1fr!important}.arf-booking-detail-grid label:last-child{grid-column:auto}.arf-compact-first-actions .arf-primary{width:100%}}

/* REV009: controlled RentalFlow date-range picker; no native browser date-field UI */
.arf-asset-booking--compact,.arf-asset-booking--compact *{box-sizing:border-box}
.arf-range-picker{position:relative;width:100%;max-width:100%;z-index:20}
.arf-range-trigger{appearance:none!important;-webkit-appearance:none!important;width:100%!important;min-height:48px!important;display:flex!important;align-items:center!important;justify-content:space-between!important;gap:12px!important;text-align:left!important;padding:8px 12px!important;background:#fff!important;color:inherit!important;border:1px solid #b7c0ca!important;border-radius:0!important;box-shadow:none!important;line-height:1.2!important}
.arf-range-trigger:hover{border-color:#7b8794!important;background:#fff!important}
.arf-range-trigger:focus-visible{outline:2px solid currentColor!important;outline-offset:2px!important}
.arf-range-trigger-copy{display:flex;flex-direction:column;gap:2px;min-width:0}
.arf-range-label{font-size:.72rem;font-weight:650;letter-spacing:.01em;opacity:.66}
.arf-range-value{display:block;max-width:100%;font-size:.92rem;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.arf-range-trigger:not(.has-value) .arf-range-value{font-weight:550;opacity:.72}
.arf-range-icon{flex:0 0 auto;width:28px;height:28px;display:grid;place-items:center;border-radius:0;background:#f3f4f6;font-size:17px;line-height:1}
.arf-range-popover{position:absolute;left:0;top:calc(100% + 7px);width:min(620px,calc(100vw - 32px));max-width:100%;padding:12px;background:#fff;border:1px solid #d9dee5;border-radius:0;box-shadow:0 14px 38px rgba(15,23,42,.16);z-index:9999;overflow:hidden}
.arf-range-popover[hidden]{display:none!important}
.arf-range-toolbar{display:grid;grid-template-columns:34px 1fr 34px;align-items:center;gap:8px;margin-bottom:8px}
.arf-range-nav{appearance:none!important;-webkit-appearance:none!important;width:34px!important;height:34px!important;min-width:34px!important;padding:0!important;border:1px solid #d5dae0!important;border-radius:0!important;background:#fff!important;color:#1f2937!important;font-size:22px!important;line-height:1!important;display:grid!important;place-items:center!important}
.arf-range-nav:disabled{opacity:.35;cursor:not-allowed!important}
.arf-range-month-labels{display:grid;grid-template-columns:1fr 1fr;gap:20px;text-align:center;font-size:.87rem}
.arf-range-calendars{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.arf-range-calendar{min-width:0}
.arf-range-weekdays,.arf-range-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}
.arf-range-weekdays{margin-bottom:3px}
.arf-range-weekdays span{display:grid;place-items:center;height:23px;font-size:.68rem;font-weight:700;opacity:.52}
.arf-range-day,.arf-range-day-spacer{aspect-ratio:1/1;min-width:0}
.arf-range-day{appearance:none!important;-webkit-appearance:none!important;display:grid!important;place-items:center!important;width:100%!important;min-height:0!important;padding:0!important;margin:0!important;border:0!important;border-radius:0!important;background:transparent!important;color:#1f2937!important;font-size:.79rem!important;font-weight:500!important;line-height:1!important;box-shadow:none!important}
.arf-range-day:hover:not(:disabled){background:#eef2f7!important}
.arf-range-day.is-in-range{border-radius:0!important;background:#eef2f7!important}
.arf-range-day.is-start,.arf-range-day.is-end{background:#111827!important;color:#fff!important;border-radius:0!important;font-weight:700!important}
.arf-range-day:disabled,.arf-range-day.is-disabled{opacity:.25!important;cursor:not-allowed!important}
.arf-range-day:focus-visible{outline:2px solid #111827!important;outline-offset:1px!important;position:relative;z-index:2}
.arf-range-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px;padding-top:10px;border-top:1px solid #eef1f4}
.arf-range-hint{font-size:.78rem;line-height:1.25;opacity:.72;min-width:0}
.arf-range-footer-actions{display:flex;align-items:center;gap:10px;flex:0 0 auto}
.arf-range-apply{padding:6px 10px!important;font-size:.8rem!important}
.arf-range-apply:disabled{opacity:.4;cursor:not-allowed!important}
@media(max-width:620px){
  .arf-range-popover{width:min(330px,calc(100vw - 28px));padding:10px}
  .arf-range-calendars{grid-template-columns:1fr;gap:0}
  .arf-range-calendar--secondary,.arf-range-month-labels strong:last-child{display:none}
  .arf-range-month-labels{grid-template-columns:1fr}
  .arf-range-footer{align-items:flex-start;flex-direction:column}
  .arf-range-footer-actions{width:100%;justify-content:flex-end}
}
@media(max-width:380px){
  .arf-range-popover{left:-4px;width:calc(100vw - 22px)}
  .arf-range-trigger{min-height:46px!important;padding:7px 10px!important}
  .arf-range-value{font-size:.86rem}
}
.arf-range-icon svg{display:block;width:16px;height:16px}

/* REV010: multi-asset cart and request checkout */
.arf-cart-link{display:inline-flex;align-items:center;gap:6px;text-decoration:none}.arf-cart-count{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:0;background:var(--ars-accent-strong,#b84e08);color:#fff;font-size:.75rem;font-weight:750;line-height:1}
.arf-cart-page.arf-app,.arf-checkout.arf-app{max-width:1040px}.arf-cart-shell{padding:20px!important}.arf-cart-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:16px}.arf-cart-head h2,.arf-checkout h2{margin:.15em 0 .2em}.arf-cart-head p{margin:0;opacity:.72}.arf-eyebrow{display:block;color:var(--ars-accent-strong,#b84e08);font-size:.72rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase}.arf-muted{opacity:.7}.arf-secondary-link{display:inline-flex;align-items:center;gap:5px;color:var(--ars-ink,#14181b);text-decoration:none;font-weight:650}.arf-secondary-link svg{width:1em;height:1em;flex:none}.arf-secondary-link:hover{text-decoration:underline}.arf-button-link{display:inline-flex;align-items:center;justify-content:center;text-decoration:none!important;padding:var(--augite-button-pad);border-radius:0;background:var(--ars-accent-strong,#b84e08);color:#fff!important;font-weight:var(--augite-button-weight)}.arf-button-link:hover{background:var(--ars-accent-strong-hover,#9a4307)}
.arf-cart-period{max-width:620px;margin:0 0 18px}.arf-cart-period .arf-result{min-height:0;margin:6px 0 0;padding:0;font-size:.85rem}.arf-cart-period-summary{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;padding:10px 12px;margin:0 0 10px;background:#f7f8f9;border:1px solid #e1e2e4;border-radius:0}.arf-cart-period-summary strong{font-size:.98rem;color:var(--ars-ink,#14181b)}.arf-cart-period-summary small{opacity:.67}.arf-cart-items{display:grid;gap:8px}.arf-cart-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;padding:12px 0;border-bottom:1px solid #e7eaec}.arf-cart-item>div:first-child{display:grid;gap:2px;min-width:0}.arf-cart-item>div:first-child strong{font-size:.96rem}.arf-cart-item>div:first-child small{opacity:.62;overflow-wrap:anywhere}.arf-cart-item-controls{display:flex;align-items:center;gap:12px}.arf-cart-item-controls label{display:flex!important;flex-direction:row!important;align-items:center!important;gap:7px!important;margin:0!important;font-size:.82rem}.arf-cart-item-controls input[type=number]{width:72px;min-width:0;padding:7px!important}.arf-cart-item-qty{font-weight:700;white-space:nowrap}.arf-link-danger{appearance:none;background:transparent!important;border:0!important;color:#a12727!important;text-decoration:underline;padding:4px!important;font-size:.8rem!important}.arf-cart-required,.arf-cart-recommendations{margin:14px 0 0;padding:12px 14px;border-radius:0}.arf-cart-required{background:#fff8e5;border:1px solid #ead49b;color:#684b00}.arf-cart-required ul{margin:7px 0 0 18px}.arf-cart-recommendations{background:#f6f7f9;border:1px solid #e1e2e4}.arf-cart-rec-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:9px}.arf-cart-rec{display:grid!important;grid-template-columns:1fr!important;gap:2px!important;text-align:left!important;padding:10px 11px!important;background:#fff!important;border:1px solid #d4d5d7!important;border-radius:0!important;color:inherit!important}.arf-cart-rec:hover{border-color:var(--ars-green,#d9600a)!important}.arf-cart-rec-body>span{font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:#8a5a00}.arf-cart-rec-body>strong{font-size:.9rem}.arf-cart-rec-body>small{font-size:.75rem;opacity:.68}.arf-cart-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:18px;padding-top:14px;border-top:1px solid #e7eaec}.arf-cart-actions[hidden]{display:none!important}.arf-cart-add-row{display:grid;grid-template-columns:minmax(90px,120px) minmax(170px,1fr);gap:10px;align-items:end;margin-top:10px}.arf-cart-add-row label{margin:0!important;font-size:.82rem}.arf-cart-add-row input{min-height:42px}.arf-cart-add-row .arf-primary{min-height:42px;background:var(--ars-accent-strong,#b84e08);color:#fff;border-color:var(--ars-accent-strong,#b84e08);font-weight:700}.arf-cart-add-row .arf-primary:disabled{opacity:.45}.arf-cart-add-row .arf-primary:not(:disabled):hover{background:var(--ars-accent-strong-hover,#9a4307)}
.arf-checkout-layout{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(280px,.85fr);gap:18px;align-items:start}.arf-checkout-form,.arf-checkout-summary{margin:0!important}.arf-checkout-summary{position:sticky;top:24px}.arf-fieldset{border:1px solid #e0e4e7;border-radius:0;padding:12px 14px;margin:14px 0}.arf-fieldset legend{padding:0 5px;font-weight:750}.arf-choice-row{display:flex;gap:18px;flex-wrap:wrap}.arf-choice-row label{display:flex!important;flex-direction:row!important;align-items:center!important;gap:6px!important;margin:0!important;font-weight:550}.arf-address-grid{grid-template-columns:2fr .7fr!important}.arf-checkout-notice{padding:11px 12px;margin:12px 0;background:#f4f5f6;border-left:4px solid #d9600a;font-size:.84rem;line-height:1.4}.arf-checkout-form>button[type=submit]{width:100%;min-height:44px;background:var(--ars-accent-strong,#b84e08);color:#fff;border-color:var(--ars-accent-strong,#b84e08);font-weight:750}.arf-checkout-form>button[type=submit]:hover{background:var(--ars-accent-strong-hover,#9a4307)}.arf-checkout-summary .arf-cart-item{grid-template-columns:1fr auto}.arf-checkout-summary .arf-cart-required{font-size:.83rem}
@media(max-width:800px){.arf-checkout-layout{grid-template-columns:1fr}.arf-checkout-summary{position:static;order:-1}.arf-cart-rec-list{grid-template-columns:1fr}}
@media(max-width:600px){.arf-cart-shell{padding:15px!important}.arf-cart-head,.arf-cart-actions{align-items:stretch;flex-direction:column}.arf-cart-item{grid-template-columns:1fr;gap:8px}.arf-cart-item-controls{justify-content:space-between}.arf-cart-period-summary{align-items:flex-start;flex-direction:column;gap:2px}.arf-cart-add-row{grid-template-columns:90px 1fr}.arf-address-grid{grid-template-columns:1fr!important}}
@media(max-width:390px){.arf-cart-add-row{grid-template-columns:1fr}.arf-cart-add-row .arf-primary{width:100%}}
.arf-cart-page .arf-empty-state{padding:26px 18px;text-align:center;background:#f7f8f8;border:1px dashed #d5dadd;border-radius:0}.arf-cart-page .arf-empty-state strong{display:block;color:var(--ars-ink,#14181b)}.arf-cart-page .arf-empty-state p{margin:5px 0 0;opacity:.68}
.arf-privacy-note{margin:10px 0 14px;font-size:.78rem;line-height:1.45;opacity:.76}.arf-privacy-note a{color:var(--ars-ink,#14181b);text-decoration:underline}
.arf-privacy-notice-box{display:flex;align-items:flex-start;gap:10px;background:#fff8e5!important;border-left:4px solid #ead49b!important}.arf-privacy-notice-box .arf-checkout-notice-icon{flex:0 0 auto;width:20px;height:20px;color:#8a5a00;margin-top:1px}.arf-privacy-notice-box .arf-checkout-notice-icon svg{width:100%;height:100%}.arf-privacy-notice-box .arf-privacy-note{margin:0;opacity:.9}

/* REV011: Betriebshof / Operations – augite Rental Design, touch-first */
.arf-ops{--arf-ops-green:#d9600a;--arf-ops-green-2:#b84e08;--arf-ops-ink:#14181b;--arf-ops-text:#3e4144;--arf-ops-muted:#6b6f73;--arf-ops-paper:#fbfbfa;--arf-ops-soft:#f4f5f6;--arf-ops-line:#dcdcde;--arf-ops-warn:#8a5a00;--arf-ops-danger:#b32d2e;max-width:1180px;margin:22px auto 48px;color:var(--arf-ops-ink);font-family:Inter,"Helvetica Neue",Arial,sans-serif}
.arf-ops *{box-sizing:border-box}.arf-ops [hidden]{display:none!important}.arf-ops svg{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
/* REQ-DESIGN-PORTAL-LAYOUT/REQ-DESIGN-WPADMIN-LAYOUT ("Piktogramme verwenden vorhandenen
 * Symbolsatz"): default inline size for an .arf-ui-icon that has no more specific contextual
 * sizing rule (see the 38px/34px/26px/22px overrides elsewhere in this file for the larger,
 * already-styled spots) - since .arf-ops svg above is width/height:100% of its parent, an
 * .arf-ui-icon with no explicit size would otherwise collapse/render unpredictably. 1em scales
 * with the surrounding text, matching how these new inline pictograms (replacing raw ✓/⚠/×
 * glyphs) sit next to their label text. */
.arf-ui-icon{display:inline-grid;place-items:center;width:1em;height:1em;vertical-align:-0.15em}
.arf-ops-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:30px;margin:0 0 18px;padding:26px 28px;border-radius:0;background:var(--ars-accent-strong,#b84e08);color:#fff}.arf-ops-hero h1{margin:3px 0 7px;font-size:clamp(1.8rem,4vw,2.65rem);line-height:1.02;color:#fff}.arf-ops-hero p{max-width:760px;margin:0;color:#f9f0eb;font-size:.96rem}.arf-ops-eyebrow,.arf-ops-kicker{display:block;font-size:.7rem;font-weight:800;letter-spacing:.11em;text-transform:uppercase}.arf-ops-eyebrow,.arf-ops-kicker{color:var(--ars-accent-strong,#b84e08)}
.arf-ops-card{background:#fff;border:1px solid var(--arf-ops-line);border-radius:0;padding:20px 22px;margin:0 0 16px;box-shadow:0 2px 10px rgba(30,33,36,.035)}.arf-ops-section-head,.arf-ops-detail-head,.arf-process-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.arf-ops-section-head h2,.arf-ops-detail-head h2{margin:2px 0 0;font-size:1.45rem;line-height:1.15}.arf-ops-section-head p,.arf-ops-detail-head p,.arf-process-head p{margin:5px 0 0;color:var(--arf-ops-muted);font-size:.88rem}
.arf-ops button{font:inherit}.arf-ops-primary,.arf-ops-secondary,.arf-ops-icon-button{display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:8px!important;min-height:var(--augite-control-h);padding:var(--augite-button-pad)!important;border-radius:0!important;font-weight:var(--augite-button-weight)!important;line-height:1.15!important;cursor:pointer}.arf-ops-primary{background:var(--ars-accent-strong,#b84e08)!important;border:1px solid var(--ars-accent-strong,#b84e08)!important;color:#fff!important}.arf-ops-primary:hover{background:var(--ars-accent-strong-hover,#9a4307)!important;border-color:var(--ars-accent-strong-hover,#9a4307)!important}.arf-ops-secondary{background:#fff!important;border:1px solid #c5c7c9!important;color:var(--arf-ops-ink)!important}.arf-ops-secondary:hover{border-color:var(--arf-ops-green)!important;color:var(--ars-accent-strong,#b84e08)!important}.arf-ops-icon-button{background:rgba(255,255,255,.1)!important;border:1px solid rgba(255,255,255,.3)!important;color:#fff!important}.arf-ops-icon-button:hover{background:rgba(255,255,255,.18)!important}
/* REQ-INTERN-KOPFLEISTE-VARIANTE-RENTALFLOW-001 Nachtrag (2026-09-27, Auftraggebermeldung "sieht
 * trotzdem falsch aus"): .arf-ops-primary/-secondary sind ueberall sonst <button>-Elemente (kein
 * text-decoration von Haus aus); die RentalCore-Subnav ist die erste Stelle, die sie an <a> haengt.
 * Eine allgemeine, spaeter geladene Linkregel (site.css: "a{color:...}", User-Agent-Vorgabe fuer
 * <a>: Unterstreichung) unterstreicht sie deshalb dort - ein unterstrichener Knopf sieht nicht wie
 * ein Knopf aus. Diese eine fehlende Eigenschaft, nicht die Farbe (die war bereits identisch, siehe
 * dieselbe Messrunde), war der eigentliche sichtbare Unterschied. Alle vier Link-Zustaende
 * (:link/:visited implizit ueber die Basisklasse, :hover, :focus, :active), damit sie beim
 * Ueberfahren/Fokussieren nicht wieder erscheint. */
a.arf-ops-primary,a.arf-ops-secondary,a.arf-ops-icon-button,
a.arf-ops-primary:hover,a.arf-ops-secondary:hover,a.arf-ops-icon-button:hover,
a.arf-ops-primary:focus,a.arf-ops-secondary:focus,a.arf-ops-icon-button:focus,
a.arf-ops-primary:active,a.arf-ops-secondary:active,a.arf-ops-icon-button:active{text-decoration:none!important}
/* REQ-INTERN-KOPFLEISTE-VARIANTE-RENTALFLOW-001 Nachtrag: der aktive Subnav-Tab ist KEIN eigener
 * Vollflaechen-Knopf (Auftraggeber: "die identischen Schaltflaechen") - alle vier Tabs bleiben
 * .arf-ops-secondary (inkl. Farbe/Rand/Textdekoration, absichtlich UNVERAENDERT gegenueber den
 * uebrigen drei - Konsistenz statt einer vierten, abweichenden Optik), "aktiv" ist nur eine
 * zurueckhaltende Randmarkierung (Rahmenelement, keine Textdekoration) plus aria-current="page"
 * (arf_intern_rentalcore_nav(), class-arf-intern.php). inset box-shadow statt border-bottom, weil
 * .arf-ops-secondary schon einen vollen 1px-Rand hat - dieselbe Bauform wie die bestehende
 * .arf-portal-more-item.is-active-Markierung weiter unten. Praefix body:not(.wp-admin) .arf-app.arf-ops
 * noetig: die REV022-Regel body:not(.wp-admin) .arf-app.arf-ops .arf-ops-primary/-secondary/...
 * {...box-shadow:none!important...} hat hoehere Spezifitaet (0,4,1) als eine reine
 * .arf-ops-actions>a.arf-ops-secondary.is-active-Regel (0,3,1) und wuerde sie sonst wieder
 * unsichtbar machen (gemessen: box-shadow blieb "none" ohne diesen Praefix). */
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-actions>a.arf-ops-secondary.is-active{box-shadow:inset 0 -3px 0 var(--ars-accent-strong,#b84e08)!important}
/* LIVE-TASK-2026-09-12-013 V2 (system-wide, not page-wide): .arf-ops-primary/-secondary/-icon-button
 * had no :focus-visible rule of their own anywhere, so keyboard focus on any button built from
 * these shared classes (across every /intern/ page and the RentalFlow admin shell) was invisible -
 * one class-level rule covers every current and future use instead of patching individual buttons. */
.arf-ops-primary:focus-visible,.arf-ops-secondary:focus-visible,.arf-ops-icon-button:focus-visible{outline:2px solid #d9600a!important;outline-offset:2px!important}
.arf-ops-icon-button:focus-visible{outline-color:#fff!important}
/* REQ-RENTALINVOICE-ACTION-LABEL-CLARITY-001: compact, pictogram-only modifier for the
 * existing .arf-ops-secondary/.arf-ops-primary button components (not a new button system -
 * same background/border/color, just square and icon-only), used by RentalInvoice's
 * /intern/rentalinvoice/ action row instead of the large text buttons a direct sponsor review
 * flagged as visually oversized for a per-row action list. */
.arf-ops-secondary.arf-ops-icon-only,.arf-ops-primary.arf-ops-icon-only{width:var(--augite-control-h)!important;min-width:var(--augite-control-h)!important;padding:0!important;gap:0!important}
.arf-ops-icon-only>svg{width:18px;height:18px;flex:none}
/* Reconciliation note (2026-09-13, merge of claude/p1-req-089-system-page-ia onto the live
 * branch): the live tip had independently authored an unconditional, always-on ":focus" floor
 * rule here (doubled .arf-ops-primary/-secondary/-icon-button/input/select/textarea/button
 * classes) for the exact same LIVE-TASK-2026-09-13-013 finding that this branch's own
 * ".arf-app.arf-ops :is(details[open],[role=dialog],...)" fallback further below already fixes
 * (same buttons: scanner dialog Uebernehmen/QR-Barcode/NFC lesen, disposition Speichern, ZUGFeRD/
 * XRechnung erzeugen - all inside an open dialog/<details>). Removed as a real duplicate rather
 * than kept alongside: this branch's fallback is scoped to open dialogs/disclosures only
 * (deliberately "keine Klick-Ringe" outside them, per the comment on that rule), while the live
 * tip's unconditional version would have reintroduced always-on click rings everywhere,
 * regressing that explicit design intent - and it made tests/test_req_layout_rule_violations_001_cascade.py's
 * mutation check (which proves the dialog-scoped fallback is what actually supplies the outline)
 * unable to distinguish "fixed" from "reverted" for these buttons, since the redundant rule kept
 * supplying an outline regardless. No coverage was lost: the same buttons are proven fixed by that
 * dialog-scoped rule instead (see its own mutation-tested proof below). */
.arf-ui-icon{width:19px;height:19px;display:inline-grid;place-items:center;flex:0 0 19px}
.arf-ops-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(285px,1fr));gap:9px;margin-top:14px}.arf-ops-booking{display:grid!important;grid-template-columns:38px minmax(0,1fr) auto 14px!important;align-items:center!important;gap:10px!important;width:100%;min-height:76px;padding:12px 13px!important;text-align:left!important;background:var(--arf-ops-paper)!important;border:1px solid var(--arf-ops-line)!important;border-radius:0!important;color:var(--arf-ops-ink)!important}.arf-ops-booking:hover{background:var(--arf-ops-soft)!important;border-color:#babcbe!important}.arf-ops-booking-icon,.arf-ops-summary-icon,.arf-work-asset-icon,.arf-media-icon{display:grid;place-items:center;width:38px;height:38px;padding:8px;border-radius:0;background:#eff0f1;color:var(--arf-ops-green);flex:0 0 38px}.arf-ops-booking-copy{display:grid;gap:1px;min-width:0}.arf-ops-booking-copy strong{font-size:.92rem}.arf-ops-booking-copy span{font-size:.84rem;color:var(--arf-ops-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.arf-ops-booking-copy small{font-size:.72rem;color:var(--arf-ops-muted)}.arf-ops-chevron{font-size:1.5rem;color:#8a8d91}.arf-ops-state{display:inline-flex;align-items:center;border-radius:0;padding:5px 8px;font-size:.68rem;font-weight:800;white-space:nowrap;background:#eeeff1;color:#5b5e62}.arf-ops-state.is-ok{background:#e8f4ec;color:#215f39}.arf-ops-state.is-alert{background:#fff1eb;color:#8c421a}
/* Wave 23: decision 98 - overdue pill in /intern/ lists = the one amber warning token of the status badges (admin.css .arf-admin-status[data-status="overdue"]); decision 79 - overdue with open blockers = error tone (admin.css danger badge). */
.arf-ops-state.is-warning{color:#7a5600;background:#fff4d6;border-color:#e8d49a}.arf-ops-state.is-danger{color:#b32d2e;background:#fcf0f1;border-color:#efc5c7}
.arf-ops-loading{padding:18px 0;color:var(--arf-ops-muted)}.arf-ops-empty{display:flex;align-items:center;gap:12px;margin-top:12px;padding:18px;border:1px dashed #cccdd0;border-radius:0;background:var(--arf-ops-paper)}.arf-ops-empty>.arf-ui-icon{display:grid;place-items:center;flex:0 0 34px;width:34px;height:34px;min-width:34px;min-height:34px;color:var(--arf-ops-green);overflow:hidden}.arf-ops-empty>.arf-ui-icon svg{display:block;width:22px!important;height:22px!important;max-width:22px!important;max-height:22px!important}.arf-ops-empty div{display:grid}.arf-ops-empty span{font-size:.82rem;color:var(--arf-ops-muted)}

/* REQ-INTERN-CONSOLIDATION M1: /intern/rentalcore/ ports several wp-admin RentalCore list-
 * page components (Kachel-Grid, Tabelle, Faktenliste) to the front end. wp-admin's own
 * .arf-metric-grid/.arf-admin-table/.arf-facts (admin.css) and WordPress core's own
 * widefat/striped table styling are not loaded on the front end at all, so these are real,
 * separate front-end declarations under the SAME class names and the same visual structure
 * (flat, border-radius:0, matching admin.css exactly) - not a differently-styled lookalike,
 * only using this stylesheet's own --arf-ops-* token names instead of wp-admin's --arf-* and
 * --augite-admin-* ones, which resolve to the identical canonical color values.
 * REQ-INTERN-LAYOUT-CALIBRATION LAY-003 (2026-09-13, found by the cascade-resolver sweep in
 * tests/test_req_layout_rule_violations_001_cascade.py): this comment used to spell the wp-admin
 * token family as "--arf-*" immediately followed by "/" - i.e. a literal comment terminator in
 * the middle of the comment. Browsers ended the comment there, parsed the remaining prose as the
 * selector of the next rule, and dropped the whole .arf-ops-filter-bar{display:flex;...} rule as
 * invalid, so the /intern/ filter bars never received their declared flex layout (computed styles
 * did not match the approved cascade). Reworded; the rule below is unchanged. */
/* REQ-BACKEND-FILTER-BAR-COLLAPSIBLE-ONE-ROW-001 (wave 12, decision 46): every /intern/ filter bar is rendered by the
 * shared ARF_Backend_UI component (collapsible behind a filter pictogram, one row on desktop); its row LAYOUT lives in
 * assets/css/backend-ui.css only. The former .arf-ops-filter-bar layout rules here (display/flex-wrap/gap/margin, the
 * search flex basis) and the REV321 one-row repair below them (LIVE-TASK-2026-09-14-109/-113: visible label inline-flex,
 * selects width:auto, button/link flex:0 0 auto - measured 47/47/49px) were folded into that component, so no second,
 * competing rule set remains. Only the visual control styling stays here (corners squared per the pill rule). */
.arf-ops-filter-bar input[type=search],.arf-ops-filter-bar select{min-height:var(--augite-control-h);padding:var(--augite-control-pad);border:1px solid var(--arf-ops-line);border-radius:0;font-family:inherit;font-size:var(--augite-field-font-size);line-height:var(--augite-control-line-height);font-weight:var(--augite-control-weight);background:#fff;color:var(--arf-ops-ink)}
.arf-metric-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:12px 0 4px;max-width:none}
.arf-metric-card{display:block;background:#fff;border:1px solid var(--arf-ops-line);border-top:4px solid var(--arf-ops-green);border-radius:0;padding:15px;text-decoration:none;color:var(--arf-ops-ink)}
.arf-metric-card:hover[href]{border-color:var(--arf-ops-green-2)}
.arf-metric-card strong{display:block;font-size:27px;line-height:1.1}
.arf-metric-card span{display:block;font-weight:650;margin-top:5px}
.arf-metric-card small{display:block;color:var(--arf-ops-muted);margin-top:4px}
.arf-metric-card--warn{border-top-color:var(--arf-ops-warn)}
.arf-metric-card--ok{border-top-color:var(--arf-ops-green)}
/* REQ-INTERN-KOPFLEISTE-VARIANTE-RENTALFLOW-001 Nachtrag 2 (2026-09-27, Auftraggeber woertlich:
   "Balken links wie in RentalFlow, aber weiterhin bis zu fuenf Kacheln mit Ueberlauf" - Entscheidung
   36 bleibt in Kraft): NUR die BAUFORM wird an RentalFlows .arf-ops-control-metric angeglichen (Balken
   links statt oben, Groessen/Abstaende), die DATENFORM (arf_metric_card()/arf_metric_group(), das
   3/5-Kachel-Budget samt "Weitere Kennzahlen"-Ueberlauf) bleibt unveraendert dieselbe PHP-Funktion -
   kein zweiter Renderer. arf_metric_card()/arf_metric_group() werden vom wp-admin-Dashboard
   mitgenutzt (class-arf-admin.php), das aber sein EIGENES, unabhaengiges Stylesheet admin.css mit
   einer eigenen .arf-metric-card-Kopie laedt (eigene --arf-*-Variablen, siehe admin.css Zeile 27) -
   public.css wird ausschliesslich von den front-end /intern/-Renderfunktionen in
   class-arf-shortcodes.php eingebunden (wp_enqueue_style('arf-public', ...)), nie von class-arf-admin.php.
   Diese Regel hier kann das wp-admin-Dashboard also gar nicht erreichen; body.augite-intern-page
   (arf_intern_body_class(), ein reiner body_class-Filter, laeuft nie auf wp-admin) ist trotzdem als
   zusaetzliche, "im Zweifel"-Absicherung gesetzt, wie schon fuer die Header-/Footer-Breite
   (siehe body.augite-intern-page weiter unten in dieser Datei). Farbzuordnung unveraendert aus der
   vorhandenen Top-Balken-Regel uebernommen (kein/--ok = gruen, --warn = warn-Farbe), nur die Seite
   des Balkens wechselt. Die Kundenportal-Ansicht ("Meine Buchungen") rendert NIRGENDS
   .arf-metric-card-Kacheln (nur die getrennte .arf-metric-list/-more-Ueberlaufliste, hier
   unangetastet) - Grep aller arf_metric_group()-Aufrufstellen bestaetigt: ausschliesslich
   class-arf-admin.php (wp-admin) und diese eine front-end Stelle (rentalcore_start_impl()). */
/* REQ-INTERN-TAGESINDIKATOREN-WIE-BETRIEBSLAGE-001 (2026-09-28, Auftraggeberbefund woertlich:
   "Tagesindikatoren und Betriebslage sind nicht identisch vom Layout und CSS. Bei
   Tagesindikatoren fehlen die oberen Raende an den Kacheln, dafuer haben sie eine Subzeile
   unter dem Titel. DAs muss raus. Analog machen wie bei Betriebslage!"): zwei Befunde, live
   gemessen (Chromium, angemeldet arf_manager, /intern/rentalcore/ + /intern/rentalcore/buchungen/):

   1. OBERER RAND FEHLTE. Die Zeile darueber (jetzt gleich) setzte `border-top:0` - anders als
      Betriebslage (.arf-ops-control-metric, siehe dort weiter unten in dieser Datei), deren Regel
      NUR die linke Seite ueberschreibt und Top/Rechts/Unten beim geerbten `border:1px solid
      var(--arf-ops-line)` (Grundregel .arf-metric-card oben in dieser Datei) belaesst. Gemessen
      (CSSOM-Gewinnerregel, `.arf-metric-card` matcht zwei Kandidaten: die Grundregel mit
      border-top:4px solid var(--arf-ops-green), UEBERSCHRIEBEN von genau dieser Regel mit
      border-top:0 - wirksam vorher 0px none): Tagesindikatoren maßen oben 0px none, rechts/unten
      1px solid rgb(220,220,222), links 4px solid Akzentfarbe. Betriebslage maß auf allen vier
      Seiten (Top/Rechts/Unten 1px solid rgb(220,220,222), Links 4px solid Akzentfarbe) - EXAKT
      das Sollbild. Reparatur: border-top explizit auf denselben 1px-Rahmen wie die drei anderen
      Seiten (nicht mehr 0, nicht mehr der 4px-Gruenbalken der Grundregel).
   2. SUBZEILE UNTER DEM TITEL. Die dritte Karten-Angabe aus ARF_Admin::daily_task_cards()
      (class-arf-admin.php, z.B. "prüfen und beantworten", "Rücknahme abschließen") rendert
      arf_metric_card() (class-arf-intern.php) als `<small>`; Betriebslage hat diese Ebene
      strukturell nie (renderControlDashboard() in operations.js baut ihre Kacheln nur aus
      Wert+Label, kein dritter Wert). Da daily_task_cards() dieselbe Quelle ist, die auch das
      wp-admin-Dashboard bedient (ARF_Admin::dashboard()), und die Weisung nur die beiden
      /intern/-Flaechen nennt (kein Wort zu wp-admin): die Subzeile wird HIER, NUR auf der
      /intern/-Flaeche, per CSS unterdrueckt - der PHP-Wert bleibt unangetastet, wp-admin zeigt
      seine Kacheln unveraendert samt Hinweistext. Diese Weiche (systemweit vs. nur /intern/) ist
      dem Auftraggeber zurueckgemeldet, nicht stillschweigend entschieden (siehe PR-Beschreibung).
      REQ-INTERN-KACHELTEXTE-EINZEILIG-001 (2026-09-28, PR #1164) hatte dieselbe Subzeile heute
      frueh nur GEKUERZT (Einzeiligkeit zusichern) - das bleibt fuer wp-admin gueltig; die
      Einzeiligkeits-Zusicherung selbst wird fuer /intern/ gegenstandslos, weil dort ab jetzt gar
      keine Subzeile mehr sichtbar ist (siehe test_req_intern_kacheltexte_einzeilig_001.py). */
body.augite-intern-page:not(.wp-admin) .arf-metric-card{border-top:1px solid var(--arf-ops-line);border-left:4px solid var(--arf-ops-green);min-height:74px;padding:12px 14px}
body.augite-intern-page:not(.wp-admin) .arf-metric-card strong{font-size:1.45rem}
body.augite-intern-page:not(.wp-admin) .arf-metric-card span{font-size:.72rem;font-weight:750;color:var(--arf-ops-muted);margin-top:3px}
body.augite-intern-page:not(.wp-admin) .arf-metric-card small{display:none}
body.augite-intern-page:not(.wp-admin) .arf-metric-card--warn{border-left-color:var(--arf-ops-warn)}
body.augite-intern-page:not(.wp-admin) .arf-metric-card--ok{border-left-color:var(--arf-ops-green)}
@media(max-width:782px){body.augite-intern-page:not(.wp-admin) .arf-metric-card{min-height:66px}}
/* Auftraggeber-Entscheidung 36 (KPI budget 3/5) on /intern/: surplus metrics in a non-tile "Weitere Kennzahlen" definition list, groups below 3 metrics as a compact list. */
.arf-metric-more{margin:12px 0 4px;border:1px solid var(--arf-ops-line);background:#fff}.arf-metric-more>summary{cursor:pointer;padding:9px 14px;font-weight:650;color:var(--ars-accent-strong,#b84e08)}.arf-metric-more[open]>summary{border-bottom:1px solid var(--arf-ops-line)}.arf-metric-more>.arf-metric-list{margin:0;padding:4px 14px}.arf-metric-list{margin:12px 0 4px;display:grid;gap:0}.arf-metric-list__item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 14px;align-items:baseline;padding:7px 0;border-bottom:1px solid var(--arf-ops-line)}.arf-metric-list__item:last-child{border-bottom:0}.arf-metric-list dt{margin:0;font-weight:600;min-width:0;color:var(--arf-ops-ink)}.arf-metric-list dd{margin:0;text-align:right}.arf-metric-list dd strong{font-size:1rem;color:var(--arf-ops-ink)}.arf-metric-list dd small{display:block;color:var(--arf-ops-muted)}.arf-metric-list--compact{border:1px solid var(--arf-ops-line);background:#fff;padding:2px 14px}.arf-metric-list__item--warn dd strong{color:var(--arf-ops-warn)}
@media(max-width:480px){.arf-metric-grid{grid-template-columns:1fr}}
/* Live finding LIVE-TASK-2026-09-14-129/-131 (2026-09-15): absolutely positioned descendants (.screen-reader-text in table
   headers) escaped a static overflow:auto wrapper - their containing block was the page, so /intern/rentalinvoice/ was 1218 px
   wide at 400 px although the table itself scrolled inside its wrapper. Every table/filter scroll wrapper is position:relative. */
.arf-admin-table-scroll{position:relative;overflow:auto;background:#fff;border:1px solid var(--arf-ops-line);border-radius:0;margin:8px 0 14px;max-width:none}
.arf-admin-table{width:100%;border-collapse:collapse;min-width:640px}
.arf-admin-table th,.arf-admin-table td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--arf-ops-line);vertical-align:middle}
.arf-admin-table th{background:var(--arf-ops-soft);font-weight:700;font-size:.8rem;text-transform:uppercase;letter-spacing:.03em;color:var(--arf-ops-text)}
.arf-admin-table tbody tr:nth-child(odd){background:#fbfcfb}
/* Live finding LIVE-TASK-2026-09-13-047 (2026-09-15): the two RentalFlow tables 'Geräte in Rücknahmeprüfung' and the
   operations list (.arf-ops-table, markup "widefat striped" shared with wp-admin) had no front-end styling - on /intern/rentalflow/
   the header cells did not line up with the columns and the booking buttons (.button-link) rendered as grey browser
   default buttons. Same flat table look as .arf-admin-table; the booking reference is a text link-button. */
/* REQ-INTERN-TABELLENRAHMEN-SYSTEMWEIT-001: der Aussenrahmen dieser Tabelle kam bislang von HIER (auf
   dem <table> selbst), waehrend .augite-table-scroll (backend-ui.css) fuer JEDEN Tabellen-Wrapper jetzt
   ebenfalls einen 1px-Rahmen setzt. Beide Rahmen laegen direkt aneinander (kein Abstand zwischen Wrapper
   und Tabelle) und ergaeben zusammen 2px statt der Vorgabe 1px. border-collapse:collapse bleibt fuer die
   Zellrahmen erhalten, nur der Aussenrahmen zieht auf den Wrapper um. */
body:not(.wp-admin) .arf-app table.arf-ops-table{width:100%;border-collapse:collapse;background:#fff}
body:not(.wp-admin) .arf-app table.arf-ops-table th,body:not(.wp-admin) .arf-app table.arf-ops-table td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--arf-ops-line);vertical-align:middle}
body:not(.wp-admin) .arf-app table.arf-ops-table th{background:var(--arf-ops-soft);font-weight:700;font-size:.8rem;text-transform:uppercase;letter-spacing:.03em;color:var(--arf-ops-text)}
body:not(.wp-admin) .arf-app table.arf-ops-table tbody tr:nth-child(odd){background:#fbfcfb}
body:not(.wp-admin) .arf-app table.arf-ops-table .button-link{appearance:none;display:inline;min-height:0;margin:0;padding:0;border:0;border-radius:0;background:none;box-shadow:none;color:#b84e08;font:inherit;font-weight:700;text-decoration:underline;text-underline-offset:2px;cursor:pointer}
body:not(.wp-admin) .arf-app table.arf-ops-table .button-link:hover{color:#9a4307}
body:not(.wp-admin) .arf-app table.arf-ops-table .button-link:focus-visible{outline:2px solid rgba(217,96,10,.4);outline-offset:2px}
.arf-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.arf-facts div{background:var(--arf-ops-soft);border-radius:0;padding:12px}
.arf-facts dt{color:var(--arf-ops-muted);font-size:12px;margin:0}
.arf-facts dd{margin:3px 0 0;font-weight:650}
.arf-admin-gate-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:8px;margin-top:10px}
.arf-admin-gate-item{display:grid;grid-template-columns:28px 1fr;gap:8px;padding:10px;border:1px solid var(--arf-ops-line);background:#fff}
.arf-admin-gate-item>span{display:grid;place-items:center;width:28px;height:28px;border-radius:0;background:#e8f3eb;color:#24613e;font-weight:800}.arf-admin-gate-item>span svg{width:16px;height:16px}
.arf-admin-gate-item.is-missing{border-color:#e3c0a7;background:#fffaf5}
.arf-admin-gate-item.is-missing>span{background:#fff0e4;color:#944b18}
.arf-admin-gate-item div{display:grid;gap:3px}
.arf-admin-gate-item small{color:var(--arf-ops-muted);line-height:1.35}
@media(max-width:700px){.arf-facts{grid-template-columns:1fr}}
/* REQ-093 (Paket H): distinguishes "genuinely nothing to do" from "work exists, not yet
 * confirmed in RentalCore" so an empty operational queue is never mistaken for a data bug. */
.arf-ops-empty-hint{margin:6px 0 0;font-size:.8rem;font-weight:700;color:var(--arf-ops-warn)}
.arf-ops-empty-hint a{color:inherit;text-decoration:underline}
.arf-ops-detail-head{padding-bottom:14px;border-bottom:1px solid #e6e7e9}.arf-ops-assets-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:8px;margin:14px 0}.arf-ops-summary-item{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid #e6e7e9;border-radius:0;background:#fbfcfb}.arf-ops-summary-item>div{display:grid;gap:2px}.arf-ops-summary-item strong{font-size:.85rem}.arf-ops-summary-item small{font-size:.73rem;color:var(--arf-ops-muted)}.arf-ops-summary-item small.is-alert{color:var(--arf-ops-danger)}.arf-ops-actions{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 0}
/* REQ-INTERN-BOOKING-DETAIL-VISUAL-CLARITY-001 (Nachtrag 2026-09-28, Auftraggeberbefund "'Als
 * abholbereit markieren' ... geht foermlich unter"): der Abschluss des Aufgabenbereichs
 * (operations.js renderBooking(), rowSteps - nur gerendert, wenn oben ein Hindernis offen ist und
 * die Prozessfuehrungskarte deshalb eine ANDERE Handlung zeigt) bekommt einen eigenen, klar
 * abgesetzten Platz statt direkt im Fluss der kleinen Sekundaerknoepfe der Vorbereitungskarte
 * darueber zu stehen - Trennlinie + zusaetzlicher Abstand, dieselbe Bauform wie die "Kunde nicht
 * erschienen"-Abtrennung direkt darunter im Quelltext. Die erste Schaltflaeche traegt
 * .arf-ops-primary (bereits 44px, siehe REV022-Regel weiter unten in dieser Datei). */
.arf-ops-actions--task-completion{margin-top:22px;padding-top:16px;border-top:1px solid #e6e7e9}
/* REQ-INTERN-BOOKING-DETAIL-VISUAL-CLARITY-001: the "Kunde nicht erschienen" exception action is
 * deliberately pulled out of .arf-ops-actions' primary-action row (Kommissionierung starten,
 * Übergabe/Rücknahme fortsetzen, …) into its own, visually separated block - a top divider plus
 * a short context sentence, so the button never sits directly adjacent to the pickup-
 * authorization/handover-release group above with no explanation of what "not shown up" refers to. */
.arf-process-card{margin:17px -2px -2px;padding:18px 2px 2px;border-top:1px solid var(--arf-ops-line)}.arf-process-head{margin-bottom:13px}.arf-process-head h3{margin:2px 0 0;font-size:1.35rem}.arf-ops-step{display:inline-flex;align-items:center;min-height:30px;padding:5px 9px;border-radius:0;background:#f2f3f5;color:var(--ars-accent-strong,#b84e08);font-size:.73rem;font-weight:800}.arf-work-asset{margin:0 0 12px;border:1px solid var(--arf-ops-line);border-radius:0;background:#fff;overflow:hidden}.arf-work-asset-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 14px;background:#f8f9fa;border-bottom:1px solid #e6e7e8}.arf-work-asset-id{display:flex;align-items:center;gap:10px;min-width:0}.arf-work-asset-id>div{display:grid;min-width:0}.arf-work-asset-id strong{font-size:1rem}.arf-work-asset-id span{font-size:.75rem;color:var(--arf-ops-muted);overflow-wrap:anywhere}.arf-verify-state{font-size:.78rem;color:#21603b;font-weight:800}.arf-verify.is-verified{border-color:#9ac2a8!important;background:#eef7f1!important;color:#215f39!important}
.arf-general-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;padding:13px 14px}.arf-general-checks label{display:flex!important;flex-direction:row!important;align-items:center!important;gap:9px!important;min-height:44px;margin:0!important;padding:9px 10px;border:1px solid #e6e7e9;border-radius:0;background:#fff;font-weight:600!important;font-size:.82rem}.arf-general-checks input{width:21px!important;height:var(--augite-control-h)!important;margin:0!important;accent-color:var(--arf-ops-green)}
.arf-return-core{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:14px}.arf-return-core label,.arf-media-meta label,.arf-ops-token-row label{display:flex!important;flex-direction:column!important;gap:5px!important;margin:0!important;font-size:.78rem;font-weight:700!important;color:var(--arf-ops-text)}.arf-return-core label>span,.arf-media-meta label>span,.arf-ops-token-row label>span{display:flex;gap:5px;align-items:baseline}.arf-return-core small,.arf-media-meta small{font-weight:500;color:var(--arf-ops-muted)}.arf-field-wide{grid-column:1/-1}.arf-return-core input,.arf-return-core select,.arf-return-core textarea,.arf-media-meta input,.arf-media-meta select,.arf-ops-token-row input{width:100%!important;min-height:var(--augite-control-h);padding:var(--augite-control-pad-area)!important;border:1px solid #c5c7c9!important;border-radius:0!important;background:#fff!important;color:var(--arf-ops-ink)!important;font-family:inherit!important;font-size:var(--augite-field-font-size)!important;line-height:var(--augite-control-line-height)!important;font-weight:var(--augite-control-weight)!important}.arf-return-core textarea{min-height:64px;resize:vertical}.arf-meter-fields{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.arf-damage-field{padding:10px;border-left:4px solid var(--arf-ops-warn);border-radius:0;background:#fff7f1}
.arf-master-template{margin:0;border-top:1px solid #e6e7e9;background:#fcfdfc}.arf-master-head{display:flex;align-items:center;gap:10px;padding:12px 14px 8px}.arf-master-source{display:inline-flex;padding:4px 7px;border-radius:0;background:var(--ars-accent-strong,#b84e08);color:#fff;font-size:.64rem;font-weight:800;letter-spacing:.05em}.arf-master-head h4{margin:0;font-size:.87rem}.arf-master-head p{margin:1px 0 0;color:var(--arf-ops-muted);font-size:.72rem}.arf-master-section{margin:8px 14px 4px;font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:#5b5e62}.arf-master-item{display:grid!important;grid-template-columns:36px minmax(0,1fr) 26px;align-items:center;gap:10px;min-height:58px;margin:0 14px!important;padding:9px 0;border-bottom:1px solid #eaebed;font-weight:500!important}.arf-master-item:last-child{border-bottom:0}.arf-master-icon{display:grid;place-items:center;width:34px;height:34px;padding:7px;border-radius:0;background:#f2f3f5;color:var(--arf-ops-green)}.arf-master-copy{display:grid;gap:2px;min-width:0}.arf-master-copy strong{font-size:.82rem;line-height:1.3}.arf-master-copy em{color:var(--arf-ops-warn);font-style:normal}.arf-master-copy small{font-size:.72rem;line-height:1.35;color:var(--arf-ops-muted);font-weight:400}.arf-master-check{width:23px!important;height:23px!important;margin:0!important;padding:0!important;accent-color:var(--arf-ops-green)}.arf-master-item.is-blocking{grid-template-columns:36px minmax(0,1fr);margin:4px 14px 8px!important;padding:10px;border:1px solid #ead7ca;border-radius:0;background:#fff9f5}.arf-master-item.is-blocking .arf-master-icon{background:#fff0e7;color:var(--arf-ops-warn)}.arf-master-item.is-blocking select{width:100%!important;min-height:var(--augite-control-h);margin-top:6px;padding:var(--augite-control-pad)!important;border:1px solid #cfb6a5!important;border-radius:0!important;background:#fff!important;font-family:inherit!important;font-size:var(--augite-field-font-size)!important;line-height:var(--augite-control-line-height)!important;font-weight:var(--augite-control-weight)!important;font-size:var(--augite-field-font-size)!important}
.arf-media-box{display:block;margin:15px 0 0;padding:14px;border:1px solid #d3d5d7;border-radius:0;background:#f9fafb}.arf-media-head{display:flex;align-items:center;gap:10px}.arf-media-head>div{min-width:0;flex:1}.arf-media-head h4{margin:0;font-size:1rem}.arf-media-head p{margin:2px 0 0;font-size:.76rem;color:var(--arf-ops-muted)}.arf-photo-count{padding:4px 7px;border-radius:0;background:#eff0f1;color:var(--ars-accent-strong-hover,#9a4307);font-size:.67rem;font-weight:800;white-space:nowrap}.arf-media-meta{display:grid;grid-template-columns:minmax(140px,.8fr) minmax(220px,1.4fr) minmax(140px,.8fr);gap:8px;margin:12px 0}.arf-camera-stage{position:relative;min-height:220px;max-width:640px;border-radius:0;overflow:hidden;background:#14181b}.arf-camera-stage video{display:block;width:100%;height:auto;aspect-ratio:4/3;max-height:480px;min-height:220px;object-fit:cover;margin:0!important;border-radius:0!important;background:#111}.arf-camera-placeholder{position:absolute;inset:0;display:grid;place-items:center;align-content:center;gap:7px;padding:22px;text-align:center;color:#e3e4e6;background:#14181b}.arf-camera-placeholder svg{width:42px;height:42px;color:#a1a4a7}.arf-camera-placeholder strong{font-size:.9rem}.arf-camera-placeholder span{max-width:560px;font-size:.74rem;color:#b6b8ba}.arf-camera-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:10px}.arf-camera-actions [data-doc-camera-controls]{display:flex;gap:8px}.arf-capture{min-width:170px}.arf-media-result{font-size:.75rem;color:var(--arf-ops-muted)}.arf-photo-strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:7px;margin-top:10px}.arf-photo-thumb{position:relative;margin:0;border:1px solid #d8dbde;border-radius:0;overflow:hidden;background:#fff}.arf-photo-thumb img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover}.arf-photo-thumb figcaption{padding:5px 6px;font-size:.66rem;color:#5b5e62;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.arf-process-footer{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:14px;padding:13px 14px;border-radius:0;background:#f2f3f5}.arf-process-footer>div{display:grid;gap:2px}.arf-process-footer strong{font-size:.84rem}.arf-process-footer span{font-size:.72rem;color:#5b5e62}.arf-process-result{min-height:1.2em;margin-top:8px;font-size:.8rem;font-weight:650;color:var(--ars-accent-strong,#b84e08)}
.arf-scan-actions{display:flex;gap:8px;margin:12px 0}.arf-ops-token-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:8px;max-width:760px}.arf-ops-scan-video{display:block;width:100%;max-width:760px;max-height:430px;object-fit:cover;margin-top:10px;border-radius:0;background:#14181b}.arf-ops-result{max-width:760px;margin-top:8px;padding:0}.arf-resolve-card{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid #dee0e2;border-radius:0;background:#f8f9fa}.arf-resolve-card>span{display:grid;width:32px;height:32px;padding:6px;border-radius:0;background:#eff0f1;color:var(--ars-accent-strong-hover,#9a4307)}.arf-resolve-card>div{display:grid;gap:2px}.arf-resolve-card small{color:var(--arf-ops-muted)}.arf-resolve-card b{font-size:.73rem}.arf-resolve-card .is-ok{color:#21603b}.arf-resolve-card .is-alert{color:var(--arf-ops-danger)}
.arf-ops-signature{background:#fbfbfa}.arf-signature-pad{position:relative;margin-top:12px}.arf-ops .arf-signature-pad canvas{display:block;width:100%;height:230px;border:1px solid #c5c7c9;border-radius:0;background:#fff;touch-action:none}.arf-signature-line{position:absolute;left:7%;right:7%;bottom:38px;border-bottom:1px solid #c8cacc;pointer-events:none}.arf-ops-inline-actions{display:flex;gap:8px;margin-top:8px}
.arf-error{padding:9px 11px;border:1px solid #efcaca;border-radius:0;background:#fff4f4;color:#8f2727}.arf-paper-fallback-note{margin-top:8px}.arf-ops button:focus-visible,.arf-ops input:focus-visible,.arf-ops select:focus-visible,.arf-ops textarea:focus-visible{outline:3px solid rgba(217,96,10,.2)!important;outline-offset:1px!important}
/* REQ-DISPOSITION-INSTANCE-TRANSPORT-BLOCK-LAYOUT-001: .arf-inline-field/.arf-status-change-form/
 * .arf-field-wide are the standing /intern/ card-form convention (129 uses of .arf-inline-field
 * alone in class-arf-shortcodes.php, across Buchungsdetail, Kundendetail, Disposition and more)
 * but were only ever styled in admin.css - which /intern/ pages never enqueue (they load only
 * this file, arf-public/public.css; admin.css is enqueued exclusively by ARF_Admin's own
 * wp-admin screens). So on /intern/ every one of these forms rendered as bare, unstyled stacked
 * <label> elements with zero gap/grouping - this, not a one-off missing margin, is why "Instanz
 * planen" sat flush under "Notiz" with no perceptible spacing, and why Transportaufträge/
 * Sperrzeiten read as an unstructured wall of fields. Mirrored here (not copy-pasted verbatim -
 * uses this file's own --arf-ops-* tokens and .arf-ops-card sizing) so the fix benefits every
 * /intern/ form using the convention, not only Disposition. */
.arf-app.arf-ops .arf-status-change-form{display:flex;flex-wrap:wrap;align-items:flex-start;gap:12px 16px;padding:2px 0 4px;margin:0}
.arf-app.arf-ops .arf-inline-field{display:flex!important;flex-direction:column!important;gap:5px!important;margin:0!important;min-width:190px;flex:1 1 190px;font-size:.8rem;font-weight:700!important;color:var(--arf-ops-text)}
.arf-app.arf-ops .arf-inline-field>span{font-weight:700}
.arf-app.arf-ops .arf-inline-field small,.arf-app.arf-ops .arf-inline-field .description{display:block;margin-top:2px;font-weight:500;color:var(--arf-ops-muted)}
.arf-app.arf-ops .arf-inline-field input,.arf-app.arf-ops .arf-inline-field select,.arf-app.arf-ops .arf-inline-field textarea{width:100%!important;min-height:var(--augite-control-h);padding:var(--augite-control-pad-area)!important;border:1px solid #c5c7c9!important;border-radius:0!important;background:#fff!important;color:var(--arf-ops-ink)!important;font-family:inherit!important;font-size:var(--augite-field-font-size)!important;line-height:var(--augite-control-line-height)!important;font-weight:var(--augite-control-weight)!important}
.arf-app.arf-ops .arf-inline-field textarea{min-height:64px;resize:vertical}
.arf-app.arf-ops .arf-status-change-form>.arf-field-wide,.arf-app.arf-ops .arf-status-change-form>div.arf-field-wide{flex:1 1 100%;width:100%}
.arf-app.arf-ops .arf-status-change-form>.arf-ops-inline-actions{flex:1 1 100%;width:100%;margin-top:4px}
/* Either/or grouping for "Ziel: konkretes Asset ODER Mietartikel" (Zusätzliche Sperrzeiten) -
 * without this the two <select> elements read as two unrelated dropdowns side by side. */
.arf-app.arf-ops .arf-disposition-target-field{min-width:280px}
.arf-app.arf-ops .arf-disposition-target-group{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 10px;border:1px solid #d8dadc;border-radius:0;background:#f8f9fa}
.arf-app.arf-ops .arf-disposition-target-group select{width:auto!important;flex:1 1 160px;min-width:0}
.arf-app.arf-ops .arf-disposition-target-or{font-weight:700;color:var(--arf-ops-muted);font-size:.68rem;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}
@media(max-width:620px){.arf-app.arf-ops .arf-status-change-form{flex-direction:column;align-items:stretch}.arf-app.arf-ops .arf-inline-field{min-width:0;flex-basis:auto}.arf-app.arf-ops .arf-disposition-target-group{flex-direction:column;align-items:stretch}.arf-app.arf-ops .arf-disposition-target-group select{width:100%!important}}
@media(max-width:800px){.arf-ops{margin:12px auto 34px}.arf-ops-hero{align-items:flex-start;flex-direction:column;padding:20px}.arf-ops-card{padding:16px}.arf-ops-list{grid-template-columns:1fr}.arf-media-meta{grid-template-columns:1fr 1fr}.arf-media-meta label:nth-child(2){grid-column:1/-1}.arf-process-footer{align-items:stretch;flex-direction:column}.arf-process-footer .arf-ops-primary{width:100%}}
@media(max-width:620px){.arf-ops-hero{border-radius:0}.arf-ops-card{border-radius:0;padding:13px}.arf-work-asset-head{align-items:flex-start;flex-direction:column}.arf-verify{width:100%}.arf-general-checks,.arf-return-core,.arf-meter-fields,.arf-media-meta{grid-template-columns:1fr}.arf-field-wide,.arf-media-meta label:nth-child(2){grid-column:auto}.arf-master-item{margin-left:9px!important;margin-right:9px!important}.arf-master-item.is-blocking{margin-left:9px!important;margin-right:9px!important}.arf-media-head{align-items:flex-start;flex-wrap:wrap}.arf-photo-count{margin-left:48px}.arf-camera-actions,[data-doc-camera-controls]{width:100%}.arf-camera-actions .arf-ops-primary,.arf-camera-actions .arf-ops-secondary{flex:1}.arf-ops-token-row{grid-template-columns:1fr}.arf-ops-token-row .arf-ops-primary{width:100%}.arf-ops-booking{grid-template-columns:34px minmax(0,1fr) 12px!important}.arf-ops-booking .arf-ops-state{grid-column:2;justify-self:start}.arf-ops-chevron{grid-column:3;grid-row:1/3}.arf-ops-signature .arf-signature-pad canvas{height:190px}}
.arf-ops .arf-return-core textarea{margin:0}

.arf-inline-actions{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-top:12px}
.arf-withdrawal-shell{max-width:920px;margin:0 auto;display:grid;gap:16px}
.arf-withdrawal-form{display:grid;gap:16px}
.arf-withdrawal-preview{background:#fafbfc;border:1px solid #d7dbe0}

.arf-ops-access-shell{margin-top:18px}
.arf-ops-access{padding:28px;max-width:1040px;margin:0 auto 18px}
.arf-ops-access-head{display:grid;grid-template-columns:72px minmax(0,1fr);gap:18px;align-items:flex-start;margin-bottom:18px}
.arf-ops-access-icon,.arf-ops-access-mini{display:inline-flex;align-items:center;justify-content:center;color:var(--ars-accent-strong,#b84e08);flex:none}
.arf-ops-access-icon{width:72px;height:72px;border-radius:0;background:#f2f3f4;border:1px solid #e1e2e4}
.arf-ops-access-icon svg{width:34px;height:34px}
.arf-ops-access-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.arf-ops-access-item{display:grid;grid-template-columns:40px minmax(0,1fr);gap:12px;padding:16px;border:1px solid var(--arf-ops-line);border-radius:0;background:#fbfbfa}
.arf-ops-access-item strong{display:block;margin-bottom:4px;color:var(--ars-ink,#14181b)}
.arf-ops-access-item p{margin:0;color:var(--arf-ops-muted);font-size:.93rem}
.arf-ops-access-mini{width:40px;height:40px;border-radius:0;background:#f1f3f4;border:1px solid #e2e3e5}
.arf-ops-access-mini svg{width:18px;height:18px}
.arf-ops-access-actions{margin-top:18px;flex-wrap:wrap}
.arf-ops-access-link{display:inline-flex;align-items:center;gap:10px;text-decoration:none}
@media(max-width:800px){.arf-ops-access-grid{grid-template-columns:1fr}.arf-ops-access-head{grid-template-columns:58px minmax(0,1fr)}.arf-ops-access-icon{width:58px;height:58px;border-radius:0}.arf-ops-access-icon svg{width:28px;height:28px}}

/* REV015: native, compact date selection and one-line asset booking */
.arf-compact-booking-card{padding:14px 16px!important}
.arf-booking-inline{display:grid;grid-template-columns:auto minmax(250px,1fr) 78px auto;gap:10px;align-items:end}
.arf-booking-inline-title{display:flex;align-items:center;min-height:46px;white-space:nowrap;color:var(--ars-ink,#14181b)}
.arf-native-range{display:grid;grid-template-columns:minmax(118px,1fr) auto minmax(118px,1fr);gap:7px;align-items:end;min-width:0}
.arf-native-date{margin:0!important;gap:3px!important;font-size:.72rem!important;font-weight:700!important;color:#5b5e62}
.arf-native-date input{width:100%;min-height:44px;padding:7px 9px!important;border-radius:0!important;background:#fff!important}
.arf-native-range-arrow{display:grid;place-items:center;min-height:44px;color:#707377;font-weight:800}
.arf-inline-qty{margin:0!important;gap:3px!important;font-size:.72rem!important;color:#5b5e62}
.arf-inline-qty input{width:100%;min-height:44px!important;padding:7px!important;text-align:center}
.arf-inline-add{min-height:44px!important;padding:8px 14px!important;white-space:nowrap;background:var(--ars-accent-strong,#b84e08)!important;color:#fff!important;border-color:var(--ars-accent-strong,#b84e08)!important;font-weight:750!important}
.arf-booking-inline-meta{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:7px;font-size:.78rem;color:#66696d}
.arf-booking-inline-meta .arf-compact-availability{margin:0;min-width:0}
.arf-booking-inline-meta .arf-stock-badge{flex:none}
/* Legacy calendar code may exist in cached markup from earlier revisions; never let it open over REV015. */
.arf-range-trigger,.arf-range-popover{display:none!important}
@media(max-width:820px){
 .arf-booking-inline{grid-template-columns:1fr 76px auto}
 .arf-booking-inline-title{grid-column:1/-1;min-height:0;margin-bottom:-2px}
 .arf-native-range{grid-column:1}
}
@media(max-width:620px){
 .arf-booking-inline{grid-template-columns:1fr 72px}
 .arf-native-range{grid-column:1/-1}
 .arf-inline-add{grid-column:1/-1;width:100%}
 .arf-booking-inline-meta{align-items:flex-start;flex-direction:column}
}

/* REV015 – compact native booking controls and tablet-first operations choices */
.arf-compact-booking-card{padding:14px 16px!important;max-width:none!important}
.arf-compact-booking-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:10px}
.arf-compact-booking-head h3{margin:0!important;font-size:1rem!important}.arf-compact-booking-head small{font-size:.74rem;color:#6d7074}
.arf-native-range{display:grid;grid-template-columns:minmax(145px,1fr) 24px minmax(145px,1fr);align-items:end;gap:6px;min-width:0}
.arf-native-date{display:grid!important;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:7px!important;margin:0!important;font-size:.72rem!important;font-weight:750!important;color:#5b5e62}.arf-native-date input{width:100%!important;min-width:0!important;min-height:42px!important;padding:7px 9px!important;border:1px solid #c5c7c9!important;border-radius:0!important;background:#fff!important;font:inherit!important;color:#14181b!important}.arf-native-range-sep{align-self:center;text-align:center;color:#6b6f73;font-weight:800}
.arf-asset-booking--compact .arf-card{box-shadow:none!important}.arf-asset-booking--compact .arf-cart-add-row{display:grid;grid-template-columns:100px minmax(160px,220px);gap:8px;margin-top:9px}.arf-asset-booking--compact .arf-compact-availability{margin-top:7px;font-size:.75rem}
.arf-touch-choice{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:7px;margin-top:8px}.arf-touch-choice label{display:block!important;margin:0!important}.arf-touch-choice input{position:absolute!important;opacity:0!important;pointer-events:none}.arf-touch-choice label>span{display:flex;align-items:center;justify-content:center;gap:7px;min-height:var(--augite-control-h);padding:4px 12px;border:1px solid #c5c7c9;border-radius:0;background:#fff;color:#2f3236;font-size:.79rem;font-weight:750;cursor:pointer;text-align:center}.arf-touch-choice input:checked+span{border-color:var(--arf-ops-green);background:#f0f1f2;color:var(--ars-accent-strong-hover,#9a4307);box-shadow:inset 0 0 0 1px var(--arf-ops-green)}.arf-touch-choice--danger label:last-child input:checked+span{border-color:#a45b26;background:#fff2e9;color:#8b451d;box-shadow:inset 0 0 0 1px #a45b26}.arf-return-outcomes{grid-template-columns:repeat(auto-fit,minmax(145px,1fr));margin-top:6px}.arf-return-outcomes label>span{min-height:52px;flex-direction:column;line-height:1.15}.arf-return-outcomes b{font-size:1rem}.arf-field-label{display:block;font-size:.78rem;font-weight:700;color:var(--arf-ops-text)}
.arf-master-item.is-blocking{grid-template-columns:36px minmax(0,1fr)}.arf-master-item.is-blocking .arf-master-copy{width:100%}
.arf-ops-primary,.arf-ops-secondary,.arf-ops-icon-button{min-height:var(--augite-control-h)!important}.arf-general-checks label{min-height:48px!important}.arf-master-check{width:25px!important;height:25px!important}
@media(min-width:760px){.arf-asset-booking--compact .arf-compact-booking-card{display:grid!important;grid-template-columns:minmax(230px,.8fr) minmax(330px,1.25fr) auto;align-items:end;gap:12px}.arf-asset-booking--compact .arf-compact-booking-head{margin:0}.arf-asset-booking--compact .arf-cart-add-row{margin:0;grid-template-columns:82px minmax(150px,190px)}.arf-asset-booking--compact .arf-compact-availability,.arf-asset-booking--compact .arf-result{grid-column:1/-1;margin:0}.arf-asset-booking--compact .arf-native-range{align-self:end}}
@media(max-width:620px){.arf-native-range{grid-template-columns:1fr}.arf-native-range-sep{display:none}.arf-native-date{grid-template-columns:52px 1fr}.arf-touch-choice,.arf-return-outcomes{grid-template-columns:1fr 1fr}.arf-touch-choice label>span{min-height:52px}.arf-asset-booking--compact .arf-cart-add-row{grid-template-columns:90px 1fr}}

/* REV015 shared access / permission notice */
.arf-access-shell{max-width:1180px;margin:22px auto 48px}
.arf-access-card{padding:26px 28px!important}
.arf-access-head{display:grid;grid-template-columns:68px minmax(0,1fr);gap:18px;align-items:start}
.arf-access-head h1,.arf-access-head h2{margin:3px 0 8px;font-size:clamp(1.7rem,3vw,2.25rem);color:#14181b}.arf-access-head p{margin:0;color:#5b5e62;max-width:78ch}
.arf-access-icon,.arf-access-mini{display:grid;place-items:center;color:var(--ars-accent-strong,#b84e08);background:#f2f3f4;border:1px solid #e1e2e4}
.arf-access-icon{width:68px;height:68px;border-radius:0}.arf-access-icon svg{width:32px;height:32px}
.arf-access-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:20px}
.arf-access-grid article{display:grid;grid-template-columns:38px 1fr;gap:11px;padding:15px;border:1px solid #dadde0;border-radius:0;background:#fbfbfa}
.arf-access-grid article strong{display:block;margin-bottom:3px;color:#14181b}.arf-access-grid article p{margin:0;color:#6b6f73;font-size:.9rem;line-height:1.4}
.arf-access-mini{width:38px;height:38px;border-radius:0}.arf-access-mini svg{width:18px;height:18px}
.arf-access-actions{margin-top:18px}.arf-access-link{display:inline-flex!important;align-items:center!important;justify-content:center;gap:8px;min-height:46px;padding:9px 14px;border-radius:0;text-decoration:none!important;font-weight:750}
.arf-access-link.arf-primary{background:var(--ars-accent-strong,#b84e08);color:#fff!important;border:1px solid #b84e08}.arf-access-link.arf-primary svg{width:18px;height:18px}
.arf-access-link.arf-secondary-link{border:1px solid #c0c2c4;background:#fff;color:var(--ars-accent-strong,#b84e08)!important}
@media(max-width:760px){.arf-access-grid{grid-template-columns:1fr}.arf-access-card{padding:20px!important}}
@media(max-width:520px){.arf-access-head{grid-template-columns:52px 1fr}.arf-access-icon{width:52px;height:52px;border-radius:0}.arf-access-actions{display:grid}.arf-access-link{width:100%}}

/* REV015 – tablet photo metadata controls */
.arf-media-meta{grid-template-columns:minmax(220px,1fr) minmax(240px,1.25fr) minmax(220px,1fr)!important;align-items:start!important}
.arf-media-choice{min-width:0}.arf-media-choice>.arf-field-label{margin-bottom:5px}
.arf-touch-choice--chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:0}.arf-touch-choice--chips label>span{min-height:var(--augite-control-h);padding:4px 10px;white-space:nowrap}
.arf-touch-choice--binary{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:0}.arf-touch-choice--binary label>span{min-height:var(--augite-control-h)}
/* REQ-MID-RENTAL-ASSET-SWAP-001: Geraetekacheln des Tauschdialogs. Derselbe Radio-Kachel-Baustein wie ueberall
   (.arf-touch-choice), nur linksbuendig und zweizeilig, weil hier Geraetenummer UND Seriennummer lesbar sein muessen;
   der Dialog haengt an document.body, also ausserhalb von .arf-app.arf-ops - deshalb die Touch-Hoehe hier explizit. */
.arf-touch-choice--swap{grid-template-columns:repeat(auto-fit,minmax(196px,1fr));max-height:280px;overflow-y:auto;padding:1px 1px 7px;border-bottom:1px solid #dadde0}
.arf-touch-choice--swap label>span{flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;min-height:var(--augite-control-h);padding:7px 12px;text-align:left;font-size:.82rem}
.arf-touch-choice--swap label>span small{font-weight:400;font-size:.76rem;line-height:1.35;color:#50575e}

@media(max-width:900px){.arf-media-meta{grid-template-columns:1fr!important}.arf-media-choice{width:100%}.arf-touch-choice--chips{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}}

/* REV015 final booking-layout contract: one compact row on desktop/tablet. */
.arf-asset-booking--compact.arf-app{max-width:none!important;width:100%;margin:8px 0!important}
.arf-asset-booking--compact .arf-compact-booking-card{display:block!important;width:100%!important;margin:0!important;padding:12px 14px!important}
.arf-asset-booking--compact .arf-booking-inline{display:grid!important;grid-template-columns:auto minmax(330px,1fr) 76px auto!important;gap:9px!important;align-items:end!important}
.arf-asset-booking--compact .arf-native-range{display:grid!important;grid-template-columns:minmax(135px,1fr) 20px minmax(135px,1fr)!important;gap:5px!important}
.arf-asset-booking--compact .arf-native-date{grid-template-columns:auto minmax(0,1fr)!important}
.arf-asset-booking--compact .arf-native-date input,.arf-asset-booking--compact .arf-inline-qty input,.arf-asset-booking--compact .arf-inline-add{min-height:44px!important;height:44px!important}
.arf-asset-booking--compact .arf-booking-inline-meta{margin-top:5px!important;min-height:18px}
@media(max-width:900px){.arf-asset-booking--compact .arf-booking-inline{grid-template-columns:minmax(0,1fr) 76px auto!important}.arf-asset-booking--compact .arf-booking-inline-title{grid-column:1/-1}}
@media(max-width:620px){.arf-asset-booking--compact .arf-booking-inline{grid-template-columns:1fr 72px!important}.arf-asset-booking--compact .arf-native-range{grid-column:1/-1!important;grid-template-columns:1fr!important}.arf-asset-booking--compact .arf-native-range-sep{display:none!important}.arf-asset-booking--compact .arf-inline-add{grid-column:1/-1!important;width:100%!important}}

/* REV017 – Betriebshof shell spacing and compact top scan row */
.arf-app.arf-ops{max-width:1240px!important;width:calc(100% - 40px)!important;margin:24px auto 40px!important}
.arf-app.arf-ops .arf-ops-hero,.arf-app.arf-ops .arf-ops-card{box-sizing:border-box;width:100%}
.arf-app.arf-ops .arf-ops-hero{padding:24px 26px!important;border-radius:0!important}
.arf-app.arf-ops .arf-ops-card{padding:18px 20px!important}

.arf-ops-scanbar{display:grid;grid-template-columns:auto auto minmax(280px,1fr) auto;gap:10px;align-items:end;min-width:0}
.arf-ops-scanbar .arf-ops-secondary,.arf-ops-scanbar .arf-ops-primary{margin:0!important;white-space:nowrap}
.arf-ops-token-inline{display:flex!important;flex-direction:column!important;gap:4px!important;min-width:0;margin:0!important;font-size:.76rem!important;font-weight:700!important;color:var(--arf-ops-text)}
.arf-ops-token-inline>span{display:block;line-height:1.15}
.arf-ops-token-inline input{width:100%!important;min-width:0!important;min-height:var(--augite-control-h)!important;padding:var(--augite-control-pad)!important;border:1px solid #c5c7c9!important;border-radius:0!important;background:#fff!important}

/* REQ-INTERN-BOOKING-DETAIL-VISUAL-CLARITY-001: pickup-authorization is a 3-item row (scan
 * button, token input, "Prüfen") rather than the asset scanbar's 4 (QR/NFC/token/"Übernehmen"),
 * so it gets its own column count on the shared .arf-ops-scanbar grid/button/input look above
 * instead of forcing a mismatched child count onto the 4-column rule. */
.arf-ops-scanbar--pickup-auth{grid-template-columns:auto minmax(240px,1fr) auto}
.arf-ops-pickup-auth-consume{margin-top:12px}
/* Nachtrag 2026-09-28 (Auftraggeber-Screenshot .../buchung/557/): die Beschriftung "Abholcode /
 * Kurzkennung" stand vorher INNERHALB von .arf-ops-token-inline, also in derselben Rasterspalte
 * wie das Eingabefeld und neben der "Scannen"-Schaltflaeche - sie hing dadurch optisch in der
 * Luft, ohne erkennbaren Bezug. Jetzt eine eigene Zeile ueber die volle Breite VOR der
 * Scannen/Eingabefeld/Pruefen-Zeile (Bedienreihenfolge unveraendert: "Scannen" bleibt vorne).
 * .arf-ops-scanbar-label ist reines Auszeichnungselement (kein <label>-Wrapper mehr); das
 * Eingabefeld bekommt seinen zugaenglichen Namen ueber aria-labelledby (operations.js). */
.arf-ops-scanbar--pickup-auth>.arf-ops-scanbar-label{display:block;grid-column:1/-1;margin:0 0 4px;font-size:.76rem;font-weight:700;color:var(--arf-ops-text)}
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-scanbar--pickup-auth .arf-ops-token-inline{display:block!important;margin:0!important}
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-scanbar--pickup-auth .arf-ops-token-inline input{height:var(--augite-control-h)!important;min-height:var(--augite-control-h)!important}
@media(max-width:620px){.arf-ops-scanbar--pickup-auth{grid-template-columns:1fr}.arf-ops-scanbar--pickup-auth .arf-ops-scanbar-label{grid-column:1}.arf-ops-scanbar--pickup-auth .arf-ops-token-inline{grid-column:1}.arf-ops-scanbar--pickup-auth .arf-ops-secondary,.arf-ops-scanbar--pickup-auth .arf-ops-primary{width:100%}.arf-ops-pickup-auth-consume{width:100%}}
@media(max-width:1100px){
 .arf-app.arf-ops{width:calc(100% - 28px)!important}

 .arf-ops-scanbar{grid-template-columns:auto auto minmax(220px,1fr) auto}
}
@media(max-width:760px){
 .arf-app.arf-ops{width:calc(100% - 20px)!important;margin:16px auto 30px!important}
 .arf-app.arf-ops .arf-ops-hero{padding:20px 18px!important}
 .arf-app.arf-ops .arf-ops-card{padding:16px!important}
 .arf-ops-scanbar{grid-template-columns:1fr 1fr;gap:8px}
 .arf-ops-token-inline{grid-column:1/-1}
}
@media(max-width:560px){
 .arf-ops-scanbar{grid-template-columns:1fr}
 .arf-ops-scanbar .arf-ops-secondary,.arf-ops-scanbar .arf-ops-primary{width:100%}
}

/* REV018 – integrate RentalFlow pages with the website shell; full-width only in WP admin. */
.arf-app{font-family:inherit;box-sizing:border-box}
.arf-app.arf-ops{max-width:1180px!important;width:calc(100% - 40px)!important;margin:24px auto 44px!important;color:#14181b}
.arf-app.arf-ops .arf-ops-hero{border-radius:0!important;box-shadow:none!important}
.arf-app.arf-ops .arf-ops-card{border-radius:0!important;box-shadow:none!important;border-color:#dedfe1!important}
.wp-admin .arf-app.arf-ops{max-width:none!important;width:100%!important;margin:12px 0 28px!important}
/* Nutzerauftrag (2026-09-12): ".arf-ops-scanner" traegt auch die Klasse ".arf-ops-card" (Basis-
 * Kartenstil) - diese generische "Karten sind 100% breit"-Regel (0,4,0 Spezifitaet) schlug damit
 * IMMER die Modal-Chrome-Regel weiter unten in dieser Datei, egal wie hoch deren Spezifitaet
 * gesetzt wurde, und war der reale Grund, warum das Asset-Modal trotz mehrfacher Korrekturen
 * "seitenbreit" blieb. Fix: ":not(.augite-modal)" statt eines weiteren Spezifitaets-
 * Wettruestens - die einzig robuste Lösung, da diese Karten-Regel sonst niemals verlieren kann. */
.wp-admin .arf-app.arf-ops .arf-ops-hero,.wp-admin .arf-app.arf-ops .arf-ops-card:not(.augite-modal){width:100%!important}
.arf-ops-assignment-callout{display:grid;grid-template-columns:42px minmax(0,1fr);gap:12px;align-items:start;margin:14px 0;padding:13px 14px;border:1px solid #caccce;border-left:4px solid var(--arf-ops-green);border-radius:0;background:#f6f7f8;color:var(--ars-ink,#14181b)}
.arf-ops-assignment-callout .arf-ui-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:0;background:#ebedee;color:var(--arf-ops-green)}
.arf-ops-assignment-callout strong{display:block;margin:0 0 3px}.arf-ops-assignment-callout span{display:block;color:#5f6367;font-size:.88rem;line-height:1.4}
.arf-resolve-card.is-assignment{border-color:#b9bbbd;background:#f4f5f6}
@media(max-width:760px){.arf-app.arf-ops{width:calc(100% - 20px)!important;margin:14px auto 30px!important}.wp-admin .arf-app.arf-ops{width:100%!important;margin:8px 0 24px!important}}

/* REV018 – definitive compact asset booking bar; neutralize legacy grid collisions. */
.arf-asset-booking--compact .arf-booking-inline{display:grid!important;grid-template-columns:minmax(105px,auto) minmax(320px,1fr) 72px auto!important;gap:10px!important;align-items:end!important;width:100%!important}
.arf-asset-booking--compact .arf-booking-inline-title{display:flex!important;align-items:center!important;min-height:44px!important;margin:0!important;padding:0!important;white-space:nowrap!important}
.arf-asset-booking--compact .arf-native-range{display:grid!important;grid-template-columns:minmax(135px,1fr) 18px minmax(135px,1fr)!important;gap:6px!important;align-items:end!important;width:100%!important;min-width:0!important}
.arf-asset-booking--compact .arf-native-date{display:grid!important;grid-template-columns:1fr!important;gap:4px!important;margin:0!important;min-width:0!important}
.arf-asset-booking--compact .arf-native-date>span,.arf-asset-booking--compact .arf-inline-qty>span{display:block!important;font-size:.72rem!important;line-height:1.1!important;color:#5b5e62!important;font-weight:700!important}
.arf-asset-booking--compact .arf-native-date input{display:block!important;width:100%!important;min-width:0!important;max-width:none!important;height:44px!important;min-height:44px!important;padding:7px 9px!important;box-sizing:border-box!important}
.arf-asset-booking--compact .arf-native-range-sep{display:flex!important;align-items:center!important;justify-content:center!important;height:44px!important;align-self:end!important}
.arf-asset-booking--compact .arf-inline-qty{display:grid!important;grid-template-columns:1fr!important;gap:4px!important;margin:0!important;min-width:0!important}
.arf-asset-booking--compact .arf-inline-qty input{width:72px!important;height:44px!important;margin:0!important}
.arf-asset-booking--compact .arf-inline-add{height:44px!important;min-height:44px!important;margin:0!important;align-self:end!important}
@media(max-width:900px){.arf-asset-booking--compact .arf-booking-inline{grid-template-columns:1fr 72px auto!important}.arf-asset-booking--compact .arf-booking-inline-title{grid-column:1/-1!important;min-height:28px!important}.arf-asset-booking--compact .arf-native-range{grid-column:1!important}}
@media(max-width:620px){.arf-asset-booking--compact .arf-booking-inline{grid-template-columns:1fr 72px!important}.arf-asset-booking--compact .arf-native-range{grid-column:1/-1!important;grid-template-columns:1fr!important}.arf-asset-booking--compact .arf-native-range-sep{display:none!important}.arf-asset-booking--compact .arf-inline-add{grid-column:1/-1!important;width:100%!important}}

/* REV018 – public RentalFlow modules follow the same centered website content width. */
.arf-access-shell,.arf-withdrawal.arf-app,.arf-cart-page.arf-app,.arf-checkout.arf-app{max-width:1180px!important;width:calc(100% - 40px)!important;margin:24px auto 48px!important}
.arf-access-shell .arf-card,.arf-withdrawal .arf-card,.arf-portal .arf-card,.arf-cart-page .arf-card,.arf-checkout .arf-card{box-shadow:none!important;border-color:#dedfe1!important}
@media(max-width:760px){.arf-access-shell,.arf-withdrawal.arf-app,.arf-cart-page.arf-app,.arf-checkout.arf-app{width:calc(100% - 20px)!important;margin:14px auto 30px!important}}

/* REV019 – definitive storefront booking bar. Keep the asset-detail control compact and independent of theme label/grid rules. */
.arf-asset-booking--compact.arf-app{width:100%!important;max-width:none!important;margin:8px 0!important}
.arf-asset-booking--compact .arf-compact-booking-card{display:block!important;width:100%!important;min-width:0!important;min-height:0!important;margin:0!important;padding:12px 14px!important;box-sizing:border-box!important;border-radius:0!important;overflow:visible!important}
.arf-asset-booking--compact .arf-booking-inline--compact{display:grid!important;grid-template-columns:minmax(115px,1fr) minmax(115px,1fr) 68px max-content!important;gap:10px!important;align-items:end!important;width:100%!important;min-width:0!important;margin:0!important;padding:0!important}
.arf-asset-booking--compact .arf-booking-inline--compact>.arf-native-date,.arf-asset-booking--compact .arf-booking-inline--compact>.arf-inline-qty{display:grid!important;grid-template-columns:1fr!important;grid-auto-flow:row!important;align-items:stretch!important;gap:4px!important;width:100%!important;min-width:0!important;max-width:none!important;margin:0!important;padding:0!important;box-sizing:border-box!important}
.arf-asset-booking--compact .arf-booking-inline--compact label>span{display:block!important;width:auto!important;height:auto!important;margin:0!important;padding:0!important;font-size:.72rem!important;font-weight:750!important;line-height:1.15!important;color:#5b5e62!important;white-space:nowrap!important}
.arf-asset-booking--compact .arf-booking-inline--compact input[type="date"],.arf-asset-booking--compact .arf-booking-inline--compact input[type="number"]{display:block!important;position:static!important;float:none!important;width:100%!important;min-width:0!important;max-width:none!important;height:44px!important;min-height:44px!important;margin:0!important;padding:7px 9px!important;box-sizing:border-box!important;border:1px solid #c5c7c9!important;border-radius:0!important;background:#fff!important;color:#14181b!important;font:inherit!important;line-height:1.2!important}
.arf-asset-booking--compact .arf-booking-inline--compact .arf-inline-qty input[type="number"]{text-align:center!important;padding-inline:5px!important}
.arf-asset-booking--compact .arf-booking-inline--compact .arf-inline-add{display:inline-flex!important;align-items:center!important;justify-content:center!important;width:auto!important;min-width:145px!important;max-width:none!important;height:44px!important;min-height:44px!important;margin:0!important;padding:8px 14px!important;align-self:end!important;white-space:nowrap!important;box-sizing:border-box!important}
.arf-asset-booking--compact .arf-booking-inline-meta{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:10px!important;min-height:18px!important;margin:7px 0 0!important;padding:0!important;font-size:.76rem!important;line-height:1.35!important}
.arf-asset-booking--compact .arf-compact-availability{margin:0!important;min-height:0!important}
.arf-asset-booking--compact .arf-result:empty{display:none!important}
.arf-cart-added{display:inline-flex;align-items:center;gap:12px;flex-wrap:wrap}.arf-cart-added strong{color:#21603b;display:inline-flex;align-items:center;gap:6px}.arf-cart-added a{font-weight:750}.arf-cart-added .arf-portal-icon{width:18px;height:18px;flex:none}
@media(max-width:700px){
 .arf-asset-booking--compact .arf-booking-inline--compact{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 68px!important}
 .arf-asset-booking--compact .arf-booking-inline--compact .arf-inline-add{grid-column:1/-1!important;width:100%!important;min-width:0!important}
}
@media(max-width:480px){
 .arf-asset-booking--compact .arf-booking-inline--compact{grid-template-columns:1fr 1fr!important}
 .arf-asset-booking--compact .arf-booking-inline--compact .arf-inline-qty{grid-column:1!important}
 .arf-asset-booking--compact .arf-booking-inline--compact .arf-inline-add{grid-column:2!important;width:100%!important}
 .arf-asset-booking--compact .arf-booking-inline-meta{align-items:flex-start!important;flex-direction:column!important}
}

/* REV020 – robust storefront booking controls using flexbox and neutral wrappers. */
.arf-asset-booking--compact .arf-booking-inline--compact{
 display:flex!important;align-items:flex-end!important;gap:10px!important;width:100%!important;min-width:0!important;flex-wrap:nowrap!important;
}
.arf-asset-booking--compact .arf-booking-field{display:flex!important;flex-direction:column!important;gap:4px!important;min-width:0!important;margin:0!important;padding:0!important;box-sizing:border-box!important}
.arf-asset-booking--compact .arf-booking-field--date{flex:1 1 0!important;width:0!important;min-width:0!important}
.arf-asset-booking--compact .arf-booking-field--qty{flex:0 0 72px!important;width:72px!important}
.arf-asset-booking--compact .arf-booking-field-label{display:block!important;margin:0!important;padding:0!important;font-size:.72rem!important;font-weight:750!important;line-height:1.15!important;color:#5b5e62!important}
.arf-asset-booking--compact .arf-booking-field input{display:block!important;position:static!important;float:none!important;width:100%!important;min-width:0!important;max-width:none!important;height:44px!important;min-height:44px!important;margin:0!important;padding:7px 9px!important;box-sizing:border-box!important;border:1px solid #c5c7c9!important;border-radius:0!important;background:#fff!important;color:#14181b!important;font:inherit!important;line-height:1.2!important}
.arf-asset-booking--compact .arf-booking-field--qty input{text-align:center!important;padding-inline:5px!important}
.arf-asset-booking--compact .arf-inline-add{flex:0 0 auto!important;width:auto!important;min-width:145px!important;height:44px!important;min-height:44px!important;margin:0!important;align-self:flex-end!important}
@media(max-width:660px){
 .arf-asset-booking--compact .arf-booking-inline--compact{flex-wrap:wrap!important}
 .arf-asset-booking--compact .arf-booking-field--date{flex:1 1 calc(50% - 5px)!important;width:auto!important;min-width:130px!important}
 .arf-asset-booking--compact .arf-booking-field--qty{flex:0 0 76px!important}
 .arf-asset-booking--compact .arf-inline-add{flex:1 1 180px!important;min-width:160px!important}
}
@media(max-width:440px){
 .arf-asset-booking--compact .arf-booking-field--date{flex:1 1 100%!important;width:100%!important}
 .arf-asset-booking--compact .arf-booking-field--qty{flex:0 0 76px!important}
 .arf-asset-booking--compact .arf-inline-add{flex:1 1 calc(100% - 86px)!important;min-width:0!important}
}

/* REV020 – plugin-owned cart entry point, present on every public page regardless of fill level. */
.arf-floating-cart{position:fixed;right:18px;bottom:76px;z-index:99980;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:9px 12px;border:1px solid #b84e08;border-radius:0;background:var(--ars-accent-strong,#b84e08);color:#fff!important;text-decoration:none!important;font-family:inherit;font-weight:750;box-shadow:0 5px 18px rgba(20,24,27,.18)}
.arf-floating-cart:hover,.arf-floating-cart:focus{background:var(--ars-accent-strong-hover,#9a4307);color:#fff!important}.arf-floating-cart__icon{font-size:1rem;line-height:1}.arf-floating-cart__count{display:grid;place-items:center;min-width:24px;height:24px;padding:0 6px;border-radius:0;background:#fff;color:var(--ars-accent-strong,#b84e08);font-size:.78rem;font-weight:850}
@media(max-width:600px){.arf-floating-cart{right:10px;bottom:72px;padding:9px 10px}.arf-floating-cart__label{display:none}}

/* REV020 – cart page must remain visibly structured even before JS finishes. */
.arf-cart-page .arf-cart-shell{min-height:230px!important}.arf-cart-page [data-arf-cart-body]{min-height:78px}.arf-cart-page [data-arf-cart-body]:empty:before{content:'Warenkorb wird geladen …';display:block;padding:20px;text-align:center;color:#6b6f73}

/* REV021 – storefront theme contract. Public RentalFlow UI follows the active augite Rental template. */
body:not(.wp-admin) .arf-app{
 --arf-theme-green:var(--ars-green,#d9600a);
 --arf-theme-ink:var(--ars-ink,#14181b);
 --arf-theme-text:var(--ars-text,#3e4144);
 --arf-theme-muted:var(--ars-muted,#6b6f73);
 --arf-theme-line:var(--ars-line,#dadde0);
 --arf-theme-soft:var(--ars-soft,#f4f5f6);
 color:var(--arf-theme-ink);font-family:inherit;
}
body:not(.wp-admin) .arf-theme-page{width:min(1180px,calc(100% - 48px))!important;max-width:1180px!important;margin:42px auto 56px!important}
body:not(.wp-admin) .arf-theme-surface,
body:not(.wp-admin) .arf-asset-booking--compact .arf-theme-widget,
body:not(.wp-admin) .arf-app:not(.arf-ops) .arf-card{
 background:#fff!important;border:1px solid var(--arf-theme-line)!important;border-radius:0!important;box-shadow:none!important;
}
body:not(.wp-admin) .arf-theme-surface{padding:24px 26px}
body:not(.wp-admin) .arf-theme-page h1{margin:4px 0 12px!important;color:var(--arf-theme-ink)!important;font-size:clamp(2rem,3.6vw,3rem)!important;line-height:1.04!important;letter-spacing:-.032em!important}
body:not(.wp-admin) .arf-theme-page h2{color:var(--arf-theme-ink)!important;letter-spacing:-.02em}
body:not(.wp-admin) .arf-theme-page h3{color:var(--arf-theme-ink)!important}
body:not(.wp-admin) .arf-eyebrow,body:not(.wp-admin) .arf-eyebrow.ars-kicker{display:block;margin:0 0 8px!important;color:var(--ars-accent-strong,#b84e08)!important;font-size:.76rem!important;font-weight:850!important;letter-spacing:.16em!important;text-transform:uppercase!important}
body:not(.wp-admin) .arf-muted{color:var(--arf-theme-muted)!important;opacity:1!important}

/* Reuse the theme button vocabulary, with an internal fallback if another theme is active. */
body:not(.wp-admin) .arf-app .ars-btn,body:not(.wp-admin) .arf-floating-cart.ars-btn{
 display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 16px;border:1px solid var(--arf-theme-green,#d9600a)!important;border-radius:0!important;background:#fff;color:var(--ars-ink,#14181b)!important;font:inherit;font-weight:750;text-decoration:none!important;box-shadow:none!important;cursor:pointer
}
body:not(.wp-admin) .arf-app .ars-btn--solid,body:not(.wp-admin) .arf-floating-cart.ars-btn--solid{background:var(--ars-accent-strong,#b84e08)!important;color:#fff!important}
body:not(.wp-admin) .arf-app .ars-btn--ghost{background:#fff!important;color:var(--ars-accent-strong,#b84e08)!important}
body:not(.wp-admin) .arf-app .ars-btn:hover,body:not(.wp-admin) .arf-floating-cart.ars-btn:hover{filter:brightness(.98)}
body:not(.wp-admin) .arf-app button:not(.arf-link-danger):not(.arf-link-button),body:not(.wp-admin) .arf-app .arf-button-link{border-radius:0!important;box-shadow:none!important}

/* Theme-shaped fields: rectangular, restrained, and aligned with the catalog filters. */
body:not(.wp-admin) .arf-app input:not([type="radio"]):not([type="checkbox"]),body:not(.wp-admin) .augite-modal input:not([type="radio"]):not([type="checkbox"]),
body:not(.wp-admin) .arf-app select,body:not(.wp-admin) .augite-modal select,
body:not(.wp-admin) .arf-app textarea,body:not(.wp-admin) .augite-modal textarea{
 border:1px solid #b2b4b7!important;border-radius:0!important;background:#fff!important;color:var(--arf-theme-text)!important;box-shadow:none!important;font-family:inherit!important;font-size:var(--augite-field-font-size)!important;line-height:var(--augite-control-line-height)!important;font-weight:var(--augite-control-weight)!important}
body:not(.wp-admin) .arf-app input:focus,body:not(.wp-admin) .augite-modal input:focus,body:not(.wp-admin) .arf-app select:focus,body:not(.wp-admin) .augite-modal select:focus,body:not(.wp-admin) .arf-app textarea:focus,body:not(.wp-admin) .augite-modal textarea:focus{outline:2px solid rgba(217,96,10,.18)!important;outline-offset:1px;border-color:var(--arf-theme-green)!important}

/* Asset detail booking control: same visual language as the surrounding asset detail page. */
body:not(.wp-admin) .arf-asset-booking--compact.arf-app{margin:8px 0!important;width:100%!important;max-width:none!important}
body:not(.wp-admin) .arf-asset-booking--compact .arf-theme-widget{padding:16px 14px!important}
body:not(.wp-admin) .arf-asset-booking--compact .arf-booking-field-label{color:var(--arf-theme-muted)!important;font-size:.69rem!important;font-weight:850!important;letter-spacing:.04em!important;text-transform:uppercase!important}
body:not(.wp-admin) .arf-asset-booking--compact .arf-booking-field input{height:44px!important;min-height:44px!important;padding:8px 10px!important;border-color:#b2b4b7!important;border-radius:0!important}
body:not(.wp-admin) .arf-asset-booking--compact .arf-inline-add{height:44px!important;min-height:44px!important;border-radius:0!important;background:var(--ars-accent-strong,#b84e08)!important;border-color:var(--ars-accent-strong,#b84e08)!important;color:#fff!important;font-weight:750!important}
body:not(.wp-admin) .arf-asset-booking--compact .arf-booking-inline-meta{margin-top:8px!important;color:var(--arf-theme-muted)!important}
body:not(.wp-admin) .arf-asset-booking--compact .arf-compact-availability.is-available{color:#21603b!important}
body:not(.wp-admin) .arf-asset-booking--compact .arf-cart-added a{color:var(--ars-accent-strong,#b84e08)!important;text-decoration:underline;text-underline-offset:2px}

/* Cart: editorial shell, not a rounded application card. */
body:not(.wp-admin) .arf-cart-page .arf-cart-shell{padding:28px 0 0!important;border:0!important;background:transparent!important;min-height:230px!important}
body:not(.wp-admin) .arf-cart-page .arf-cart-head{margin-bottom:24px;padding-bottom:18px;border-bottom:1px solid var(--arf-theme-line)}
body:not(.wp-admin) .arf-cart-page .arf-cart-head h1{margin-bottom:8px!important}
body:not(.wp-admin) .arf-cart-page .arf-cart-head p{max-width:70ch;color:var(--arf-theme-muted);opacity:1}
body:not(.wp-admin) .arf-cart-page .arf-cart-period{max-width:620px;margin:0 0 24px;padding:16px 18px;border:1px solid var(--arf-theme-line);background:#fff}
body:not(.wp-admin) .arf-cart-page .arf-native-range{grid-template-columns:1fr 1fr!important;gap:10px!important}
body:not(.wp-admin) .arf-cart-page .arf-native-range-sep{display:none!important}
body:not(.wp-admin) .arf-cart-page .arf-native-date{grid-template-columns:1fr!important;gap:5px!important}
body:not(.wp-admin) .arf-cart-page .arf-native-date>span{color:var(--arf-theme-muted)!important;font-size:.69rem!important;font-weight:850!important;letter-spacing:.04em!important;text-transform:uppercase!important}
body:not(.wp-admin) .arf-cart-page .arf-native-date input{height:42px!important;min-height:42px!important;border-radius:0!important}
body:not(.wp-admin) .arf-cart-period-summary{border-radius:0!important;background:var(--arf-theme-soft)!important;border-color:var(--arf-theme-line)!important}
body:not(.wp-admin) .arf-cart-items{border-top:1px solid var(--arf-theme-line)}
body:not(.wp-admin) .arf-cart-item{padding:15px 2px!important;border-bottom:1px solid var(--arf-theme-line)!important}
body:not(.wp-admin) .arf-cart-item-controls input[type=number]{border-radius:0!important}
body:not(.wp-admin) .arf-cart-required,body:not(.wp-admin) .arf-cart-recommendations,body:not(.wp-admin) .arf-cart-rec,body:not(.wp-admin) .arf-cart-page .arf-empty-state{border-radius:0!important;box-shadow:none!important}
body:not(.wp-admin) .arf-cart-recommendations{background:var(--arf-theme-soft)!important;border-color:var(--arf-theme-line)!important}
body:not(.wp-admin) .arf-cart-rec{border-color:var(--arf-theme-line)!important}
body:not(.wp-admin) .arf-cart-page .arf-empty-state{padding:30px 26px!important;text-align:left!important;background:#fff!important;border:1px solid var(--arf-theme-line)!important}
body:not(.wp-admin) .arf-cart-actions{margin-top:24px;padding-top:18px;border-top:1px solid var(--arf-theme-line)}
body:not(.wp-admin) .arf-cart-required>strong,body:not(.wp-admin) .arf-cart-recommendations>strong{display:flex;align-items:center;gap:8px}
body:not(.wp-admin) .arf-cart-required .arf-portal-icon{color:#8a5a00}
body:not(.wp-admin) .arf-cart-recommendations>strong .arf-portal-icon{color:var(--arf-theme-green)}
body:not(.wp-admin) .arf-cart-page .arf-empty-state{display:flex;flex-direction:column;align-items:flex-start;gap:10px}
body:not(.wp-admin) .arf-cart-page .arf-empty-state .arf-portal-icon{width:32px;height:32px;color:var(--arf-theme-green)}
body:not(.wp-admin) .arf-cart-rec{display:flex!important;flex-direction:row!important;align-items:flex-start;gap:10px}
body:not(.wp-admin) .arf-cart-rec .arf-portal-icon{color:var(--arf-theme-green);margin-top:2px}
body:not(.wp-admin) .arf-cart-rec-body{display:grid;gap:2px;text-align:left}

/* Checkout / withdrawal / customer portal adopt the same flat content sections. */
body:not(.wp-admin) .arf-checkout-layout{gap:24px!important}
body:not(.wp-admin) .arf-checkout-form,body:not(.wp-admin) .arf-checkout-summary,body:not(.wp-admin) .arf-withdrawal-shell{border-radius:0!important;box-shadow:none!important}
body:not(.wp-admin) .arf-checkout-form{padding:26px!important}
body:not(.wp-admin) .arf-checkout-summary{padding:22px!important;top:92px!important}
body:not(.wp-admin) .arf-fieldset{border-radius:0!important;border-color:var(--arf-theme-line)!important}
body:not(.wp-admin) .arf-checkout-notice{background:var(--arf-theme-soft)!important;border-left-color:var(--arf-theme-green)!important}
body:not(.wp-admin) .arf-withdrawal-shell{padding:28px 30px!important}
body:not(.wp-admin) .arf-withdrawal-preview{border-radius:0!important;background:var(--arf-theme-soft)!important}
body:not(.wp-admin) .arf-access-card{padding:28px 30px!important;border-radius:0!important;box-shadow:none!important}
body:not(.wp-admin) .arf-access-grid article,body:not(.wp-admin) .arf-portal-section,body:not(.wp-admin) .arf-portal-header,body:not(.wp-admin) .arf-portal-booking,body:not(.wp-admin) .arf-portal-damage,body:not(.wp-admin) .arf-message{border-radius:0!important;box-shadow:none!important}
body:not(.wp-admin) .arf-access-icon,body:not(.wp-admin) .arf-access-mini{border-radius:0!important}
body:not(.wp-admin) .arf-portal-kpis span{border-radius:0!important;background:var(--arf-theme-soft)!important}

/* Floating cart behaves like the existing fixed withdrawal CTA: square, flat and unobtrusive. */
body:not(.wp-admin) .arf-floating-cart{right:18px!important;bottom:78px!important;min-height:42px!important;padding:8px 12px!important;border-radius:0!important;background:var(--ars-accent-strong,#b84e08)!important;border:1px solid var(--ars-accent-strong,#b84e08)!important;color:#fff!important;box-shadow:none!important;font-size:.9rem!important}
body:not(.wp-admin) .arf-floating-cart__icon{display:inline-grid;width:18px;height:18px;place-items:center}
body:not(.wp-admin) .arf-floating-cart__icon svg,body:not(.wp-admin) .arf-cart-link__icon svg{display:block;width:18px;height:18px}
body:not(.wp-admin) .arf-floating-cart__count{min-width:22px;height:22px;border-radius:0;background:#fff;color:var(--ars-accent-strong,#b84e08)}

/* Internal public operations page: retain workflow color semantics but use the site's square card geometry. */
body:not(.wp-admin) .arf-app.arf-ops{width:min(1180px,calc(100% - 48px))!important;max-width:1180px!important;margin:32px auto 52px!important}
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-hero,body:not(.wp-admin) .arf-app.arf-ops .arf-ops-card{border-radius:0!important;box-shadow:none!important}

@media(max-width:760px){
 body:not(.wp-admin) .arf-theme-page,body:not(.wp-admin) .arf-app.arf-ops{width:calc(100% - 28px)!important;margin:24px auto 38px!important}
 body:not(.wp-admin) .arf-theme-surface,body:not(.wp-admin) .arf-checkout-form,body:not(.wp-admin) .arf-checkout-summary,body:not(.wp-admin) .arf-withdrawal-shell,body:not(.wp-admin) .arf-access-card{padding:20px!important}
 body:not(.wp-admin) .arf-cart-page .arf-cart-shell{padding-top:18px!important}
 body:not(.wp-admin) .arf-cart-page .arf-cart-period{padding:14px!important}
}
/* REV021 – final button normalization also covers JS-generated controls. */
body:not(.wp-admin) .arf-app .arf-primary{background:var(--ars-accent-strong,#b84e08)!important;color:#fff!important;border:1px solid var(--ars-accent-strong,#b84e08)!important;border-radius:0!important;box-shadow:none!important;font-family:inherit!important;font-size:var(--augite-control-font-size)!important;line-height:var(--augite-control-line-height)!important;font-weight:var(--augite-button-weight)!important;font-weight:var(--augite-button-weight)!important}
body:not(.wp-admin) .arf-app .arf-secondary{background:#fff!important;color:var(--ars-accent-strong,#b84e08)!important;border:1px solid var(--ars-green,#d9600a)!important;border-radius:0!important;box-shadow:none!important;font:inherit!important;font-weight:750!important}
body:not(.wp-admin) .arf-app .arf-primary:disabled{opacity:.45!important;cursor:not-allowed!important}

/* REV022 – authoritative storefront theme integration.
 * Public RentalFlow output deliberately adopts the active augite Rental template
 * vocabulary (ars-doc-page / ars-shell / ars-section / ars-form / ars-btn).
 * Fallback values keep the plugin usable with another theme, while no public
 * functional page renders an independent "app" visual language anymore.
 */
body:not(.wp-admin) .arf-app{
  --arf-theme-green:var(--ars-green,#d9600a);
  --arf-theme-ink:var(--ars-ink,#14181b);
  --arf-theme-text:var(--ars-text,#3e4144);
  --arf-theme-muted:var(--ars-muted,#6b6f73);
  --arf-theme-line:var(--ars-line,#dadde0);
  --arf-theme-soft:var(--ars-soft,#f4f5f6);
  --arf-theme-paper:var(--ars-paper,#fbfbfa);
  width:auto;max-width:none;margin:0;padding:0;background:transparent;color:var(--arf-theme-ink);font-family:inherit;font-size:inherit;line-height:inherit;
}
body:not(.wp-admin) .arf-theme-page{width:100%!important;max-width:none!important;margin:0!important;padding:0!important;background:transparent!important}
body:not(.wp-admin) .arf-theme-page>.arf-theme-container{
  width:min(1180px,calc(100% - 48px))!important;max-width:1180px!important;margin:0 auto!important;padding:48px 0!important;box-sizing:border-box;
}
body:not(.wp-admin) .arf-theme-page h1{max-width:28ch;margin:0 0 14px!important;color:var(--arf-theme-ink)!important;font-size:clamp(2.05rem,3.7vw,3.2rem)!important;line-height:1.04!important;letter-spacing:-.032em!important}
body:not(.wp-admin) .arf-theme-page h2{color:var(--arf-theme-ink)!important;letter-spacing:-.02em}
body:not(.wp-admin) .arf-theme-page h3{color:var(--arf-theme-ink)!important}
body:not(.wp-admin) .arf-theme-page p{color:inherit}
body:not(.wp-admin) .arf-theme-page .ars-lead{max-width:820px;margin:0 0 22px;color:#505357;font-size:clamp(1.05rem,2vw,1.35rem);line-height:1.5}
body:not(.wp-admin) .arf-eyebrow,body:not(.wp-admin) .arf-eyebrow.ars-kicker{display:block;margin:0 0 10px!important;color:var(--ars-accent-strong,#b84e08)!important;font-size:.76rem!important;font-weight:850!important;letter-spacing:.16em!important;text-transform:uppercase!important}
body:not(.wp-admin) .arf-muted{color:var(--arf-theme-muted)!important;opacity:1!important}

/* Exact template button contract – including controls generated later by JS. */
body:not(.wp-admin) .arf-app .ars-btn,
body:not(.wp-admin) .arf-app .arf-primary,
body:not(.wp-admin) .arf-app .arf-secondary,
body:not(.wp-admin) .arf-floating-cart.ars-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 16px;border:1px solid var(--ars-accent-strong,#b84e08)!important;border-radius:0!important;background:var(--ars-accent-strong,#b84e08)!important;color:#fff!important;font:inherit!important;font-weight:800!important;line-height:1.2;text-decoration:none!important;box-shadow:none!important;cursor:pointer;
}
body:not(.wp-admin) .arf-app .ars-btn--solid,
body:not(.wp-admin) .arf-app .arf-primary,
body:not(.wp-admin) .arf-floating-cart.ars-btn--solid{background:var(--ars-accent-strong,#b84e08)!important;border-color:var(--ars-accent-strong,#b84e08)!important;color:#fff!important}
body:not(.wp-admin) .arf-app .ars-btn--ghost,
body:not(.wp-admin) .arf-app .arf-secondary{background:#fff!important;color:var(--ars-accent-strong,#b84e08)!important}
body:not(.wp-admin) .arf-app .ars-btn:hover,
body:not(.wp-admin) .arf-app .arf-primary:hover,
body:not(.wp-admin) .arf-app .arf-secondary:hover,
body:not(.wp-admin) .arf-floating-cart.ars-btn:hover{filter:brightness(.98)}
body:not(.wp-admin) .arf-app .ars-btn:focus-visible,
body:not(.wp-admin) .arf-app .arf-primary:focus-visible,
body:not(.wp-admin) .arf-app .arf-secondary:focus-visible{outline:2px solid rgba(217,96,10,.28);outline-offset:2px}
body:not(.wp-admin) .arf-app .arf-primary:disabled,body:not(.wp-admin) .arf-app .ars-btn:disabled{opacity:.45!important;cursor:not-allowed!important}

/* Exact template form contract. */
body:not(.wp-admin) .arf-app .ars-form{display:grid;gap:16px;width:100%}
body:not(.wp-admin) .arf-app label{font-family:inherit}
body:not(.wp-admin) .arf-app input:not([type="radio"]):not([type="checkbox"]),body:not(.wp-admin) .augite-modal input:not([type="radio"]):not([type="checkbox"]),
body:not(.wp-admin) .arf-app select,body:not(.wp-admin) .augite-modal select,
body:not(.wp-admin) .arf-app textarea,body:not(.wp-admin) .augite-modal textarea{
  box-sizing:border-box;width:100%;min-width:0;border:1px solid #bec0c3!important;border-radius:0!important;background:#fff!important;color:var(--arf-theme-text)!important;box-shadow:none!important;font-family:inherit!important;font-size:var(--augite-field-font-size)!important;line-height:var(--augite-control-line-height)!important;font-weight:var(--augite-control-weight)!important;
}
body:not(.wp-admin) .arf-app input:not([type="radio"]):not([type="checkbox"]),body:not(.wp-admin) .augite-modal input:not([type="radio"]):not([type="checkbox"]),body:not(.wp-admin) .arf-app select,body:not(.wp-admin) .augite-modal select{min-height:var(--augite-control-h);padding:var(--augite-control-pad)!important}
body:not(.wp-admin) .arf-app textarea,body:not(.wp-admin) .augite-modal textarea{padding:var(--augite-control-pad-area)!important;resize:vertical}
body:not(.wp-admin) .arf-app input:focus,body:not(.wp-admin) .augite-modal input:focus,body:not(.wp-admin) .arf-app select:focus,body:not(.wp-admin) .augite-modal select:focus,body:not(.wp-admin) .arf-app textarea:focus,body:not(.wp-admin) .augite-modal textarea:focus{outline:2px solid rgba(217,96,10,.18)!important;outline-offset:1px;border-color:var(--arf-theme-green)!important}
body:not(.wp-admin) .arf-choice-row{gap:14px}
body:not(.wp-admin) .arf-choice-row label{font-weight:600}
body:not(.wp-admin) .arf-fieldset{padding:16px 18px!important;border:1px solid var(--arf-theme-line)!important;border-radius:0!important;background:#fff!important}
body:not(.wp-admin) .arf-fieldset legend{padding:0 6px;color:var(--arf-theme-ink);font-weight:800}

/* Asset-detail booking module: embedded control, not a foreign application card. */
body:not(.wp-admin) .arf-asset-booking--compact.arf-app{width:100%!important;max-width:none!important;margin:10px 0 0!important}
body:not(.wp-admin) .arf-asset-booking--compact .arf-compact-booking-card,
body:not(.wp-admin) .arf-asset-booking--compact .arf-theme-widget{
  width:100%!important;margin:0!important;padding:16px 0 0!important;border:0!important;border-top:1px solid var(--arf-theme-line)!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;
}
body:not(.wp-admin) .arf-asset-booking--compact .arf-booking-inline--compact{
  display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,1fr) 74px max-content!important;gap:10px!important;align-items:end!important;width:100%!important;min-width:0!important;flex:none!important;
}
body:not(.wp-admin) .arf-asset-booking--compact .arf-booking-field{display:block!important;min-width:0!important;width:auto!important;max-width:none!important;flex:none!important;margin:0!important}
body:not(.wp-admin) .arf-asset-booking--compact .arf-booking-field-label{display:block!important;margin:0 0 5px!important;color:var(--arf-theme-muted)!important;font-size:.68rem!important;font-weight:850!important;letter-spacing:.07em!important;line-height:1.2!important;text-transform:uppercase!important}
body:not(.wp-admin) .arf-asset-booking--compact .arf-booking-field input{width:100%!important;min-width:0!important;max-width:none!important;height:44px!important;min-height:44px!important;padding:8px 10px!important;border:1px solid #b2b4b7!important;border-radius:0!important}
body:not(.wp-admin) .arf-asset-booking--compact .arf-inline-add{align-self:end!important;width:auto!important;min-width:0!important;height:44px!important;min-height:44px!important;margin:0!important;padding:9px 14px!important;white-space:nowrap!important}
body:not(.wp-admin) .arf-asset-booking--compact .arf-booking-inline-meta{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:10px!important;margin:8px 0 0!important;min-height:20px;color:var(--arf-theme-muted)!important;font-size:.78rem!important}
body:not(.wp-admin) .arf-asset-booking--compact .arf-compact-availability{margin:0!important;min-height:0!important;font-size:inherit!important}
body:not(.wp-admin) .arf-asset-booking--compact .arf-result{margin-top:6px!important;padding:0!important}
body:not(.wp-admin) .arf-asset-booking--compact .arf-cart-added{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
body:not(.wp-admin) .arf-asset-booking--compact .arf-cart-added a{color:var(--ars-accent-strong,#b84e08)!important;text-decoration:underline;text-underline-offset:2px}

/* Cart page = ordinary theme document/form page. */
body:not(.wp-admin) .arf-cart-page .arf-cart-shell{min-height:230px!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important}
body:not(.wp-admin) .arf-cart-page .arf-cart-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin:0 0 30px;padding:0;border:0}
body:not(.wp-admin) .arf-cart-page .arf-cart-head>div{min-width:0}
body:not(.wp-admin) .arf-cart-page .arf-cart-head p{max-width:820px;margin:0;color:#505357;font-size:1.05rem;line-height:1.5}
body:not(.wp-admin) .arf-cart-page .arf-cart-period{display:block;max-width:620px;margin:0 0 30px!important;padding:0!important;border:0!important;background:transparent!important}
body:not(.wp-admin) .arf-cart-page .arf-native-range{display:grid!important;grid-template-columns:1fr 1fr!important;gap:12px!important}
body:not(.wp-admin) .arf-cart-page .arf-native-range-sep{display:none!important}
body:not(.wp-admin) .arf-cart-page .arf-native-date{display:block!important;margin:0!important}
body:not(.wp-admin) .arf-cart-page .arf-native-date>span{display:block;margin:0 0 5px;color:var(--arf-theme-muted)!important;font-size:.68rem!important;font-weight:850!important;letter-spacing:.07em!important;text-transform:uppercase!important}
body:not(.wp-admin) .arf-cart-page .arf-native-date input{height:46px!important;min-height:46px!important}
body:not(.wp-admin) .arf-cart-period-summary{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 12px;padding:12px 14px!important;border:0!important;border-left:4px solid var(--arf-theme-green)!important;border-radius:0!important;background:var(--arf-theme-soft)!important}
body:not(.wp-admin) .arf-cart-period-summary small{color:var(--arf-theme-muted)}
body:not(.wp-admin) .arf-cart-items{border-top:1px solid var(--arf-theme-line)}
body:not(.wp-admin) .arf-cart-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:center;padding:18px 0!important;border:0!important;border-bottom:1px solid var(--arf-theme-line)!important;background:transparent!important}
body:not(.wp-admin) .arf-cart-item>div:first-child strong{display:block;font-size:1rem;color:var(--arf-theme-ink)}
body:not(.wp-admin) .arf-cart-item>div:first-child small{display:block;margin-top:3px;color:var(--arf-theme-muted)}
body:not(.wp-admin) .arf-cart-item-controls{display:flex;align-items:end;gap:12px}
body:not(.wp-admin) .arf-cart-item-controls label{margin:0!important;font-size:.78rem}
body:not(.wp-admin) .arf-cart-item-controls input[type=number]{width:78px!important;height:42px!important;min-height:42px!important}
body:not(.wp-admin) .arf-link-danger{padding:7px 0!important;border:0!important;background:transparent!important;color:#9a2f25!important;text-decoration:underline!important;text-underline-offset:2px}
body:not(.wp-admin) .arf-cart-required,body:not(.wp-admin) .arf-cart-recommendations{margin-top:20px;padding:15px 16px!important;border:0!important;border-left:4px solid var(--arf-theme-green)!important;border-radius:0!important;background:var(--arf-theme-soft)!important;box-shadow:none!important}
body:not(.wp-admin) .arf-cart-rec{border:1px solid var(--arf-theme-line)!important;border-radius:0!important;background:#fff!important;box-shadow:none!important}
body:not(.wp-admin) .arf-cart-page .arf-empty-state{margin-top:8px;padding:26px 0!important;border:0!important;border-top:1px solid var(--arf-theme-line)!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;text-align:left!important}
body:not(.wp-admin) .arf-cart-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:26px!important;padding-top:18px!important;border-top:1px solid var(--arf-theme-line)!important}

/* Checkout = same ars-form language, summary as a restrained supporting panel. */
body:not(.wp-admin) .arf-checkout-layout{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(280px,340px)!important;gap:48px!important;align-items:start}
body:not(.wp-admin) .arf-checkout-form{margin:0!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important}
body:not(.wp-admin) .arf-checkout-form>.arf-muted{margin:0 0 18px!important}
body:not(.wp-admin) .arf-checkout-customer{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:16px!important}
body:not(.wp-admin) .arf-checkout-notice{margin:2px 0 0;padding:13px 14px;border:0!important;border-left:5px solid var(--arf-theme-green)!important;border-radius:0!important;background:#f3f4f5!important;color:var(--arf-theme-text)}
body:not(.wp-admin) .arf-privacy-notice-box{display:flex!important;align-items:flex-start!important;gap:10px;border-left-color:#ead49b!important;background:#fff8e5!important}
body:not(.wp-admin) .arf-privacy-notice-box .arf-checkout-notice-icon{flex:0 0 auto;width:20px;height:20px;color:#8a5a00;margin-top:1px}
body:not(.wp-admin) .arf-privacy-notice-box .arf-checkout-notice-icon svg{width:100%;height:100%}
body:not(.wp-admin) .arf-privacy-note{max-width:78ch;color:var(--arf-theme-muted);font-size:.88rem}
body:not(.wp-admin) .arf-checkout-summary{position:sticky!important;top:92px!important;margin:0!important;padding:22px!important;border:1px solid var(--arf-theme-line)!important;border-left:4px solid var(--arf-theme-green)!important;border-radius:0!important;background:#fff!important;box-shadow:none!important}
body:not(.wp-admin) .arf-checkout-summary h3{margin:0 0 14px!important;font-size:1.1rem!important}

/* Withdrawal = standard document page with a standard theme form. */
body:not(.wp-admin) .arf-withdrawal-shell{max-width:940px;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important}
body:not(.wp-admin) .arf-withdrawal-shell>p{max-width:820px;color:#505357;font-size:1.05rem;line-height:1.5}
body:not(.wp-admin) .arf-withdrawal-form{margin-top:24px}
body:not(.wp-admin) .arf-withdrawal-preview{padding:16px!important;border:0!important;border-left:4px solid var(--arf-theme-green)!important;border-radius:0!important;background:var(--arf-theme-soft)!important;box-shadow:none!important}

/* Customer portal and permission notices: same editorial sections/cards as the theme. */
body:not(.wp-admin) .arf-access-shell{max-width:none!important;margin:0!important}
body:not(.wp-admin) .arf-access-card{margin:0!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important}
body:not(.wp-admin) .arf-access-head{grid-template-columns:58px minmax(0,1fr);gap:18px;align-items:start}
body:not(.wp-admin) .arf-access-icon{width:58px;height:58px;border:1px solid var(--arf-theme-line)!important;border-radius:0!important;background:var(--arf-theme-soft)!important;color:var(--arf-theme-green)!important}
body:not(.wp-admin) .arf-access-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:28px}
body:not(.wp-admin) .arf-access-grid article{padding:18px 20px!important;border:1px solid var(--arf-theme-line)!important;border-radius:0!important;background:#fff!important;box-shadow:none!important}
body:not(.wp-admin) .arf-access-mini{border-radius:0!important}
body:not(.wp-admin) .arf-access-actions{margin-top:22px!important}
body:not(.wp-admin) .arf-portal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:28px;margin:0 0 30px!important;padding:0 0 24px!important;border:0!important;border-bottom:1px solid var(--arf-theme-line)!important;border-radius:0!important;background:transparent!important;box-shadow:none!important}
body:not(.wp-admin) .arf-portal-header h1{margin-bottom:8px!important}
body:not(.wp-admin) .arf-portal-header .ars-lead{margin:0!important;font-size:1rem!important}
body:not(.wp-admin) .arf-portal-kpis{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}
body:not(.wp-admin) .arf-portal-kpis span{min-width:118px;padding:10px 12px;border:1px solid var(--arf-theme-line)!important;border-radius:0!important;background:var(--arf-theme-soft)!important}
body:not(.wp-admin) .arf-portal-section{margin:0!important;padding:24px 0!important;border:0!important;border-top:1px solid var(--arf-theme-line)!important;border-radius:0!important;background:transparent!important;box-shadow:none!important}
body:not(.wp-admin) .arf-portal-section .ars-doc-section__heading{margin-bottom:12px}
body:not(.wp-admin) .arf-portal-section .ars-doc-section__heading h2{margin:0!important;font-size:1.16rem!important;line-height:1.25!important;letter-spacing:0!important}
body:not(.wp-admin) .arf-portal-booking,body:not(.wp-admin) .arf-portal-damage{border:1px solid var(--arf-theme-line)!important;border-radius:0!important;background:#fff!important;box-shadow:none!important}
body:not(.wp-admin) .arf-message{border:1px solid var(--arf-theme-line)!important;border-radius:0!important;box-shadow:none!important}
body:not(.wp-admin) .arf-portal-message-form{margin-top:20px}

/* Floating cart = native theme CTA geometry, no separate plugin chrome. */
body:not(.wp-admin) .arf-floating-cart{right:18px!important;bottom:78px!important;z-index:81!important;min-height:44px!important;padding:10px 14px!important;border:1px solid var(--ars-accent-strong,#b84e08)!important;border-radius:0!important;background:var(--ars-accent-strong,#b84e08)!important;color:#fff!important;box-shadow:none!important;font-family:inherit!important;font-weight:800!important}
body:not(.wp-admin) .arf-floating-cart__icon{display:inline-grid;width:18px;height:18px;place-items:center}
body:not(.wp-admin) .arf-floating-cart__icon svg,body:not(.wp-admin) .arf-cart-link__icon svg{display:block;width:18px;height:18px}
body:not(.wp-admin) .arf-floating-cart__count{min-width:22px;height:22px;border-radius:0;background:#fff;color:var(--ars-accent-strong,#b84e08)}

/* Public operations keeps workflow semantics but uses the template shell and geometry. */
body:not(.wp-admin) .arf-app.arf-ops.arf-theme-page{width:100%!important;max-width:none!important;margin:0!important}
body:not(.wp-admin) .arf-app.arf-ops>.arf-theme-container{width:min(1180px,calc(100% - 48px))!important;max-width:1180px!important;margin:0 auto!important;padding:38px 0 52px!important}
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-hero{border-radius:0!important;box-shadow:none!important}
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-card{border-radius:0!important;box-shadow:none!important}

/* The same operations shortcode is rendered inside wp-admin: there the plugin must
 * use all available admin workspace width and never inherit storefront shell margins. */
body.wp-admin .arf-app.arf-ops.arf-theme-page{width:100%!important;max-width:none!important;margin:0!important;padding:0!important}
body.wp-admin .arf-app.arf-ops>.arf-theme-container{width:100%!important;max-width:none!important;margin:0!important;padding:0!important}

@media(max-width:900px){
  body:not(.wp-admin) .arf-asset-booking--compact .arf-booking-inline--compact{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 72px!important}
  body:not(.wp-admin) .arf-asset-booking--compact .arf-inline-add{grid-column:1/-1!important;width:100%!important}
  body:not(.wp-admin) .arf-checkout-layout{grid-template-columns:1fr!important;gap:30px!important}
  body:not(.wp-admin) .arf-checkout-summary{position:static!important}
  body:not(.wp-admin) .arf-access-grid{grid-template-columns:1fr!important}
}
@media(max-width:760px){
  body:not(.wp-admin) .arf-theme-page>.arf-theme-container,body:not(.wp-admin) .arf-app.arf-ops>.arf-theme-container{width:calc(100% - 28px)!important;padding:32px 0 40px!important}
  body:not(.wp-admin) .arf-cart-page .arf-cart-head,body:not(.wp-admin) .arf-portal-header{flex-direction:column;align-items:flex-start}
  body:not(.wp-admin) .arf-cart-actions{align-items:stretch;flex-direction:column}
  body:not(.wp-admin) .arf-cart-actions .ars-btn{width:100%}
  body:not(.wp-admin) .arf-checkout-customer{grid-template-columns:1fr!important}
}
@media(max-width:560px){
  body:not(.wp-admin) .arf-asset-booking--compact .arf-booking-inline--compact{grid-template-columns:1fr 1fr!important}
  body:not(.wp-admin) .arf-asset-booking--compact .arf-booking-field--qty{grid-column:1!important}
  body:not(.wp-admin) .arf-asset-booking--compact .arf-inline-add{grid-column:2!important;width:100%!important}
  body:not(.wp-admin) .arf-cart-page .arf-native-range{grid-template-columns:1fr!important}
  body:not(.wp-admin) .arf-cart-item{grid-template-columns:1fr!important}
  body:not(.wp-admin) .arf-cart-item-controls{justify-content:space-between}
  body:not(.wp-admin) .arf-portal-kpis{width:100%;justify-content:flex-start}
}

/* REV022 – public operations buttons also use the storefront button geometry. */
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-primary,
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-secondary,
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-icon-button,
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-access-link{
  min-height:var(--augite-control-h)!important;padding:var(--augite-button-pad)!important;border-radius:0!important;box-shadow:none!important;font-family:inherit!important;font-size:var(--augite-control-font-size)!important;line-height:var(--augite-control-line-height)!important;font-weight:var(--augite-button-weight)!important;font-weight:var(--augite-button-weight)!important;
}
/* REQ-RENTALINVOICE-ACTION-LABEL-CLARITY-001 (2026-09-14, LIVE-TASK-2026-09-14-110 measured live):
 * the icon-only modifier further up declares width/padding:0 with !important, but the REV022 rule
 * directly above is more specific (body:not(.wp-admin) .arf-app.arf-ops .arf-ops-secondary) and
 * therefore won on /intern/ - measured on /intern/rentalinvoice/: 38x44 px, padding 10px 16px, and
 * 38x94 px in rows whose action cell is taller, i.e. exactly not the requested small SQUARE button.
 * Same defect class this file already documents elsewhere: a low-specificity modifier losing to a
 * broad component rule. Fixed at the same specificity level instead of raising !important noise.
 * 44px is deliberate (not the 38px of the base modifier): it is the touch-target floor the
 * component rules above already use, so the button is square AND still tappable. align-self keeps
 * it from being stretched to the height of a tall table cell. */
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-primary.arf-ops-icon-only,
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-secondary.arf-ops-icon-only{
  width:var(--augite-control-h)!important;min-width:var(--augite-control-h)!important;height:var(--augite-control-h)!important;min-height:var(--augite-control-h)!important;
  max-height:var(--augite-control-h)!important;padding:0!important;gap:0!important;flex:0 0 auto!important;align-self:center!important;
}
/* wave 12: selector restored - 38eb230 had pasted the icon-only block above into the middle of this selector
 * ("body:not(.wp-admin) .arf-" ... "app.arf-ops .arf-ops-primary,"), so the primary button accent rule matched nothing. */
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-primary,
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-icon-button{background:var(--ars-accent-strong,#b84e08)!important;border-color:var(--ars-accent-strong,#b84e08)!important;color:#fff!important}
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-secondary,
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-access-link:not(.arf-ops-primary){background:#fff!important;border:1px solid var(--ars-green,#d9600a)!important;color:var(--ars-accent-strong,#b84e08)!important}

/* REV022 – public workflow subcomponents follow the same square template geometry. */
body:not(.wp-admin) .arf-app.arf-ops .arf-work-asset,
body:not(.wp-admin) .arf-app.arf-ops .arf-master-item,
body:not(.wp-admin) .arf-app.arf-ops .arf-return-asset,
body:not(.wp-admin) .arf-app.arf-ops .arf-media-box,
body:not(.wp-admin) .arf-app.arf-ops .arf-camera-stage,
body:not(.wp-admin) .arf-app.arf-ops .arf-resolve-card,
body:not(.wp-admin) .arf-app.arf-ops .arf-process-footer,
body:not(.wp-admin) .arf-app.arf-ops .arf-photo-thumb,
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-access-item,
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-access-icon,
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-access-mini,
body:not(.wp-admin) .arf-app.arf-ops .arf-touch-choice label>span,
body:not(.wp-admin) .arf-app.arf-ops .arf-signature-pad canvas,
body:not(.wp-admin) .arf-portal-media img{border-radius:0!important;box-shadow:none!important}

/* REV023 – final storefront form contract: checkout/account and embedded booking use the active ars template. */
body:not(.wp-admin) .arf-checkout-page-head{margin:0 0 34px!important;max-width:900px}
body:not(.wp-admin) .arf-checkout-page-head h1{margin:0 0 14px!important}
body:not(.wp-admin) .arf-checkout-page-head .ars-lead{margin:0!important;max-width:78ch!important;color:#505357!important}
body:not(.wp-admin) .arf-checkout-layout{grid-template-columns:minmax(0,1fr) minmax(290px,330px)!important;gap:42px!important}
body:not(.wp-admin) .arf-checkout-form{display:block!important;max-width:none!important;width:100%!important}
body:not(.wp-admin) .arf-checkout-section{margin:0 0 30px!important;padding:0 0 28px!important;border:0!important;border-bottom:1px solid var(--arf-theme-line)!important;background:transparent!important}
body:not(.wp-admin) .arf-checkout-section-head{display:grid;grid-template-columns:48px minmax(0,1fr);gap:14px;align-items:start;margin:0 0 18px}
body:not(.wp-admin) .arf-checkout-section-head--compact{margin-bottom:14px}
body:not(.wp-admin) .arf-checkout-section-head h2{margin:0 0 4px!important;font-size:1.22rem!important;line-height:1.2!important;letter-spacing:-.015em!important;color:var(--arf-theme-ink)!important}
body:not(.wp-admin) .arf-checkout-section-head p{margin:0!important;color:var(--arf-theme-muted)!important;font-size:.92rem!important;line-height:1.45!important}
body:not(.wp-admin) .arf-checkout-section-icon,body:not(.wp-admin) .arf-checkout-summary-icon{display:grid;place-items:center;width:48px;height:48px;border:1px solid var(--arf-theme-line);background:var(--arf-theme-soft);color:var(--arf-theme-green)}
body:not(.wp-admin) .arf-checkout-section-icon svg,body:not(.wp-admin) .arf-checkout-summary-icon svg{width:24px;height:24px}
body:not(.wp-admin) .arf-checkout-account{padding:18px 20px 20px!important;border:1px solid var(--arf-theme-line)!important;border-left:4px solid var(--arf-theme-green)!important;background:#fff!important}
body:not(.wp-admin) .arf-checkout-account .arf-checkout-section-head{margin-bottom:16px}
body:not(.wp-admin) .arf-account-actions{display:flex;align-items:stretch;gap:10px;flex-wrap:wrap}
body:not(.wp-admin) .arf-icon-btn{display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:9px!important}
body:not(.wp-admin) .arf-icon-btn>svg{flex:none;width:19px;height:19px}
body:not(.wp-admin) .arf-account-create-toggle{display:block!important;position:relative;margin:0!important;cursor:pointer;font-weight:400!important}
body:not(.wp-admin) .arf-account-create-toggle>input{position:absolute!important;opacity:0!important;pointer-events:none!important}
body:not(.wp-admin) .arf-account-create-toggle>span{display:grid;grid-template-columns:22px minmax(0,1fr);column-gap:9px;row-gap:1px;align-items:center;min-height:44px;padding:8px 12px;border:1px solid var(--arf-theme-green);background:#fff;color:var(--ars-accent-strong,#b84e08)}
body:not(.wp-admin) .arf-account-create-toggle>span>svg{grid-row:1/3;width:20px;height:20px}
body:not(.wp-admin) .arf-account-create-toggle b{font-weight:750}
body:not(.wp-admin) .arf-account-create-toggle small{color:var(--arf-theme-muted);font-size:.76rem;line-height:1.25}
body:not(.wp-admin) .arf-account-create-toggle>input:checked+span{background:var(--arf-theme-soft);box-shadow:inset 0 0 0 1px var(--arf-theme-green)}
body:not(.wp-admin) .arf-account-create-toggle>input:focus-visible+span{outline:2px solid rgba(217,96,10,.24);outline-offset:2px}
body:not(.wp-admin) .arf-account-register{margin-top:16px;padding-top:16px;border-top:1px solid var(--arf-theme-line)}
body:not(.wp-admin) .arf-account-register>.ars-muted{margin:8px 0 0!important;font-size:.82rem!important}
body:not(.wp-admin) .arf-account-state{display:inline-grid;grid-template-columns:36px minmax(0,1fr);gap:10px;align-items:center;padding:9px 12px;background:var(--arf-theme-soft);color:var(--arf-theme-text)}
body:not(.wp-admin) .arf-account-state__icon{display:grid;place-items:center;width:36px;height:36px;color:var(--arf-theme-green)}
body:not(.wp-admin) .arf-account-state__icon svg{width:22px;height:22px}
body:not(.wp-admin) .arf-account-state strong,body:not(.wp-admin) .arf-account-state small{display:block}
body:not(.wp-admin) .arf-account-state small{color:var(--arf-theme-muted);font-size:.78rem}
body:not(.wp-admin) .arf-customer-type-fieldset{margin:0 0 18px!important;padding:0!important;border:0!important;background:transparent!important}
body:not(.wp-admin) .arf-customer-type-fieldset legend{margin:0 0 8px;padding:0!important;font-size:.82rem!important}
body:not(.wp-admin) .arf-choice-row--tiles{display:flex!important;gap:8px!important;flex-wrap:wrap}
body:not(.wp-admin) .arf-choice-row--tiles label{display:block!important;position:relative;margin:0!important}
body:not(.wp-admin) .arf-choice-row--tiles input{position:absolute!important;opacity:0!important;pointer-events:none!important}
body:not(.wp-admin) .arf-choice-row--tiles:not(.augite-choice--tiles) label>span{display:flex;align-items:center;justify-content:center;min-height:42px;padding:8px 14px;border:1px solid #bec0c3;background:#fff;color:var(--arf-theme-text);font-weight:700;cursor:pointer}
body:not(.wp-admin) .arf-choice-row--tiles:not(.augite-choice--tiles) input:checked+span{border-color:var(--arf-theme-green);background:var(--arf-theme-soft);color:var(--ars-accent-strong,#b84e08);box-shadow:inset 0 0 0 1px var(--arf-theme-green)}
body:not(.wp-admin) .arf-choice-row--tiles:not(.augite-choice--tiles) input:focus-visible+span{outline:2px solid rgba(217,96,10,.24);outline-offset:2px}
body:not(.wp-admin) .arf-checkout-customer{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:16px!important}
body:not(.wp-admin) .arf-checkout-customer label,body:not(.wp-admin) .arf-checkout-note-section>label{margin:0!important}
body:not(.wp-admin) .arf-checkout-note-section textarea{min-height:128px!important}
body:not(.wp-admin) .arf-checkout-notice{margin:0 0 16px!important}
body:not(.wp-admin) .arf-privacy-note{margin:0 0 20px!important;line-height:1.5}
body:not(.wp-admin) .arf-checkout-legal-line{margin:0 0 12px;text-align:left}
body:not(.wp-admin) .arf-checkout-legal-line .arf-link-button{font-size:.95rem!important;font-weight:700;color:var(--ars-accent-strong,#b84e08)!important;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
body:not(.wp-admin) .arf-checkout-legal-line .arf-link-button:hover{color:var(--ars-ink,#14181b)!important}
body:not(.wp-admin) .arf-cart-price-line--rule{margin-top:-2px}
body:not(.wp-admin) .arf-cart-price-line--rule .arf-cart-item-price-rule{color:var(--arf-theme-muted);font-size:.78rem}
body:not(.wp-admin) .arf-checkout-submit-row{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-top:4px}
body:not(.wp-admin) .arf-checkout-submit-row .ars-btn{flex:none}
body:not(.wp-admin) .arf-submit-hint{max-width:420px;color:var(--arf-theme-muted);font-size:.82rem;line-height:1.4}
body:not(.wp-admin) .arf-checkout-form>.arf-result{margin-top:14px!important;padding:0!important}
body:not(.wp-admin) .arf-result-action{margin-top:12px}
body:not(.wp-admin) .arf-warning{display:inline-block;margin-top:8px;color:#8a4a19}
body:not(.wp-admin) .arf-checkout-summary{padding:20px!important;border-left:1px solid var(--arf-theme-line)!important;top:96px!important}
body:not(.wp-admin) .arf-checkout-summary-head{display:flex;align-items:center;gap:11px;margin:0 0 16px;padding:0 0 14px;border-bottom:1px solid var(--arf-theme-line)}
body:not(.wp-admin) .arf-checkout-summary-head h2{margin:0!important;font-size:1.08rem!important;letter-spacing:0!important}
body:not(.wp-admin) .arf-checkout-summary-icon{width:38px;height:38px;border:0;background:var(--arf-theme-soft)}
body:not(.wp-admin) .arf-checkout-summary-icon svg{width:20px;height:20px}
body:not(.wp-admin) .arf-checkout-edit-cart{width:100%;margin-top:16px}

/* Embedded asset booking: one deterministic baseline. The action has its own label spacer,
 * so native date controls, quantity and CTA always share the same input baseline. */
body:not(.wp-admin) .arf-asset-booking--compact .arf-booking-inline--compact{display:grid!important;grid-template-columns:minmax(145px,1fr) minmax(145px,1fr) 72px max-content!important;gap:10px!important;align-items:start!important;width:100%!important}
body:not(.wp-admin) .arf-asset-booking--compact .arf-booking-field,body:not(.wp-admin) .arf-asset-booking--compact .arf-booking-action-field{display:grid!important;grid-template-rows:16px 46px!important;gap:5px!important;align-items:stretch!important;min-width:0!important;margin:0!important}
body:not(.wp-admin) .arf-asset-booking--compact .arf-booking-field-label{display:flex!important;align-items:center!important;height:16px!important;margin:0!important;line-height:16px!important}
body:not(.wp-admin) .arf-asset-booking--compact .arf-booking-field-label--action{visibility:hidden!important}
body:not(.wp-admin) .arf-asset-booking--compact .arf-booking-field input{height:46px!important;min-height:46px!important;margin:0!important;padding:9px 10px!important}
body:not(.wp-admin) .arf-asset-booking--compact .arf-booking-action-field .arf-inline-add{display:inline-flex!important;align-items:center!important;justify-content:center!important;width:100%!important;height:46px!important;min-height:46px!important;margin:0!important;padding:9px 15px!important;line-height:1.2!important;align-self:stretch!important}

@media(max-width:900px){
 body:not(.wp-admin) .arf-checkout-layout{grid-template-columns:1fr!important;gap:34px!important}
 body:not(.wp-admin) .arf-checkout-summary{position:static!important;max-width:none!important}
}
@media(max-width:680px){
 body:not(.wp-admin) .arf-checkout-page-head{margin-bottom:26px!important}
 body:not(.wp-admin) .arf-checkout-customer{grid-template-columns:1fr!important}
 body:not(.wp-admin) .arf-checkout-section-head{grid-template-columns:42px minmax(0,1fr)}
 body:not(.wp-admin) .arf-checkout-section-icon{width:42px;height:42px}
 body:not(.wp-admin) .arf-account-actions{display:grid;grid-template-columns:1fr}
 body:not(.wp-admin) .arf-account-actions .ars-btn{width:100%}
 body:not(.wp-admin) .arf-checkout-submit-row{align-items:stretch;flex-direction:column}
 body:not(.wp-admin) .arf-checkout-submit-row .ars-btn{width:100%}
 body:not(.wp-admin) .arf-asset-booking--compact .arf-booking-inline--compact{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important}
 body:not(.wp-admin) .arf-asset-booking--compact .arf-booking-field--qty{grid-column:1!important}
 body:not(.wp-admin) .arf-asset-booking--compact .arf-booking-action-field{grid-column:2!important}
}
@media(max-width:430px){
 body:not(.wp-admin) .arf-asset-booking--compact .arf-booking-inline--compact{grid-template-columns:1fr!important}
 body:not(.wp-admin) .arf-asset-booking--compact .arf-booking-field--qty,body:not(.wp-admin) .arf-asset-booking--compact .arf-booking-action-field{grid-column:1!important}
 body:not(.wp-admin) .arf-asset-booking--compact .arf-booking-field-label--action{display:none!important}
 body:not(.wp-admin) .arf-asset-booking--compact .arf-booking-action-field{grid-template-rows:46px!important;gap:0!important}
}
body:not(.wp-admin) .arf-checkout-customer .arf-company-field{grid-column:1/-1!important}
@media(max-width:680px){body:not(.wp-admin) .arf-checkout-customer .arf-company-field{grid-column:1!important}}

/* REV024 – offer lifecycle in customer portal */
.arf-offer-box{margin:16px 0;padding:16px 18px;border-left:4px solid #d9600a;background:#f5f6f7}
.arf-offer-box>p{margin:0 0 12px}
.arf-offer-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.arf-offer-change{display:grid;gap:10px;margin-top:12px;max-width:720px}
.arf-offer-change textarea{width:100%;min-height:92px;box-sizing:border-box}
.arf-offer-change .ars-btn{justify-self:start}
@media(max-width:640px){.arf-offer-actions{display:grid}.arf-offer-actions .ars-btn{width:100%}}

/* REV025 – resilient yard workflow */
.arf-process-meta{display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.arf-autosave-state{font-size:.72rem;font-weight:700;color:#616468;white-space:nowrap}
.arf-autosave-state.is-error{color:#9b2c2c}
.arf-verify.is-verified{border-color:#7fb694!important;background:#edf7f0!important;color:#155b36!important}
.arf-verify-state{font-size:.78rem;font-weight:800;color:#17613a;margin-left:6px}
@media(max-width:620px){.arf-process-meta{align-items:flex-start}.arf-process-head{align-items:flex-start}}

/* REV026 – explicit handover release gate */
.arf-release-gate{margin:14px 0;padding:14px;border:1px solid #dadde0;background:#f9fafb}
.arf-release-gate.is-blocked{border-left:4px solid #a45b26;background:#fff9f4}.arf-release-gate.is-ready{border-left:4px solid #2f6b49;background:#f4faf6}
.arf-release-gate-head{display:flex;gap:10px;align-items:flex-start;margin-bottom:10px}.arf-release-gate-head>span{flex:none}.arf-release-gate-head div{display:grid;gap:2px}.arf-release-gate-head span{color:var(--arf-ops-muted);font-size:.86rem}
.arf-release-gate-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:8px}.arf-release-gate-item{display:grid;grid-template-columns:28px 1fr;gap:8px;padding:9px;border:1px solid #e2e4e5;background:#fff}.arf-release-gate-item.is-missing{border-color:#e7c7ae;background:#fffaf6}.arf-release-gate-mark{display:grid;place-items:center;width:28px;height:28px;border-radius:0;background:#eaf4ed;color:#245a3d;font-weight:800}.arf-release-gate-mark svg{width:16px;height:16px}.arf-release-gate-item.is-missing .arf-release-gate-mark{background:#fff0e4;color:#944b18}.arf-release-gate-item div{display:grid;gap:2px}.arf-release-gate-item small{color:var(--arf-ops-muted);line-height:1.35}
/* REQ-INTERN-BOOKING-DETAIL-VISUAL-CLARITY-001: augite-ux-platform's shared "Prozessführung"
 * guidance section (operations.js uxProcessHtml() / class-augite-ux-process.php
 * render_booking_guidance()) is never enqueued/scoped on THIS front-end page (augite-ux.css
 * only ever loads via wp-admin's admin_enqueue_scripts, and its rules are all scoped under a
 * ".augite-ux-platform" body class that admin_body_class() never adds outside wp-admin) - so the
 * <section class="augite-process-guidance"> rendered here had literally zero CSS applied: no
 * border/background/kicker/icon styling at all, confirmed via `grep -n augite-process-guidance
 * assets/css/public.css` returning nothing before this fix. Root cause is the missing enqueue/
 * scope, not a missing selector - fixed here by giving the shared class names their own front-end
 * rule set, reusing the exact same boxed-panel + icon-circle language as the neighbouring
 * "Mitarbeiterübergabe"/Übergabefreigabe panel on this same page (.arf-release-gate/
 * .arf-release-gate-head/.arf-release-gate-mark, above) instead of a new, third visual pattern. */
.augite-process-guidance{margin:14px 0;padding:14px;border:1px solid #dadde0;background:#f9fafb}
/* REQ-OPS-DETAIL-EVENT-REDUNDANCY-001 (wave 16): is-warning (no blockers, open warnings) shares the
 * existing warning palette of is-blocked; is-info (exception-type status such as Teilrücknahme with no
 * blocker and no warning) is neutral - existing ops tokens only, no new colour literal. The error
 * palette (is-exception) is reserved for an exception status that really has blockers. */
.augite-process-guidance.is-blocked,.augite-process-guidance.is-warning{border-left:4px solid #a45b26;background:#fff9f4}
.augite-process-guidance.is-ready{border-left:4px solid #2f6b49;background:#f4faf6}
.augite-process-guidance.is-exception{border-left:4px solid var(--arf-ops-danger,#b42318);background:#fff4f2}
.augite-process-guidance.is-info{background:var(--arf-ops-soft)}
.augite-process-guidance__head{display:flex;gap:10px;align-items:flex-start;margin-bottom:8px}
.augite-process-guidance__head .arf-ui-icon{display:grid;place-items:center;flex:none;width:28px;height:28px;border-radius:0;background:#f1f2f3;color:var(--ars-green,#d9600a)}
.augite-process-guidance.is-blocked .augite-process-guidance__head .arf-ui-icon,.augite-process-guidance.is-warning .augite-process-guidance__head .arf-ui-icon,.augite-process-guidance.is-exception .augite-process-guidance__head .arf-ui-icon{background:#fff0e4;color:#944b18}
.augite-process-guidance.is-info .augite-process-guidance__head .arf-ui-icon{background:var(--arf-ops-paper);color:var(--arf-ops-muted)}
.augite-process-guidance__actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.augite-process-guidance__head h3{margin:2px 0 0;font-size:1.05rem}
.augite-process-guidance .augite-kicker{display:block;font-size:.68rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--arf-ops-muted)}
.augite-process-guidance p{margin:6px 0 0;color:var(--arf-ops-muted);font-size:.86rem}
.augite-process-guidance .augite-prerequisites{margin:12px 0 0;padding:0;list-style:none;display:grid;gap:8px}
.augite-process-guidance .augite-prerequisites li{display:grid;grid-template-columns:20px minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px 10px;background:#fff;border:1px solid #e7dccb}
.augite-process-guidance .augite-prerequisites li>span{font-weight:800;color:#a45b26}
.augite-process-guidance .augite-prerequisites strong,.augite-process-guidance .augite-prerequisites small{display:block}
.augite-process-guidance .augite-prerequisites small{margin-top:2px;color:var(--arf-ops-muted)}
.augite-process-guidance .augite-primary-action{margin-top:12px;display:inline-flex}
/* Same root cause as above: the shared component's "Weiter"/blocker-resolution links use plain
 * WordPress-admin ".button"/".button-primary" classes, which (like the rest of the panel) carry
 * zero styling on this front-end page - WP core's admin button CSS is never enqueued here either.
 * Reuse this page's own button look instead of loading a separate stylesheet for two link roles. */
.augite-process-guidance .button{display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:8px!important;min-height:var(--augite-control-h);padding:var(--augite-button-pad)!important;border-radius:0!important;font-weight:var(--augite-button-weight)!important;text-decoration:none!important;line-height:1.15!important;background:#fff!important;border:1px solid #c5c7c9!important;color:var(--arf-ops-ink,#1d2327)!important}
.augite-process-guidance .button:hover{border-color:var(--arf-ops-green,#d9600a)!important;color:var(--ars-accent-strong,#b84e08)!important}
.augite-process-guidance .button.button-primary{background:var(--ars-accent-strong,#b84e08)!important;border-color:var(--ars-accent-strong,#b84e08)!important;color:#fff!important;min-height:var(--augite-control-h);padding:var(--augite-button-pad)!important}
.augite-process-guidance .button.button-primary:hover{background:var(--ars-accent-strong-hover,#9a4307)!important;border-color:var(--ars-accent-strong-hover,#9a4307)!important;color:#fff!important}
@media(max-width:620px){.augite-process-guidance .augite-prerequisites li{grid-template-columns:20px minmax(0,1fr)}.augite-process-guidance .augite-prerequisites li .button{grid-column:2;width:100%}.augite-process-guidance .augite-primary-action{width:100%;justify-content:center}}

/* REV028 – Kundenportal Self-Service */
.arf-service-request-list{margin:16px 0;padding:14px 0;border-top:1px solid rgba(217,96,10,.15);border-bottom:1px solid rgba(217,96,10,.15)}
.arf-service-request-list>strong{display:block;margin-bottom:8px}.arf-service-request-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 12px;padding:8px 0}.arf-service-request-row small{grid-column:1/-1;color:#6b6f73}
.arf-service-actions{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}.arf-service-form{margin:12px 0 18px;padding:16px;border:1px solid rgba(217,96,10,.18);background:rgba(217,96,10,.025)}
.arf-service-form label{display:grid;gap:5px;margin:0 0 12px}.arf-service-form input,.arf-service-form textarea{width:100%;box-sizing:border-box}.arf-service-form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
@media(max-width:760px){.arf-service-form-grid{grid-template-columns:1fr}.arf-service-actions .ars-btn{width:100%}}

/* REV029 – floating cart visibility hardening.
 * The floating CTA is injected at body level, outside .arf-app. Therefore it must
 * use the theme variable directly instead of the .arf-app-scoped --arf-theme-green.
 * Geometry intentionally mirrors the fixed "Vertrag widerrufen" CTA. */
body:not(.wp-admin) a.arf-floating-cart.ars-btn,
body:not(.wp-admin) a.arf-floating-cart.ars-btn--solid{
  border:1px solid var(--ars-accent-strong,#b84e08)!important;
  background:var(--ars-accent-strong,#b84e08)!important;
  color:#fff!important;
  border-radius:0!important;
  box-shadow:none!important;
}
body:not(.wp-admin) a.arf-floating-cart.ars-btn:hover,
body:not(.wp-admin) a.arf-floating-cart.ars-btn:focus-visible{
  background:var(--ars-accent-strong-hover,#9a4307)!important;
  border-color:var(--ars-accent-strong-hover,#9a4307)!important;
  color:#fff!important;
  filter:brightness(.94);
}
body:not(.wp-admin) .arf-floating-cart__count{
  background:#fff!important;
  color:var(--ars-accent-strong,#b84e08)!important;
}

/* REV030 – customer portal information architecture and modal details */
body:not(.wp-admin) .arf-portal-tabs{display:flex;gap:0;overflow:visible;margin:0 0 24px;border-bottom:1px solid var(--arf-theme-line);flex-wrap:wrap}
body:not(.wp-admin) .arf-portal-tab{display:inline-flex;align-items:center;gap:8px;flex:0 0 auto;min-height:46px;padding:9px 14px;border:0;border-bottom:3px solid transparent;background:transparent;color:var(--arf-theme-muted);font:inherit;font-size:.88rem;font-weight:760;cursor:pointer}
body:not(.wp-admin) .arf-portal-tab:hover,body:not(.wp-admin) .arf-portal-tab:focus-visible{color:var(--ars-accent-strong,#b84e08);background:var(--arf-theme-soft)}
body:not(.wp-admin) .arf-portal-tab.is-active{color:var(--ars-ink,#14181b);border-bottom-color:var(--arf-theme-green)}
body:not(.wp-admin) .arf-portal-icon{width:18px;height:18px;flex:none;vertical-align:-3px}
body:not(.wp-admin) .arf-portal-panel[hidden]{display:none!important}
body:not(.wp-admin) .arf-portal-overview-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;margin:0 0 8px;background:var(--arf-theme-line);border:1px solid var(--arf-theme-line)}
body:not(.wp-admin) .arf-portal-overview-grid article{display:flex;align-items:center;gap:12px;padding:16px;background:#fff}
body:not(.wp-admin) .arf-portal-overview-grid article strong{display:block;margin-bottom:2px}
body:not(.wp-admin) .arf-portal-overview-grid article p{margin:0;color:var(--arf-theme-muted);font-size:.86rem}
body:not(.wp-admin) .arf-portal-pictogram{display:grid;place-items:center;width:38px;height:38px;flex:none;background:var(--arf-theme-soft);color:var(--arf-theme-green)}
body:not(.wp-admin) .arf-portal-section-heading{display:flex;align-items:center;gap:9px}
body:not(.wp-admin) .arf-portal-section-heading>.arf-portal-icon{color:var(--arf-theme-green)}
body:not(.wp-admin) .arf-portal-table-wrap{width:100%;overflow:auto;border:1px solid var(--arf-theme-line);background:#fff}
body:not(.wp-admin) .arf-portal-table{width:100%;min-width:680px;border-collapse:collapse;font-size:.87rem}
body:not(.wp-admin) .arf-portal-table th{padding:9px 12px;border-bottom:1px solid var(--arf-theme-line);background:var(--arf-theme-soft);color:var(--arf-theme-muted);font-size:.76rem;font-weight:800;text-align:left;text-transform:uppercase;letter-spacing:.035em;white-space:nowrap}
body:not(.wp-admin) .arf-portal-table td{padding:11px 12px;border-bottom:1px solid var(--arf-theme-line);vertical-align:middle}
body:not(.wp-admin) .arf-portal-table tbody tr:last-child td{border-bottom:0}
body:not(.wp-admin) .arf-portal-table tbody tr:hover{background:#fbfcfb}
body:not(.wp-admin) .arf-portal-table small{color:var(--arf-theme-muted)}
body:not(.wp-admin) .arf-portal-row-action{min-height:34px!important;padding:6px 9px!important;font-size:.78rem!important;gap:5px!important;white-space:nowrap!important}
body:not(.wp-admin) .arf-portal-row-action .arf-portal-icon{width:14px;height:14px}
body:not(.wp-admin) .arf-portal-empty{margin:0;padding:12px 0;color:var(--arf-theme-muted)}
body:not(.wp-admin) .arf-portal-toolbar{display:flex;justify-content:flex-end;margin:0 0 12px}
body:not(.wp-admin) .arf-portal-toolbar .ars-btn{gap:8px}
body:not(.wp-admin) .arf-portal-kpis span{display:grid!important;grid-template-columns:auto 1fr!important;align-items:baseline!important;column-gap:7px!important;min-width:0!important;padding:9px 11px!important}
body:not(.wp-admin) .arf-portal-kpis span strong{font-size:1.05rem!important}
body:not(.wp-admin) .arf-portal-kpis span small{font-size:.78rem;color:var(--arf-theme-muted)}

body:not(.wp-admin) .arf-portal-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin:0 0 22px;background:var(--arf-theme-line);border:1px solid var(--arf-theme-line)}
body:not(.wp-admin) .arf-portal-detail-grid>div{display:grid;gap:3px;padding:12px;background:#fff}
body:not(.wp-admin) .arf-portal-detail-grid span{color:var(--arf-theme-muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.035em}

body:not(.wp-admin) .arf-portal-note{margin:14px 0;padding:12px;border-left:3px solid var(--arf-theme-green);background:var(--arf-theme-soft)}
body:not(.wp-admin) .arf-pickup-auth-qr-note{text-align:center}
body:not(.wp-admin) .arf-pickup-auth-qr{margin:12px auto;max-width:220px}
body:not(.wp-admin) .arf-pickup-auth-qr svg{display:block;width:100%;height:auto;background:#fff;padding:8px;border:1px solid var(--arf-theme-border,#e1e2e4)}
body:not(.wp-admin) .arf-pickup-auth-code{margin:8px 0;font-size:1.05rem}
body:not(.wp-admin) .arf-modal-form{display:grid;gap:14px;margin:0!important;padding:0!important;border:0!important;background:transparent!important}
body:not(.wp-admin) .arf-modal-form label{display:grid;gap:6px;margin:0!important}
body:not(.wp-admin) .arf-modal-form .ars-btn{justify-self:start}
body:not(.wp-admin) .arf-portal-message-meta{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 16px}
body:not(.wp-admin) .arf-portal-message-meta span{padding:5px 8px;background:var(--arf-theme-soft);color:var(--arf-theme-muted);font-size:.78rem}
body:not(.wp-admin) .arf-portal-message-body{line-height:1.6;white-space:normal}
body:not(.wp-admin) .arf-service-actions .ars-btn{gap:7px}

/* REV030 – floating cart must visually match the fixed withdrawal CTA, not exceed it. */
body:not(.wp-admin) a.arf-floating-cart.ars-btn,body:not(.wp-admin) a.arf-floating-cart.ars-btn--solid{min-height:0!important;height:auto!important;padding:10px 12px!important;font-size:.82rem!important;line-height:1.2!important;gap:6px!important}
body:not(.wp-admin) .arf-floating-cart__icon,body:not(.wp-admin) .arf-floating-cart__icon svg{width:15px!important;height:15px!important}
body:not(.wp-admin) .arf-floating-cart__count{min-width:18px!important;width:auto!important;height:18px!important;padding:0 4px!important;font-size:.66rem!important;line-height:18px!important}

@media(max-width:760px){
 body:not(.wp-admin) .arf-portal-overview-grid{grid-template-columns:1fr}
 body:not(.wp-admin) .arf-portal-detail-grid{grid-template-columns:1fr}

 body:not(.wp-admin) .arf-portal-toolbar{justify-content:stretch}
 body:not(.wp-admin) .arf-portal-toolbar .ars-btn{width:100%}
}

/* REV031 – customer portal visual contract, navigation state and modal-document UX. */
body:not(.wp-admin) .arf-app.arf-portal>.arf-theme-container{width:min(var(--arf-portal-max-width,860px),calc(100% - 48px))!important;max-width:var(--arf-portal-max-width,860px)!important;padding-top:34px!important;padding-bottom:46px!important}
body:not(.wp-admin) .arf-portal-header{margin:0 0 22px!important;padding:0!important;border-bottom:0!important}
body:not(.wp-admin) .arf-portal-header h1{max-width:24ch!important}
body:not(.wp-admin) .arf-portal-kpis{gap:8px!important}
body:not(.wp-admin) .arf-portal-kpis span{min-width:142px!important;padding:10px 12px!important;border:1px solid var(--arf-theme-line)!important;border-left:4px solid var(--arf-theme-green)!important;background:#fff!important}
body:not(.wp-admin) .arf-portal-tabs{gap:7px!important;overflow:visible;margin:0 0 24px!important;padding:0 0 14px!important;border-bottom:1px solid var(--arf-theme-line)!important;flex-wrap:wrap}
body:not(.wp-admin) .arf-portal-tab{min-height:40px!important;padding:7px 11px!important;border:1px solid var(--arf-theme-line)!important;background:#fff!important;color:var(--arf-theme-text)!important;font-size:.82rem!important;font-weight:800!important}
body:not(.wp-admin) .arf-portal-tab:hover,body:not(.wp-admin) .arf-portal-tab:focus-visible{border-color:var(--arf-theme-green)!important;background:var(--arf-theme-soft)!important;color:var(--ars-accent-strong,#b84e08)!important}
body:not(.wp-admin) .arf-portal-tab.is-active{border-color:var(--arf-theme-green)!important;background:var(--arf-theme-green)!important;color:#fff!important}
body:not(.wp-admin) .arf-portal-tab .arf-portal-icon{width:16px;height:16px}
body:not(.wp-admin) .arf-portal-overview-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:18px!important;margin:0 0 12px!important;border:0!important;background:transparent!important}
body:not(.wp-admin) .arf-portal-overview-grid button{display:grid;grid-template-columns:42px minmax(0,1fr) 18px;gap:12px;align-items:center;min-width:0;min-height:92px;padding:16px 15px;border:1px solid var(--arf-theme-line);border-left:4px solid var(--arf-theme-green);background:#fff;color:var(--arf-theme-ink);font:inherit;text-align:left;cursor:pointer}
body:not(.wp-admin) .arf-portal-overview-grid button:hover,body:not(.wp-admin) .arf-portal-overview-grid button:focus-visible{border-color:var(--arf-theme-green);background:var(--arf-theme-soft);outline:0}
body:not(.wp-admin) .arf-portal-overview-grid button>span:nth-child(2){min-width:0}
body:not(.wp-admin) .arf-portal-overview-grid button strong{display:block;margin:0 0 3px;font-size:.95rem}
body:not(.wp-admin) .arf-portal-overview-grid button small{display:block;color:var(--arf-theme-muted);font-size:.78rem;font-weight:500}
body:not(.wp-admin) .arf-portal-overview-grid button>.arf-portal-icon{width:16px;height:16px;color:var(--arf-theme-green)}
body:not(.wp-admin) .arf-portal-pictogram{width:42px!important;height:42px!important;background:transparent!important;color:var(--arf-theme-green)!important}
body:not(.wp-admin) .arf-portal-pictogram .arf-portal-icon{width:34px;height:34px}
body:not(.wp-admin) .arf-portal-section{padding:22px 0!important;border-top:0!important}
body:not(.wp-admin) .arf-portal-section+.arf-portal-section{border-top:1px solid var(--arf-theme-line)!important}
body:not(.wp-admin) .arf-portal-section-heading{margin-bottom:12px!important}
body:not(.wp-admin) .arf-portal-section-heading>.arf-portal-icon{width:25px;height:25px}
body:not(.wp-admin) .arf-portal-table-wrap{border-color:var(--arf-theme-line)!important}
body:not(.wp-admin) .arf-portal-table th{padding:10px 12px!important;background:#f7f8f9!important;color:#65686c!important;font-size:.7rem!important;letter-spacing:.065em!important}
body:not(.wp-admin) .arf-portal-table td{padding:12px!important}
body:not(.wp-admin) .arf-portal-table tbody tr:hover{background:#f9fafb!important}
body:not(.wp-admin) .arf-portal-table a:not(.ars-btn){font-weight:700;text-underline-offset:3px}
body:not(.wp-admin) .arf-portal .arf-status-pill{border-radius:0!important;padding:4px 7px!important;background:#f4f5f6!important;color:#585c60!important;font-size:.75rem!important;font-weight:750!important}
body:not(.wp-admin) .arf-portal .arf-status-pill.arf-status-ready,body:not(.wp-admin) .arf-portal .arf-status-pill.arf-status-confirmed,body:not(.wp-admin) .arf-portal .arf-status-pill.arf-status-completed{border-color:#bfd4c5!important;background:#eef6f0!important;color:var(--ars-accent-strong,#b84e08)!important}
body:not(.wp-admin) .arf-portal-flash{display:flex;align-items:center;gap:10px;margin:-4px 0 16px;padding:12px 14px;border-left:4px solid var(--arf-theme-green);background:#eef6f0;color:#254633;font-size:.9rem}
body:not(.wp-admin) .arf-portal-flash>.arf-portal-icon{width:19px;height:19px;flex:none;color:var(--arf-theme-green)}
body:not(.wp-admin) .arf-portal-flash--error{border-left-color:#b3261e;background:#fdecea;color:#611a15}
body:not(.wp-admin) .arf-portal-flash--error>.arf-portal-icon{color:#b3261e}
body:not(.wp-admin) .arf-portal-flash{flex-wrap:wrap}
body:not(.wp-admin) .arf-portal-flash>span{flex:1 1 auto}
body:not(.wp-admin) .arf-portal-flash>.ars-btn{flex:none}

body:not(.wp-admin) .arf-portal-document-actions{display:flex;justify-content:flex-end;margin:-6px 0 12px}
body:not(.wp-admin) .arf-portal-document-frame{display:block;width:100%;height:min(62vh,720px);border:1px solid var(--arf-theme-line);background:#fff}
@media(max-width:900px){body:not(.wp-admin) .arf-portal-overview-grid{grid-template-columns:1fr!important}}
@media(max-width:760px){
 body:not(.wp-admin) .arf-app.arf-portal>.arf-theme-container{width:calc(100% - 28px)!important;padding-top:32px!important;padding-bottom:40px!important}
 body:not(.wp-admin) .arf-portal-kpis{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}
 body:not(.wp-admin) .arf-portal-kpis span{min-width:0!important}
 body:not(.wp-admin) .arf-portal-tabs{margin-left:-2px!important;margin-right:-2px!important}
 body:not(.wp-admin) .arf-portal-tab{min-height:42px!important}
 body:not(.wp-admin) .arf-portal-document-frame{height:58vh}
}

/* REV033 – portal follows the active augite Rental website geometry more closely.
 * Tabs remain a true tab interface, but use the same quiet navigation/shortcut
 * language, spacing, accents and 1180px shell as the storefront template. */
body:not(.wp-admin) .arf-app.arf-portal>.arf-theme-container{
  width:min(var(--arf-portal-max-width,860px),calc(100% - 48px))!important;max-width:var(--arf-portal-max-width,860px)!important;padding-top:34px!important;padding-bottom:46px!important;
}
body:not(.wp-admin) .arf-portal-header{padding-bottom:24px!important;border-bottom:1px solid var(--arf-theme-line)!important}
body:not(.wp-admin) .arf-portal-kpis span{
  border:0!important;border-left:4px solid var(--arf-theme-green)!important;background:#f8f9fa!important;
}
body:not(.wp-admin) .arf-portal-tabs{
  gap:18px!important;margin:0 0 26px!important;padding:0!important;border-bottom:1px solid var(--arf-theme-line)!important;
}
body:not(.wp-admin) .arf-portal-tab{
  min-height:48px!important;padding:10px 2px 9px!important;border:0!important;border-bottom:3px solid transparent!important;background:transparent!important;color:#3e4144!important;font-size:.9rem!important;font-weight:750!important;
}
body:not(.wp-admin) .arf-portal-tab:hover,body:not(.wp-admin) .arf-portal-tab:focus-visible{
  border-bottom-color:#aeb1b4!important;background:transparent!important;color:var(--ars-accent-strong,#b84e08)!important;text-decoration:none;
}
body:not(.wp-admin) .arf-portal-tab.is-active{
  border-bottom-color:var(--arf-theme-green)!important;background:transparent!important;color:var(--ars-ink,#14181b)!important;
}
body:not(.wp-admin) .arf-portal-overview-grid button{
  border:0!important;border-left:4px solid var(--arf-theme-green)!important;background:#f8f9fa!important;
}
body:not(.wp-admin) .arf-portal-overview-grid button:hover,body:not(.wp-admin) .arf-portal-overview-grid button:focus-visible{background:var(--arf-theme-soft)!important}
body:not(.wp-admin) .arf-portal-section{padding:26px 0!important}
body:not(.wp-admin) .arf-portal-section+.arf-portal-section{border-top:1px solid var(--arf-theme-line)!important}
body:not(.wp-admin) .arf-portal-table-wrap{border-left:4px solid var(--arf-theme-green)!important}
body:not(.wp-admin) .arf-portal-toolbar{justify-content:flex-start!important;margin-bottom:16px!important}
body:not(.wp-admin) .arf-message-direction{display:inline-flex;align-items:center;min-height:24px;padding:2px 7px;background:var(--arf-theme-soft);font-size:.75rem;font-weight:750;white-space:nowrap}
body:not(.wp-admin) .arf-message-direction--out{color:var(--ars-accent-strong,#b84e08)}
body:not(.wp-admin) .arf-message-direction--in{color:#3e4144}
body:not(.wp-admin) .arf-message-reply-actions{margin-top:20px;padding-top:16px;border-top:1px solid var(--arf-theme-line)}
body:not(.wp-admin) .arf-modal-form[aria-busy="true"]{opacity:.78}
@media(max-width:760px){
 body:not(.wp-admin) .arf-app.arf-portal>.arf-theme-container{width:min(100% - 28px,var(--arf-portal-max-width,860px))!important}
 body:not(.wp-admin) .arf-portal-tabs{gap:14px!important}
 body:not(.wp-admin) .arf-portal-tab{min-height:46px!important;padding-inline:1px!important}
}

/* REV034 – customer portal overview/list density, full-width tables and list controls.
 * The selected top-level tab is the section label. List panels therefore do not
 * repeat a document-style left-hand heading; their tables use the whole shell. */
body:not(.wp-admin) .arf-portal-header{display:block!important;margin-bottom:18px!important;padding-bottom:20px!important}
body:not(.wp-admin) .arf-portal-panel--list{width:100%;padding:0!important}
body:not(.wp-admin) .arf-portal-panel--list>.arf-portal-list{width:100%;margin:0}
body:not(.wp-admin) .arf-portal-overview-head{max-width:760px;margin:0 0 18px}
body:not(.wp-admin) .arf-portal-overview-head h2{margin:0 0 6px!important;font-size:1.28rem!important;letter-spacing:0!important}
body:not(.wp-admin) .arf-portal-overview-head p{margin:0;color:var(--arf-theme-muted);font-size:.9rem}
body:not(.wp-admin) .arf-portal-kpi-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;width:100%}
body:not(.wp-admin) .arf-portal-kpi-grid button{display:grid;grid-template-columns:42px minmax(0,1fr) 18px;align-items:center;gap:12px;min-height:92px;padding:16px 15px;border:0;border-left:4px solid var(--arf-theme-green);background:#f8f9fa;color:var(--arf-theme-ink);font:inherit;text-align:left;cursor:pointer}
body:not(.wp-admin) .arf-portal-kpi-grid button:hover,body:not(.wp-admin) .arf-portal-kpi-grid button:focus-visible{background:var(--arf-theme-soft);outline:1px solid #c2c4c7;outline-offset:-1px}
body:not(.wp-admin) .arf-portal-kpi-grid button>span:nth-child(2){min-width:0}
body:not(.wp-admin) .arf-portal-kpi-grid button strong{display:block;margin:0 0 2px;font-size:1.34rem;line-height:1.1;color:var(--ars-accent-strong,#b84e08)}
body:not(.wp-admin) .arf-portal-kpi-grid button small{display:block;color:var(--arf-theme-muted);font-size:.8rem;font-weight:650}
body:not(.wp-admin) .arf-portal-kpi-grid button>.arf-portal-icon{width:16px;height:16px;color:var(--arf-theme-green)}
/* Decision 36 (wave 7): portal Kurzuebersicht surplus metrics ("Weitere Kennzahlen") and the compact list for fewer than 3 metrics -
 * the shared .arf-metric-list/.arf-metric-more rules read --arf-ops-* tokens that only exist inside .arf-ops, so the portal maps them to its theme tokens. */
body:not(.wp-admin) .arf-portal{--arf-ops-line:var(--arf-theme-line,#dadde0);--arf-ops-ink:var(--arf-theme-ink,#14181b);--arf-ops-muted:var(--arf-theme-muted,#6b6f73);--arf-ops-green-2:var(--arf-theme-green,#d9600a)}
body:not(.wp-admin) .arf-portal .arf-metric-more{margin:14px 0 0}
body:not(.wp-admin) .arf-portal .arf-metric-list--compact{margin:0}
body:not(.wp-admin) .arf-portal .arf-metric-list__jump{display:inline;min-height:0;padding:0;border:0;background:none;color:var(--arf-theme-ink);font:inherit;font-weight:600;text-align:left;text-decoration:underline;text-underline-offset:2px;cursor:pointer}
body:not(.wp-admin) .arf-portal .arf-metric-list__jump:hover,body:not(.wp-admin) .arf-portal .arf-metric-list__jump:focus-visible{color:var(--ars-accent-strong,#b84e08);outline:2px solid var(--arf-theme-green);outline-offset:2px}
body:not(.wp-admin) .arf-portal .arf-metric-list dd strong{color:var(--ars-accent-strong,#b84e08)}
body:not(.wp-admin) .arf-portal-subsection{width:100%;margin:0;padding:0}
body:not(.wp-admin) .arf-portal-subsection+.arf-portal-subsection{margin-top:30px;padding-top:24px;border-top:1px solid var(--arf-theme-line)}
body:not(.wp-admin) .arf-portal-subsection>h2{margin:0 0 12px!important;font-size:1rem!important;line-height:1.25!important;letter-spacing:0!important}
body:not(.wp-admin) .arf-portal-table-tools{display:flex;align-items:stretch;gap:10px;flex-wrap:wrap;width:100%;margin:0 0 10px;padding:10px 12px;background:#f8f9fa;border-bottom:1px solid var(--arf-theme-line)}
body:not(.wp-admin) .arf-portal-table-search,body:not(.wp-admin) .arf-portal-table-filter,body:not(.wp-admin) .arf-portal-table-reset-slot,body:not(.wp-admin) .arf-portal-table-count-slot{box-sizing:border-box;display:grid;grid-template-rows:16px 42px;gap:5px;align-items:stretch;margin:0!important;min-height:63px}
body:not(.wp-admin) .arf-portal-table-search,body:not(.wp-admin) .arf-portal-table-filter{color:var(--arf-theme-muted);font-size:.69rem;font-weight:800;letter-spacing:.045em;text-transform:uppercase}
body:not(.wp-admin) .arf-portal-table-search>span,body:not(.wp-admin) .arf-portal-table-filter>span,body:not(.wp-admin) .arf-portal-table-spacer{box-sizing:border-box;display:flex;align-items:flex-end;height:16px;min-height:16px;margin:0!important;padding:0!important;line-height:16px}
body:not(.wp-admin) .arf-portal-table-spacer{visibility:hidden;font-size:.69rem}
body:not(.wp-admin) .arf-portal-table-search{flex:1 1 320px;min-width:240px}
body:not(.wp-admin) .arf-portal-table-filter{flex:0 1 220px;min-width:170px}
body:not(.wp-admin) .arf-portal-table-reset-slot{flex:0 0 auto}
body:not(.wp-admin) .arf-portal-table-count-slot{flex:0 0 auto;margin-left:auto!important}
body:not(.wp-admin) .arf-portal-table-search input,body:not(.wp-admin) .arf-portal-table-filter select{box-sizing:border-box!important;display:block!important;width:100%!important;height:var(--augite-control-h)!important;min-height:var(--augite-control-h)!important;max-height:42px!important;margin:0!important;padding:var(--augite-control-pad)!important;border:1px solid var(--arf-theme-line)!important;border-radius:0!important;background:#fff!important;color:var(--arf-theme-ink)!important;font-family:inherit!important;font-size:var(--augite-field-font-size)!important;font-weight:var(--augite-control-weight)!important;line-height:40px!important;letter-spacing:0!important;text-transform:none!important;box-shadow:none!important;vertical-align:top!important}
body:not(.wp-admin) .arf-portal-table-filter select{padding-right:32px!important;line-height:normal!important}
body:not(.wp-admin) .arf-portal-table-search input:focus,body:not(.wp-admin) .arf-portal-table-filter select:focus{border-color:var(--arf-theme-green)!important;outline:1px solid var(--arf-theme-green);outline-offset:-1px}
body:not(.wp-admin) .arf-portal-table-reset{box-sizing:border-box!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;width:auto!important;height:42px!important;min-height:42px!important;max-height:42px!important;margin:0!important;padding:0 13px!important;border:1px solid var(--arf-theme-green)!important;border-radius:0!important;background:#fff!important;color:var(--ars-accent-strong,#b84e08)!important;font-family:inherit!important;font-size:.78rem!important;font-weight:750!important;line-height:1!important;white-space:nowrap!important;box-shadow:none!important;cursor:pointer}
body:not(.wp-admin) .arf-portal-table-reset:hover,body:not(.wp-admin) .arf-portal-table-reset:focus-visible{background:var(--arf-theme-soft)!important}
body:not(.wp-admin) .arf-portal-table-reset:disabled{opacity:.38;cursor:default;background:#fff!important}
body:not(.wp-admin) .arf-portal-table-count{box-sizing:border-box;display:flex;align-items:center;justify-content:flex-end;height:42px;min-height:42px;margin:0!important;padding:0!important;color:var(--arf-theme-muted);font-size:.76rem;font-weight:700;line-height:1.2;white-space:nowrap}
body:not(.wp-admin) .arf-portal-list>.arf-portal-table-wrap{width:100%;margin:0;border-left:0!important}
body:not(.wp-admin) .arf-portal-panel--list .arf-portal-table-wrap{border-left:0!important}
body:not(.wp-admin) .arf-portal-panel--list .arf-portal-table{width:100%;min-width:760px}
body:not(.wp-admin) .arf-portal-table-sort{display:flex;align-items:center;justify-content:flex-start;gap:5px;width:100%;min-height:24px;padding:0;border:0;background:transparent;color:inherit;font:inherit;font-size:inherit;font-weight:inherit;letter-spacing:inherit;text-align:left;text-transform:inherit;cursor:pointer}
body:not(.wp-admin) .arf-portal-table-sort:hover,body:not(.wp-admin) .arf-portal-table-sort:focus-visible{color:var(--ars-accent-strong,#b84e08);outline:0;text-decoration:underline;text-underline-offset:3px}
body:not(.wp-admin) .arf-portal-sort-indicator{display:inline-block;min-width:11px;color:var(--arf-theme-green);font-size:.8rem;line-height:1}
body:not(.wp-admin) .arf-portal-table th[aria-sort]{background:#f2f3f4!important;color:var(--ars-accent-strong,#b84e08)!important}
body:not(.wp-admin) .arf-portal-table tbody tr[hidden]{display:none!important}
body:not(.wp-admin) .arf-portal-bookings-table tbody tr.is-history td{background:#f3f4f5;color:#5b5e62}
body:not(.wp-admin) .arf-portal-bookings-table tbody tr.is-history td:first-child{box-shadow:inset 4px 0 0 #acaeb1}
body:not(.wp-admin) .arf-portal-bookings-table tbody tr.is-history:hover td{background:#eaebed!important}
body:not(.wp-admin) .arf-portal-bookings-table tbody tr:not(.is-history) td:first-child{box-shadow:inset 4px 0 0 var(--arf-theme-green)}
body:not(.wp-admin) .arf-portal-toolbar+.arf-portal-list{margin-top:0}
body:not(.wp-admin) .arf-portal-toolbar{margin-bottom:10px!important}
body:not(.wp-admin) .arf-portal-toolbar--after{display:flex;justify-content:flex-end;width:100%;margin:14px 0 0!important}
body:not(.wp-admin) .arf-portal-toolbar--after.arf-muted{display:block;text-align:right;color:var(--arf-theme-muted)}
@media(max-width:900px){body:not(.wp-admin) .arf-portal-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){
 body:not(.wp-admin) .arf-portal-kpi-grid{grid-template-columns:1fr}
 body:not(.wp-admin) .arf-portal-table-tools{align-items:stretch;padding:10px}
 body:not(.wp-admin) .arf-portal-table-search,body:not(.wp-admin) .arf-portal-table-filter,body:not(.wp-admin) .arf-portal-table-reset-slot,body:not(.wp-admin) .arf-portal-table-count-slot{flex:1 1 100%;min-width:100%;margin-left:0!important}
 body:not(.wp-admin) .arf-portal-table-reset{width:100%!important}
 body:not(.wp-admin) .arf-portal-table-count{justify-content:flex-start}
}

/* REV037 – Teilübergaben / Teilrücknahmen */
.arf-ops-state.is-progress{color:#725400;background:#fff7d6;border-color:#e3cf87}.arf-batch-select{margin:14px 0;padding:14px;border:1px solid #dadde0;border-left:4px solid var(--arf-ops-green);background:#fcfdfe;display:grid;gap:12px}.arf-batch-select>div:first-child{display:grid;gap:3px}.arf-batch-select>div:first-child>strong{font-size:.95rem}.arf-batch-select>div:first-child>span{color:var(--arf-ops-muted);font-size:.82rem}.arf-batch-assets{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px}.arf-batch-assets label{display:flex!important;align-items:center!important;gap:9px!important;margin:0!important;padding:9px 10px;border:1px solid #dadde0;background:#fff;cursor:pointer}.arf-batch-assets input{width:18px!important;height:18px!important;min-height:0!important;flex:0 0 auto}.arf-batch-assets label>span{display:grid}.arf-batch-assets small{color:var(--arf-ops-muted);font-weight:500}.arf-summary-asset{display:flex!important;justify-content:space-between;gap:12px;align-items:center}.arf-summary-asset em{font-style:normal;font-size:.7rem;color:var(--arf-ops-muted);white-space:nowrap}

/* REV039 – account identity, profile and privacy self-service in the customer portal. */
body:not(.wp-admin) .arf-portal-header{display:grid!important;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:28px}
body:not(.wp-admin) .arf-portal-account-title{min-width:0}
body:not(.wp-admin) .arf-portal-account{position:relative;align-self:center;z-index:12}
body:not(.wp-admin) .arf-portal-account-toggle{display:grid;grid-template-columns:26px minmax(0,1fr);align-items:center;gap:10px;min-width:220px;min-height:52px;padding:8px 12px;border:1px solid var(--arf-theme-line);border-left:4px solid var(--arf-theme-green);border-radius:0;background:#fff;color:var(--arf-theme-ink);font:inherit;text-align:left;cursor:pointer}
body:not(.wp-admin) .arf-portal-account-toggle:hover,body:not(.wp-admin) .arf-portal-account-toggle:focus-visible,body:not(.wp-admin) .arf-portal-account-toggle[aria-expanded="true"]{background:var(--arf-theme-soft);border-color:#babcbe;outline:0}
body:not(.wp-admin) .arf-portal-account-toggle>.arf-portal-icon{width:23px;height:23px;color:var(--arf-theme-green)}
body:not(.wp-admin) .arf-portal-account-toggle>span{display:grid;gap:2px;min-width:0}
body:not(.wp-admin) .arf-portal-account-toggle strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.86rem;line-height:1.2}
body:not(.wp-admin) .arf-portal-account-toggle small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--arf-theme-muted);font-size:.72rem;font-weight:650;line-height:1.2}
body:not(.wp-admin) .arf-portal-account-menu{position:absolute;top:calc(100% + 7px);right:0;width:min(330px,calc(100vw - 32px));padding:7px;border:1px solid var(--arf-theme-line);border-top:3px solid var(--arf-theme-green);background:#fff;box-shadow:0 18px 42px rgba(20,24,27,.16)}
body:not(.wp-admin) .arf-portal-account-menu[hidden]{display:none!important}
body:not(.wp-admin) .arf-portal-account-identity{display:grid;gap:2px;margin:0 0 6px;padding:11px 12px 12px;border-bottom:1px solid var(--arf-theme-line);background:#f8f9fa}
body:not(.wp-admin) .arf-portal-account-identity strong{font-size:.91rem}
body:not(.wp-admin) .arf-portal-account-identity span{overflow-wrap:anywhere;color:#4a4d51;font-size:.78rem}
body:not(.wp-admin) .arf-portal-account-identity small{margin-top:3px;color:var(--arf-theme-muted);font-size:.72rem;font-weight:650}
body:not(.wp-admin) .arf-portal-account-menu button,body:not(.wp-admin) .arf-portal-account-menu a{box-sizing:border-box;display:grid;grid-template-columns:21px minmax(0,1fr);align-items:center;gap:9px;width:100%;min-height:var(--augite-control-h);margin:0;padding:8px 10px;border:0;border-radius:0;background:transparent;color:var(--arf-theme-ink);font:inherit5;text-align:left;text-decoration:none;cursor:pointer}
body:not(.wp-admin) .arf-portal-account-menu button:hover,body:not(.wp-admin) .arf-portal-account-menu button:focus-visible,body:not(.wp-admin) .arf-portal-account-menu a:hover,body:not(.wp-admin) .arf-portal-account-menu a:focus-visible{background:var(--arf-theme-soft);color:var(--ars-accent-strong,#b84e08);outline:0;text-decoration:none}
body:not(.wp-admin) .arf-portal-account-menu .arf-portal-icon{width:18px;height:18px;color:var(--arf-theme-green)}
body:not(.wp-admin) .arf-portal-profile-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0 0 18px}
body:not(.wp-admin) .arf-portal-profile-summary>div{display:grid;gap:4px;padding:11px 12px;border-left:4px solid var(--arf-theme-green);background:#f8f9fa}
body:not(.wp-admin) .arf-portal-profile-summary span{color:var(--arf-theme-muted);font-size:.7rem;font-weight:800;letter-spacing:.045em;text-transform:uppercase}
body:not(.wp-admin) .arf-portal-profile-summary strong{font-size:.88rem;overflow-wrap:anywhere}
body:not(.wp-admin) .arf-profile-password-confirm small{display:block;color:var(--arf-theme-muted);font-weight:500;text-transform:none;letter-spacing:0}
body:not(.wp-admin) .arf-privacy-selfservice{display:grid;gap:18px}
body:not(.wp-admin) .arf-privacy-selfservice>h3{margin:8px 0 -6px!important}
body:not(.wp-admin) .arf-privacy-export{display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:12px;padding:14px;border-left:4px solid var(--arf-theme-green);background:#f8f9fa}
body:not(.wp-admin) .arf-privacy-export .arf-privacy-action-icon{display:grid;place-items:center;color:var(--arf-theme-green)}
body:not(.wp-admin) .arf-privacy-export .arf-privacy-action-icon .arf-portal-icon{width:26px;height:26px}
body:not(.wp-admin) .arf-privacy-export strong{display:block;margin-bottom:3px;font-size:.9rem}
body:not(.wp-admin) .arf-privacy-export p{margin:0;color:var(--arf-theme-muted);font-size:.78rem;line-height:1.45}
body:not(.wp-admin) .arf-privacy-export .arf-result{grid-column:2/-1;color:var(--arf-theme-muted);font-size:.78rem}
@media(max-width:760px){
 body:not(.wp-admin) .arf-portal-header{grid-template-columns:1fr;align-items:stretch;gap:15px}
 body:not(.wp-admin) .arf-portal-account{width:100%}
 body:not(.wp-admin) .arf-portal-account-toggle{width:100%;min-width:0}
 body:not(.wp-admin) .arf-portal-account-menu{left:0;right:auto;width:100%}
 body:not(.wp-admin) .arf-portal-profile-summary{grid-template-columns:1fr}
 body:not(.wp-admin) .arf-privacy-export{grid-template-columns:34px minmax(0,1fr)}
 body:not(.wp-admin) .arf-privacy-export>.ars-btn{grid-column:1/-1;width:100%}
 body:not(.wp-admin) .arf-privacy-export .arf-result{grid-column:1/-1}
}

/* REV040 – secure company-user invitations and invitation acceptance. */
body:not(.wp-admin) .arf-portal-users-subsection{display:grid;gap:10px;margin:0 0 22px}
body:not(.wp-admin) .arf-portal-users-subsection>h3{margin:0!important;font-size:1rem!important;color:var(--arf-theme-ink)!important}
body:not(.wp-admin) .arf-row-actions{display:flex;flex-wrap:wrap;gap:7px;justify-content:flex-start}
body:not(.wp-admin) .arf-invitation-card{max-width:900px}
body:not(.wp-admin) .arf-invitation-body{display:grid;gap:18px;margin-top:8px}
body:not(.wp-admin) .arf-invitation-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
body:not(.wp-admin) .arf-invitation-summary>div{display:grid;gap:4px;padding:12px 13px;border-left:4px solid var(--arf-theme-green);background:#f8f9fa}
body:not(.wp-admin) .arf-invitation-summary span{color:var(--arf-theme-muted);font-size:.7rem;font-weight:800;letter-spacing:.045em;text-transform:uppercase}
body:not(.wp-admin) .arf-invitation-summary strong{font-size:.86rem;overflow-wrap:anywhere}
body:not(.wp-admin) .arf-invitation-state{padding:15px 16px;border-left:4px solid var(--arf-theme-green);background:#f8f9fa}
body:not(.wp-admin) .arf-invitation-state--warning{border-left-color:#a86a18;background:#fff9ef}
body:not(.wp-admin) .arf-invitation-state--error{border-left-color:#9f3f3f;background:#fff5f5}
body:not(.wp-admin) .arf-invitation-state>strong{display:block;margin-bottom:5px;font-size:.94rem}
body:not(.wp-admin) .arf-invitation-state>p{margin:0 0 12px;color:var(--arf-theme-muted);line-height:1.55}
body:not(.wp-admin) .arf-invitation-accept{display:grid;gap:14px}
body:not(.wp-admin) .arf-invitation-accept>.ars-btn{justify-self:start}
@media(max-width:860px){body:not(.wp-admin) .arf-invitation-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){body:not(.wp-admin) .arf-invitation-summary{grid-template-columns:1fr}body:not(.wp-admin) .arf-invitation-accept>.ars-btn{width:100%}.arf-row-actions{flex-direction:column}.arf-row-actions>.ars-btn{width:100%}}

/* REV045: compact finance actions inside full-width portal tables */
body:not(.wp-admin) .arf-portal-finance-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
body:not(.wp-admin) .arf-portal-finance-actions .arf-portal-row-action{margin:0!important}

/* REV047 – Betriebshof layout/host hardening.
 * The internal operations page must not inherit customer-only floating CTAs and
 * its green hero must win against the generic storefront heading contract.
 */
body.arf-operations-page .arf-floating-cart,
body.arf-operations-page a[href*="/vertrag-widerrufen/"]{display:none!important}
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-hero{align-items:center!important;min-height:160px!important;padding:26px 24px!important}
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-hero h1{max-width:none!important;margin:4px 0 10px!important;color:#fff!important;font-size:clamp(2rem,3.4vw,2.85rem)!important;line-height:1.03!important;letter-spacing:-.03em!important}
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-hero .arf-ops-eyebrow{color:#f2f2f3!important}
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-hero p{margin:0!important;color:#f9f0ea!important;line-height:1.48!important}
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-hero .arf-ops-icon-button{flex:none!important;min-height:var(--augite-control-h)!important;background:transparent!important;border:1px solid rgba(255,255,255,.52)!important;color:#fff!important}
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-hero .arf-ops-icon-button:hover{background:rgba(255,255,255,.12)!important;border-color:#fff!important}

body:not(.wp-admin) .arf-app.arf-ops .arf-ops-card:not(.augite-modal){padding:20px 18px!important;margin-bottom:16px!important}

body:not(.wp-admin) .arf-app.arf-ops .arf-ops-section-head h2{margin:3px 0 6px!important;font-size:clamp(1.55rem,2.4vw,2.05rem)!important;line-height:1.08!important}
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-section-head p{margin:0!important;line-height:1.45!important}

body:not(.wp-admin) .arf-app.arf-ops .arf-ops-token-inline{display:grid!important;grid-template-rows:16px 46px!important;gap:5px!important;align-items:stretch!important}
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-token-inline>span{display:flex!important;align-items:center!important;height:16px!important;line-height:16px!important}
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-token-inline input{height:var(--augite-control-h)!important;min-height:var(--augite-control-h)!important;margin:0!important;padding:var(--augite-control-pad)!important}

body:not(.wp-admin) .arf-app.arf-ops .arf-ops-list{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:9px!important;margin-top:14px!important}
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-booking{grid-template-columns:38px minmax(0,1fr) max-content 14px!important;min-height:82px!important;padding:12px!important;border-radius:0!important}
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-booking-copy{align-self:center!important}
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-booking-copy strong,
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-booking-copy span,
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-booking-copy small{margin:0!important}
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-state{justify-self:end!important;max-width:min(14rem,100%);white-space:normal;overflow-wrap:anywhere} /* wave 33 (REQ-SCAN-DIALOG-LAYOUT-SAFARI-001 / decision 165 screenshot): status labels wrap, never truncated (was max-width:124px + ellipsis: "Klärung erforderlich · …") */

@media(max-width:1040px){

 body:not(.wp-admin) .arf-app.arf-ops .arf-ops-list{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media(max-width:720px){
 body:not(.wp-admin) .arf-app.arf-ops .arf-ops-hero{align-items:flex-start!important;flex-direction:column!important;min-height:0!important;padding:22px 18px!important}
 body:not(.wp-admin) .arf-app.arf-ops .arf-ops-hero .arf-ops-icon-button{width:100%!important}

 body:not(.wp-admin) .arf-app.arf-ops .arf-ops-token-inline{grid-column:1/-1!important}

 body:not(.wp-admin) .arf-app.arf-ops .arf-ops-list{grid-template-columns:1fr!important}
}
@media(max-width:460px){

 body:not(.wp-admin) .arf-app.arf-ops .arf-ops-token-inline{grid-column:1!important}

 body:not(.wp-admin) .arf-app.arf-ops .arf-ops-booking{grid-template-columns:38px minmax(0,1fr) 14px!important}
 body:not(.wp-admin) .arf-app.arf-ops .arf-ops-state{grid-column:2!important;grid-row:2!important;justify-self:start!important;margin-top:5px!important}
 body:not(.wp-admin) .arf-app.arf-ops .arf-ops-chevron{grid-column:3!important;grid-row:1/3!important}
}

/* REV048 – Betriebshof: final template-grid contract.
 * Keep the operations workflow inside the same document shell width used by
 * the active augite Rental Theme. This rule's higher selector specificity
 * (.arf-app.arf-ops.arf-theme-page vs. the general .arf-app.arf-ops rule
 * above) means it always wins regardless of source order -- so when the
 * theme's own shell width changes, THIS number must be updated to match.
 *
 * REQ-088 (REV144): the theme (site.css, .ars-doc-page>.ars-shell) has since
 * moved from 1040px (REV88, when this rule was written) to 1180px, but this
 * rule was never updated to track it -- so /intern/rentalflow silently drifted
 * to a narrower shell than every other public page on the site, reported by
 * the client and confirmed live: the general 1180px rule above was present
 * and correct the whole time, this more-specific rule was just overriding it
 * with a stale value. Corrected to 1180px to match the theme's current width.
 */
body:not(.wp-admin) .arf-app.arf-ops.arf-theme-page>.arf-theme-container{
  width:min(1180px,calc(100% - 48px))!important;
  max-width:1180px!important;
  margin:0 auto!important;
  padding:34px 0 46px!important;
}
/* REQ-INTERN-LAYOUT-CALIBRATION (2026-09-12): /intern/rentalflow/ is the one /intern/ surface
 * that genuinely has to work one-handed on a tablet (see design/website/website_layoutvorschrift-
 * REV001 line 79/156: tablet gets touch-arbeitszeilen, only desktop gets a comparison table) -
 * its 1180px cap above stays untouched. The other /intern/ modules (RentalCore Business
 * Management, RentalInvoice, RentalPayments - all built on augite-rentalcore.php/-invoice.php/
 * -payments.php's shared /intern/ shell, REQ-INTERN-CONSOLIDATION M1-M3) are desktop-only list/
 * detail screens using .arf-admin-table, the same dense wp-admin-equivalent row padding
 * (10px 12px) as body.wp-admin .arf-app.arf-ops above - but were inheriting /intern/rentalflow's
 * tablet-safe 1180px width regardless, needlessly cramping table columns that don't need to fit
 * a tablet viewport at all (e.g. the Kunden-Liste is already at the design spec's own "SOLL max 7
 * Desktop-Spalten" budget - see line 102 of the same source - inside only 1180px). Every one of
 * these module pages carries data-arf-intern-module (rentalflow's own page never does - see
 * class-arf-shortcodes.php line ~712), which this rule uses to widen ONLY them to 1320px - the
 * same desktop content width this codebase already established for the wp-admin-embedded variant
 * of this exact UI (body.wp-admin .arf-app.arf-ops below), and the value the layout spec's own
 * K07 conflict resolution names as "aktuell wirksame Root-Breite" (line 36). Higher selector
 * specificity than the 1180px rule above (adds [data-arf-intern-module] and the child
 * combinator) guarantees this wins regardless of source order - see the REV048/REQ-088 comment
 * above for why that discipline matters here. */
body:not(.wp-admin) .arf-app.arf-ops.arf-theme-page[data-arf-intern-module]{
  width:min(1320px,calc(100% - 48px))!important;
  max-width:1320px!important;
  margin:0 auto!important;
}
/* REQ-INTERN-VIEWPORT-WIDTH-WASTE-001 (2026-09-25), eigener Befund aus der Messung -
 * "zwei Regeln, jede einzeln richtig, zusammen falsch":
 *
 * Bis hierher trug DIESE Regel dieselbe Formel wie die Regel darueber,
 * width:min(1320px,calc(100% - 48px)). Beide sind fuer sich gelesen korrekt - aber sie
 * stehen ineinander: der Wurzelknoten zieht die 48px ab, und der Container zieht sie von
 * dem bereits verkleinerten Kasten ERNEUT ab. Die nutzbare Inhaltsspalte war darum nie
 * 1320px, sondern 1272px, und auf kleinen Schirmen Viewport minus 96px statt minus 48px.
 *
 * Der Fehler war am Quelltext nicht zu sehen - wer die Formel liest, liest sie zweimal als
 * korrekt. Sichtbar wurde er erst am berechneten Stil im Browser (gemessen: Wurzelknoten
 * 1320px, Container 1272px bei 1440px und jeder groesseren Breite; 768px Viewport ->
 * Container 672px statt 720px).
 *
 * Korrektur nach Entscheidung des Auftraggebers vom 2026-09-25: der Aussenabstand steht
 * genau einmal, naemlich am Wurzelknoten. Der Container fuellt ihn aus. Das wirkt auf ALLEN
 * Breiten und gibt gerade den kleinen Schirmen 48px zurueck, wo der Platz am knappsten ist.
 * Vorher/nachher bei 768px Viewport: 672px -> 720px. */
body:not(.wp-admin) .arf-app.arf-ops.arf-theme-page[data-arf-intern-module]>.arf-theme-container{
  width:100%!important;
  max-width:none!important;
  margin:0 auto!important;
  padding:34px 0 46px!important;
}

/* ===================================================================================
 * REQ-INTERN-VIEWPORT-WIDTH-WASTE-001 (Auftraggeberentscheidung 2026-09-25)
 * -----------------------------------------------------------------------------------
 * REGEL 1 - eine Stufe fuer grosse Schirme, nur fuer die /intern/-Modulflaechen.
 *
 * Gemessener Ausgangszustand (berechneter Stil im Browser, 195 Messpunkte ueber alle 15
 * Ansichten aus arf_intern_page_registry(), 3 Geraeteprofile, 13 Viewportgroessen - nicht
 * aus CSS-Lektuere abgeleitet): die beiden Regeln oben gewinnen die Kaskade fuer alle 14
 * Traeger von data-arf-intern-module (Spezifitaet 601 bzw. 701, !important, ohne
 * Medienabfrage), und 1320px ist die hoechste Obergrenze im ganzen Stylesheet. Die
 * breiteste Medienabfrage der Datei war max-width:1120px - oberhalb davon existierte
 * keine einzige Stufe, ein 1920er, 2560er und 3440er Schirm bekam exakt das Layout eines
 * 1400ers. Gemessene Verschwendung: 1920px -> 33,8 Prozent der Breite ungenutzt,
 * 2560px -> 50,3 Prozent, 3440px -> 63,0 Prozent.
 *
 * Auftraggeberentscheidung, woertlich: "1320 px bleibt bis ~1500 px. Darueber eine neue
 * Stufe, die Listen- und Tabellenflaechen auf 1600-1760 px hebt, Lesetexte aber bei
 * ~1320 px laesst."
 *
 * DOPPELTER AUSSENABSTAND: die gemessenen 33,8/50,3/63,0 Prozent beziehen sich auf die
 * Inhaltsspalte von 1272px, die der Ausgangszustand tatsaechlich lieferte - nicht auf die
 * 1320px, die der Quelltext nahelegt. Die Ursache (der 48px-Rand wurde zweimal abgezogen)
 * ist ein eigener Befund und wird an der Container-Regel oben behandelt; sie ist dort
 * nach Entscheidung des Auftraggebers vom 2026-09-25 auf allen Breiten korrigiert. Diese
 * Stufe hier wiederholt den Fehler folglich nicht: der Rand steht am Wurzelknoten, der
 * Container fuellt ihn aus.
 *
 * WARUM DIE SCHWELLE BEI 1501px UND NICHT DIE BANDUNTERGRENZE 1600px: 1600px plus die
 * beiden 24px-Raender braucht mindestens 1648px Viewport. Zwischen 1501px und 1647px
 * passt das Band physisch nicht. Statt dort einen Sprung zu erzeugen, fliesst die Stufe
 * von 1453px (bei 1501px Viewport) hoch und erreicht das Band ab 1648px. Gemessene
 * Zielwerte: 1680px -> 1632px, 1920px -> 1760px, 2560px und 3440px -> 1760px.
 * =================================================================================== */
@media (min-width:1501px){
  body:not(.wp-admin) .arf-app.arf-ops.arf-theme-page[data-arf-intern-module]{
    width:min(1760px,calc(100% - 48px))!important;
    max-width:1760px!important;
    margin:0 auto!important;
  }
  /* Der Container braucht hier keine eigene Breitenangabe mehr: die Basisregel oben setzt
   * ihn seit der Doppelrandkorrektur schon auf width:100%/max-width:none. Er bleibt nur
   * deshalb aufgefuehrt, damit diese Stufe ohne Kenntnis der Basisregel lesbar ist. */
  body:not(.wp-admin) .arf-app.arf-ops.arf-theme-page[data-arf-intern-module]>.arf-theme-container{
    width:100%!important;
    max-width:none!important;
    margin:0 auto!important;
    padding:34px 0 46px!important;
  }
  /* Lesetexte bleiben bei ~1320px - die zweite Haelfte derselben Auftraggeberentscheidung.
   * Gemessen fuehren genau fuenf der 15 Flaechen Fliesstext, der die Inhaltsspalte fast
   * ausfuellt und keinerlei eigene max-width traegt: rentalinvoice und intern-wartung je
   * 1234px, intern-meldungen 1194px, rentalcore-buchung-detail und rentalcore-kunde-detail
   * je 1150px. Ohne diese Kappung wuerden genau diese fuenf auf 1760px Zeilenlaenge
   * mitwachsen. Die uebrigen zehn Flaechen liegen zwischen 326px und 912px und werden von
   * der Kappung nicht beruehrt. 1320px ist bewusst die Zahl des Auftraggebers und kein in
   * ein Zeichenmass umgedeuteter Ersatzwert. !important, weil die Tabellen- und
   * Kartenregeln dieser Datei durchgaengig !important fuehren; ohne das entschiede die
   * Quellreihenfolge statt der Absicht. */
  body:not(.wp-admin) .arf-app.arf-ops.arf-theme-page[data-arf-intern-module] p{
    max-width:1320px!important;
  }
}

/* ===================================================================================
 * REQ-INTERN-VIEWPORT-WIDTH-WASTE-001 (Auftraggeberentscheidung 2026-09-25)
 * -----------------------------------------------------------------------------------
 * REGEL 2 - /intern/rentalflow/, die einzige /intern/-Flaeche OHNE data-arf-intern-module.
 *
 * Auftraggeberentscheidung, woertlich: "/intern/rentalflow/ muss sich bei tatsaechlichem
 * Tablet-use auf die tatsaechliche Groesse des Screens ohne Rand ziehen, bei einem
 * normalen Client/Screeen analog zu Variante 2" - Variante 2 war "Listen- und
 * Tabellenflaechen nutzen die Breite fast vollstaendig aus, nur ein fester Aussenabstand
 * bleibt". Regel 2 ist damit ausdruecklich WEITER als Regel 1, nicht schmaler.
 *
 * Gemessener Ausgangszustand: der Wurzelknoten dieser Flaeche ist bereits heute volle
 * Viewportbreite (Zeile 772, width:100%!important, max-width:none!important - bei 3440px
 * Viewport auch mit 3440px gemessen). NUR der Container haengt bei 1180px, und zwar durch
 * die Regel in Zeile 1404, nicht durch die in Zeile 773: 1404 hat Spezifitaet 601 und
 * gewinnt, 773 verliert. Es ist deshalb genau der Container zu loesen, sonst nichts.
 *
 * WARUM NICHT data-augite-density: dieses Attribut wird serverseitig JE MODUL gesetzt
 * (ARF_Backend_UI::density_for_intern_module(), class-arf-intern.php:359 - Rueckfall
 * ergibt fuer das Modul rentalflow den Wert touch und sonst dense). Es bedeutet "dieses
 * Modul ist fuer Touch gebaut", NICHT "der Nutzer sitzt gerade an einem Tablet", und
 * taugt darum nicht zur Unterscheidung, die diese Entscheidung verlangt.
 *
 * WARUM DIE BREITENSCHWELLE 1366px MITGEHOERT UND NICHT WEGOPTIMIERT WERDEN DARF:
 * gemessen liefern ein echtes Tabletprofil und ein Desktopprofil mit Touchschirm exakt
 * dieselben Medienmerkmale (pointer:coarse=true, hover:none=true, any-pointer:coarse=true,
 * maxTouchPoints=1). Ein Medienmerkmal allein kann die beiden also NICHT trennen; erst die
 * Breite tut es. Entscheidung des Auftraggebers dazu: ein angedocktes Tablet am grossen
 * Schirm faellt bewusst auf die Desktopregel, weil randlos bei 2560px keine Bedienhilfe
 * mehr ist, sondern eine 65cm breite Tabelle.
 * UNGEPRUEFT UND NICHT ENTLASTET: die Messung lief unter Playwright, dessen hasTouch alle
 * Merkmale auf coarse setzt. Ein echtes Windows-Touchnotebook meldet in der Praxis
 * pointer:fine ZUSAMMEN MIT any-pointer:coarse - eine Signatur, die diese Emulation nicht
 * erzeugen kann und die hier folglich nicht gemessen wurde. Dieser Fall traegt trotzdem,
 * weil er ueber die Breitenschwelle und nicht ueber das Medienmerkmal entschieden wird.
 *
 * Unterhalb 768px wird bewusst NICHTS geaendert: dort regeln die bestehenden
 * @media(max-width:720px)- und @media(max-width:760px)-Bloecke mit 28px-Rand, und kleine
 * Schirme sind die Regressionsgrenze dieses Auftrags, kein Gestaltungsspielraum.
 * =================================================================================== */
/* Regel 2a - normaler Client: fliessend bis zum Rand mit festem Aussenabstand (Variante 2),
 * ABER mit derselben Obergrenze 1760px wie die Modulflaechen in Regel 1.
 *
 * Diese Obergrenze sieht auf den ersten Blick nach einem Versehen aus - eine Touch-Flaeche
 * mit derselben Grenze wie die datendichten Desktop-Tabellenflaechen. Sie ist keines:
 *
 * Auftraggeberentscheidung 2026-09-25, zweite Festlegung: randlos bleibt die Anforderung
 * fuer das TABLET und ist unten in Regel 2b unangetastet (768px -> 768px, 1024px -> 1024px,
 * 1112px -> 1112px, 1366px -> 1366px, Rand 0). Die Obergrenze hier gilt ausschliesslich fuer
 * Zeigergeraete. Grund: gemessen ergab die erste Fassung bei 2560px Viewport eine 2512px
 * lange Arbeitszeile - damit waere die Touch-Konsole BREITER gewesen als die Tabellen-
 * flaechen mit 1760px, und eine 65cm lange Arbeitszeile ist keine Bedienhilfe mehr.
 *
 * Lehrstueck zur Entscheidungsgrundlage, bewusst hier vermerkt: die erste Festlegung
 * ("analog Variante 2", fliessend bis Rand) war nicht falsch - sie war ohne die Zahl
 * getroffen. Erst die gemessenen 2512px gegen 1760px haben gezeigt, was sie konkret
 * bedeutet, und daraufhin fiel sie anders aus.
 *
 * Der fliessende Bereich bleibt erhalten: zwischen Tabletschwelle und 1760px waechst die
 * Flaeche weiter mit (gemessen 1440px -> 1392px, 1680px -> 1632px), gekappt wird erst
 * oberhalb (1920px, 2560px und 3440px -> je 1760px). */
@media (min-width:768px) and (pointer:fine), (min-width:1367px){
  body:not(.wp-admin) .arf-app.arf-ops.arf-theme-page:not([data-arf-intern-module])>.arf-theme-container{
    width:min(1760px,calc(100% - 48px))!important;
    max-width:1760px!important;
    margin:0 auto!important;
  }
}
/* Regel 2b - tatsaechlicher Tablet-Gebrauch: randlos auf die volle Bildschirmbreite. */
@media (min-width:768px) and (max-width:1366px) and (pointer:coarse){
  body:not(.wp-admin) .arf-app.arf-ops.arf-theme-page:not([data-arf-intern-module])>.arf-theme-container{
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    padding-left:0!important;
    padding-right:0!important;
  }
}

/* ===================================================================================
 * REQ-INTERN-VIEWPORT-WIDTH-WASTE-001 (Auftraggeberentscheidung 2026-09-25)
 * -----------------------------------------------------------------------------------
 * REGEL 3 - Theme-Kopf und Theme-Fussleiste folgen derselben Stufe wie der Inhalt, damit
 * Logo, Menue und Inhaltskante auf einer Linie stehen.
 *
 * Gemessener Anlass: der Theme-Kopf (.ars-header-inner) und die Fussleiste
 * (.ars-footer > .ars-shell) standen bei JEDER Desktopbreite bis 3440px auf 1180px -
 * das Theme kennt oberhalb 1080px keine Stufe. Nach Regel 1 und 2 ergab das bei 1920px
 * Kopf (370|1550) gegen Inhalt (80|1840), also 290px Versatz je Seite. Auftraggeber-
 * vorgabe fuer 2560px: |<--- Kopf 1760 --->| ueber |<--- Inhalt 1760 --->|, nicht 1180
 * ueber 1760.
 *
 * WARUM HIER UND NICHT IN site.css DES THEMES: die Zahlen dieser Stufe (1320px, 1760px,
 * die 48px-Formel und die Tabletschwelle) stehen vollstaendig in dieser Datei. Wuerden
 * sie zusaetzlich in site.css stehen, gaebe es zwei Quellen fuer denselben Wert - und
 * genau dieser Fall ist in dieser Datei schon einmal eingetreten und oben dokumentiert
 * (REQ-088/REV144: das Theme wanderte von 1040px auf 1180px, die Plugin-Regel blieb
 * stehen, /intern/rentalflow/ rutschte still auf die schmalere Schale). Eine Stufe, eine
 * Datei. Das Theme-Stylesheet bleibt unangetastet.
 *
 * WARUM body.augite-intern-page UND NICHT DER SELEKTORNAME: .ars-header-inner ist das
 * Kopfgeruest der GANZEN Seite (plugins/augite-rental/parts/header.html), also auch des
 * Shops. Die Eingrenzung faellt darum ueber die Body-Klasse, die arf_intern_body_class()
 * ausschliesslich auf den /intern/-Routen setzt (class-arf-intern.php:428) - dieselbe
 * Eingrenzung, mit der in diesem Repo bereits "Shop unveraendert" hergestellt wird
 * (siehe die Fassungsnotiz zu REQ-BACKEND-INPUT-BUTTON-CONSISTENCY-001). Belegt wird das
 * nicht am Selektornamen, sondern am Gegenstand: eine echte oeffentliche Seite wird vor
 * und nach der Aenderung abgerufen und muss dieselbe Kopfbreite behalten.
 *
 * UNTERHALB 768px wird bewusst nichts angefasst: dort regelt das Theme mit 28px-Rand
 * (site.css @media max-width:1080px). Es bleibt dort ein Restversatz von 10px je Seite
 * zwischen Kopf (Viewport minus 28px) und Inhalt (Viewport minus 48px). Der Versatz ist
 * nicht neu, er war vor dieser Aenderung wegen des doppelt abgezogenen Randes mit 34px je
 * Seite sogar groesser; kleine Schirme sind die Regressionsgrenze dieses Auftrags und
 * kein Gestaltungsspielraum.
 * =================================================================================== */
/* Regel 3a - Modulflaechen bis 1500px: dieselbe Formel wie ihr Wurzelknoten. */
@media (min-width:768px){
  body.augite-intern-page:not(.wp-admin) .ars-header-inner,
  body.augite-intern-page:not(.wp-admin) .ars-footer>.ars-shell{
    width:min(1320px,calc(100% - 48px))!important;
    max-width:1320px!important;
    margin-left:auto!important;
    margin-right:auto!important;
  }
}
/* Regel 3b - Modulflaechen ab 1501px: dieselbe Stufe wie Regel 1. */
@media (min-width:1501px){
  body.augite-intern-page:not(.wp-admin) .ars-header-inner,
  body.augite-intern-page:not(.wp-admin) .ars-footer>.ars-shell{
    width:min(1760px,calc(100% - 48px))!important;
    max-width:1760px!important;
  }
}
/* Regel 3c - /intern/rentalflow/ am Zeigergeraet: dieselbe Formel wie Regel 2a.
 * Die Konsole hat eine eigene Body-Klasse (augite-page-intern-rentalflow, gebildet aus
 * der page_id intern.rentalflow in arf_intern_page_registry()), weil ihr Inhalt einer
 * anderen Formel folgt als die Modulflaechen - sie ist die einzige /intern/-Flaeche ohne
 * data-arf-intern-module. */
@media (min-width:768px) and (pointer:fine), (min-width:1367px){
  body.augite-page-intern-rentalflow:not(.wp-admin) .ars-header-inner,
  body.augite-page-intern-rentalflow:not(.wp-admin) .ars-footer>.ars-shell{
    width:min(1760px,calc(100% - 48px))!important;
    max-width:1760px!important;
    margin-left:auto!important;
    margin-right:auto!important;
  }
}
/* Regel 3d - /intern/rentalflow/ auf dem Tablet: randlos, wie Regel 2b. */
@media (min-width:768px) and (max-width:1366px) and (pointer:coarse){
  body.augite-page-intern-rentalflow:not(.wp-admin) .ars-header-inner,
  body.augite-page-intern-rentalflow:not(.wp-admin) .ars-footer>.ars-shell{
    width:100%!important;
    max-width:none!important;
    margin-left:0!important;
    margin-right:0!important;
  }
}

/* ===================================================================================
 * REQ-INTERN-VIEWPORT-WIDTH-WASTE-001, Nachtrag (Auftraggeberentscheidung 2026-09-25)
 * -----------------------------------------------------------------------------------
 * REGEL 4 - REINE Formularflaechen bleiben bei ~1320px und nehmen an der Stufe nicht teil.
 *
 * Begruendung des Auftraggebers: ein 273px breites Eingabefeld in einem 1722px breiten
 * Kasten sieht nach Fehler aus, nicht nach Grosszuegigkeit - und diese Flaechen haben keine
 * Tabellen, die von der Breite profitieren.
 *
 * WELCHE FLAECHEN DAS SIND - am gerenderten DOM gezaehlt, nicht aus der Vorlagenkennung
 * abgeleitet (Messung 2026-09-25 ueber alle 15 Ansichten aus arf_intern_page_registry(),
 * Zaehlkriterium: keine sichtbare Datentabelle, mindestens ein sichtbares Formular,
 * mindestens drei sichtbare Bedienelemente):
 *   intern-profil                 0 Datentabellen, 4 Formulare, 10 Bedienelemente
 *   rentalcore-kunde-formular     0 Datentabellen, 1 Formular,   9 Bedienelemente
 * Genau zwei von 15. Ausdruecklich NICHT dabei sind die beiden Objektakten, obwohl sie
 * Formularteile fuehren: rentalcore-buchung-detail hat 7 sichtbare Datentabellen und
 * rentalcore-kunde-detail hat 4 - sie profitieren von der Breite und behalten die Stufe.
 *
 * WARUM DIE BODY-KLASSE UND NICHT data-arf-intern-module: Kopf und Fussleiste liegen
 * AUSSERHALB des ops-Wrappers und koennen das Attribut nicht sehen. Wuerde der Inhalt am
 * Attribut und der Kopf an der Body-Klasse haengen, gaebe es zwei Unterscheidungsmerkmale
 * fuer dieselbe Entscheidung - und damit die Moeglichkeit, dass ein 1320px breiter Inhalt
 * unter einem 1760px breiten Kopf steht. Genau diesen Versatz hat der Hauptauftrag an 195
 * Messpunkten beseitigt; er darf hier nicht an zwei Flaechen neu entstehen. Ein Merkmal
 * fuer alle drei Flaechen.
 * =================================================================================== */
@media (min-width:1501px){
  body.augite-page-intern-profil:not(.wp-admin) .arf-app.arf-ops.arf-theme-page[data-arf-intern-module],
  body.augite-page-intern-rentalcore-kunde-formular:not(.wp-admin) .arf-app.arf-ops.arf-theme-page[data-arf-intern-module]{
    width:min(1320px,calc(100% - 48px))!important;
    max-width:1320px!important;
    margin:0 auto!important;
  }
  body.augite-page-intern-profil:not(.wp-admin) .ars-header-inner,
  body.augite-page-intern-profil:not(.wp-admin) .ars-footer>.ars-shell,
  body.augite-page-intern-rentalcore-kunde-formular:not(.wp-admin) .ars-header-inner,
  body.augite-page-intern-rentalcore-kunde-formular:not(.wp-admin) .ars-footer>.ars-shell{
    width:min(1320px,calc(100% - 48px))!important;
    max-width:1320px!important;
  }
}

/* REQ-INTERN-VIEWPORT-WIDTH-WASTE-001, Nachtrag (Auftraggeberentscheidung 2026-09-25):
 * REGEL 5 - das Hilfe-Suchfeld bekommt eine eigene Hoechstbreite.
 *
 * Begruendung des Auftraggebers: ein einzeiliges Feld wird durch Breite nicht bedienbarer -
 * die Eingabe ist kurz, der Mausweg wird laenger. Gemessen wuchs das Feld mit der
 * Inhaltsspalte von 1097px auf 1585px mit, also auf rund 42cm bei einem 2560er Schirm.
 *
 * Die Grundregel in Zeile ~2966 setzt flex:1 1 18rem und max-width:100%; die Deckelung
 * gehoert deshalb auf die Hoechstbreite und nicht auf die Flex-Basis, sonst schrumpft das
 * Feld auf schmalen Schirmen. Unterhalb 720px Spaltenbreite bleibt alles wie bisher.
 *
 * AUSDRUECKLICH NUR DIESES ELEMENT: der Auftraggeber hat "nur dieses Element" gewaehlt und
 * nicht die systemweite Regel. Gezaehlt wurde trotzdem (Messung 2026-09-25, Zaehlbasis alle
 * 3962 sichtbaren Elemente der 15 Flaechen): 23 Bedienelemente wachsen mit der Spalte mit,
 * 15 davon auf volle Kartenbreite. Nach diesem Nachtrag verbleiben 14 auf den beiden
 * Flaechen rentalcore-buchung-detail und rentalinvoice. Das ist bewusst NICHT hier gebaut -
 * es ist dem Auftraggeber als eigene Entscheidung vorzulegen. */
body:not(.wp-admin) .arf-app.arf-ops .arf-help-search__input{
  max-width:720px!important;
}

body:not(.wp-admin) .arf-app.arf-ops,
body:not(.wp-admin) .arf-app.arf-ops *,
body:not(.wp-admin) .arf-app.arf-ops *::before,
body:not(.wp-admin) .arf-app.arf-ops *::after{box-sizing:border-box}
/* Nutzerauftrag (2026-09-12): dieselbe ".arf-ops-card ist immer 100% breit"-Falle wie die
 * wp-admin-Fassung oben (Spezifitaet 0,4,1 - schlaegt jede gleich- oder niedriger-spezifische
 * Modal-Regel unabhaengig von deren eigener Spezifitaet) - der reale Grund, warum das
 * Asset-Modal auf /intern/rentalflow/ trotz mehrfacher vorheriger Korrekturen "seitenbreit"
 * blieb, waehrend Kundesuche/Direktvermietung (ohne .arf-ops-card-Klasse) korrekt reagierten. */
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-hero,
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-card:not(.augite-modal){width:100%!important;max-width:100%!important;min-width:0!important}

/* Live finding (2026-09-14, Auftraggeber-Screenshot): the Asset-Identifikation modal still
 * horizontal-scrolled and clipped "Übernehmen" despite the earlier width-arithmetic fix, because
 * this rule - like the ".arf-ops-card ist immer 100% breit"-Falle documented above (specificity
 * 0,4,1, beats any lower-specificity modal-scoped rule regardless of source order) - was never
 * excluded from the picker modal. It forced minmax(210px,1fr) (later re-declared as 250px/220px/
 * 200px by sibling rules below and above) on the scanbar's input column INSIDE the modal too,
 * overriding the modal's own, lower-specificity (0,3,0) ".arf-ops-scanner.is-picker-modal
 * .arf-ops-scanbar{grid-template-columns:auto auto minmax(0,1fr) auto}" rule further down this
 * file - exactly the overflow the screenshot showed. Fixed the same way as the .arf-ops-card
 * case: ":not(.augite-modal)" on the .arf-ops-scanner ancestor, applied to every unscoped
 * .arf-ops-scanbar selector in this file (base rule + both duplicate blocks + every media query),
 * so the modal's own scanbar rule governs uncontested. */

body:not(.wp-admin) .arf-app.arf-ops .arf-ops-token-inline,
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-token-inline input{min-width:0!important;max-width:100%!important}
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-list{
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:10px!important;
  width:100%!important;
}
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-booking{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  overflow:hidden!important;
}
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-booking-copy,
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-summary-item>div{min-width:0!important}
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-assets-summary{grid-template-columns:repeat(2,minmax(0,1fr))!important}
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-detail,
body:not(.wp-admin) .arf-app.arf-ops [data-arf-process]{min-width:0!important;max-width:100%!important;overflow-wrap:anywhere}
@media(max-width:1040px){

  body:not(.wp-admin) .arf-app.arf-ops .arf-ops-list{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media(max-width:720px){
  body:not(.wp-admin) .arf-app.arf-ops.arf-theme-page>.arf-theme-container{width:calc(100% - 28px)!important;padding:32px 0 40px!important}

  body:not(.wp-admin) .arf-app.arf-ops .arf-ops-token-inline{grid-column:1/-1!important}

  body:not(.wp-admin) .arf-app.arf-ops .arf-ops-list,
  body:not(.wp-admin) .arf-app.arf-ops .arf-ops-assets-summary{grid-template-columns:1fr!important}
}
@media(max-width:460px){

  body:not(.wp-admin) .arf-app.arf-ops .arf-ops-token-inline{grid-column:1!important}

}

/* REV049 — return acceptance / internal turnaround separation */
.arf-return-findings{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:14px;border-top:1px solid #e6e7e9;background:#f9fafb}.arf-return-findings-head{grid-column:1/-1;display:grid;gap:3px;padding-bottom:3px}.arf-return-findings-head strong{font-size:.9rem}.arf-return-findings-head span{font-size:.74rem;color:var(--arf-ops-muted);line-height:1.4}.arf-return-finding{min-width:0}.arf-return-finding .arf-field-label{display:block;margin-bottom:5px}.arf-return-finding .arf-field-label em{color:var(--arf-ops-warn);font-style:normal}.arf-touch-choice--finding{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:0}.arf-touch-choice--finding label>span{min-height:50px;line-height:1.2}.arf-touch-choice--finding b,.arf-touch-choice--condition b{font-size:.95rem}.arf-choice-icon{display:inline-grid;place-items:center}.arf-choice-icon svg,.arf-choice-icon .arf-ui-icon{width:1.1em;height:1.1em}.arf-touch-choice--condition{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:7px}.arf-touch-choice--condition label>span{min-height:44px}.arf-master-item.is-return-condition{grid-template-columns:36px minmax(0,1fr);margin:4px 14px 8px!important;padding:10px;border:1px solid #dee0e2;border-radius:0;background:#fbfbfa}.arf-derived-disposition{display:grid;gap:3px;padding:12px 14px;border:1px solid #dadde0;border-left:4px solid var(--arf-ops-green);border-radius:0;background:#f7f8f9}.arf-derived-disposition .arf-derived-kicker{font-size:.67rem!important;font-weight:800!important;letter-spacing:.07em;text-transform:uppercase;color:var(--arf-ops-muted)}.arf-derived-disposition strong{font-size:.92rem}.arf-derived-disposition small{font-size:.72rem;line-height:1.4;color:var(--arf-ops-muted)}.arf-derived-disposition.is-cleaning,.arf-derived-disposition.is-maintenance{border-left-color:#9a6a17;background:#fffaf0}.arf-derived-disposition.is-quarantine,.arf-derived-disposition.is-repair,.arf-derived-disposition.is-damage{border-left-color:var(--arf-ops-warn);background:#fff7f1}.arf-derived-disposition.is-pending{border-left:1px solid #dadde0;padding-left:17px;background:#fafbfa}.arf-turnaround-guidance{margin:12px 14px 14px;border:1px solid #dadde0;border-radius:0;background:#f9fafb}.arf-turnaround-guidance summary{display:grid;grid-template-columns:34px minmax(0,1fr);gap:10px;align-items:center;padding:11px 12px;cursor:pointer;list-style:none}.arf-turnaround-guidance summary::-webkit-details-marker{display:none}.arf-turnaround-guidance summary>span{display:grid;place-items:center;width:32px;height:32px;border-radius:0;background:#eff0f1;color:var(--ars-accent-strong-hover,#9a4307)}.arf-turnaround-guidance summary div{display:grid;gap:1px}.arf-turnaround-guidance summary strong{font-size:.82rem}.arf-turnaround-guidance summary small{font-size:.7rem;color:var(--arf-ops-muted)}.arf-turnaround-body{padding:0 13px 13px;border-top:1px solid #e6e7e9}.arf-turnaround-body p{font-size:.73rem;line-height:1.45;color:var(--arf-ops-muted)}.arf-turnaround-body ol{display:grid;gap:7px;margin:8px 0 0;padding-left:22px}.arf-turnaround-body li{padding-left:2px;font-size:.75rem;line-height:1.4}.arf-turnaround-body li strong{display:block}.arf-turnaround-body li span{display:block;color:var(--arf-ops-muted)}
@media(max-width:700px){.arf-return-findings{grid-template-columns:1fr}.arf-return-findings-head{grid-column:auto}.arf-touch-choice--condition{grid-template-columns:1fr}.arf-turnaround-guidance{margin-left:9px;margin-right:9px}}
.arf-pre-return{margin:18px 0;padding:16px;border:1px solid #dadde0;border-left:4px solid var(--arf-ops-green);border-radius:0;background:#f8f9fa}.arf-pre-return h3{margin:0 0 5px}.arf-pre-return>p{margin:0 0 12px;color:#6b6f73;font-size:.82rem}.arf-pre-return-group{padding:10px 0;border-top:1px solid #e6e8e9}.arf-pre-return-group:first-of-type{border-top:0}.arf-pre-return-group>strong{font-size:.84rem}.arf-pre-return-group ul{margin:6px 0 0;padding-left:20px}.arf-pre-return-group li{margin:4px 0;font-size:.8rem;line-height:1.4}.arf-pre-return-group b{font-weight:750}

/* REV053 — Transport Phase 2 / operative yard queue */
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-transport .arf-ops-section-head{margin-bottom:12px}
/* REQ-INTERN-RENTALFLOW-ADAPTIVE-LAYOUT-001 (Auftraggeber 2026-09-25, Punkt 1, woertlich: "auch der
   Part zu 'Logistik' ist keine Liste mit Zeilen wie darueber sondern einzelne Boxen"): der
   Transportabschnitt stand als ZWEISPALTIGES Raster - live gemessen auf Tablet 1024x768 waren die
   Eintraege 464px breite Boxen, waehrend der Arbeitsvorrat darueber 938px breite Zeilen fuehrt, je
   Eintrag eine. Jetzt eine Spalte: eine Zeile je Transport, volle Breite, wie die Liste darueber.
   Die bisherige Ausnahme unter 820px wird damit zur Regel und entfaellt weiter unten. */
/* NACHTRAG (Punkt 4, zweite Meldung zur selben Stelle 2026-09-25): eine Spalte war die falsche
   Reparatur. "Keine Liste mit Zeilen wie darueber, sondern einzelne Boxen" war KEINE Spaltenfrage,
   sondern eine Frage der Bauform - die Boxen wurden durch die Einspaltigkeit nur breiter. Die Liste
   ist jetzt dieselbe Zeilenliste wie der Arbeitsvorrat (.arf-ops-worklist steht mit auf dem
   Behaelter und bringt Trennlinie und Blockfluss mit); hier bleibt nur das Zuruecknehmen des
   frueheren Rasters, damit es die geerbte Blockform nicht wieder ueberschreibt. */
body:not(.wp-admin) .arf-app.arf-ops .arf-transport-list{display:block;width:100%}
body:not(.wp-admin) .arf-app.arf-ops .arf-transport-card{display:grid;gap:10px;min-width:0;padding:14px;border:1px solid #dadde0;border-radius:0;background:#fbfcfb;box-shadow:0 1px 0 rgba(20,24,27,.03)}
body:not(.wp-admin) .arf-app.arf-ops .arf-transport-card.has-conflict{border-color:#d8aa79;background:#fffaf4}
body:not(.wp-admin) .arf-app.arf-ops .arf-transport-main{display:grid;grid-template-columns:40px minmax(0,1fr);gap:11px;align-items:start}
body:not(.wp-admin) .arf-app.arf-ops .arf-transport-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:0;background:#eff0f1;color:var(--arf-ops-green)}
body:not(.wp-admin) .arf-app.arf-ops .arf-transport-icon svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8}
body:not(.wp-admin) .arf-app.arf-ops .arf-transport-copy{display:grid;gap:3px;min-width:0}
body:not(.wp-admin) .arf-app.arf-ops .arf-transport-title{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}
body:not(.wp-admin) .arf-app.arf-ops .arf-transport-title strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body:not(.wp-admin) .arf-app.arf-ops .arf-transport-copy>span{font-size:.8rem;font-weight:700;color:#35383c}
body:not(.wp-admin) .arf-app.arf-ops .arf-transport-copy>small{font-size:.72rem;line-height:1.4;color:var(--arf-ops-muted);overflow-wrap:anywhere}
body:not(.wp-admin) .arf-app.arf-ops .arf-transport-address{padding-top:2px;color:#5b5f63!important}
body:not(.wp-admin) .arf-app.arf-ops .arf-transport-warning{display:grid;grid-template-columns:28px minmax(0,1fr);gap:8px;align-items:start;padding:9px 10px;border:1px solid #efd2b6;border-radius:0;background:#fff6ec;color:#6c421d}
body:not(.wp-admin) .arf-app.arf-ops .arf-transport-warning.is-note{border-color:#e1e2e4;background:#f8f9fa;color:#4b4e52}
body:not(.wp-admin) .arf-app.arf-ops .arf-transport-warning .arf-ui-icon{width:26px;height:26px}
body:not(.wp-admin) .arf-app.arf-ops .arf-transport-warning div{display:grid;gap:2px;min-width:0}
body:not(.wp-admin) .arf-app.arf-ops .arf-transport-warning strong{font-size:.74rem}
body:not(.wp-admin) .arf-app.arf-ops .arf-transport-warning span{font-size:.69rem;line-height:1.4;overflow-wrap:anywhere}
body:not(.wp-admin) .arf-app.arf-ops .arf-transport-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap;padding-top:2px}
body:not(.wp-admin) .arf-app.arf-ops .arf-transport-actions .arf-ops-primary,
body:not(.wp-admin) .arf-app.arf-ops .arf-transport-actions .arf-ops-secondary{min-height:var(--augite-control-h);margin:0}
body:not(.wp-admin) .arf-app.arf-ops .arf-transport-result{min-height:0;font-size:.72rem;color:var(--arf-ops-muted)}
@media(max-width:520px){body:not(.wp-admin) .arf-app.arf-ops .arf-transport-actions{display:grid;grid-template-columns:1fr}body:not(.wp-admin) .arf-app.arf-ops .arf-transport-actions .arf-ops-primary,body:not(.wp-admin) .arf-app.arf-ops .arf-transport-actions .arf-ops-secondary{width:100%}}

/* REV057 — dead REV054 header-injection CSS removed after REV055; portal profile summary remains local. */
body:not(.wp-admin) .arf-portal-profile-summary{grid-template-columns:repeat(auto-fit,minmax(145px,1fr))}

/* REV059 — single global account control restored in the confirmed augite header */
body:not(.wp-admin) .ars-header .arf-global-account{position:relative!important;display:flex!important;align-items:center!important;min-width:0!important;margin:0!important}
body:not(.wp-admin) .ars-header .arf-global-account svg{display:block;width:18px;height:18px;flex:0 0 18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
body:not(.wp-admin) .ars-header .arf-global-account__toggle,
body:not(.wp-admin) .ars-header .arf-global-account__login{display:grid!important;grid-template-columns:20px minmax(0,1fr) auto;align-items:center;gap:8px;min-width:0;min-height:42px;padding:6px 9px!important;border:1px solid #dee0e2!important;border-radius:0!important;background:#f9fafb!important;color:#2f3235!important;font:inherit!important;text-align:left!important;text-decoration:none!important;box-shadow:none!important;cursor:pointer}
body:not(.wp-admin) .ars-header .arf-global-account__login{grid-template-columns:20px minmax(0,1fr)}
body:not(.wp-admin) .ars-header .arf-global-account__toggle:hover,
body:not(.wp-admin) .ars-header .arf-global-account__toggle:focus-visible,
body:not(.wp-admin) .ars-header .arf-global-account__login:hover,
body:not(.wp-admin) .ars-header .arf-global-account__login:focus-visible{border-color:var(--ars-green,var(--arf-theme-green,#d9600a))!important;background:#f2f3f5!important;text-decoration:none!important}
/* LIVE-TASK-2026-09-12-011 BEFUND-4 (WCAG 2.4.7 Focus Visible): the rule above suppressed the
 * outline entirely and relied only on the hover/focus border-color shift, which measured as
 * outline-style:none plus box-shadow:none on real keyboard focus - no visible indicator at all.
 * Restored with the same soft-green focus-visible ring already used elsewhere in this file
 * (e.g. .arf-app .ars-btn above) instead of suppressing it.
 * Reconciliation note (2026-09-13, merge of claude/stoic-newton-ny2n5b and
 * claude/software-package-analysis-impl-8c5uno): both branches independently fixed this exact
 * defect (this branch's own version used outline:3px solid #1a5fb4). Kept this side's fix because
 * it is the one that was actually real-browser re-verified live (LIVE-TASK-2026-09-13-010,
 * "alle vier Fixes real bestaetigt"); the other side's equivalent fix was discarded as redundant,
 * not lost functionality. */
body:not(.wp-admin) .ars-header .arf-global-account__toggle:focus-visible,
body:not(.wp-admin) .ars-header .arf-global-account__login:focus-visible{outline:2px solid rgba(217,96,10,.4)!important;outline-offset:2px}
body:not(.wp-admin) .ars-header .arf-global-account__text,
body:not(.wp-admin) .ars-header .arf-global-account__login>span{display:grid;gap:0;min-width:0;line-height:1.15}
body:not(.wp-admin) .ars-header .arf-global-account__text strong,
body:not(.wp-admin) .ars-header .arf-global-account__login strong{display:block;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.79rem;font-weight:800}
body:not(.wp-admin) .ars-header .arf-global-account__text small,
body:not(.wp-admin) .ars-header .arf-global-account__login small{display:block;max-width:160px;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#6e7276;font-size:.61rem;font-weight:700;letter-spacing:.015em}
body:not(.wp-admin) .ars-header .arf-global-account__chevron{display:inline-grid;place-items:center;transition:transform .15s ease}
body:not(.wp-admin) .ars-header .arf-global-account__chevron svg{width:.85rem;height:.85rem}
body:not(.wp-admin) .ars-header .arf-global-account.is-open .arf-global-account__chevron{transform:rotate(180deg)}
/* Wave 34b (client decision 262, REQ-UI-ACCOUNT-SWITCHES-COMPACT-001): 400px (was 310px) so the utility row globe DE | EN - Hilfe EIN | AUS -
   Toene EIN | AUS fits into one line; narrower viewports keep calc(100vw - 28px) and the row wraps cleanly. */
body:not(.wp-admin) .ars-header .arf-global-account__menu{position:absolute;top:calc(100% + 10px);right:0;z-index:90;width:min(400px,calc(100vw - 28px));padding:0;border:1px solid #dadde0;border-top:4px solid var(--ars-green,var(--arf-theme-green,#d9600a));background:#fff;box-shadow:0 16px 40px rgba(20,24,27,.16)}
body:not(.wp-admin) .ars-header .arf-global-account__menu[hidden]{display:none!important}
body:not(.wp-admin) .ars-header .arf-global-account__identity{display:grid;gap:3px;padding:13px 14px;border-bottom:1px solid #e8e9ea;background:#f9fafb;min-width:0}
body:not(.wp-admin) .ars-header .arf-global-account__identity strong{font-size:.9rem;overflow-wrap:anywhere}
body:not(.wp-admin) .ars-header .arf-global-account__identity span{color:#5b5f63;font-size:.72rem;overflow-wrap:anywhere}
body:not(.wp-admin) .ars-header .arf-global-account__identity small{color:var(--ars-muted,#6b6f73);font-size:.66rem;line-height:1.35;overflow-wrap:anywhere}
/* REQ-089 Nachtrag (2026-09-14, direkter Nutzerauftrag): DE/EN-Umschalter sitzt fest im
   Profil-/Kontomenue statt an einer schwebenden oder im Footer untergehenden Position. */
/* REQ-UI-CONSISTENCY-PILL-HELPER-FILTER-001 Nachtrag (2026-09-14): moved from directly under the
   identity block (top, most prominent position) to a quiet utility row at the very bottom of the
   menu, after every real menu item - border-top (was border-bottom) now separates it from the
   items above instead of the identity block, and the background stays the same subdued tone. */
body:not(.wp-admin) .ars-header .arf-global-account__lang{padding:8px 14px;border-top:1px solid #e8e9ea;background:#f9fafb}
body:not(.wp-admin) .ars-header .arf-global-account__lang .arf-lang-switch{margin:0}
/* Wave 34 (client decision 176, REQ-UI-ACCOUNT-SWITCHES-COMPACT-001): language | help | scan sound share ONE utility row
   (.arf-global-account__prefs) - the row carries the separator line and the subdued background; the inner blocks are
   neutralised in help.css (switch box = DE/EN link box). */
body:not(.wp-admin) .ars-header .arf-global-account__prefs{padding:8px 14px;border-top:1px solid #e8e9ea;background:#f9fafb}
body:not(.wp-admin) .ars-header .arf-global-account__prefs .arf-lang-switch{gap:5px}
body:not(.wp-admin) .ars-header .arf-global-account__item{display:grid!important;grid-template-columns:20px minmax(0,1fr);align-items:center;gap:9px;width:100%;min-height:42px;padding:9px 13px!important;color:#2f3235!important;font-size:.78rem!important;font-weight:750!important;text-decoration:none!important;white-space:normal!important}
body:not(.wp-admin) .ars-header .arf-global-account__item:hover,
body:not(.wp-admin) .ars-header .arf-global-account__item:focus-visible{background:#f2f3f5!important;text-decoration:none!important}
/* Same BEFUND-4 defect class as .arf-global-account__toggle above (outline suppressed with no
 * replacement indicator) - system-wide check (CLAUDE.md) found this one other occurrence.
 * Reconciliation note (2026-09-13): kept this side per the same rationale as the toggle/login
 * rule above (live-verified fix wins over the redundant equivalent). */
body:not(.wp-admin) .ars-header .arf-global-account__item:focus-visible{outline:2px solid rgba(217,96,10,.4)!important;outline-offset:-2px}
body:not(.wp-admin) .ars-header .arf-global-account__item--separator{border-top:1px solid #e8e9ea}
/* REQ-PROFILMENUE-GRUPPEN-001: einklappbare Gruppe "Arbeitsbereiche" im internen Kontomenue. Kopfzeile 36 px (Touch/Overlay 44 px),
   Chevron wie der Kontoumschalter, Eintraege leicht eingerueckt mit linker Leitlinie (1 px wie die Trennlinie oben:
   Entscheidung 141, eine neutrale linke Kante ist nicht dicker als die uebrigen Kanten; box_left_edge_scan). */
body:not(.wp-admin) .ars-header .arf-global-account__group{border-top:1px solid #e8e9ea}
body:not(.wp-admin) .ars-header .arf-global-account__group-toggle{display:grid!important;grid-template-columns:minmax(0,1fr) auto 20px;align-items:center;gap:9px;width:100%;min-height:36px;margin:0;padding:6px 13px!important;border:0!important;border-radius:0!important;background:transparent!important;color:#2f3235!important;font:inherit;font-size:.78rem!important;font-weight:750!important;text-align:left;cursor:pointer;box-sizing:border-box}
body:not(.wp-admin) .ars-header .arf-global-account__group-toggle:hover{background:#f2f3f5!important}
body:not(.wp-admin) .ars-header .arf-global-account__group-toggle:focus-visible{outline:2px solid rgba(217,96,10,.4)!important;outline-offset:-2px}
body:not(.wp-admin) .ars-header .arf-global-account__group-count{color:#6e7276;font-size:.68rem;font-weight:700}
body:not(.wp-admin) .ars-header .arf-global-account__group-chevron{display:inline-grid;place-items:center;transition:transform .15s ease}
body:not(.wp-admin) .ars-header .arf-global-account__group-chevron svg{width:.85rem;height:.85rem}
body:not(.wp-admin) .ars-header .arf-global-account__group.is-open .arf-global-account__group-chevron{transform:rotate(180deg)}
body:not(.wp-admin) .ars-header .arf-global-account__group-panel[hidden]{display:none!important}
body:not(.wp-admin) .ars-header .arf-global-account__group-panel{border-left:1px solid #e8e9ea;margin-left:13px}
body:not(.wp-admin) .ars-header .arf-global-account__group-panel .arf-global-account__item{padding-left:10px!important}
body:not(.wp-admin) .ars-header .arf-global-account__item[aria-current="page"]{background:#f2f3f5!important;box-shadow:inset 3px 0 0 var(--ars-green,var(--arf-theme-green,#d9600a))}
@media(max-width:767px),(pointer:coarse){
  body:not(.wp-admin) .ars-header .arf-global-account__group-toggle{min-height:44px}
}
body:not(.wp-admin) .arf-portal-profile-summary{grid-template-columns:repeat(auto-fit,minmax(145px,1fr))}
@media(max-width:1120px){
  body:not(.wp-admin) .ars-header .arf-global-account__text small{display:none}
  body:not(.wp-admin) .ars-header .arf-global-account__text strong{max-width:110px}
}
/* Live finding LIVE-TASK-2026-09-15-156 R12 (2026-09-15): between 768 and 960 px the one-row header had no width left for
   the account control - min-width:0 shrank it to 0-20 px while its pictograms stayed in place, so the chevron poked out
   of the viewport (scrollWidth 850 at 834 px, 836 at 800 px, 804 at 768 px). In that band the control keeps its size and
   shows pictogram + chevron only; name and role stay in the accessible name (visually hidden, not display:none). */
@media(min-width:768px){
  body:not(.wp-admin) .ars-header .arf-global-account{flex:0 0 auto!important}
}
@media(min-width:768px) and (max-width:960px){
  body:not(.wp-admin) .ars-header .arf-global-account__toggle{grid-template-columns:20px auto!important}
  body:not(.wp-admin) .ars-header .arf-global-account__login{grid-template-columns:20px!important}
  body:not(.wp-admin) .ars-header .arf-global-account__text,
  body:not(.wp-admin) .ars-header .arf-global-account__login>span{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
}
/* Entscheidungen 27/28 (REV307): the overlay rules follow the < 768 px narrow threshold and are one column (see the E28 block). */
@media(max-width:767px){
  body:not(.wp-admin) .ars-header .wp-block-navigation__responsive-container.is-menu-open .arf-global-account{display:block!important;width:100%!important;margin-top:8px!important}
  body:not(.wp-admin) .ars-header .wp-block-navigation__responsive-container.is-menu-open .arf-global-account__toggle,
  body:not(.wp-admin) .ars-header .wp-block-navigation__responsive-container.is-menu-open .arf-global-account__login{width:100%!important;grid-template-columns:minmax(0,1fr)!important;justify-items:start;row-gap:4px;padding:10px 0!important;border-width:1px 0!important;background:#fff!important}
  body:not(.wp-admin) .ars-header .wp-block-navigation__responsive-container.is-menu-open .arf-global-account__login{grid-template-columns:minmax(0,1fr)!important}
  body:not(.wp-admin) .ars-header .wp-block-navigation__responsive-container.is-menu-open .arf-global-account__text strong,
  body:not(.wp-admin) .ars-header .wp-block-navigation__responsive-container.is-menu-open .arf-global-account__text small,
  body:not(.wp-admin) .ars-header .wp-block-navigation__responsive-container.is-menu-open .arf-global-account__login strong,
  body:not(.wp-admin) .ars-header .wp-block-navigation__responsive-container.is-menu-open .arf-global-account__login small{display:block;max-width:none}
  body:not(.wp-admin) .ars-header .wp-block-navigation__responsive-container.is-menu-open .arf-global-account__menu{position:static;width:100%;margin-top:5px;border-width:1px 0 0;box-shadow:none}
}
/* REQ-INTERN-MOBILE-NAV-001 (Auftraggeber-P1 2026-09-21): UX-RWD-001 "Responsive ist Neupriorisierung".
   Fuer die vier Fachrollen ist das Kontomenue die einzige interne Navigation (ARF_Account::current_context(),
   Zweig is_internal_user()) - im Telefon-Overlay stand es bisher HINTER den sechs oeffentlichen
   Websitelinks (Mietgeraete, So funktioniert's, Geschaeftskunden, Kontakt, FAQ, Meine Buchung).
   Gemessen an einem temporaeren arf_workshop-Konto bei 400 px: das Kontoelement war das siebte und
   letzte Listenelement. Fuer ein internes Konto ist die Reihenfolge damit die des Schaufensters, nicht
   die der Arbeit. Nur `--staff` wird vorgezogen: Kunden- und WordPress-Konten sowie Gaeste behalten die
   bisherige Reihenfolge unveraendert (kein zweites Menue, keine Navigationsduplikate - UX-NAV-003).
   Der Trennstrich wandert mit nach unten, damit die Gruppierung "intern | oeffentlich" erhalten bleibt. */
@media(max-width:767px){
  body:not(.wp-admin) .ars-header .wp-block-navigation__responsive-container.is-menu-open .arf-global-account--staff{order:-1;margin-top:0!important;margin-bottom:10px!important;padding-bottom:6px;border-bottom:1px solid #e8e9ea}
  body:not(.wp-admin) .ars-header .wp-block-navigation__responsive-container.is-menu-open .arf-global-account--staff .arf-global-account__toggle{min-height:48px}
  /* Die Menuezeilen sind im Overlay die eigentlichen Navigationsziele: 48 px Zielhoehe (UX-RWD-002)
     statt der 42 px aus der Desktop-Dropdownregel oben; live mit hasTouch=true bei 59,3 px gemessen,
     der Mindestwert sichert sie auch bei einzeiligen Labels und kleinerer Schrift ab. */
  body:not(.wp-admin) .ars-header .wp-block-navigation__responsive-container.is-menu-open .arf-global-account__item{min-height:48px!important}
}

/* Wave 13 (REQ-THEME-GUEST-LANG-SWITCHER-SITE-EN-001, client decision 47): compact guest DE/EN switcher as its own header
   navigation item directly before "Anmelden" (ARF_Account::header_markup(), guest branch). Same square look and monochrome
   globe pictogram as the account-menu row (REQ-UI-CONSISTENCY-PILL-HELPER-FILTER-001: border-radius 0, no pill, no flag);
   the theme's generic `.ars-header nav` / `.ars-header nav a` rules (20px gaps, .93rem bold links, underline on hover)
   are neutralised for this one nav. Between 768 and 1120 px the pictogram is dropped so the one-row header keeps its width
   budget; below 768 px the item lives in the full-width menu overlay (decision 37) with 44 px touch targets. */
body:not(.wp-admin) .ars-header .arf-global-lang{display:flex!important;align-items:center!important;min-width:0!important;margin:0!important}
body:not(.wp-admin) .ars-header .arf-global-lang .arf-lang-switch{display:flex;align-items:center;gap:5px;margin:0;flex-wrap:nowrap;justify-content:flex-start;font-size:.74rem;color:#5b5f63}
body:not(.wp-admin) .ars-header .arf-global-lang .arf-lang-switch__icon{width:16px;height:16px;color:#5b5f63}
body:not(.wp-admin) .ars-header .arf-global-lang .arf-lang-switch__icon svg{width:16px;height:16px;flex:0 0 16px;fill:none;stroke:currentColor}
body:not(.wp-admin) .ars-header .arf-global-lang .arf-lang-switch__options{display:flex;gap:2px}
body:not(.wp-admin) .ars-header .arf-global-lang .arf-lang-switch__link{display:inline-flex;align-items:center;justify-content:center;min-width:30px;min-height:30px;padding:0 5px;border:1px solid transparent;border-radius:0;background:transparent;color:#5b5f63;font-size:.74rem;font-weight:700;letter-spacing:.04em;line-height:1;text-decoration:none;white-space:nowrap}
body:not(.wp-admin) .ars-header .arf-global-lang .arf-lang-switch__link:hover{color:#2f3235;border-color:#dee0e2;text-decoration:none}
body:not(.wp-admin) .ars-header .arf-global-lang .arf-lang-switch__link:focus-visible{outline:2px solid rgba(217,96,10,.5);outline-offset:1px}
body:not(.wp-admin) .ars-header .arf-global-lang .arf-lang-switch__link.is-current{color:#2f3235;border-color:#cdcfd1;background:#f0f1f2}
@media(max-width:1120px) and (min-width:768px){
  body:not(.wp-admin) .ars-header .arf-global-lang .arf-lang-switch__icon{display:none}
  body:not(.wp-admin) .ars-header .arf-global-lang .arf-lang-switch__link{min-width:28px;padding:0 4px}
}
@media(max-width:767px){
  body:not(.wp-admin) .ars-header .wp-block-navigation__responsive-container.is-menu-open .arf-global-lang{display:block!important;width:100%!important;margin-top:8px!important}
  body:not(.wp-admin) .ars-header .wp-block-navigation__responsive-container.is-menu-open .arf-global-lang .arf-lang-switch{gap:8px}
  body:not(.wp-admin) .ars-header .wp-block-navigation__responsive-container.is-menu-open .arf-global-lang .arf-lang-switch__link{min-width:44px;min-height:44px;padding:0 10px;font-size:.8rem}
}

/* REV066 — WordPress admin rendering contract for RentalFlow shortcode.
   The operations UI is reused in wp-admin; never let generic SVG width:100% escape its icon box. */
body.wp-admin .arf-app.arf-ops{max-width:1320px;margin:0}
body.wp-admin .arf-app.arf-ops>.ars-shell,body.wp-admin .arf-app.arf-ops .arf-theme-container{width:100%!important;max-width:1320px!important;margin:0!important;padding:0!important}
body.wp-admin .arf-app.arf-ops .arf-ui-icon{display:grid;place-items:center;flex:none;overflow:hidden}
body.wp-admin .arf-app.arf-ops .arf-ui-icon svg{display:block;width:22px!important;height:22px!important;max-width:22px!important;max-height:22px!important}
body.wp-admin .arf-app.arf-ops .arf-ops-empty{min-height:72px}
body.wp-admin .arf-app.arf-ops .arf-ops-empty>.arf-ui-icon{width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important}
body.wp-admin .arf-app.arf-ops .arf-transport-icon{display:grid;place-items:center;flex:0 0 40px;width:40px;height:40px;overflow:hidden}
body.wp-admin .arf-app.arf-ops .arf-transport-icon svg{width:22px!important;height:22px!important;max-width:22px!important;max-height:22px!important}

/* REV068: ranked near-term availability alternatives */
.arf-availability-alternatives{margin-top:12px;padding:14px 16px;border:1px solid var(--ars-line,#dadde0);border-radius:0;background:#f9fafb;display:flex;flex-wrap:wrap;gap:9px}.arf-availability-alternatives>strong,.arf-availability-alternatives>p{flex:0 0 100%;margin:0}.arf-availability-alternatives>p{color:#64676b;font-size:.92rem}.arf-availability-alternatives .ars-btn{min-height:44px}

/* REV082 – RentalFlow compact backend + unified asset picker */
.wp-admin .arf-app.arf-ops .arf-ops-hero{display:none!important}
/* REQ-UI-CONSISTENCY-PILL-HELPER-FILTER-001: real <button type="button"> (class-arf-shortcodes.php),
   not a badge - the pill exemption (999px/50%) is reserved for non-clickable status chips only, so
   this square close control drops the circular radius like every other interactive element. */

.arf-ops-token-inline{position:relative}
.arf-asset-suggestions{position:absolute;z-index:100;top:100%;left:0;right:0;margin-top:4px;max-height:320px;overflow:auto;border:1px solid #c4c6c9;border-radius:0;background:#fff;box-shadow:0 12px 34px rgba(20,24,27,.18);padding:5px}
.arf-asset-suggestion{display:flex;width:100%;min-height:52px;flex-direction:column;align-items:flex-start;gap:2px;padding:9px 11px;border:0;border-radius:0;background:#fff;color:#24262a;text-align:left;cursor:pointer}
.arf-asset-suggestion:hover,.arf-asset-suggestion:focus{background:#f2f3f5;outline:2px solid #d9600a;outline-offset:-2px}
.arf-asset-suggestion strong{font-size:.92rem}
.arf-asset-suggestion span,.arf-asset-suggestion-empty{font-size:.78rem;color:#66696d}
.arf-asset-suggestion-empty{padding:11px}

/* Nutzerauftrag (2026-09-12): "Asset/NFC-Modal ist korrekt vom Layout, darf nur nicht
 * bildschirmbreit sein... Kundesuche-Modal muss an das andere Design angepasst werden...
 * Direktvermietung kann auch in ein Modal ueberfuehrt werden... Breite auf maximal 800px."
 * Folgeauftrag: "Die Modals sind noch nicht optimal. Die muessen auf 75% der Seitenbreite
 * initial gesetzt werden. Im speziellen das Asset-Modal ist immer noch seitenbreit, das vom
 * Walkinauftrag zu schmal." Realer Fund: augite-ux-platform/assets/augite-ux.css enthaelt eine
 * GETEILTE Regel ".augite-ux-platform .is-picker-modal" (2 Klassen, Spezifitaet 0,2,0) - exakt
 * dieselbe Spezifitaet wie die vorherige Fassung dieser Regel hier (ebenfalls 2 Klassen), womit
 * der tatsaechliche Gewinner allein von der Ladereihenfolge der beiden Stylesheets abhing - das
 * exakt gleiche Kaskaden-Wettrennen-Muster wie bereits bei REQ-DESIGN-WPADMIN-LAYOUT dokumentiert,
 * hier aber unentdeckt, weil die vorherige Konsolidierung nur innerhalb dieser Datei gesucht hat.
 * Fix: alle drei Selektoren um den immer vorhandenen ".arf-app.arf-ops"-Vorfahren erweitert
 * (Spezifitaet auf 0,3,0 bzw. 1,2,0 angehoben), damit diese Regel unabhaengig von der
 * Ladereihenfolge IMMER gewinnt - die konkurrierende ux-platform-Regel wurde dort entfernt
 * (siehe augite-ux-platform/assets/augite-ux.css), statt eine zweite Breiten-Wahrheit zu
 * behalten. Breite jetzt 75% der Viewport-Breite (statt einer festen 800px-Obergrenze), mit
 * einer Kappung fuer sehr breite Bildschirme, damit das Modal dort nicht unnoetig breit wird. */

/* REQ-091 (Paket H): replaced by a real DOM backdrop element (data-arf-picker-backdrop) so a
 * click on the darkened area can actually be told apart from a click on the card - a ::before
 * pseudo-element is not part of the DOM and can never receive its own click listener. */

/* REQ-INTERN-BOOKING-DETAIL-VISUAL-CLARITY-001: real width arithmetic (not a guess) for the
 * default (>820px viewport) 4-column ".arf-ops-scanbar" row above - modal width is
 * min(75vw,1100px) per the rule at "Breite jetzt 75% der Viewport-Breite" above, padding 18px
 * 20px (40px horizontal) + 1px border each side (2px) = content width ≈ 0.75*viewport-42px.
 * The three fixed ("auto") columns (QR/Barcode, NFC lesen, Übernehmen - each
 * ".arf-ops-secondary"/".arf-ops-primary" with icon+nowrap text+padding) sum to roughly
 * 390-420px plus 3×8px column gaps (≈24px) ≈ 415-445px that can never shrink (white-space:nowrap
 * on this rule, line ~311). At the 820px viewport breakpoint's upper edge (just before the
 * media query below takes over), modal width = 0.75*820 = 615px, content ≈ 573px - only
 * ~130-155px of margin over the ~415-445px the three fixed columns need, i.e. barely enough for
 * the "minmax(0,1fr)" token input column to stay usably wide rather than being squeezed toward
 * 0 (a technically non-overflowing but effectively unusable/clipped-looking input at real font
 * metrics, matching the reported "abgeschnittener Übernehmen-Button" symptom at viewport widths
 * around 900-1050px - a real desktop browser window that is not maximized, not just >=1280px
 * full-screen). Lowering the collapse point from 820px to 1010px gives the scanbar (not the whole
 * modal - it keeps its 75vw sizing) the same safe stacked 2-column fallback well before that thin
 * margin is reached; content width at 1010px viewport is already comfortably above what the fixed
 * columns need (≈715px vs ≈445px), so nothing changes for genuinely wide desktop viewports.
 * See docs/projektsteuerung/live-tasks/ for the real-browser confirmation this still needs. */

@media(max-width:820px){

  .arf-asset-suggestions{max-height:220px}
}

/* REV086: action-first RentalFlow quick actions */
.arf-ops-quick{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin:0 0 14px}.arf-ops-quick-action{min-height:68px;border:1px solid var(--ars-line,#dadde0);border-radius:0;background:#fff;color:inherit;text-decoration:none;padding:10px 12px;display:flex;align-items:center;gap:10px;text-align:left;cursor:pointer}.arf-ops-quick-action:hover,.arf-ops-quick-action:focus-visible,.arf-ops-quick-action.is-active{border-color:var(--ars-green,#d9600a);box-shadow:0 0 0 2px rgba(217,96,10,.08)}.arf-ops-quick-action.is-primary{background:var(--ars-accent-strong,#b84e08);color:#fff;border-color:var(--ars-accent-strong,#b84e08)}.arf-ops-quick-action>span:last-child{display:flex;flex-direction:column;gap:2px}.arf-ops-quick-action strong{font-size:.92rem}.arf-ops-quick-action small{font-size:.75rem;opacity:.74}.arf-ops-quick-action svg{width:22px;height:22px;flex:0 0 22px}@media(max-width:1100px){.arf-ops-quick{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:680px){.arf-ops-quick{grid-template-columns:repeat(2,minmax(0,1fr))}.arf-ops-quick-action{min-height:62px}}

/* REV087: mandatory picking / pre-dispatch condition evidence */
.arf-preparation-checks{margin:16px 0;padding:16px;border:1px solid var(--ars-line,#dadde0);border-radius:0;background:#fbfcfb}.arf-preparation-asset{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 14px;margin:12px 0 0;padding:14px;border:1px solid #e3e4e6;border-radius:0}.arf-preparation-asset legend{padding:0 6px}.arf-preparation-asset label{display:flex;align-items:flex-start;gap:8px;font-weight:600}.arf-preparation-asset textarea{grid-column:1/-1;width:100%}.arf-preparation-asset .arf-ops-secondary{justify-self:start}.arf-preparation-result{align-self:center;font-size:.86rem}@media(max-width:760px){.arf-preparation-asset{grid-template-columns:1fr}.arf-preparation-asset textarea{grid-column:auto}}

/* REV088: pickup timing / no-show handling */
.arf-pickup-deviation{display:flex;justify-content:space-between;gap:16px;align-items:center;flex-wrap:wrap;margin:10px 0 14px;padding:10px 12px;border-radius:0;background:#f5f6f8;border-left:4px solid #8a8d90}.arf-pickup-deviation.is-alert{background:#fff4f2;border-left-color:#b42318}.arf-pickup-deviation.is-progress{background:#fff8e7;border-left-color:#b7791f}.arf-pickup-deviation.is-ok{background:#edf8f1;border-left-color:#26734d}.arf-ops-danger{border-color:#b42318!important;color:#92251d!important}.arf-pickup-deviation-note{flex-basis:100%;color:var(--arf-ops-muted);font-size:.78rem}

/* REV095 location/accessory contract */
.arf-cart-location{display:grid;gap:6px;max-width:520px;margin:12px 0 16px}.arf-cart-location span{font-weight:700}.arf-cart-location select{min-height:44px}.arf-link-inline{border:0;background:transparent;text-decoration:underline;cursor:pointer;font:inherit;color:inherit;font-weight:700;padding:2px 4px}

.arf-terminal-actions{margin:18px 0;padding:16px;border:1px solid #dedfe1;border-radius:0;background:#fff}.arf-terminal-action-list{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.arf-terminal-pay{min-height:52px;font-size:16px}.arf-terminal-action-list .arf-process-result{margin:0}

/* REV107 – enforce compact picker + batch selection coverage in admin and external RentalFlow */

/* REQ-052 (superseded 2026-09-12): this rule used to re-declare its own width/radius for the
 * scanner modal at (0,3,0)/(1,2,0) specificity specifically because it beat the plugin-local
 * "compact picker" rule elsewhere in this file - a second, independent instance of exactly the
 * cascade-defeat pattern documented for REQ-DESIGN-WPADMIN-LAYOUT. Both competing declarations
 * are gone now; the single consolidated modal-chrome rule earlier in this file is the only
 * place scanner/search/walk-in modal width and shape are declared. */
.arf-batch-picker{margin-inline-start:10px;min-height:40px!important;vertical-align:middle}
@media(max-width:700px){.arf-batch-picker{width:100%;margin:8px 0 0}}

/* REV112 – RentalFlow information architecture: context -> identification -> actions -> work queue. */
.arf-ops-context-header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin:0 0 14px;padding:4px 0 2px}
.arf-ops-context-header h1{margin:2px 0 5px!important;font-size:clamp(1.75rem,3vw,2.35rem)!important;line-height:1.08!important}
.arf-ops-context-header p{margin:0!important;max-width:760px;color:var(--arf-ops-muted,#6b6f73)!important}
.arf-ops-context-badge{display:inline-flex;align-items:center;min-height:32px;padding:6px 10px;border:1px solid var(--arf-ops-line,#dadde0);border-radius:0;background:#fff;color:var(--ars-accent-strong,#b84e08);font-size:.76rem;font-weight:800;white-space:nowrap}
/* REQ-INTERN-KATEGORIE-KAESTEN-KLAPPBAR-001 (Auftraggeberentscheidung 2026-09-27): "Alle
   aufklappen" steht rechtsbuendig direkt unter der Seitenkopfzeile - ein Formular (ohne
   JavaScript bedienbar), keine Solo-Schaltflaeche, damit sie sich nicht mit dem Titel/Badge
   in eine Zeile draengt. */
.arf-intern-expand-all{display:flex;justify-content:flex-end;margin:0 0 14px}

/* REQ-INTERN-KOPFLEISTE-VARIANTE-RENTALFLOW-001 (2026-09-27, Auftraggeberentscheidung, Abbau
 * einer Dopplung): die eigene Klassenfamilie .arf-intern-nav/.arf-intern-nav__item (vormals hier)
 * ist entfernt. arf_intern_rentalcore_nav() (class-arf-intern.php) rendert die vier Subnav-Tabs
 * (Uebersicht/Buchungen/Kunden/RentalBase) jetzt mit den bereits vorhandenen, systemweit
 * genutzten Knopfklassen .arf-ops-secondary (inaktiv)/.arf-ops-primary (aktiv statt .is-active)
 * und dem geteilten Container .arf-ops-actions statt einer eigenen, fast identischen zweiten
 * Definition (Padding, radius:0, font-weight:700 waren praktisch dieselben Werte). Naheliegender
 * Nebeneffekt, keine separate Regel noetig: die Tabs erben damit automatisch den bereits
 * bestehenden Coarse-Pointer-Touchziel-Schutz dieser beiden Klassen (min-height 44px Basis /
 * 48px unter @media(pointer:coarse), siehe unten) - vorher hatten sie nur eine eigene,
 * unvollstaendige 48px-Regel ohne Basiswert. Optische Vorgabe: die Subnav soll wie RentalFlows
 * eigene Knoepfe wirken (neutraler Ruhezustand, Akzentfarbe nur bei Hover/Fokus bzw. fuer die
 * EINE aktive Aktion) statt permanent markenorange eingefaerbt zu sein wie zuvor. */
/* LIVE-TASK-2026-09-12-013 V1 (WPADM-TOUCH-001/RESP-001, system-wide not page-wide): the
 * @media(pointer:coarse) 48px touch-target rule was rolled out to admin.css's three wp-admin
 * surfaces (see admin.css:256) but never to this file, so the entire /intern/ front-end (which
 * loads public.css, not admin.css - see class-arf-admin.php:138) kept sub-48px targets under a
 * real coarse pointer: .arf-ops-primary/-secondary (44px) and plain selects in the ops shell
 * were all measured under 48px. */
@media(pointer:coarse){
  /* Reconciliation note (2026-09-13, merge onto the live branch): the live tip's own
   * ".arf-app.arf-ops .arf-ops-primary/-secondary/-icon-button{min-height:44px!important}" plus
   * its "body:not(.wp-admin) ..." re-measurement follow-up (same LIVE-TASK-2026-09-13-013 finding)
   * were removed here as real duplicates of this branch's own, strictly more complete round-2 fix
   * further below (also covers body.wp-admin and the scanbar variants the live tip's version did
   * not) - keeping both left the mutation test unable to prove the more complete rule is what
   * actually supplies the fix. The select rule below is independent, not covered by that other
   * block, and is kept unchanged. */
  .arf-app.arf-ops select{min-height:var(--augite-control-h)!important}
}
/* REQ-DESIGN-WPADMIN-LAYOUT / REQ-INTERN-LAYOUT-CALIBRATION RESP-001 + WPADM-TOUCH-001 (second
 * pass, LIVE-TASK-2026-09-13-013 re-measurement): the block above was correct in intent but LOST
 * THE CASCADE for exactly the two classes it was written for. On every /intern/ page the older
 * REV022 rule `body:not(.wp-admin) .arf-app.arf-ops .arf-ops-primary{min-height:44px!important}`
 * (specificity 0,4,1) out-specifies `.arf-app.arf-ops .arf-ops-primary` (0,3,0), so "Filtern" and
 * "Oeffnen" stayed 47px under a real coarse pointer; the scanner-modal rules (`...scanbar
 * .arf-ops-primary{height:46px/42px!important}`, 0,5,1 / 0,4,0) and the token input do the same
 * inside the Asset-Identification dialog on both surfaces. A presence-only test could not see this.
 * This block restates the touch floor with selectors whose specificity is >= every competing
 * !important rule (verified by tests/test_req_layout_rule_violations_001_cascade.py, which resolves
 * the real cascade of site.css/public.css/admin.css/augite-ux.css for real DOM chains) and is
 * placed after all of them, so it wins on specificity or, on a tie, on source order. min-height
 * beats a smaller fixed height, so the scanner row geometry only needs its token row widened. */
@media(pointer:coarse){
  body:not(.wp-admin) .arf-app.arf-ops .arf-ops-primary,body:not(.wp-admin) .arf-app.arf-ops .arf-ops-secondary,body:not(.wp-admin) .arf-app.arf-ops .arf-ops-icon-button,body:not(.wp-admin) .arf-app.arf-ops .arf-ops-access-link,
  body.wp-admin .arf-app.arf-ops .arf-ops-primary,body.wp-admin .arf-app.arf-ops .arf-ops-secondary,body.wp-admin .arf-app.arf-ops .arf-ops-icon-button{min-height:var(--augite-control-h)!important}
  body:not(.wp-admin) .arf-app.arf-ops input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),body:not(.wp-admin) .arf-app.arf-ops select,
  body.wp-admin .arf-app.arf-ops input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),body.wp-admin .arf-app.arf-ops select{min-height:var(--augite-control-h)!important}
  /* LIVE-TASK-2026-09-17-193 R1: the label-wrapped choice chips of the session forms (photo target/visibility, return outcome, condition) follow the same 36/48 contract as the field next to them (measured 44px next to a 36px field before). */
  body:not(.wp-admin) .arf-app.arf-ops .arf-touch-choice label>span,body.wp-admin .arf-app.arf-ops .arf-touch-choice label>span{min-height:var(--augite-control-h)!important}
  body:not(.wp-admin) .arf-app.arf-ops .arf-ops-token-inline{grid-template-rows:16px 48px!important}
  /* LIVE-TASK-2026-09-13-013 Nachmessung (2026-09-17, echte Coarse-Pointer-Emulation auf
   * /intern/rentalinvoice/): die ikonischen Aktionsbuttons ("Rechnungs-PDF", "XML erneut
   * validieren") blieben als einzige eigenen Bedienelemente der /intern/-Flaeche bei 44x44.
   * Ursache ist kein fehlender Selektor, sondern ein Spezifitaets-Gleichstand: die 44px-Regel
   * (public.css ~816) traegt .arf-ops-secondary.arf-ops-icon-only (0,4,1) mit !important und
   * schlaegt damit das min-height:44px der Zeilen darueber (0,3,1). Deshalb hier mit derselben
   * Doppelklasse UND zusaetzlich height/max-height/width, weil die Basisregel Breite und Hoehe
   * fix setzt - min-height allein bliebe an der max-height:44px haengen. */
  body:not(.wp-admin) .arf-app.arf-ops .arf-ops-primary.arf-ops-icon-only,
  body:not(.wp-admin) .arf-app.arf-ops .arf-ops-secondary.arf-ops-icon-only,
  body.wp-admin .arf-app.arf-ops .arf-ops-primary.arf-ops-icon-only,
  body.wp-admin .arf-app.arf-ops .arf-ops-secondary.arf-ops-icon-only{
    width:var(--augite-control-h)!important;min-width:var(--augite-control-h)!important;
    height:var(--augite-control-h)!important;min-height:var(--augite-control-h)!important;max-height:var(--augite-control-h)!important}

  .arf-app.arf-ops details>summary{min-height:44px!important;box-sizing:border-box}
  .arf-app.arf-ops .tablenav-pages .page-numbers{display:inline-flex!important;align-items:center!important;justify-content:center!important;min-width:44px!important;min-height:var(--augite-control-h)!important}
}
/* REQ-DESIGN-PORTAL-LAYOUT RESP-001 (2026-09-21): the shared header's account/login control
 * (.arf-global-account__toggle/__login, defined above - affects every surface that shares the
 * theme header, most directly the Customer Experience portal's own account entry point) sets
 * min-height:42px with no pointer:coarse floor, unlike every control fixed by the block just
 * above. Confirmed via the real cascade resolver (tests/fixtures/css_cascade.py): under a real
 * coarse pointer at 768/1024/1280/1440 CSS px - i.e. exactly the widths where the header does NOT
 * collapse into the is-menu-open overlay, which already carries its own 48px rule - the control
 * stayed at 42px, 6px under the project-wide RESP-001 floor ("Touchziele mindestens 48x48 auch bei
 * breitem coarse pointer"). Kept as its own block (not merged into the one above) so it does not
 * shift which @media(pointer:coarse){...} block is "the first one" for
 * tests/test_live_task_2026_09_12_013_v1_v2_v3_fixes.py's positional extraction of that
 * pre-existing round-1/round-2 RentalFlow-ops fix. */
@media(pointer:coarse){
  body:not(.wp-admin) .ars-header .arf-global-account__toggle,
  body:not(.wp-admin) .ars-header .arf-global-account__login{min-height:48px!important}
}
/* REQ-DESIGN-WPADMIN-LAYOUT / REQ-INTERN-LAYOUT-CALIBRATION A11Y-001 (focus visibility, second
 * pass after LIVE-TASK-2026-09-13-013): the class-level :focus-visible rules above (0f41db8) match
 * every .arf-ops-primary/-secondary, yet eight controls were still measured with outline-style none
 * - and ALL eight sit inside a container the probe had first opened with a pointer click: the
 * Asset-Identification dialog (QR/Barcode, NFC lesen, Uebernehmen), the <details> transport editor
 * on /intern/rentalcore/disposition/ (Speichern + its checkbox) and the <details> "E-Rechnung
 * erzeugen" disclosure on /intern/rentalinvoice/ (3x ZUGFeRD erzeugen); every control measured
 * WITH a ring sits outside such a container. That is the browser's :focus-visible heuristic, which
 * suppresses the ring when focus is moved programmatically after pointer interaction (exactly what
 * operations.js/admin.js do when a dialog or editor opens). Inside an open dialog/disclosure the
 * position of focus must always be visible (WAI-ARIA dialog pattern), so there the indicator is
 * tied to :focus itself instead of the heuristic. Outside such containers nothing changes. */
/* REQ-RENTALINVOICE-ACTION-LABEL-CLARITY-001 (reopened, wave 17, help box finding): <summary> is NOT in the :focus
 * list any more. A summary is the control that OPENS its own disclosure - with a pointer click it receives focus
 * and, being inside the now-open details, matched this rule, so every mouse-opened help box ("Hilfe zu dieser
 * Seite anzeigen", "Mehr erfahren") and every opened editor summary showed a permanent orange click ring (the
 * "broken" help box in the client screenshot of /intern/rentalinvoice/). Summaries follow :focus-visible (rule
 * below): keyboard users keep a ring, pointer users get none. Controls INSIDE the opened container are unchanged. */
/* REQ-UI-MODAL-HELP-UNIFICATION-001 (wave 20): the three RentalFlow-only modal classes (.is-picker-modal/.is-search-modal/
 * .is-walkin-modal) are gone - every modal is the shared .augite-modal component. Toggles (aria-pressed/aria-expanded
 * controls, the modal close control) are excluded: a pointer click on a toggle must never leave a ring (:focus-visible). */
.arf-app.arf-ops :is(details[open],[role="dialog"],[aria-modal="true"],.augite-modal) :is(a[href],button,input:not([type="hidden"]),select,textarea,[tabindex]:not([tabindex="-1"])):not([aria-pressed]):not([aria-expanded]):not([data-augite-modal-close]):focus{outline:2px solid #d9600a!important;outline-offset:2px!important}
.arf-app summary:focus{outline:0}
.arf-app summary:focus-visible{outline:2px solid #d9600a!important;outline-offset:2px!important}
.arf-ops-quick{grid-template-columns:repeat(5,minmax(0,1fr))}
.arf-ops-quick-action:first-child.is-primary{background:#fff;color:inherit;border-color:var(--ars-line,#dadde0)}
.wp-admin .arf-rentalflow-operations>.arf-app.arf-ops{margin-top:0!important}
@media(max-width:900px){.arf-ops-context-header{flex-direction:column;gap:8px}.arf-ops-context-badge{white-space:normal}.arf-ops-quick{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.arf-ops-quick{grid-template-columns:1fr}}

/* ===================================================================================
 * REQ-INTERN-KOPFZEILE-TITEL-KOMPAKT-001 (Auftraggeber 2026-09-27)
 * -----------------------------------------------------------------------------------
 * assets/js/backend-ui.js (relocateHeaderKicker()) verschiebt Kicker+Titel (aus
 * arf_intern_page_header(), class-arf-intern.php) und den Auf-/Zuklapp-Umschalter
 * (ARF_Backend_UI::expand_all_form()) per echter DOM-Verschiebung neben das Logo in
 * .ars-header-inner (plugins/augite-rental/parts/header.html) und setzt danach
 * body.augite-intern-kopfzeile-kompakt. Diese Regeln greifen NUR, wenn das Skript die
 * Verschiebung tatsaechlich vorgenommen hat (die Selektoren sitzen auf den NEUEN
 * Positionen der Knoten) - ohne JavaScript bleiben Kicker/Titel/Umschalter an ihrer
 * bisherigen Stelle im Inhalt, unveraendert durch diese Regeln.
 * =================================================================================== */
/* REQ-INTERN-KOPFZEILE-REPARATUR-001 (2026-09-27): die erste Fassung machte die Kopfleiste
 * umbruchfaehig (flex-wrap:wrap) und liess nur dem <nav> ein margin-left:auto. Zusammen mit
 * dem Kicker im falschen Elternknoten stapelte sich der Kopf dadurch auf 119px und das
 * rechtsbuendige Kontomenue verlor seinen Platz. Jetzt eine feste Zeile:
 * Logo | Kicker (schrumpfend) | Umschalter | Kontomenue rechts.
 * Auftraggebervorgabe: "Grimply RentalFlow / Ausgabe & Ruecknahme geht NEBEN das Logo. Rechts
 * daneben bleibt natuerlich rechtsbuendig das Userprofilemenue erhalten." */
body.augite-intern-kopfzeile-kompakt:not(.wp-admin) .ars-header-inner{justify-content:flex-start!important;flex-wrap:nowrap!important;gap:14px!important}
/* Das Logo steckt in einem von wpautop erzeugten <p>: es darf weder wachsen noch Aussenabstand
 * mitbringen, sonst schiebt es die Zeile auseinander. */
body.augite-intern-kopfzeile-kompakt:not(.wp-admin) .ars-header-inner>p{margin:0!important;flex:0 0 auto!important;display:flex!important;align-items:center!important}
body.augite-intern-kopfzeile-kompakt:not(.wp-admin) .ars-header-inner>nav{margin-left:auto!important;flex:0 0 auto!important;min-width:0!important}
body.augite-intern-kopfzeile-kompakt:not(.wp-admin) .arf-intern-header-kicker{display:flex!important;flex-direction:column!important;justify-content:center!important;gap:0!important;min-width:0!important;flex:0 1 auto!important;max-width:min(46vw,460px)!important}
body.augite-intern-kopfzeile-kompakt:not(.wp-admin) .arf-intern-header-kicker .arf-ops-eyebrow{font-size:.6rem!important;line-height:1.2!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
body.augite-intern-kopfzeile-kompakt:not(.wp-admin) .arf-intern-header-kicker h1{margin:0!important;font-size:1rem!important;font-weight:650!important;line-height:1.25!important;color:inherit!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
/* Der mitverschobene Hinweistext: dritte, gedaempfte Zeile - der Platz, den er im Inhalt
 * belegt hat, wird dort vollstaendig frei (der ganze .arf-ops-context-header faellt weg). */
body.augite-intern-kopfzeile-kompakt:not(.wp-admin) .arf-intern-header-lead{margin:0!important;font-size:.6rem!important;line-height:1.2!important;opacity:.72!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
/* REQ-INTERN-UMSCHALTER-INS-KONTOMENUE-001 (2026-09-27): die Regel fuer den Umschalter IN der
 * Kopfleiste ist ersatzlos entfernt - der Umschalter steht dort nicht mehr. Sein Aussehen
 * kommt jetzt aus help.css bei .arf-global-account__prefs>.arf-global-account__expand-all,
 * neben Sprache, Hilfe und Toenen. Eine stehengelassene Regel fuer eine Position, die es nicht
 * mehr gibt, waere tot und wuerde beim naechsten Lesen eine falsche Fahrte legen. */
/* Eigene Kontoliste aus dem </nav>-Rueckfall in ARF_Account::inject_header_navigation():
 * sie ersetzt die weggefilterte Marketingliste und muss sich wie diese verhalten. */
body.augite-intern-page:not(.wp-admin) .ars-header .arf-global-account-list{display:flex!important;align-items:center!important;gap:8px!important;margin:0!important;padding:0!important;list-style:none!important}
/* Auf /intern/ ist die Marketingnavigation vollstaendig leer - dann darf auch ihr
 * Menuebalken-Knopf nicht erscheinen, der sonst ein leeres Overlay aufziehen wuerde. */
body.augite-intern-page:not(.wp-admin) .ars-header nav.ars-header-nav:has(.arf-global-account-list)>.wp-block-navigation__responsive-container-open{display:none!important}
@media(max-width:860px){
  /* Schmaler: der Hinweistext ist die verzichtbare Zeile, Kicker und Titel bleiben. */
  body.augite-intern-kopfzeile-kompakt:not(.wp-admin) .arf-intern-header-lead{display:none!important}
}
@media(max-width:640px){
  body.augite-intern-kopfzeile-kompakt:not(.wp-admin) .ars-header-inner{flex-wrap:wrap!important;row-gap:4px!important}
  body.augite-intern-kopfzeile-kompakt:not(.wp-admin) .arf-intern-header-kicker{max-width:100%!important;order:3!important;flex-basis:100%!important}
  body.augite-intern-kopfzeile-kompakt:not(.wp-admin) .arf-intern-header-kicker h1{white-space:normal!important}
}

/* REV113 – public journey preference / pickup-location field. */
/* REQ-BACKEND-INPUT-BUTTON-CONSISTENCY-001: this non-compact selector is never reached live (the
   only PHP call site always adds .arf-asset-booking--compact alongside .arf-asset-booking, and
   either way the element sits inside .arf-app so the generic "body:not(.wp-admin) .arf-app select,body:not(.wp-admin) .augite-modal select"
   0!important override already wins by specificity) - fixed anyway per the standing "same defect
   class everywhere, not just where it currently renders" rule, instead of leaving a contradicting
   10px declaration in source. */
.arf-asset-booking .arf-booking-field--location{min-width:190px}.arf-asset-booking .arf-booking-field--location select{min-height:48px;width:100%;border:1px solid var(--arf-border,#dadde0);border-radius:0;background:#fff;padding:9px 11px;font:inherit}
@media(max-width:760px){.arf-asset-booking .arf-booking-field--location{min-width:0}.arf-asset-booking .arf-booking-field--location select{font-size:16px}}

/* REV114: non-reserving availability interest / waitlist request */
.arf-availability-interest{margin:12px 0 0;padding:14px 16px;border:1px solid var(--ars-line,#dadde0);border-radius:0;background:#fff}.arf-availability-interest>strong{display:block;margin-bottom:4px}.arf-availability-interest>p{margin:0 0 12px;color:#64676b}.arf-interest-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.arf-interest-grid label{display:flex;flex-direction:column;gap:5px;font-weight:600}.arf-interest-grid input,.arf-interest-grid textarea{min-height:44px;width:100%;box-sizing:border-box}.arf-interest-wide{grid-column:1/-1}.arf-availability-interest>.ars-btn{margin-top:12px;min-height:44px}@media(max-width:680px){.arf-interest-grid{grid-template-columns:1fr}.arf-interest-wide{grid-column:auto}}

/* REV115 RentalFlow tablet-first interaction contract */
.arf-app.arf-ops button,
.arf-app.arf-ops .button,
.arf-app.arf-ops [role="button"],
.arf-app.arf-ops input:not([type="checkbox"]):not([type="radio"]),
.arf-app.arf-ops select { min-height:var(--augite-control-h); }
.arf-app.arf-ops button,
.arf-app.arf-ops .button,
.arf-app.arf-ops [role="button"] { touch-action:manipulation; }
.arf-app.arf-ops .arf-batch-assets label,
.arf-app.arf-ops .arf-general-checks label,
.arf-app.arf-ops .arf-preparation-asset > label,
.arf-app.arf-ops .arf-known-damage label { min-height:48px; display:flex; align-items:center; gap:10px; }
.arf-app.arf-ops .arf-summary-plan { border-left:3px solid var(--arf-accent,#f2994a); padding-left:8px; }
.arf-app.arf-ops .arf-known-damage { margin-top:10px; padding:12px; border:1px solid #d8c67d; border-radius:0; background:#fffbea; }
.arf-app.arf-ops .arf-known-damage ul { margin:6px 0 8px 20px; }
@media (max-width:900px), (pointer:coarse) {
  .arf-app.arf-ops .arf-work-asset,
  .arf-app.arf-ops .arf-preparation-asset,
  .arf-app.arf-ops .arf-return-core,
  .arf-app.arf-ops .arf-meter-fields,
  .arf-app.arf-ops .arf-media-meta { grid-template-columns:minmax(0,1fr)!important; }
  .arf-app.arf-ops .arf-ops-actions,
  .arf-app.arf-ops .arf-camera-actions,
  .arf-app.arf-ops .arf-process-footer { align-items:stretch; }
  .arf-app.arf-ops .arf-ops-actions > button,
  .arf-app.arf-ops .arf-camera-actions > button,
  .arf-app.arf-ops .arf-process-footer > button { width:100%; min-height:var(--augite-control-h); }
  .arf-app.arf-ops .arf-process-footer .arf-process-footer-actions { flex-direction:column; align-items:stretch; }
  .arf-app.arf-ops .arf-process-footer-actions > button { width:100%; min-height:var(--augite-control-h); }
}
/* REQ-BA2-DATA-INTEGRITY-CORRECTION-001 (K1): "Uebergabe/Ruecknahme abbrechen" sits left of the completion button. */
.arf-process-footer .arf-process-footer-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px}
@media (hover:none) {
  .arf-app.arf-ops button:hover,
  .arf-app.arf-ops [role="button"]:hover { transform:none; }
}

/* REV116 / REQ-026 – /intern/rentalflow/ structural boxes are square. */
.arf-app.arf-ops .arf-ops-card,
.arf-app.arf-ops .arf-ops-booking,
.arf-app.arf-ops .arf-ops-empty,
.arf-app.arf-ops .arf-ops-summary-item,
.arf-app.arf-ops .arf-work-asset,
.arf-app.arf-ops .arf-check-grid fieldset,
.arf-app.arf-ops .arf-return-asset,
.arf-app.arf-ops .arf-media-box,
.arf-app.arf-ops .arf-preparation-checks,
.arf-app.arf-ops .arf-preparation-asset,
.arf-app.arf-ops .arf-pickup-deviation,
.arf-app.arf-ops .arf-terminal-actions,
.arf-app.arf-ops .arf-known-damage,
.arf-app.arf-ops .arf-master-item.is-return-condition,
.arf-app.arf-ops .arf-derived-disposition,
.arf-app.arf-ops .arf-turnaround-guidance,
.arf-app.arf-ops .arf-asset-suggestions,
.arf-app.arf-ops .arf-ops-quick-action,
.arf-app.arf-ops .arf-ops-empty,
.arf-app.arf-ops .arf-ops-summary-item,
.arf-app.arf-ops .arf-ops-assignment-callout,
.arf-app.arf-ops .arf-general-checks label,
.arf-app.arf-ops .arf-release-gate,
.arf-app.arf-ops .arf-release-gate-item,
.arf-app.arf-ops .arf-transport-card,
.arf-app.arf-ops .arf-transport-warning,
.arf-app.arf-ops .arf-pre-return,
.arf-app.arf-ops .arf-touch-choice label>span,
/* REQ-087 – REV136's Action & Exception Center introduced its own rounded-corner tiles
   (control-metric/staff-context/activity/warning-list) without adding them to this REQ-026
   flat-design list, so they kept their own border-radius while every sibling box on this page
   was already square. */
.arf-app.arf-ops .arf-ops-control-metric,
.arf-app.arf-ops .arf-ops-staff-context,
.arf-app.arf-ops .arf-ops-activity,
.arf-app.arf-ops .arf-ops-staff-context-grid>div,
.arf-app.arf-ops .arf-ops-warning-list li,
/* REQ-026 Vollaudit (2026-09-11) - same recurrence as REQ-087 above: the Degraded-Mode banner
   and the Wave-Picking panel kept their own border-radius. Currently only rendered on the
   admin surface (class-arf-shortcodes.php), but listed here too so this file's flat-design
   coverage stays complete if either is ever also shown externally. */
.arf-app.arf-ops .arf-ops-degraded,
.arf-app.arf-ops .arf-ops-wave { border-radius:0!important; }

.arf-app.arf-ops .arf-ops-booking-icon,
.arf-app.arf-ops .arf-ops-summary-icon,
.arf-app.arf-ops .arf-work-asset-icon,
.arf-app.arf-ops .arf-media-icon,
.arf-app.arf-ops .arf-turnaround-guidance summary>span { border-radius:0!important; }

/* Nutzerauftrag (2026-09-12, Folgeauftrag zur Modal-Breite): dieselbe Ursache wie bei der
 * ".arf-ops-card ist 100% breit"-Falle - der Scanner traegt auch ".arf-ops-card", weshalb diese
 * Akzentrand-Regeln sonst auch im Modal-Zustand einen 4px farbigen Rand statt des einheitlichen,
 * duennen Modal-Rahmens erzwingen wuerden (nur beim Asset-Modal sichtbar, da Suche/
 * Direktvermietung keine .arf-ops-card-Klasse tragen). */
/* REQ-OPS-CARD-NEUTRAL-ACCENT-001 (2026-09-14, user-reported via screenshot of /intern/rentalflow/):
 * every .arf-ops-card - the generic outer "main box" wrapper used for every page section - got the
 * same 4px orange (var(--arf-ops-green), an old token name that now literally holds the Scaeva
 * accent-orange hex #d9600a since the rebrand) left accent regardless of whether that box actually
 * carries anything important. Result: every section on a page reads as "urgent", so nothing does.
 * Genuinely important/status-driven boxes (e.g. .arf-ops-control-metric.is-critical/is-high/is-blocked,
 * .arf-derived-disposition.is-quarantine/is-repair/is-damage) already carry their OWN semantic
 * border-left-color and are untouched by this rule. Only the unconditional default for the outer
 * card itself moves to a subtle neutral gray - the same neutral already used for a "no particular
 * status" state elsewhere in this file (.arf-derived-disposition.is-pending). */
/* REQ-UI-BOX-LEFT-EDGE-NORMAL-001 (wave 30, client decision 141): the neutral grey 4px left edge above is
 * superseded - "die [linke Kante] bekommt die Farbe der normalen Boxkante und ist nicht dicker/breiter als die
 * restlichen Seiten". The former `.arf-ops-card:not(.augite-modal){border-left:4px solid #8e9195!important}` rule
 * is removed, so the left edge IS the card's normal border (1px, same colour as top/right/bottom) by construction;
 * wp-admin's admin.css no longer lists .arf-ops-card among its accent-edge panels either. Status/accent boxes
 * below (.arf-known-damage, .arf-pickup-deviation.is-*, .arf-derived-disposition.is-*) keep their coloured edge.
 * The colour-only `.arf-ops-transport{border-left-color:#2271b1!important}` rule is removed with it: it never won
 * against the (0,4,0) grey rule, and without that rule it would have painted a 1px blue left edge only. */
.arf-app.arf-ops .arf-known-damage,
.arf-app.arf-ops .arf-pickup-deviation.is-progress,
.arf-app.arf-ops .arf-derived-disposition.is-cleaning,
.arf-app.arf-ops .arf-derived-disposition.is-maintenance { border-left:4px solid #b7791f!important; }
.arf-app.arf-ops .arf-pickup-deviation.is-alert,
.arf-app.arf-ops .arf-derived-disposition.is-quarantine,
.arf-app.arf-ops .arf-derived-disposition.is-repair,
.arf-app.arf-ops .arf-derived-disposition.is-damage { border-left:4px solid var(--arf-ops-danger)!important; }
.arf-app.arf-ops .arf-pickup-deviation.is-ok { border-left:4px solid #26734d!important; }

/* Semantic pictograms support scanning, work queue, transport and signature context. */
.arf-app.arf-ops .arf-ops-section-titleline{display:flex;align-items:flex-start;gap:10px}
.arf-app.arf-ops .arf-ops-section-icon{display:grid;place-items:center;flex:0 0 30px;width:30px;height:30px;color:var(--arf-ops-green);margin-top:1px}
.arf-app.arf-ops .arf-ops-section-icon svg{width:22px;height:22px}

/* REV116 / REQ-022 – field-level validation without destructive rerender. */
.arf-field-invalid{outline:2px solid #b42318!important;outline-offset:1px}
.arf-field-error{display:block;margin-top:4px;font-size:.84rem;font-weight:650;color:#8a1c13}

/* REV118 – RentalFlow header-adjacent staff search and surface-safe navigation. */
.arf-ops-staff-search{display:grid;grid-template-columns:minmax(250px,360px) minmax(0,1fr);gap:20px;align-items:end;margin:0 0 16px}
.arf-ops-global-searchbox{position:relative;min-width:0}.arf-ops-global-searchbox label{display:block;margin:0}.arf-ops-global-searchbox input[type="search"]{width:100%;min-height:var(--augite-control-h);margin:0;padding:var(--augite-control-pad);border:1px solid #b7b9bc;border-radius:0;background:#fff;font-family:inherit;font-size:var(--augite-field-font-size);line-height:var(--augite-control-line-height);font-weight:var(--augite-control-weight);box-sizing:border-box}.arf-ops-global-searchbox input[type="search"]:focus{border-color:var(--ars-green,#d9600a);box-shadow:0 0 0 2px rgba(217,96,10,.12);outline:0}.arf-ops-global-results{position:absolute;z-index:120;top:calc(100% + 4px);left:0;right:0;max-height:360px;overflow:auto;border:1px solid #bfc1c4;background:#fff;box-shadow:0 12px 28px rgba(20,24,27,.16)}.arf-ops-global-result{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:center;padding:10px 12px;border-bottom:1px solid #e6e8e9;color:inherit;text-decoration:none}.arf-ops-global-result:last-child{border-bottom:0}.arf-ops-global-result:hover,.arf-ops-global-result:focus-visible{background:#f4f5f6;outline:0}.arf-ops-global-kind{display:inline-flex;align-items:center;justify-content:center;min-width:74px;padding:4px 7px;border-left:3px solid #d9600a;background:#f1f2f4;font-size:.72rem;font-weight:750;text-transform:uppercase;letter-spacing:.03em}.arf-ops-global-copy{display:grid;gap:2px;min-width:0}.arf-ops-global-copy strong,.arf-ops-global-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.arf-ops-global-copy small{color:var(--arf-ops-muted);font-size:.78rem}.arf-ops-global-empty{padding:12px;color:var(--arf-ops-muted)}.arf-ops-identification-divider{height:1px;background:#e3e4e6;margin:0 0 16px}
@media(max-width:760px){.arf-ops-staff-search{grid-template-columns:1fr;gap:10px}.arf-ops-global-results{position:static;margin-top:4px;max-height:280px}.arf-ops-global-kind{min-width:64px}.arf-ops-global-copy small{white-space:normal}}

/* REV118 – RentalFlow surface regression hardening. */
.arf-app.arf-ops .arf-ops-customer-search{border-left-color:#2271b1!important}
.arf-ops-customer-filter{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px;padding:10px 12px;border-left:4px solid #2271b1;background:#f2f7fb}
.arf-ops-customer-filter[hidden]{display:none!important}
.arf-ops-global-result{appearance:none;width:100%;border:0;background:#fff;font:inherit;cursor:pointer}
.arf-ops-global-result:focus-visible{box-shadow:inset 0 0 0 2px #2271b1}
/* REQ-INTERN-TESTDATEN-AUSBLENDBAR-001: dritte Spalte fuer den Ausblenden/Einblenden-Knopf, der
   immer neben dem Hinweistext steht (nicht darunter) - eigene Zeile waere auf schmalen Schirmen
   in Ordnung, deshalb bricht die Spalte per minmax(0,1fr) auf den Inhalt und der Knopf faellt
   auf < 480px in eine eigene Zeile (siehe die Media Query darunter), statt das Raster zu sprengen. */
.arf-ops-demo-notice{display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:10px;align-items:start;margin:0 0 10px;padding:10px 12px;border-left:4px solid #c2761d;background:#fff8e7}
.arf-ops-demo-notice .arf-ui-icon{margin-top:1px}.arf-ops-demo-notice strong,.arf-ops-demo-notice span{display:block}.arf-ops-demo-notice span{font-size:.82rem;color:var(--arf-ops-muted)}
@media (max-width:480px){.arf-ops-demo-notice{grid-template-columns:30px minmax(0,1fr)}.arf-ops-demo-notice [data-arf-toggle-demo]{grid-column:2;justify-self:start;margin-top:6px}}
.arf-ops-booking.is-demo{border-left:4px solid #c2761d!important}.arf-ops-test-badge{display:inline-flex;margin-left:7px;padding:2px 5px;border:1px solid #c2761d;background:#fff8e7;color:#704b00;font-size:.66rem;font-weight:800;vertical-align:middle}
.arf-ops-assignment-callout{display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:10px;align-items:center}.arf-ops-assignment-callout>.arf-ops-primary{min-height:var(--augite-control-h)}
.arf-preparation-identify{grid-column:1/-1;display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid #e5e7e8}.arf-preparation-identify small{color:var(--arf-ops-muted)}
.arf-batch-asset-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center}.arf-batch-asset-row>label{margin:0!important}.arf-batch-picker{min-height:48px}
.arf-ops-picker-success{margin-top:8px;padding:8px 10px;border-left:4px solid #26734d;background:#edf8f1;font-weight:650}
@media(max-width:760px){.arf-ops-customer-filter,.arf-preparation-identify{align-items:stretch;flex-direction:column}.arf-ops-assignment-callout,.arf-batch-asset-row{grid-template-columns:1fr}.arf-ops-assignment-callout>.arf-ui-icon{display:none}.arf-batch-picker{width:100%}}

/* REV119 – surface-aware RentalFlow information architecture.
 * External /intern/rentalflow/ stays tablet-first: actions first, compact touch rows,
 * search/asset identification only when invoked. Structural containers remain square. */
.arf-app.arf-ops [hidden]{display:none!important}

/* Nutzerauftrag (2026-09-12): "Kunde suchen muss ebenfalls in ein Modal verschoben werden,
   analog wie in QR-/NFC-Scannen", spaeter praezisiert: "Kundesuche-Modal muss an das andere
   Design angepasst werden" (nicht bildschirmbreit, max. 800px, keine abweichende Optik). Die
   dedizierte Chrome-Regel dieser Kachel wurde entfernt - sie teilt sich jetzt exakt dieselbe
   konsolidierte Modal-Regel wie Scanner und Direktvermietung (siehe REV082-Abschnitt weiter
   oben in dieser Datei), damit nicht wieder drei leicht unterschiedliche Kopien entstehen. */

.arf-app.arf-ops .arf-ops-quick--external{grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:8px;margin-bottom:12px}
.arf-app.arf-ops .arf-ops-quick--external .arf-ops-quick-action{border-radius:0!important;min-height:64px}
/* REQ-GATE-ROT-RELEASE2A-001 / REQ-INTERN-NAV-EINZEILIG-001: die Reiterleiste von /intern/rentalcore/ traegt bis zu neun Reiter.
   761-1023 px: Kacheln mit Unterzeile, 205px Mindestbreite (Unterzeile einzeilig, REQ-INTERN-KACHELTEXTE-EINZEILIG-001), Umbruch in weitere Zeilen erlaubt.
   Ab 1024 px: ALLE Reiter in EINER Zeile (gleich breite Spalten, schrumpfen statt umbrechen); die Unterzeile entfaellt dort (Tooltip title am Reiter),
   das Etikett kuerzt notfalls mit Ellipse. Bis 760 px gelten unveraendert die allgemeinen Regeln (2 Spalten / 1 Spalte). */
@media(min-width:761px) and (max-width:1023px){.arf-app.arf-ops nav.arf-ops-quick--external[aria-label^="Grimply RentalCore"]{grid-template-columns:repeat(auto-fit,minmax(205px,1fr))}}
@media(min-width:1024px){
  .arf-app.arf-ops nav.arf-ops-quick--external[aria-label^="Grimply RentalCore"]{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}
  .arf-app.arf-ops nav.arf-ops-quick--external[aria-label^="Grimply RentalCore"] .arf-ops-quick-action{min-height:48px;padding:8px;min-width:0}
  .arf-app.arf-ops nav.arf-ops-quick--external[aria-label^="Grimply RentalCore"] .arf-ops-quick-action small{display:none}
  .arf-app.arf-ops nav.arf-ops-quick--external[aria-label^="Grimply RentalCore"] .arf-ops-quick-action>span{min-width:0;max-width:100%}
  .arf-app.arf-ops nav.arf-ops-quick--external[aria-label^="Grimply RentalCore"] .arf-ops-quick-action strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
}

.arf-app.arf-ops .arf-ops-worklist{display:block;margin-top:12px;border-top:1px solid var(--arf-ops-line)}
/* REQ-INTERN-KOPFLEISTE-VARIANTE-RENTALFLOW-001 Nachtrag 2, Etappe 3 (2026-09-27): .arf-ops-workrow
 * war bisher AUSSCHLIESSLICH <button> (RentalFlows Arbeitsvorrat, JS-Modal-Slot) - kein
 * text-decoration:none noetig, Buttons unterstreicht die generische <a>-Linkregel nicht. RentalCores
 * Uebersicht ("Neue Anfragen") verwendet dieselbe Sicht-Klasse jetzt an einem echten <a> (Navigation
 * zur Buchungsakte statt eines JS-Modals) - dieselbe, in dieser Datei bereits einmal gefundene Lehre
 * (siehe .arf-ops-primary/-secondary weiter oben): explizit text-decoration:none, sonst genau derselbe
 * Unterstreichungsfehler ein zweites Mal. */
.arf-app.arf-ops a.arf-ops-workrow{text-decoration:none}
.arf-app.arf-ops .arf-ops-workrow{appearance:none;display:grid;width:100%;grid-template-columns:38px minmax(0,1fr) auto 14px;align-items:center;gap:10px;min-height:68px;padding:10px 8px;border:0;border-bottom:1px solid var(--arf-ops-line);border-left:4px solid transparent;border-radius:0!important;background:#fff;color:var(--arf-ops-ink);text-align:left;cursor:pointer;touch-action:manipulation}
.arf-app.arf-ops .arf-ops-workrow:hover,.arf-app.arf-ops .arf-ops-workrow:focus-visible{background:var(--arf-ops-soft);outline:0;border-left-color:var(--arf-ops-green)}
.arf-app.arf-ops .arf-ops-workrow.is-demo{border-left-color:#c2761d;background:#fffdf7}
.arf-app.arf-ops .arf-ops-workrow-icon{display:grid;place-items:center;width:34px;height:34px;color:var(--arf-ops-green)}
.arf-app.arf-ops .arf-ops-workrow-icon svg{width:22px;height:22px}
.arf-app.arf-ops .arf-ops-workrow-copy{display:grid;gap:1px;min-width:0}
.arf-app.arf-ops .arf-ops-workrow-copy strong{font-size:.92rem;line-height:1.25}
.arf-app.arf-ops .arf-ops-workrow-copy>span{font-size:.84rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.arf-app.arf-ops .arf-ops-workrow-copy small{font-size:.75rem;color:var(--arf-ops-muted)}
/* REQ-INTERN-RENTALFLOW-ADAPTIVE-LAYOUT-001 Punkt 4: eine Zeile, die Aktionen traegt.
   Die Zeile selbst bleibt unveraendert .arf-ops-workrow - es entsteht KEIN zweiter Zeilentyp,
   der fast wie der erste aussieht. Die Aktionen liegen DANEBEN statt darin, weil eine Zeile,
   die selbst <button> ist, keinen zweiten Knopf enthalten darf. Die Gruppe uebernimmt dafuer
   die Trennlinie, damit nicht zwei Linien uebereinander stehen. */
.arf-app.arf-ops .arf-ops-workrow-group{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:4px;border-bottom:1px solid var(--arf-ops-line)}
.arf-app.arf-ops .arf-ops-workrow-group>.arf-ops-workrow{border-bottom:0}
.arf-app.arf-ops .arf-ops-workrow-group.has-conflict>.arf-ops-workrow{border-left-color:#b3401d;background:#fff6f2}
.arf-app.arf-ops .arf-ops-workrow-actions{display:flex;align-items:center;gap:6px;padding:0 8px 0 2px}
/* Ein Transport ohne Buchung hat nichts zu oeffnen. Dann bleibt es dieselbe Zeile, aber
   abgeschaltet und ohne Chevron - ein Ausloeser, der ins Leere greift, waere schlechter als keiner.
   Abgeschaltet heisst hier NICHT ausgegraut: die Zeile ist kein unerreichbarer Knopf, sondern eine
   Zeile ohne Ziel, und ihre Angaben sind genauso zu lesen wie in jeder anderen. Deshalb werden die
   Vorgaben des Browsers fuer disabled hier zurueckgenommen (Farbe und Deckkraft), nur der
   Mauszeiger und die Hervorhebung beim Ueberfahren entfallen. */
.arf-app.arf-ops .arf-ops-workrow.is-static{cursor:default;background:#fff;color:var(--arf-ops-ink);opacity:1;-webkit-text-fill-color:currentColor}
.arf-app.arf-ops .arf-ops-workrow.is-static:hover{background:#fff;border-left-color:transparent}
.arf-app.arf-ops .arf-ops-workrow.is-static .arf-ops-workrow-copy small{color:var(--arf-ops-muted)}
/* UX-RWD-002 auf dieser Flaeche: der geteilte Piktogramm-Knopf misst 36px und waechst am groben
   Zeiger von sich aus nur auf 40px - die Dichtekennung "touch", die ihn auf 48px hebt, setzt nur
   wp-admin. Die Tablet-Konsole ist aber genau der Fall, fuer den die 48px gedacht sind, und diese
   Knoepfe stehen unmittelbar neben einem Ausloeser, der die ganze Zeile einnimmt. Gemessen ohne
   diese Regel: 36px. Dieselbe Begruendung traegt schon .arf-ops-secondary/.arf-ops-primary weiter oben. */
@media(pointer:coarse){
  .arf-app.arf-ops .arf-ops-workrow-actions .augite-icon-btn{width:var(--augite-control-h);min-width:var(--augite-control-h);height:var(--augite-control-h);min-height:var(--augite-control-h)}
}
@media(max-width:560px){
  .arf-app.arf-ops .arf-ops-workrow-group{grid-template-columns:minmax(0,1fr)}
  .arf-app.arf-ops .arf-ops-workrow-actions{justify-content:flex-end;padding:0 8px 8px}
}
.arf-app.arf-ops .arf-ops-refresh-warning{margin:0 0 10px;padding:9px 11px;border-left:4px solid #c2761d;background:#fff8e7;color:#674900}
.arf-app.arf-ops .arf-ops-refresh{white-space:nowrap}
@media(max-width:760px),(pointer:coarse){
  .arf-app.arf-ops .arf-ops-quick--external{grid-template-columns:repeat(2,minmax(0,1fr))}
  .arf-app.arf-ops .arf-ops-workrow{grid-template-columns:34px minmax(0,1fr) 14px;min-height:72px;padding:11px 6px}
  .arf-app.arf-ops .arf-ops-workrow .arf-ops-state{grid-column:2;justify-self:start;margin-top:3px}
  .arf-app.arf-ops .arf-ops-workrow .arf-ops-chevron{grid-column:3;grid-row:1/3}
  .arf-app.arf-ops .arf-ops-workrow-copy small{white-space:normal}
}
@media(max-width:460px){.arf-app.arf-ops .arf-ops-quick--external{grid-template-columns:1fr}}

/* REV135 direct-rental drawer + compact picker */

.arf-ops-demo-health{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 14px;align-items:center;margin:0 0 14px;padding:12px 14px;border:1px solid #dba617;border-left:4px solid #b32d2e;background:#fff8e5}.arf-ops-demo-health strong,.arf-ops-demo-health span{display:block}.arf-ops-demo-health span{color:#50575e}.arf-ops-demo-health a{grid-column:2;grid-row:1/3}
@media(max-width:782px){.arf-ops-demo-health{grid-template-columns:1fr}.arf-ops-demo-health a{grid-column:1;grid-row:auto;justify-self:start;min-height:44px}}

.arf-ops-walkin-checkbox{display:grid!important;grid-template-columns:20px minmax(0,1fr)!important;gap:9px!important;align-items:start!important;padding:10px 12px;border:1px solid #e3e4e6;background:#f9fafb}
.arf-ops-walkin-checkbox input[type=checkbox]{appearance:auto;width:18px!important;height:18px!important;min-height:0!important;margin:2px 0 0!important}
.arf-ops-walkin-checkbox span{font-weight:500!important;line-height:1.4}

/* REQ-002 (Package "ohne" audit, 2026-09-10): inline "+ Neuer Kunde" creation inside the
 * walk-in drawer, so staff no longer have to abandon an in-progress direct rental to open
 * the separate Kunden-CRM page. */
.arf-ops-inline-new-customer{border:1px solid #d1d3d5;background:#f7f8f9;padding:12px;margin-top:-4px}
.arf-ops-inline-new-customer-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.arf-ops-inline-new-customer-grid label{display:grid;gap:5px}.arf-ops-inline-new-customer-grid label>span{font-weight:650;font-size:12px}
.arf-ops-inline-new-customer-grid input,.arf-ops-inline-new-customer-grid select{width:100%;min-height:var(--augite-control-h)}
@media(max-width:700px){.arf-ops-inline-new-customer-grid{grid-template-columns:1fr}}

/* REV136 · Workflow Orchestration / Action & Exception Center */
.arf-ops-control-dashboard{margin-top:12px}.arf-ops-control-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.arf-ops-control-metric{display:grid;gap:3px;min-height:74px;padding:12px 14px;border:1px solid var(--arf-ops-line);border-radius:0;background:var(--arf-ops-paper)}.arf-ops-control-metric strong{font-size:1.45rem;line-height:1;color:var(--arf-ops-ink)}.arf-ops-control-metric span{font-size:.72rem;font-weight:750;color:var(--arf-ops-muted)}.arf-ops-control-metric.is-critical{border-left:4px solid var(--arf-ops-danger)}.arf-ops-control-metric.is-high,.arf-ops-control-metric.is-blocked{border-left:4px solid var(--arf-ops-warn)}.arf-ops-control-metric.is-total{border-left:4px solid var(--arf-ops-green)}
.arf-ops-staff-context,.arf-ops-activity{margin:14px 0;padding:14px;border:1px solid var(--arf-ops-line);border-radius:0;background:#fbfcfb}.arf-ops-staff-context .arf-ops-section-head,.arf-ops-activity .arf-ops-section-head{margin-bottom:10px}.arf-ops-staff-context h3,.arf-ops-activity h3{margin:2px 0 0;font-size:1.05rem}.arf-ops-staff-context-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.arf-ops-staff-context-grid>div{display:grid;gap:3px;padding:9px 10px;border:1px solid #e5e6e7;border-radius:0;background:#fff}.arf-ops-staff-context-grid small{font-size:.66rem;text-transform:uppercase;letter-spacing:.05em;color:var(--arf-ops-muted);font-weight:800}.arf-ops-staff-context-grid strong{font-size:.8rem;line-height:1.3}
.arf-ops-warning-list{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:6px}.arf-ops-warning-list li{padding:7px 10px;border-left:3px solid #c9932a;background:#fbf5e8;border-radius:0;font-size:.8rem}.arf-ops-warning-list strong{display:block;font-size:.8rem}.arf-ops-warning-list small{display:block;color:var(--arf-ops-muted);font-size:.72rem;margin-top:2px}
.arf-ops-handover-timeline{margin-top:10px;padding-top:10px;border-top:1px solid #e5e6e7}.arf-ops-handover-timeline>small{font-size:.66rem;text-transform:uppercase;letter-spacing:.05em;color:var(--arf-ops-muted);font-weight:800}.arf-ops-empty-inline{display:block;margin-top:4px;font-size:.78rem;color:var(--arf-ops-muted)}
.arf-ops-timeline-list{display:grid;gap:0}.arf-ops-timeline-item{position:relative;display:grid;grid-template-columns:18px minmax(0,1fr);gap:8px;padding:8px 0}.arf-ops-timeline-item:not(:last-child):before{content:"";position:absolute;left:6px;top:22px;bottom:-8px;width:1px;background:var(--arf-ops-line)}.arf-ops-timeline-dot{width:13px;height:13px;margin-top:2px;border:3px solid #e5e7e8;border-radius:50%;background:var(--arf-ops-green);z-index:1}.arf-ops-timeline-item>div{display:grid;gap:1px}.arf-ops-timeline-item strong{font-size:.8rem}.arf-ops-timeline-item small{font-size:.7rem;color:var(--arf-ops-muted)}
@media(max-width:782px){.arf-ops-control-grid,.arf-ops-staff-context-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.arf-ops-control-metric{min-height:66px}.arf-ops-staff-context,.arf-ops-activity{padding:12px}}

/* REV137 capacity-based pickup/return service slots */
.arf-cart-slots{margin:12px 0 16px;padding:12px 14px;border:1px solid var(--arf-theme-line,#e1e2e4);background:var(--arf-theme-soft,#f7f8f9)}.arf-cart-slots>strong{display:block;margin-bottom:3px}.arf-cart-slots>p{margin:0 0 10px;font-size:.82rem;opacity:.72}.arf-cart-slot-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.arf-cart-slot-grid label{display:grid;gap:5px;margin:0!important}.arf-cart-slot-grid label>span{font-weight:700;font-size:.82rem}.arf-cart-slot-grid select{min-height:44px}.arf-cart-slots.is-saving{opacity:.65;pointer-events:none}.arf-time-window-closed-note{margin:2px 0 0;padding:6px 8px;border-radius:0;background:#fff8e5;color:#684b00;font-size:.76rem;font-weight:600}@media(max-width:600px){.arf-cart-slot-grid{grid-template-columns:1fr}}

/* REV138 Package C – operational excellence */
.arf-ops-degraded{margin:12px 0;padding:12px 14px;border:1px solid currentColor;border-radius:0;display:flex;flex-wrap:wrap;gap:4px 10px;align-items:flex-start}.arf-ops-degraded strong{white-space:nowrap}.arf-ops-degraded span{font-size:.92em}.arf-ops-degraded [data-arf-degraded-storage]{flex-basis:100%;margin:6px 0 0}.arf-ops-wave{margin:14px 0;padding:16px;border:1px solid #d7d8da;border-radius:0;background:#fff}.arf-wave-list{display:grid;gap:8px}.arf-wave-row{display:grid;grid-template-columns:minmax(180px,1.2fr) minmax(150px,1fr) minmax(180px,1fr);gap:12px;align-items:center;padding:9px 10px;border-bottom:1px solid #edeeef}.arf-wave-row:last-child{border-bottom:0}.arf-wave-row small{justify-self:end}.is-degraded [data-complete-handover],.is-degraded [data-complete-return],.is-degraded [data-op-action="lean-safe-advance"]{opacity:.6}.arf-inspection-template{padding:12px;border:1px solid #dadde0;border-radius:0;background:#fafbfa}.arf-inspection-template-head{display:flex;flex-direction:column;gap:3px;margin-bottom:10px}.arf-inspection-template-item{display:flex;gap:9px;align-items:flex-start;padding:7px 0}.arf-inspection-template-item span{display:flex;flex-direction:column}.arf-inspection-template-item small{opacity:.78}.arf-inspection-template-item.is-blocker{border:1px solid #ecb9a0;border-left:4px solid #b3401d;border-radius:0;background:#fff6f2;padding:9px 10px}.arf-inspection-blocker-icon{flex:0 0 20px;width:20px;height:20px;font-size:20px;line-height:20px;color:#b3401d}.arf-inspection-blocker-copy small{color:#8a2c12}.arf-inspection-template-item .arf-inspection-blocker-choice{display:flex;flex-direction:row;flex-wrap:wrap;gap:8px;margin-top:8px}.arf-inspection-blocker-option{display:inline-flex;align-items:center;gap:5px;padding:6px 10px;border:1px solid #c5c7c9;border-radius:0;background:#fff;font-weight:600;font-size:.82rem;line-height:1.2;cursor:pointer}.arf-inspection-blocker-option input{margin:0}.arf-inspection-blocker-option .dashicons{font-size:16px;width:16px;height:16px;line-height:16px}.arf-inspection-blocker-option.is-present{color:#8a2c12}.arf-inspection-blocker-option:has(input:checked){border-color:#b3401d;background:#fdeee7;box-shadow:inset 0 0 0 1px #b3401d}.arf-ready-release-form{margin-top:6px}.arf-ready-release-form .button{white-space:nowrap}@media(max-width:760px){.arf-wave-row{grid-template-columns:1fr}.arf-wave-row small{justify-self:start}}

/* REQ-PORTAL-ACCESSIBILITY-I18N-AUDIT-001: Kundenportal DE/EN language switch + a few
   systemwide accessibility fixes (visible keyboard focus on interactive controls, which
   WCAG 2.1 AA (2.4.7 Focus Visible) requires and this stylesheet did not previously set
   explicitly anywhere, relying only on the browser's default outline that some resets/
   themes suppress). */
/* REQ-UI-CONSISTENCY-PILL-HELPER-FILTER-001 (2026-09-14): was two large, bold-bordered,
   pill-shaped (border-radius:999px) "Deutsch"/"English" buttons - a real sponsor-reported
   violation of the system's square-corner convention, and (per the Nachtrag) far too visually
   dominant for a secondary utility control. Now a small, muted icon+DE/EN row: square corners
   (border-radius:0, matching --augite-admin-radius:0px elsewhere), no border/background/accent
   color, quiet text-muted tone - the account-menu identity block and real menu items keep the
   visual weight, not this. */
.arf-lang-switch{display:flex;align-items:center;gap:7px;margin:0;font-size:.74rem;color:#717579}
.arf-lang-switch__icon{display:inline-flex;flex:none;width:15px;height:15px;color:#929598}
.arf-lang-switch__icon svg{width:100%;height:100%;display:block}
.arf-lang-switch__options{display:flex;gap:2px}
.arf-lang-switch__link{padding:3px 6px;border:1px solid transparent;border-radius:0;text-decoration:none;color:#717579;font-weight:700;font-size:.74rem;letter-spacing:.02em}
.arf-lang-switch__link:hover{color:#2f3235}
.arf-lang-switch__link:focus-visible{outline:2px solid rgba(217,96,10,.5);outline-offset:1px}
.arf-lang-switch__link.is-current{color:#2f3235;border-color:#cdcfd1;background:#f0f1f2}
/* REQ-001 NACHTRAG (2026-09-12): sensible, consistent site-wide placement instead of being
   echoed mid-page in four separate templates.
   Superseded (2026-09-14, direct user instruction): the position:fixed floating overlay this
   introduced overlapped the theme's real footer content - the switcher now renders IN FLOW
   inside the theme's own managed footer (augite-rental/inc/assetcore-bridge.php:
   ars64_footer_lang_switch(), styled by the .ars-footer-lang rule in the theme's own site.css,
   which owns that dark surface's colors) instead of as a separate fixed-position element here. */
/* Wave 15: the shared-device notice is a short calm note inside the login card (styled in the "Wave 15" section at the end). */
.arf-shared-device-notice{font-size:.86rem}
/* REQ-PORTAL-LOGIN-FORM-WIDTH-001 (2026-09-14, user-reported: "Login-Password-Felder sind viel
   zu groß"): .arf-login-form inherited .ars-form's width:100% inside the full-width
   .arf-access-card/.arf-checkout-account/.arf-password-reset-card containers, stretching the
   username/password fields to the entire ~900px content width instead of a normal login-form
   measure. Shared by every ARF_Account::login_form_markup() caller (portal login, checkout
   login toggle, password reset - system-wide, not just /meine-buchung/). */
body:not(.wp-admin) .arf-app .arf-login-form{max-width:420px}
.arf-app a:focus-visible,.arf-app button:focus-visible,.arf-app input:focus-visible,.arf-app select:focus-visible,.arf-app textarea:focus-visible,.arf-app [tabindex]:focus-visible{outline:3px solid #1a5fb4;outline-offset:2px}
/* WordPress core defines .screen-reader-text in wp-admin, but a frontend theme is not
   guaranteed to load it - defined here as a fallback so visually-hidden-but-accessible
   labels (e.g. the search inputs below) are not visually broken on the frontend. */
.arf-app .screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;width:1px;overflow:hidden;position:absolute!important;word-wrap:normal!important;margin:-1px;padding:0}
/* REQ-HELP-011 (REV271): operations.js now renders the ARF_Help error help (data.error_help of a failed REST call)
   directly under the error message of a scan/process action - also on /intern/rentalflow/, where admin.css (which
   styles the wp-admin .arf-help-block) is not loaded. Same visual language as the wp-admin help block.
   REQ-UI-CONSISTENCY-PILL-HELPER-FILTER-001 (2026-09-14): .arf-help-block is now a <details> element (was an
   always-expanded <div>), collapsed by default on /intern/ exactly like the wp-admin mirror in admin.css - same
   >summary/__body split, same reasoning documented there. */

/* REQ-HELP-005: collapsed FAQ disclosure (ARF_Help::render_context_faqs()), same look as the wp-admin rule. */

/* REQ-HELP-009 / Entscheidung 11: error help in the subtle orange warning style - same values as admin.css
 * (.arf-help-block--error_help, token sources and WCAG AA contrast values documented there). */

/* REQ-DESIGN-PORTAL-LAYOUT P1/P2 (LIVE-TASK-2026-09-13-007, UX-LAYOUT-REV001 NAV-001 + Reflow/Zoom):
   the customer portal tab bar is now max. 5 direct tabs + one "Mehr" disclosure (public.js
   portalTabGroups()) and WRAPS instead of scrolling inside a fixed-height strip - at 200% zoom
   (720 CSS px) the old non-wrapping strip produced horizontal page scroll and cut-off labels.
   The disclosure panel is an in-flow, full-width row of the same nav (no absolutely positioned
   dropdown that could itself overflow the viewport at 320 px). */
body:not(.wp-admin) .arf-portal .arf-portal-tabs{display:flex!important;flex-wrap:wrap!important;align-items:stretch;gap:0 18px!important;overflow:visible!important;max-width:100%}
body:not(.wp-admin) .arf-portal .arf-portal-tablist{display:flex;flex-wrap:wrap;gap:0 18px;min-width:0;max-width:100%}
body:not(.wp-admin) .arf-portal .arf-portal-tab{max-width:100%;white-space:normal;text-align:left}
body:not(.wp-admin) .arf-portal .arf-portal-more-toggle{font:inherit;cursor:pointer;-webkit-appearance:none;appearance:none}
body:not(.wp-admin) .arf-portal .arf-portal-more-toggle[aria-expanded="true"] .arf-portal-icon{color:var(--arf-theme-green)}
body:not(.wp-admin) .arf-portal .arf-portal-more-current{font-weight:750}
body:not(.wp-admin) .arf-portal .arf-portal-more-menu{flex:1 0 100%;display:flex;flex-wrap:wrap;gap:6px 8px;margin:0;padding:10px 0 12px;border-top:1px solid var(--arf-theme-line)}
body:not(.wp-admin) .arf-portal .arf-portal-more-menu[hidden]{display:none!important}
body:not(.wp-admin) .arf-portal .arf-portal-more-item{display:inline-flex;align-items:center;gap:8px;max-width:100%;min-height:48px;padding:8px 12px;border:1px solid var(--arf-theme-line);border-radius:0;background:#fff;color:#3e4144;font:inherit;font-size:.9rem;font-weight:750;text-align:left;white-space:normal;cursor:pointer}
body:not(.wp-admin) .arf-portal .arf-portal-more-item:hover,body:not(.wp-admin) .arf-portal .arf-portal-more-item:focus-visible{border-color:var(--arf-theme-green);background:var(--arf-theme-soft);color:var(--ars-accent-strong,#b84e08)}
body:not(.wp-admin) .arf-portal .arf-portal-more-item.is-active{border-color:var(--arf-theme-green);color:var(--ars-accent-strong,#b84e08);box-shadow:inset 0 -3px 0 var(--arf-theme-green)}
body:not(.wp-admin) .arf-portal .arf-portal-more-item .arf-portal-icon{width:16px;height:16px;flex:none}
@media(max-width:760px){body:not(.wp-admin) .arf-portal .arf-portal-tabs,body:not(.wp-admin) .arf-portal .arf-portal-tablist{column-gap:14px!important}}
/* Same P2 defect class found by the real-browser sweep of every portal panel (not the tab bar): the
   "Benutzer" panel's .arf-portal-users-subsection is display:grid with an implicit auto track, so its
   min-content was the 680 px min-width table inside the (scrolling) table wrapper - the whole panel
   grew to ~760 px and scrolled the page by 55 px at 720 and 455 px at 320 CSS px. minmax(0,1fr) lets
   the table wrapper scroll locally, as every other portal list already does. */
body:not(.wp-admin) .arf-portal .arf-portal-users-subsection{grid-template-columns:minmax(0,1fr)}

/* REQ-DESIGN-PORTAL-LAYOUT P3 (LIVE-TASK-2026-09-13-007): at 320 CSS px the non-wrapping
   ".arf-ops-section-head" flex row (title block + "Aktualisieren", white-space:nowrap, 134 px) pushed
   /intern/rentalflow/ 33 px into horizontal page scroll. The head row now wraps: the title block keeps a
   16rem flex basis and grows, so on desktop/tablet the button stays beside the title and only moves
   onto its own line when both no longer fit. Covers every section head on the external ops surface
   (same component on all /intern/ views), not just the queue card. */
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-section-head{flex-wrap:wrap}
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-section-head>.arf-ops-section-titleline{flex:1 1 16rem;min-width:0}
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-section-head>button,body:not(.wp-admin) .arf-app.arf-ops .arf-ops-section-head>a{flex:0 1 auto;max-width:100%}

/* REQ-DESIGN-PORTAL-LAYOUT P4 (LIVE-TASK-2026-09-13-007, UX-LAYOUT-REV001 profile table "Reflow/Zoom:
   320 CSS px und 200% Zoom -> Eine Spalte"; Tablet Portrait 768 keeps its 4-column raster): every
   content raster rendered on the customer portal and the external /intern/ surfaces that still showed
   two or more flexible content columns below 768 px (system-wide sweep over public.css + site.css,
   see tests/test_req_design_portal_layout_p1_p4.py) now collapses to one column. Several of these
   previously switched only at 700/560/480 px, i.e. stayed multi-column at 200% zoom (720 CSS px).
   Deliberately NOT included (not a layout raster): fixed icon/checkbox/chevron tracks next to one
   flexible text track (media objects such as .arf-access-head), segmented choice-button groups
   (.arf-touch-choice, .arf-ops-scanbar buttons) and thumbnail galleries (.arf-photo-strip,
   .arf-portal-media). .arf-transport-main is the one icon+copy grid that is collapsed, because the
   live probe measured it and at 320 px the copy gains the full card width. */
@media(max-width:767px){
 body:not(.wp-admin) .arf-app.arf-ops .arf-ops-quick--external,
 body:not(.wp-admin) .arf-app.arf-ops .arf-transport-main,
 body:not(.wp-admin) .arf-app.arf-ops .arf-ops-control-grid,
 body:not(.wp-admin) .arf-app.arf-ops .arf-ops-staff-context-grid,
 body:not(.wp-admin) .arf-app.arf-ops .arf-ops-assets-summary,
 body:not(.wp-admin) .arf-app.arf-ops .arf-release-gate-grid,
 body:not(.wp-admin) .arf-app.arf-ops .arf-batch-assets,
 body:not(.wp-admin) .arf-app.arf-ops .arf-general-checks,
 body:not(.wp-admin) .arf-app.arf-ops .arf-meter-fields,
 body:not(.wp-admin) .arf-app.arf-ops .arf-return-core,
 body:not(.wp-admin) .arf-app.arf-ops .arf-return-findings,
 body:not(.wp-admin) .arf-app.arf-ops .arf-ops-inline-new-customer-grid,
 body:not(.wp-admin) .arf-app .arf-metric-grid,
 body:not(.wp-admin) .arf-app .arf-facts,
 body:not(.wp-admin) .arf-app .arf-admin-gate-grid,
 body:not(.wp-admin) .arf-app .arf-invitation-summary,
 body:not(.wp-admin) .arf-app.arf-portal .arf-portal-kpi-grid,
 body:not(.wp-admin) .arf-app.arf-portal .arf-portal-overview-grid,
 body:not(.wp-admin) .arf-app.arf-portal .arf-portal-detail-grid,
 body:not(.wp-admin) .arf-app.arf-portal .arf-portal-profile-summary,
 body:not(.wp-admin) .arf-app.arf-portal .arf-portal-message-form{grid-template-columns:minmax(0,1fr)!important}
 body:not(.wp-admin) .arf-app.arf-ops .arf-transport-main{gap:8px}
}

/* REQ-DESIGN-PORTAL-LAYOUT Entscheidung 20 (docs/projektsteuerung/ENTSCHEIDUNGEN-2026-09-13.md; UX-LAYOUT-REV001
   profile "Reflow/Zoom 320 CSS px und 200% Zoom: Navigation als beschriftete Auswahl"): below 768 CSS px the wrapping
   portal tab bar and its "Mehr" disclosure are replaced by the labelled native select that portalTabsHtml() renders
   in front of the tablist (the "Mehr" areas are an optgroup of it). Desktop/tablet (>= 768 px) are unchanged: the
   select is display:none there, so assistive technology never meets two navigations at once. */
body:not(.wp-admin) .arf-portal .arf-portal-area-select{display:none}
@media(max-width:767px){
 body:not(.wp-admin) .arf-portal .arf-portal-tabs .arf-portal-tablist,
 body:not(.wp-admin) .arf-portal .arf-portal-tabs .arf-portal-more-toggle,
 body:not(.wp-admin) .arf-portal .arf-portal-tabs .arf-portal-more-menu{display:none!important}
 body:not(.wp-admin) .arf-portal .arf-portal-tabs .arf-portal-area-select{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;flex:1 1 100%;min-width:0;max-width:100%}
 body:not(.wp-admin) .arf-portal .arf-portal-area-select label{margin:0;color:var(--arf-theme-text);font-size:.82rem;font-weight:800}
 body:not(.wp-admin) .arf-portal .arf-portal-area-select select{box-sizing:border-box;display:block;width:100%;max-width:100%;min-height:var(--augite-control-h);margin:0;padding:var(--augite-control-pad);border:1px solid var(--arf-theme-line);border-radius:0;background-color:#fff;color:var(--arf-theme-text);font-family:inherit;font-size:var(--augite-field-font-size);line-height:var(--augite-control-line-height);font-weight:var(--augite-control-weight);font-size:var(--augite-field-font-size);font-weight:var(--augite-control-weight)}
 body:not(.wp-admin) .arf-portal .arf-portal-area-select select:focus-visible{outline:2px solid var(--arf-theme-green);outline-offset:2px;border-color:var(--arf-theme-green)}
}

/* REQ-DESIGN-PORTAL-LAYOUT Entscheidung 18 (ENTSCHEIDUNGEN-2026-09-13.md: "Ein-Spalten-Regel 320 px / 200 %: Alles
   einspaltig, auch Icon+Text-Zeilen, Auswahlbutton-Gruppen, Galerien"): supersedes the P4 exclusions above. Below
   768 CSS px EVERY grid on the customer portal (.arf-portal), on the portal access/login/invitation/password-reset/
   pay cards (.arf-access-shell) and on every front-end /intern/ surface (.arf-ops: RentalFlow, RentalCore,
   RentalInvoice, RentalPayments) has exactly one column - one universal rule instead of a selector list, so a grid
   added later cannot silently stay two-column (tests/test_req_design_portal_one_column_decision18.py sweeps every
   grid rule of public.css + the theme's site.css through the real cascade). Explicit item placement (grid-column:2,
   grid-row:1/3, ...) is neutralised too, because a placed item would otherwise open an implicit second column.
   Several older /intern/ rules are themselves !important at (0,4,1) (e.g. .arf-ops-booking, .arf-ops-scanbar), so the
   universal selector carries one ID-level specificity via :not(#arf-reflow-one-column) (no element has that id; it
   matches every element) - otherwise those rules would silently keep two columns at 320/720 px.
   Flex-based choice groups (.arf-touch-choice--chips, .arf-choice-row) become the same one-column grid. wp-admin and
   the public catalog/cart/checkout/withdrawal pages are out of scope (neither portal nor /intern/). */
@media(max-width:767px){
 body:not(.wp-admin) .arf-app:is(.arf-portal,.arf-access-shell,.arf-ops) :not(#arf-reflow-one-column){grid-template-columns:minmax(0,1fr)!important;grid-template-areas:none!important;grid-auto-flow:row!important;grid-column:auto!important;grid-row:auto!important}
 body:not(.wp-admin) .arf-app:is(.arf-portal,.arf-access-shell,.arf-ops) :is(.arf-touch-choice,.arf-touch-choice--chips,.arf-choice-row){display:grid!important}
}

/* REQ-DESIGN-PORTAL-LAYOUT Entscheidung 30 (ENTSCHEIDUNGEN-2026-09-13.md: "Checkbox ueber Label auf schmalen Geraeten -
   Nein, Checkbox neben ihrem Text lassen; nur echte Inhaltsspalten einspaltig"): precision of the Entscheidung-18 rule
   above. A checkbox/radio row is not a content column: below 768 CSS px its control stays on the same line as its text.
   One shared row component (.arf-check-row, used by every portal/access/intern check row that had no own row layout) plus
   every existing check-row component found by the system-wide sweep over public.css + the theme's site.css (all labels
   that hold an input[type=checkbox|radio] in RentalCore/RentalFlow PHP+JS, RentalPayments, RentalInvoice and the theme):
   .ars-checkbox, .arf-ops-walkin-checkbox, .arf-login-form__remember (via .arf-check-row) and the /intern/ checklist item
   .arf-master-item (icon on its own row, copy + confirmation checkbox side by side). Flex-based check rows
   (.arf-general-checks, .arf-batch-assets, .arf-choice-row, .arf-preparation-asset labels) are never touched by the
   grid rule and stay unchanged. Carries one ID-level specificity more than the Entscheidung-18 rule so it wins there. */
body:not(.wp-admin) form label.arf-check-row,body:not(.wp-admin) .arf-app label.arf-check-row{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;column-gap:9px;row-gap:0;font-weight:500}
body:not(.wp-admin) label.arf-check-row>input:is([type="checkbox"],[type="radio"]){width:18px;height:18px;min-height:0;margin:2px 0 0}
@media(max-width:767px){
 body:not(.wp-admin) .arf-app:is(.arf-portal,.arf-access-shell,.arf-ops) :is(.arf-check-row,.ars-checkbox,.arf-ops-walkin-checkbox,.augite-modal__check):not(#arf-reflow-one-column):not(#arf-reflow-check-row){grid-template-columns:auto minmax(0,1fr)!important} /* wave 33 (decision 166 follow-up): + every dialog checkbox row */
 body:not(.wp-admin) .arf-app:is(.arf-portal,.arf-access-shell,.arf-ops) .arf-master-item:not(.is-blocking):not(.is-return-condition):not(#arf-reflow-one-column):not(#arf-reflow-check-row){grid-template-columns:minmax(0,1fr) auto!important}
 body:not(.wp-admin) .arf-app:is(.arf-portal,.arf-access-shell,.arf-ops) .arf-master-item:not(.is-blocking):not(.is-return-condition) .arf-master-icon:not(#arf-reflow-one-column):not(#arf-reflow-check-row){grid-column:1/-1!important}
}

/* REQ-DESIGN-PORTAL-LAYOUT Entscheidung 27 (ENTSCHEIDUNGEN-2026-09-13.md: "Seitlicher Scroll bei 720 px im Portal
   (Kontomenue, Tabellen Schaeden/Benutzer) - Beheben"; LIVE-TASK-2026-09-13-056/-086: 28 px overhang at 720 CSS px).
   Tables: every table on a customer-facing/front-end surface sits in its own horizontally scrolling wrapper that can
   never widen its ancestors - the wrapper is capped at its container (max-width:100%, min-width:0) and every portal
   panel/list/subsection between the panel and the wrapper may shrink below the table's min-width (flex/grid items
   otherwise take the table's min-content width). System-wide sweep: .arf-portal-table-wrap (portal: bookings, documents,
   finance, messages, damage, contacts, users, invitations), .arf-admin-table-scroll (/intern/ RentalCore/RentalFlow and
   RentalInvoice), .arf-ops-table-wrap (operations tables). The header account menu is handled in Entscheidung 28 below. */
body:not(.wp-admin) .arf-app :is(.arf-portal-table-wrap,.arf-admin-table-scroll,.arf-ops-table-wrap){position:relative;box-sizing:border-box;display:block;max-width:100%;min-width:0;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
body:not(.wp-admin) .arf-portal :is(.arf-portal-panel,.arf-portal-panels,.arf-portal-list,.arf-portal-subsection,.arf-portal-users-subsection,.arf-portal-table-tools){box-sizing:border-box;min-width:0;max-width:100%}
body:not(.wp-admin) .arf-app.arf-ops :is(.arf-ops-card,.arf-ops-section){min-width:0;max-width:100%}

/* REQ-DESIGN-PORTAL-LAYOUT Entscheidung 28 (ENTSCHEIDUNGEN-2026-09-13.md: "Kontomenue im Seitenkopf auf schmalen
   Viewports - auch einspaltig, konsequent zu Nr. 18"). Below 768 CSS px the header account control (guest login link,
   logged-in toggle) and every entry of its menu are one column: icon, text and disclosure chevron stack instead of
   sitting in 20px/1fr/auto tracks, and no text track can push the control past the viewport (the 720 px overhang of
   LIVE-TASK-2026-09-13-056 was .arf-global-account__text/__chevron at right edges 726/748). Together with the theme's
   narrow-header rule (site.css: the navigation opens as overlay below 768 px instead of 600 px) the account control
   lives in the full-width overlay there. */
@media(max-width:767px){
 body:not(.wp-admin) .ars-header .arf-global-account{max-width:100%!important}
 body:not(.wp-admin) .ars-header .arf-global-account__toggle,
 body:not(.wp-admin) .ars-header .arf-global-account__login,
 body:not(.wp-admin) .ars-header .arf-global-account__item{grid-template-columns:minmax(0,1fr)!important;justify-items:start;row-gap:4px!important;max-width:100%!important;box-sizing:border-box}
 body:not(.wp-admin) .ars-header .arf-global-account__text strong,
 body:not(.wp-admin) .ars-header .arf-global-account__login strong{max-width:100%!important}
 body:not(.wp-admin) .ars-header .arf-global-account__menu{max-width:100%!important;box-sizing:border-box}
}

/* Wave 15 - REQ-LOGIN-NO-WORDPRESS-TRAITS-LAYOUT-001: the shared login screen (ARF_Login_Screen) of every login gate
   (/meine-buchung/, /mein-konto/, the guest state of every /intern/ module, wp-login.php via the theme).
   Cascade root causes of the client screenshot (fixed here, not overridden elsewhere):
   1. The login form carried the generic long-form contract .ars-form (theme site.css: width:100%;max-width:940px) and had
      no own container, so every input stretched to the 940 px form cap (~980 px with the field chrome). The form now
      lives in .arf-login-card, whose grid column is capped at 30rem; inside the card the form has no own cap.
   2. The shared-device notice was a sibling paragraph after .arf-access-grid, which only had margin-top, inside an
      .arf-access-card flattened to padding:0 - nothing ever separated the two. It is now a short calm note inside the card
      below the form, separated by its own spacing and a hairline (no help box, no collapsible - decision 64).
   3. "Passwort vergessen?" and the "Mietgeräte"/"Kontakt" links carried .ars-btn--ghost (outlined button geometry) and
      .arf-login-form__actions had no layout. Secondary actions are now .arf-login-link text links; the primary action
      spans the card width.
   Spacing scale 8/16/24/32/40 px; square corners; colours only from the theme tokens (--ars-*). Text on white (links) uses the
   button/text accent token of decision 49 (--ars-accent-strong, wave 14) with the current accent as fallback until it ships;
   --ars-green stays for lines and pictograms. */
body:not(.wp-admin) .arf-login-panel{max-width:100%;min-width:0}
body:not(.wp-admin) .arf-login-panel .arf-login-panel__head{margin:0}
body:not(.wp-admin) .arf-login-panel .arf-login-panel__head h1,
body:not(.wp-admin) .arf-login-panel .arf-login-panel__head h2{margin:0 0 8px!important}
body:not(.wp-admin) .arf-login-panel .arf-login-panel__head .ars-lead{max-width:60ch;margin:0!important;font-size:1.05rem;line-height:1.5}
/* REQ-LOGIN-SCREEN-EQUAL-HEIGHT-001 (2026-09-14, user-reported via screenshot of /meine-buchung/:
   "kacheln sind nicht gleich hoch!"): align-items:start let each column size to its own content,
   so the login card (more content) and the info column (less content) ended up different
   heights - the same "two boxes side by side must match height" issue already fixed the same
   way for .augac-two-col/.augri-two-col (align-items:stretch) elsewhere in this codebase. */
body:not(.wp-admin) .arf-login-panel__grid{display:grid;grid-template-columns:minmax(0,30rem) minmax(0,1fr);gap:40px;align-items:stretch;margin-top:32px}
body:not(.wp-admin) .arf-login-panel--single .arf-login-panel__grid{grid-template-columns:minmax(0,30rem)}
/* REQ-LOGIN-SCREEN-RIGHT-COLUMN-BOX-001 (2026-09-14, user-reported via screenshot of /meine-buchung/:
   "nebeneinander ist fein, der rechte block hat aber keine Box aussen. Farbige Kante ist immer
   links!"): the login card used border-top for its accent - the only box on the whole site that
   put its colour accent on top instead of the left edge every other bordered box in this project
   uses (.ars-group, .arf-ops-card, .arf-checkout-summary, etc.) - and the info column next to it
   had no box at all (just a thin left divider line), so the two-column layout read as one real
   card next to bare text. Both now get a real box (border on all sides, padding, background) with
   the accent on the left, matching every other card on the site. */
body:not(.wp-admin) .arf-login-card{box-sizing:border-box;min-width:0;padding:32px;border:1px solid var(--ars-line);border-left:4px solid var(--ars-green);border-radius:0;background:var(--ars-white)}
body:not(.wp-admin) .arf-login-card .arf-login-form{display:grid;gap:16px;width:100%;max-width:none;margin:0}
body:not(.wp-admin) .arf-login-card .arf-login-form label:not(.arf-check-row){display:grid;gap:8px;margin:0;font-weight:700}
body:not(.wp-admin) .arf-login-card .arf-login-form__actions{display:grid;margin:8px 0 0}
body:not(.wp-admin) .arf-login-card .arf-login-form__submit{width:100%;justify-content:center}
body:not(.wp-admin) .arf-login-card .arf-login-form__links{display:flex;flex-wrap:wrap;gap:8px 24px;margin:0;font-size:.94rem}
body:not(.wp-admin) .arf-login-link{color:var(--ars-accent-strong,var(--ars-green));font-weight:700;text-decoration:underline;text-underline-offset:3px}
body:not(.wp-admin) .arf-login-link:hover,body:not(.wp-admin) .arf-login-link:focus-visible{color:var(--ars-ink)}
body:not(.wp-admin) .arf-login-card .arf-shared-device-notice{margin:24px 0 0;padding:16px 0 0;border-top:1px solid var(--ars-line);color:var(--ars-muted);font-size:.88rem;line-height:1.45}
/* Live finding LIVE-TASK-2026-09-15-170 (2026-09-15): the shared result/validation notices (ARF_Admin::admin_result_notice(),
   render_validation_notice(), used by every /intern/ write view) carry WordPress' .notice classes, which have no styling outside
   wp-admin - a rejection showed as plain body text between the module tabs and the first card. Styled once for every front-end
   app surface, with the wp-admin semantics (error red, success green, warning amber, info blue). */
body:not(.wp-admin) :is(.arf-app,.arf-theme-page) .notice{display:block;box-sizing:border-box;margin:0 0 16px;padding:12px 16px;border:1px solid var(--arf-theme-line,#dcdcde);border-left:4px solid #2271b1;border-radius:0;background:#f0f6fc;color:#1d2327;line-height:1.5;box-shadow:none}
body:not(.wp-admin) :is(.arf-app,.arf-theme-page) .notice p{margin:0}
body:not(.wp-admin) :is(.arf-app,.arf-theme-page) .notice p+p{margin-top:6px}
body:not(.wp-admin) :is(.arf-app,.arf-theme-page) .notice-error{border-left-color:#b32d2e;background:#fcf0f1}
body:not(.wp-admin) :is(.arf-app,.arf-theme-page) .notice-error>p:first-child{font-weight:600}
body:not(.wp-admin) :is(.arf-app,.arf-theme-page) .notice-success{border-left-color:#1f7a4f;background:#edfaef}
body:not(.wp-admin) :is(.arf-app,.arf-theme-page) .notice-warning{border-left-color:#8a5a00;background:#fcf9e8}
/* /LIVE-TASK-2026-09-15-170 front-end notices */
body:not(.wp-admin) .arf-login-card :is(.notice,.message,#login_error,.arf-invitation-state){margin:0 0 16px;padding:16px;border:0;border-left:4px solid var(--ars-green);border-radius:0;background:var(--ars-soft);color:var(--ars-text);box-shadow:none}
body:not(.wp-admin) .arf-login-card :is(#login_error,.notice-error){border-left-color:var(--ars-warn);background:var(--ars-warn-bg)}
body:not(.wp-admin) .arf-login-card :is(.notice,.message,#login_error) p{margin:0}
body:not(.wp-admin) .arf-login-card :is(.notice,.message,#login_error) p+p{margin-top:8px}
body:not(.wp-admin) .arf-password-reset-card .arf-password-reset-body.arf-login-card{max-width:30rem;margin-top:32px}
body:not(.wp-admin) .arf-password-reset-card .arf-password-reset-body .ars-lead{margin:0 0 16px!important;font-size:1rem}
body:not(.wp-admin) .arf-password-reset-card .arf-password-reset-body .arf-access-actions{margin-top:16px!important}
body:not(.wp-admin) .arf-login-info{box-sizing:border-box;min-width:0;max-width:36rem;padding:32px;border:1px solid var(--ars-line);border-radius:0;background:var(--ars-white)}
body:not(.wp-admin) .arf-login-panel .arf-login-info .arf-login-info__title{margin:0 0 16px!important;font-size:1.05rem!important;line-height:1.3!important;letter-spacing:0!important}
body:not(.wp-admin) .arf-login-info__list{display:grid;gap:16px;margin:0;padding:0;list-style:none}
body:not(.wp-admin) .arf-login-info__item{display:grid;grid-template-columns:24px minmax(0,1fr);gap:16px;align-items:start;margin:0}
body:not(.wp-admin) .arf-login-info__icon{display:grid;place-items:center;width:24px;height:24px;color:var(--ars-green)}
body:not(.wp-admin) .arf-login-info__icon svg{display:block;width:20px;height:20px}
body:not(.wp-admin) .arf-login-info__text{display:grid;gap:4px;color:var(--ars-muted);font-size:.94rem;line-height:1.45}
body:not(.wp-admin) .arf-login-info__text strong{color:var(--ars-ink);font-size:.98rem}
body:not(.wp-admin) .arf-login-info__links{display:flex;flex-wrap:wrap;gap:8px 24px;margin:24px 0 0;padding:16px 0 0;border-top:1px solid var(--ars-line)}
body:not(.wp-admin) .arf-login-panel--compact .arf-login-panel__head{grid-template-columns:minmax(0,1fr)}
body:not(.wp-admin) .arf-login-panel--compact .arf-login-panel__head h1{font-size:1.4rem!important;line-height:1.2!important}
body:not(.wp-admin) .arf-login-panel--compact .arf-login-panel__grid{grid-template-columns:minmax(0,1fr);margin-top:16px}
body:not(.wp-admin) .arf-login-panel--compact .arf-login-card{padding:16px}
@media(max-width:767px){
 body:not(.wp-admin) .arf-login-panel .arf-login-panel__grid{grid-template-columns:minmax(0,1fr)!important;gap:32px;margin-top:24px}
 body:not(.wp-admin) .arf-login-panel .arf-login-info{max-width:none;padding:24px 16px}
 body:not(.wp-admin) .arf-login-card{padding:24px 16px}
}
/* Floating cart (wave 15): starts hidden on login screens while the cart is empty (public.js reveals it), and system-wide
   the managed footer reserves the band the fixed button occupies, so at the end of every page no footer content (legal
   links, copyright) stays covered - including the iOS safe area. */
body:not(.wp-admin) a.arf-floating-cart[hidden],body:not(.wp-admin) .arf-floating-cart[hidden]{display:none!important}
body:not(.wp-admin) a.arf-floating-cart.ars-btn{bottom:calc(78px + env(safe-area-inset-bottom, 0px))!important}
body:not(.wp-admin):has(.arf-floating-cart:not([hidden])) .ars-footer{padding-bottom:calc(136px + env(safe-area-inset-bottom, 0px))}
/* Wave 21 - client decision 72 (REQ-LOGIN-NO-WORDPRESS-TRAITS-LAYOUT-001): "Passwort anzeigen" in every inline login form
   (ARF_Account::login_form_markup(): portal, checkout, invitation, /intern/ gates). WordPress' wp-pwd pattern in the component
   style: the field keeps its full width, a square icon button sits inside its right end (46 px, the field height), the field
   reserves that space. The button starts hidden (password-toggle.js reveals it), so without JavaScript nothing is shown.
   Theme tokens only, square corners, visible focus ring. The label stands above the field (not wrapping the button). */
body:not(.wp-admin) .arf-login-form .arf-login-form__field{display:grid;gap:8px;margin:0}
body:not(.wp-admin) .arf-login-form .arf-login-form__field>label{display:block;margin:0;font-weight:700}
body:not(.wp-admin) .arf-password-field{position:relative;display:block;min-width:0}
body:not(.wp-admin) .arf-password-field input{width:100%;box-sizing:border-box}
body:not(.wp-admin) .arf-password-field:has(.arf-password-toggle:not([hidden])) input{padding-right:52px!important}
body:not(.wp-admin) .arf-password-toggle{position:absolute;top:0;right:0;display:grid;place-items:center;width:46px;min-width:46px;height:100%;min-height:44px;margin:0;padding:0;border:0;border-radius:0;background:transparent;color:var(--ars-accent-strong,var(--ars-green));box-shadow:none;cursor:pointer}
body:not(.wp-admin) .arf-password-toggle[hidden]{display:none!important}
body:not(.wp-admin) .arf-password-toggle:hover{color:var(--ars-ink)}
body:not(.wp-admin) .arf-password-toggle:focus-visible{outline:2px solid var(--ars-green);outline-offset:-4px}
body:not(.wp-admin) .arf-password-toggle svg{display:block;width:20px;height:20px}
body:not(.wp-admin) .arf-password-toggle .arf-password-toggle__hide,
body:not(.wp-admin) .arf-password-toggle[aria-pressed="true"] .arf-password-toggle__show{display:none}
body:not(.wp-admin) .arf-password-toggle[aria-pressed="true"] .arf-password-toggle__hide{display:block}
/* Wave 21 - decision 69: the internal info column of wp-login.php (target wp-admin or /intern/) uses the same compact list. */
body:not(.wp-admin) .arf-login-info--internal .arf-login-info__links{margin-top:16px}
/* Wave 27 - REQ-UI-CARD-FOOTER-BOTTOM-ALIGN-001 (client decision 120, screenshot /meine-buchung/ logged out): "in solchen Boxen
   muessen die unteren Inhalte (hier zwei Links) immer auf der gleichen Hoehe sein". The login card and the info column were
   already stretched to equal height, but as block boxes the info column's link row ended right below its list, mid-box. Both
   boxes of the two-column grid are now flex columns; their closing content takes margin-top:auto and so sits at the inner bottom
   edge of either box, whichever of the two is taller:
   - card with the shared inline form (portal, /intern/ gates): the form grows, its closing "Passwort vergessen?" row moves down;
   - card on wp-login.php (WordPress' core form + component links + shared-device note): the link row and the note after it move down;
   - info column: the link row moves down together with its hairline; the former margin-top becomes the list's margin-bottom
     (24 px, 16 px in the internal column), so the minimum distance is unchanged.
   One column (below 768 px) the boxes are not stretched, the auto margins resolve to 0 - no artificial gap. The standalone
   password reset card (no neighbour) is not part of the grid and stays unchanged. */
body:not(.wp-admin) .arf-login-panel__grid>.arf-login-card,
body:not(.wp-admin) .arf-login-panel__grid>.arf-login-info{display:flex;flex-direction:column}
body:not(.wp-admin) .arf-login-panel__grid>.arf-login-card>.arf-login-form{display:flex;flex-direction:column;flex:1 0 auto}
body:not(.wp-admin) .arf-login-panel__grid>.arf-login-card>.arf-login-form>.arf-login-form__links:last-child,
body:not(.wp-admin) .arf-login-panel__grid>.arf-login-card>.arf-login-form__links,
body:not(.wp-admin) .arf-login-panel__grid>.arf-login-info>.arf-login-info__links{margin-top:auto}
body:not(.wp-admin) .arf-login-panel__grid>.arf-login-info>.arf-login-info__list:not(:last-child){margin-bottom:24px}
body:not(.wp-admin) .arf-login-panel__grid>.arf-login-info--internal>.arf-login-info__list:not(:last-child){margin-bottom:16px}
/* /Wave 27 login footer */
/* Wave 27 - REQ-UI-CARD-FOOTER-BOTTOM-ALIGN-001 (client decision 120): /intern/rentalflow/ "Transporte heute & als Naechstes" cards
   (two columns above 820 px). As a grid the stretched card shared its extra height among all rows, so the action row ("Buchung
   oeffnen" + status action) ended at different heights when only one card had a conflict/missing-data warning. Flex column with
   the same 10 px gap; the action row (and the result line after it) takes margin-top:auto - 0 in one column. */
body:not(.wp-admin) .arf-app.arf-ops .arf-transport-list>.arf-transport-card{display:flex;flex-direction:column}
body:not(.wp-admin) .arf-app.arf-ops .arf-transport-list>.arf-transport-card>.arf-transport-actions{margin-top:auto}
/* /Wave 27 transport footer */
body:not(.wp-admin) .arf-app.arf-ops .arf-ops-secondary.arf-ops-icon-text>svg{width:18px;height:18px;flex:none}

/* Wave 29 - REQ-CART-PAGE-REWORK-001 (client 2026-09-14, /warenkorb/: "Die Anzeige ist nicht korrekt formatiert/layout/verteilt
   ... Zeitfenster-Dropdowns müssen nicht so breit sein! ... Komplett überarbeiten!"). Final cart/checkout-summary layer,
   loaded last so it wins over the older REV095/REV137/REV171 cart rules above without deleting them:
   - one column of sections with the same left edge and a fixed vertical rhythm (24px), section headings;
   - item cards: image (or neutral placeholder box) left, title/SKU/quantity/remove right, the item's safety information as
     a sub-section INSIDE the card;
   - "Passende Ergänzungen" as equal-height cards whose action row sits at the card bottom (flex column + margin-top:auto,
     the same pattern as REQ-UI-CARD-FOOTER-BOTTOM-ALIGN-001);
   - pickup/return: labels directly above content-width selects (max 22rem), Abholung and Rückgabe side by side on desktop,
     stacked on narrow screens; the location select uses the same width;
   - the Vorlaufzeit | Gebühr matrix in the shared dialog; square corners, theme tokens only. */
body:not(.wp-admin) .arf-app .arf-cart-sections{display:flex;flex-direction:column;gap:24px;margin:0;padding:0;min-width:0}
/* decision 349: cart page (/warenkorb/) two-column layout - content left, sticky Preisübersicht/Hilfe aside right */
body:not(.wp-admin) .arf-app .arf-cart-layout{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,.9fr);gap:24px;align-items:start;margin:0;min-width:0}
body:not(.wp-admin) .arf-app .arf-cart-main{display:flex;flex-direction:column;gap:24px;min-width:0}
body:not(.wp-admin) .arf-app .arf-cart-aside{position:sticky;top:24px;display:flex;flex-direction:column;gap:14px;min-width:0}
body:not(.wp-admin) .arf-app .arf-cart-aside .arf-cart-section--totals{margin:0!important}
body:not(.wp-admin) .arf-app .arf-cart-aside .arf-cart-section--period{margin:0!important}
body:not(.wp-admin) .arf-app .arf-cart-aside .arf-cart-period-summary{margin:0!important;flex-wrap:wrap}
body:not(.wp-admin) .arf-app .arf-cart-aside .arf-cart-totals-box{max-width:100%!important}
body:not(.wp-admin) .arf-app .arf-cart-aside .arf-cart-section--totals .arf-help-block{max-width:100%!important}
@media(max-width:900px){
 body:not(.wp-admin) .arf-app .arf-cart-layout{grid-template-columns:1fr;gap:22px}
 body:not(.wp-admin) .arf-app .arf-cart-aside{position:static}
}
body:not(.wp-admin) .arf-app .arf-cart-section{margin:0!important;padding:0!important;border:0!important;background:transparent!important;box-shadow:none!important;min-width:0}
body:not(.wp-admin) .arf-app .arf-cart-section-title{margin:0 0 12px!important;padding:0!important;font-size:1.08rem!important;line-height:1.3!important;letter-spacing:0!important;color:var(--arf-theme-ink)}
/* period summary with "Zeitraum ändern" */
body:not(.wp-admin) .arf-app .arf-cart-period-summary{display:flex!important;flex-wrap:wrap;align-items:center!important;justify-content:space-between!important;gap:12px 24px!important;margin:0!important;padding:16px 20px!important;border:1px solid var(--arf-theme-line)!important;border-left:4px solid var(--arf-theme-green)!important;border-radius:0!important;background:var(--arf-theme-soft)!important}
body:not(.wp-admin) .arf-app .arf-cart-period-text{display:flex;flex-direction:column;gap:2px;min-width:0}
body:not(.wp-admin) .arf-app .arf-cart-period-text strong{font-size:1.05rem;color:var(--arf-theme-ink)}
body:not(.wp-admin) .arf-app .arf-cart-period-text small{color:var(--arf-theme-muted);opacity:1}
body:not(.wp-admin) .arf-app .arf-cart-period-change{flex:0 0 auto;width:auto!important;margin:0!important}
/* item cards */
body:not(.wp-admin) .arf-app .arf-cart-items{display:flex!important;flex-direction:column!important;gap:12px!important;margin:0!important;padding:0!important;border:0!important}
body:not(.wp-admin) .arf-app .arf-cart-item{display:grid!important;grid-template-columns:120px minmax(0,1fr) minmax(190px,auto)!important;column-gap:20px!important;row-gap:12px!important;align-items:start!important;margin:0!important;padding:14px!important;border:1px solid var(--arf-theme-line)!important;border-radius:0!important;background:var(--ars-white)!important;box-shadow:none!important}
/* decision 348/349: line price sits in its own right-aligned third column (user: use the empty space on the right); safety spans full width below */
body:not(.wp-admin) .arf-app .arf-cart-item>.arf-cart-item-price{grid-column:3;justify-self:stretch;text-align:right;margin:0}
body:not(.wp-admin) .arf-app .arf-cart-item>.arf-cart-item-safety{grid-column:1/-1}
body:not(.wp-admin) .arf-app .arf-cart-item>.arf-cart-item-media{display:block!important;gap:0!important;width:120px;aspect-ratio:4/3;max-width:100%;overflow:hidden;border:1px solid var(--arf-theme-line);background:var(--arf-theme-soft)}
body:not(.wp-admin) .arf-app .arf-cart-item-media img{display:block;width:100%;height:100%;object-fit:contain;border-radius:0}
body:not(.wp-admin) .arf-app .arf-cart-item-placeholder{display:block;width:100%;height:100%}
body:not(.wp-admin) .arf-app .arf-cart-item-body{display:flex;flex-direction:column;gap:12px;min-width:0}
body:not(.wp-admin) .arf-app .arf-cart-item-head{display:flex;flex-direction:column;gap:2px;min-width:0}
body:not(.wp-admin) .arf-app .arf-cart-item-title{margin:0!important;padding:0!important;font-size:1rem!important;line-height:1.35!important;letter-spacing:0!important;color:var(--arf-theme-ink);overflow-wrap:anywhere}
body:not(.wp-admin) .arf-app .arf-cart-item-title a{color:inherit;text-decoration:none}
body:not(.wp-admin) .arf-app .arf-cart-item-title a:hover,body:not(.wp-admin) .arf-app .arf-cart-item-title a:focus-visible{text-decoration:underline}
body:not(.wp-admin) .arf-app .arf-cart-item-sku{display:block;color:var(--arf-theme-muted);font-size:.84rem;opacity:1;overflow-wrap:anywhere}
body:not(.wp-admin) .arf-app .arf-cart-item-controls{display:flex!important;flex-wrap:wrap;align-items:flex-end!important;justify-content:flex-start!important;gap:8px 20px!important;margin:0}
body:not(.wp-admin) .arf-app .arf-cart-item-controls label.arf-cart-item-qty-field{display:flex!important;flex-direction:column!important;align-items:flex-start!important;gap:4px!important;margin:0!important;font-size:.82rem;font-weight:700}
body:not(.wp-admin) .arf-app .arf-cart-item-controls input[type=number]{width:6rem!important;min-width:0!important;height:42px!important;min-height:42px!important}
body:not(.wp-admin) .arf-app .arf-cart-item-controls .arf-link-danger{min-height:42px;margin:0}
body:not(.wp-admin) .arf-app .arf-cart-item-qty{font-weight:700;color:var(--arf-theme-ink)}
body:not(.wp-admin) .arf-app .arf-cart-item-safety{margin:0;padding:9px 12px;border:0;border-left:3px solid var(--arf-theme-green);border-radius:0;background:var(--arf-theme-soft);font-size:.86rem}
body:not(.wp-admin) .arf-app .arf-cart-item{padding:14px!important}
body:not(.wp-admin) .arf-app .arf-cart-item-body{gap:10px}
body:not(.wp-admin) .arf-app .arf-cart-item-safety-title{display:flex;align-items:center;gap:8px;margin:0;font-size:.9rem;color:var(--arf-theme-ink)}
body:not(.wp-admin) .arf-app .arf-cart-item-safety-title .arf-portal-icon{flex:0 0 auto;width:18px;height:18px;color:var(--arf-theme-muted)}
body:not(.wp-admin) .arf-app .arf-cart-item-safety ul{margin:8px 0 0 18px;padding:0}
body:not(.wp-admin) .arf-app .arf-cart-item-safety li{margin:0 0 4px}
body:not(.wp-admin) .arf-app .arf-cart-item-handover{margin:8px 0 0!important;padding:8px 0 0;border-top:1px solid var(--arf-theme-line);font-size:.88rem;font-weight:600;color:var(--arf-theme-text)}
body:not(.wp-admin) .arf-app .arf-cart-section .arf-cart-required{margin:12px 0 0!important}
/* recommendations: equal-height cards, action row at the card bottom */
body:not(.wp-admin) .arf-app .arf-cart-section.arf-cart-recommendations{margin:0!important;padding:0!important;border:0!important;border-left:0!important;background:transparent!important}
body:not(.wp-admin) .arf-app .arf-cart-rec-list{display:grid!important;grid-template-columns:repeat(auto-fill,minmax(min(100%,16rem),1fr))!important;gap:12px!important;align-items:stretch!important;margin:0!important}
body:not(.wp-admin) .arf-app .arf-cart-rec{display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:12px!important;height:100%;box-sizing:border-box;margin:0!important;padding:14px 16px!important;border:1px solid var(--arf-theme-line)!important;border-radius:0!important;background:var(--ars-white)!important;text-align:left!important}
body:not(.wp-admin) .arf-app .arf-cart-rec-top{display:flex;align-items:flex-start;gap:12px;min-width:0}
body:not(.wp-admin) .arf-app .arf-cart-rec-media{flex:0 0 64px;width:64px;height:64px;overflow:hidden;border:1px solid var(--arf-theme-line);background:var(--arf-theme-soft)}
body:not(.wp-admin) .arf-app .arf-cart-rec-media img{width:100%;height:100%;object-fit:contain;display:block}
body:not(.wp-admin) .arf-app .arf-cart-rec-media-empty{display:block;width:100%;height:100%}
body:not(.wp-admin) .arf-app .arf-cart-rec-body{display:flex!important;flex-direction:column;gap:2px;min-width:0}
body:not(.wp-admin) .arf-app .arf-cart-rec-kind{font-size:.72rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--arf-theme-muted)}
body:not(.wp-admin) .arf-app .arf-cart-rec-body>strong{font-size:.95rem;color:var(--arf-theme-ink);overflow-wrap:anywhere}
body:not(.wp-admin) .arf-app .arf-cart-rec-body>small{font-size:.82rem;color:var(--arf-theme-muted);opacity:1}
body:not(.wp-admin) .arf-app .arf-cart-rec-foot{margin-top:auto!important;display:flex}
body:not(.wp-admin) .arf-app .arf-cart-rec-foot .ars-btn{width:auto!important;margin:0!important}
/* pickup/return: location + compact slot grid */
body:not(.wp-admin) .arf-app .arf-cart-section--service{padding:20px 24px!important;border:1px solid var(--arf-theme-line)!important;background:var(--ars-white)!important}
body:not(.wp-admin) .arf-app .arf-cart-location{display:flex!important;flex-direction:column!important;align-items:stretch;gap:6px!important;max-width:22rem!important;margin:0 0 16px!important}
body:not(.wp-admin) .arf-app .arf-cart-location>label,body:not(.wp-admin) .arf-app .arf-cart-slot-label{display:block!important;margin:0!important;font-size:.86rem;font-weight:700;line-height:1.3;color:var(--arf-theme-ink)}body:not(.wp-admin) .arf-app .arf-cart-location select,body:not(.wp-admin) .arf-app .arf-cart-slot-field select,body:not(.wp-admin) .arf-app .arf-cart-slot-field input[type=text],body:not(.wp-admin) .arf-app .arf-cart-slot-field input:not([type]){width:100%!important;max-width:22rem!important;min-width:0!important}
body:not(.wp-admin) .arf-app .arf-cart-slots{margin:0!important;padding:0!important;border:0!important;background:transparent!important}
body:not(.wp-admin) .arf-app .arf-cart-slot-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,22rem))!important;justify-content:start!important;align-items:start!important;gap:16px 32px!important;margin:0!important}
body:not(.wp-admin) .arf-app .arf-cart-slot-field{display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:6px!important;margin:0!important;min-width:0}
body:not(.wp-admin) .arf-app .arf-cart-slot-date{font-weight:600;color:var(--arf-theme-muted)}
body:not(.wp-admin) .arf-app .arf-cart-slot-moved,body:not(.wp-admin) .arf-app .arf-cart-slot-field .arf-time-window-closed-note{margin:0!important;padding:6px 10px!important;border:0!important;border-left:4px solid var(--arf-theme-green)!important;border-radius:0!important;background:var(--arf-theme-soft)!important;color:var(--arf-theme-text)!important;font-size:.84rem;font-weight:600}
body:not(.wp-admin) .arf-app .arf-cart-slot-hint{margin:12px 0 0!important;font-size:.86rem;color:var(--arf-theme-muted);opacity:1}
body:not(.wp-admin) .arf-app .arf-cart-slots .arf-help-block{margin:12px 0 0}
/* legal line + dialog matrix */
body:not(.wp-admin) .arf-app .arf-cart-legal-line{margin:0!important}
body:not(.wp-admin) .arf-app .arf-cart-legal-open.arf-link-button{padding:4px 0!important;font-size:.95rem!important;font-weight:700;color:var(--ars-accent-strong)!important;text-underline-offset:3px;cursor:pointer}
body:not(.wp-admin) .arf-app .arf-cart-legal-open.arf-link-button:hover{color:var(--arf-theme-ink)!important}
.augite-modal .arf-legal-terms p{margin:0 0 12px!important;max-width:70ch}
.augite-modal .arf-legal-matrix-wrap{position:relative;max-width:100%;margin:0 0 16px} /* REQ-UI-MODAL-TABELLEN-001: kein overflow-x, die Tabelle passt sich der Modalbreite an */
.augite-modal .arf-legal-matrix{width:100%;min-width:0;border-collapse:collapse;margin:0;font-variant-numeric:tabular-nums}
.augite-modal .arf-legal-matrix th,.augite-modal .arf-legal-matrix td{padding:10px 16px;border:1px solid var(--arf-theme-line,var(--ars-line));text-align:left;vertical-align:top}
.augite-modal .arf-legal-matrix thead th{background:var(--arf-theme-soft,var(--ars-soft));font-weight:700;color:var(--arf-theme-ink,var(--ars-ink))}
.augite-modal .arf-legal-matrix td:last-child,.augite-modal .arf-legal-matrix th:last-child{text-align:right;white-space:nowrap}
/* REQ-INTERN-TABELLEN-SPALTEN-SYSTEMWEIT-001 Stufe 2: Zahlen-/Geldspalten rechtsbuendig auch in Portal-Tabellen und im Storno-Raster ausserhalb des Modals (nur Ausrichtung, keine Masse) */
.arf-legal-matrix td:last-child,.arf-legal-matrix th:last-child{text-align:right;white-space:nowrap}.arf-legal-matrix{font-variant-numeric:tabular-nums}
body:not(.wp-admin) .arf-portal-table th.arf-portal-num,body:not(.wp-admin) .arf-portal-table td.arf-portal-num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.augite-modal .arf-cart-legal-links{display:flex;flex-wrap:wrap;gap:4px 8px}
/* period dialog */
.augite-modal.arf-cart-period-dialog .arf-cart-period-form{display:block;margin:0;padding:0;border:0;background:transparent}
.augite-modal.arf-cart-period-dialog .arf-native-range{display:grid!important;grid-template-columns:repeat(2,minmax(0,14rem))!important;gap:12px 16px!important;justify-content:start}
.augite-modal.arf-cart-period-dialog .arf-native-range-sep{display:none!important}
.augite-modal.arf-cart-period-dialog .arf-native-date{display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:6px!important;margin:0!important;font-size:.86rem!important;font-weight:700!important;text-transform:none!important;letter-spacing:0!important}
.augite-modal.arf-cart-period-dialog .arf-native-date input{width:100%!important;min-height:46px!important}
.augite-modal.arf-cart-period-dialog [data-arf-cart-period-result]{margin:12px 0 0;min-height:0}
.augite-modal.arf-cart-period-dialog [data-arf-cart-period-result]:empty{display:none}
/* action row: buttons without pictograms, content width on desktop */
body:not(.wp-admin) .arf-app.arf-cart-page .arf-cart-actions .ars-btn{width:auto}
/* checkout summary (/buchung/): the same pieces, compact in the narrow aside */
body:not(.wp-admin) .arf-checkout-summary .arf-cart-sections{gap:16px}
body:not(.wp-admin) .arf-checkout-summary .arf-cart-section-title{font-size:.95rem!important;margin-bottom:8px!important}
body:not(.wp-admin) .arf-checkout-summary .arf-cart-period-summary{padding:12px 14px!important}
body:not(.wp-admin) .arf-checkout-summary .arf-cart-item{grid-template-columns:64px minmax(0,1fr)!important;gap:12px!important;padding:12px!important}
/* checkout summary (narrow aside): price and safety stack full-width, left aligned - no third price column */
body:not(.wp-admin) .arf-checkout-summary .arf-cart-item>.arf-cart-item-price{grid-column:1/-1!important;justify-self:stretch!important;text-align:right!important}
body:not(.wp-admin) .arf-checkout-summary .arf-cart-item>.arf-cart-item-safety{grid-column:1/-1!important}
/* phones: single-column item card, price full-width left aligned again */
@media(max-width:600px){body:not(.wp-admin) .arf-app .arf-cart-item>.arf-cart-item-price{grid-column:1/-1;justify-self:stretch;align-items:flex-start;text-align:left}}
body:not(.wp-admin) .arf-checkout-summary .arf-cart-item>.arf-cart-item-media{width:64px}
body:not(.wp-admin) .arf-checkout-summary .arf-cart-item-body{gap:8px}
body:not(.wp-admin) .arf-checkout-summary .arf-cart-item-safety{padding:8px 10px;font-size:.85rem}
body:not(.wp-admin) .arf-checkout-summary .arf-cart-section--service{padding:14px!important}
body:not(.wp-admin) .arf-checkout-summary .arf-cart-slot-grid{grid-template-columns:minmax(0,1fr)!important}body:not(.wp-admin) .arf-checkout-summary .arf-cart-slot-field select,body:not(.wp-admin) .arf-checkout-summary .arf-cart-slot-field input[type=text],body:not(.wp-admin) .arf-checkout-summary .arf-cart-slot-field input:not([type]){max-width:100%!important}
body:not(.wp-admin) .arf-checkout-summary .arf-checkout-edit-cart{margin-top:16px}
@media(max-width:600px){
 body:not(.wp-admin) .arf-app .arf-cart-sections{gap:20px}
 body:not(.wp-admin) .arf-app .arf-cart-period-summary{padding:14px 16px!important}
 body:not(.wp-admin) .arf-app .arf-cart-period-change{width:100%!important;justify-content:center}
 body:not(.wp-admin) .arf-app .arf-cart-item{grid-template-columns:72px minmax(0,1fr)!important;gap:12px!important;padding:12px!important}
 body:not(.wp-admin) .arf-app .arf-cart-item>.arf-cart-item-media{width:72px}
 body:not(.wp-admin) .arf-app .arf-cart-item-controls{justify-content:space-between!important}
 body:not(.wp-admin) .arf-app .arf-cart-section--service{padding:16px!important}
 body:not(.wp-admin) .arf-app .arf-cart-slot-grid{grid-template-columns:minmax(0,1fr)!important}body:not(.wp-admin) .arf-app .arf-cart-location,body:not(.wp-admin) .arf-app .arf-cart-location select,body:not(.wp-admin) .arf-app .arf-cart-slot-field select,body:not(.wp-admin) .arf-app .arf-cart-slot-field input[type=text],body:not(.wp-admin) .arf-app .arf-cart-slot-field input:not([type]){max-width:100%!important}
 .augite-modal.arf-cart-period-dialog .arf-native-range{grid-template-columns:minmax(0,1fr)!important}
 .augite-modal .arf-legal-matrix{min-width:100%}
}
/* Wave 36 - REQ-PRICING-CALCULATION-CORRECTNESS-001 (client decision 211): provisional rental prices for the tenant - price
   line inside each cart item card, the "Preisübersicht" box (rental total, VAT per rate, deposit) after the items section of
   the cart and the checkout summary, and the price preview below the availability line of the product page widget. Normal
   1px boxes (decision 141), square corners, theme tokens only; the short provisional-price note keeps the orange hint edge. */
body:not(.wp-admin) .arf-app .arf-cart-item-price{display:flex;flex-direction:column;gap:5px;margin:0;min-width:0;font-variant-numeric:tabular-nums}
/* price rows: label left, amount pinned right (margin-left:auto) on EVERY width incl. narrow checkout summary + phone */
body:not(.wp-admin) .arf-app .arf-cart-price-line{display:flex;flex-wrap:nowrap;align-items:baseline;gap:2px 14px;min-width:0}
body:not(.wp-admin) .arf-app .arf-cart-price-line__label{font-size:.86rem;color:var(--arf-theme-muted);min-width:0;overflow-wrap:anywhere}
body:not(.wp-admin) .arf-app .arf-cart-price-line__label small{color:var(--arf-theme-muted);font-size:.8rem}
body:not(.wp-admin) .arf-app .arf-cart-price-line__value{margin-left:auto;text-align:right;white-space:nowrap;color:var(--arf-theme-ink);flex:0 0 auto}
body:not(.wp-admin) .arf-app .arf-cart-price-line__value small{color:var(--arf-theme-muted);font-size:.8rem;font-weight:600}
body:not(.wp-admin) .arf-app .arf-cart-price-line--rental .arf-cart-price-line__value .arf-cart-item-price-amount{font-size:1.04rem;font-weight:800;color:var(--arf-theme-ink)}
body:not(.wp-admin) .arf-app .arf-cart-price-line--deposit{padding-top:5px;border-top:1px solid var(--arf-theme-line)}
/* info box (e.g. deposit refund note) above the "Vorläufiger Preis" note */
body:not(.wp-admin) .arf-app .arf-cart-info-box{display:flex;align-items:flex-start;gap:9px;margin:12px 0 0;padding:11px 14px;border:1px solid var(--arf-theme-line);border-left:4px solid var(--arf-theme-green);background:var(--arf-theme-soft)}
body:not(.wp-admin) .arf-app .arf-cart-info-box>.arf-portal-icon{flex:0 0 auto;width:18px;height:18px;margin-top:1px;color:var(--arf-theme-muted)}
body:not(.wp-admin) .arf-app .arf-cart-info-box p{margin:0;font-size:.86rem;color:var(--arf-theme-text)}
body:not(.wp-admin) .arf-app .arf-cart-item-price-label{font-size:.84rem;color:var(--arf-theme-muted)}
body:not(.wp-admin) .arf-app .arf-cart-item-price-rule,body:not(.wp-admin) .arf-app .arf-price-preview-rule{font-size:.8rem;font-weight:600;color:var(--arf-theme-muted);opacity:1}
body:not(.wp-admin) .arf-app .arf-cart-item-price-amount{font-size:1.02rem;color:var(--arf-theme-ink)}
body:not(.wp-admin) .arf-app .arf-cart-item-price-amount small,body:not(.wp-admin) .arf-app .arf-cart-totals small,body:not(.wp-admin) .arf-app .arf-price-preview-amount small{font-size:.8rem;font-weight:600;color:var(--arf-theme-muted);opacity:1}
body:not(.wp-admin) .arf-app .arf-cart-item-price-unit,body:not(.wp-admin) .arf-app .arf-cart-item-price-deposit,body:not(.wp-admin) .arf-app .arf-cart-item-price-hint{font-size:.84rem;color:var(--arf-theme-text);opacity:1}
body:not(.wp-admin) .arf-app .arf-cart-item-price--open{font-size:.88rem;color:var(--arf-theme-text)}
/* net/gross view toggle (decision 354): heading + segmented control on one row */
body:not(.wp-admin) .arf-app .arf-cart-totals-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 12px;margin-bottom:10px}
body:not(.wp-admin) .arf-app .arf-cart-totals-head .arf-cart-section-title{margin:0!important}
body:not(.wp-admin) .arf-app .arf-cart-price-toggle{display:inline-flex;border:1px solid var(--arf-theme-line);background:var(--arf-theme-soft)}
body:not(.wp-admin) .arf-app .arf-cart-price-toggle__btn{display:flex;flex-direction:column;align-items:center;gap:0;padding:5px 12px;border:0;background:transparent;color:var(--arf-theme-muted);cursor:pointer;font:inherit;line-height:1.12;white-space:nowrap}
body:not(.wp-admin) .arf-app .arf-cart-price-toggle__btn+.arf-cart-price-toggle__btn{border-left:1px solid var(--arf-theme-line)}
body:not(.wp-admin) .arf-app .arf-cart-price-toggle__btn small{font-size:.7rem;font-weight:600}
body:not(.wp-admin) .arf-app .arf-cart-price-toggle__btn.is-active{background:var(--ars-white);color:var(--arf-theme-ink);font-weight:800}
body:not(.wp-admin) .arf-app .arf-cart-price-toggle__btn:focus-visible{outline:2px solid var(--arf-theme-green);outline-offset:-2px}
body:not(.wp-admin) .arf-app .arf-cart-totals-box{margin:0;padding:16px 20px;border:1px solid var(--arf-theme-line);border-radius:0;background:var(--ars-white);max-width:36rem}
body:not(.wp-admin) .arf-app .arf-cart-totals-period{margin:0 0 8px!important;font-size:.86rem;color:var(--arf-theme-muted)}
body:not(.wp-admin) .arf-app .arf-cart-totals{display:flex;flex-direction:column;gap:0;margin:0;padding:0;font-variant-numeric:tabular-nums}
body:not(.wp-admin) .arf-app .arf-cart-totals>div[data-arf-price-b2c],body:not(.wp-admin) .arf-app .arf-cart-totals>div[data-arf-price-b2b]{display:flex;flex-direction:column}
body:not(.wp-admin) .arf-app .arf-cart-totals>div[hidden]{display:none!important}
body:not(.wp-admin) .arf-app .arf-cart-totals-row{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin:0;padding:6px 0;border-bottom:1px solid var(--arf-theme-line)}
body:not(.wp-admin) .arf-app .arf-cart-totals-row dt{margin:0;font-weight:600;color:var(--arf-theme-text)}
body:not(.wp-admin) .arf-app .arf-cart-totals-row dd{margin:0;text-align:right;white-space:nowrap;color:var(--arf-theme-ink)}
body:not(.wp-admin) .arf-app .arf-cart-totals-row--sum dt,body:not(.wp-admin) .arf-app .arf-cart-totals-row--sum dd{font-weight:800;font-size:1.02rem;color:var(--arf-theme-ink)}
body:not(.wp-admin) .arf-app .arf-cart-totals-row--deposit{border-bottom:0}
body:not(.wp-admin) .arf-app .arf-cart-totals-row--discount dt{display:flex;align-items:center;gap:6px}body:not(.wp-admin) .arf-app .arf-cart-discount-icon{display:inline-flex;width:16px;height:16px;flex:0 0 16px}body:not(.wp-admin) .arf-app .arf-cart-discount-icon svg{width:16px;height:16px}
body:not(.wp-admin) .arf-app .arf-cart-totals-open{margin:10px 0 0!important;font-size:.86rem;color:var(--arf-theme-text)}
body:not(.wp-admin) .arf-app .arf-price-note{margin:10px 0 0!important;padding:6px 10px;border:0;border-left:4px solid var(--arf-theme-green);border-radius:0;background:var(--arf-theme-soft);font-size:.84rem;font-weight:600;color:var(--arf-theme-text)}
body:not(.wp-admin) .arf-app .arf-cart-section--totals .arf-help-block{margin:12px 0 0;max-width:36rem}
body:not(.wp-admin) .arf-app .arf-price-preview{margin:8px 0 0;min-width:0;font-variant-numeric:tabular-nums}
body:not(.wp-admin) .arf-app .arf-price-preview[hidden]{display:none!important}
body:not(.wp-admin) .arf-app .arf-price-preview-line{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:0!important}
body:not(.wp-admin) .arf-app .arf-price-preview-label,body:not(.wp-admin) .arf-app .arf-price-preview-deposit,body:not(.wp-admin) .arf-app .arf-price-preview-hint,body:not(.wp-admin) .arf-app .arf-price-preview-open{font-size:.88rem;color:var(--arf-theme-text);opacity:1}
body:not(.wp-admin) .arf-app .arf-price-preview-amount{font-size:1.05rem;color:var(--arf-theme-ink)}
body:not(.wp-admin) .arf-checkout-summary .arf-cart-totals-box{padding:12px 14px;max-width:100%}
@media(max-width:600px){
 body:not(.wp-admin) .arf-app .arf-cart-totals-box{padding:12px 14px;max-width:100%}
 body:not(.wp-admin) .arf-app .arf-cart-totals-row{gap:10px}
 body:not(.wp-admin) .arf-app .arf-cart-totals-row dd{white-space:normal}
}
/* /Wave 29 cart page rework */
/* REQ-UI-NO-PILLS-BOXES-SYSTEMWIDE-001 (client rule 102, wave 24): every RentalCore surface rendered through .arf-app
 * (storefront, cart, checkout, portal, /intern/, the wp-admin operations console) and every shared dialog is square, also on
 * hosts without the augite theme. Exceptions only per tools/pill_shape_scan.py ALLOW_LIST (radio buttons, status/timeline
 * dots, card-terminal illustration). */
.arf-app:not(input[type=radio]):not(.augac-health-dot):not(.arf-ops-timeline-dot):not(.arp-solo-device-body):not(.arp-solo-device-display),.arf-app *:not(input[type=radio]):not(.augac-health-dot):not(.arf-ops-timeline-dot):not(.arp-solo-device-body):not(.arp-solo-device-display),.augite-modal *:not(input[type=radio]):not(.augac-health-dot):not(.arf-ops-timeline-dot):not(.arp-solo-device-body):not(.arp-solo-device-display){border-radius:0!important}

/* REQ-SCAN-DIALOG-LAYOUT-SAFARI-001 (wave 33, client decision 165): a pictogram placed directly in a console button (outside a
 * dialog - the dialog rule lives in modal.css) is 18 px, never the 100% of ".arf-ops svg" that made unsized icon SVGs huge; the
 * photo camera stage (.arf-camera-stage, above) is at most 640 px wide in 4:3, the scan dialog preview at most 480 px (modal.css). */
.arf-ops :is(.arf-ops-primary,.arf-ops-secondary)>svg{display:block;width:18px;height:18px;min-width:18px;max-width:20px;max-height:20px;flex:0 0 18px}
/* Wave 37 / IN-1 item 1+3 (REQ-INTERN-IN1-QUICKFIXES-001): critical customer request marker, request facts and the payment assignment form in /intern/. */
.arf-ops .arf-status-pill[data-status="critical"]{color:var(--arf-ops-danger);background:var(--arf-ops-paper);border:2px solid var(--arf-ops-danger);border-radius:0;font-weight:700}
.arf-ops .arf-service-request-critical{margin:6px 0}
.arf-ops .arf-service-request-facts{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr))}
.arf-ops .arf-service-request-facts dd{overflow-wrap:anywhere}
.arf-ops .arf-payment-assign{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px;margin:8px 0 0}.arf-ops .arf-payment-assign select{max-width:100%}
/* Wave 37 / IN-1 item 4: offer acceptance confirmation in the portal dialog (summary, links, required checkbox, "Zahlungspflichtig mieten"). */
.arf-offer-accept__links{margin:12px 0}
.arf-offer-accept__confirm{display:flex;align-items:flex-start;gap:8px;margin:12px 0;font-weight:600}
.arf-offer-accept__confirm input{margin-top:3px;flex:0 0 auto}

/* LIVE-TASK-2026-09-13-013 Nachmessung (2026-09-17): systemweiter Fokusring-Sweep ueber 295
 * fokussierbare Bedienelemente auf vier Flaechen (wp-admin augri-invoice-invoices 104,
 * /intern/rentalcore/disposition/ 65, /intern/rentalinvoice/ 50, /intern/rentalcore/buchungen/ 76)
 * fand genau EIN Element ohne jeden Indikator (weder outline noch box-shadow): das Suchfeld der
 * WordPress-Adminleiste, das auf der /intern/-Flaeche fuer angemeldete Mitarbeiter mitgerendert
 * wird. Core selbst setzt dort outline:none ohne Ersatz. Es ist Core-Markup, aber es sitzt auf
 * unserer Flaeche und ist per Tab erreichbar - deshalb hier nachgezogen (gleiche Linie wie
 * augite-ux.css, die .page-title-action/.page-numbers von Core bereits korrigiert). */
#wpadminbar #adminbarsearch input.adminbar-input:focus{outline:2px solid var(--ars-green)!important;outline-offset:-2px!important}

/* REQ-RENTALFLOW-CONSOLE-BOOKING-DEEPLINK-001: step control targeted by a process deep link (focus intent) */
.arf-ops .arf-deeplink-focus{outline:3px solid var(--ars-green);outline-offset:3px}

/* REQ-OFFLINE-RENTALFLOW-4-CONFLICTS-001: conflict decisions stay in the shared replay dialog and
 * pending operations remain visible on both bookings and allocated asset positions. */
.arf-offline-conflict{display:grid;gap:10px;padding:12px;border:2px solid var(--arf-ops-warning,#9a6700);background:var(--arf-ops-paper,#fff)}
.arf-offline-conflict__copy{display:block;font-weight:650;line-height:1.45}
.arf-offline-conflict__reason{display:grid;gap:6px;font-weight:650}
.arf-offline-conflict__reason textarea{box-sizing:border-box;width:100%;min-height:88px;padding:var(--augite-control-pad-area);border:1px solid currentColor;background:#fff;color:inherit;font-family:inherit;font-size:var(--augite-field-font-size);line-height:var(--augite-control-line-height);font-weight:var(--augite-control-weight);resize:vertical}
.arf-offline-conflict .arf-ops-actions{display:flex;flex-wrap:wrap;gap:8px;margin:0}
.arf-offline-conflict [data-arf-replay-action]{min-height:48px;white-space:normal}
.arf-offline-conflict__state{display:block;min-height:1.4em;font-weight:700}
.arf-not-transferred{display:inline-flex;align-items:center;margin-inline-start:6px;border:2px solid currentColor!important;font-weight:750;white-space:normal}
.arf-not-transferred[hidden]{display:none!important}
@media(max-width:600px){.arf-offline-conflict .arf-ops-actions{display:grid}.arf-offline-conflict [data-arf-replay-action]{width:100%}}

/* REQ-PORTAL-STAMMDATEN-SELFSERVICE-001: grouped customer master data in the existing portal modal pattern. */
body:not(.wp-admin) .arf-portal-customer-master-form{display:grid;gap:16px;margin-top:22px;padding-top:20px;border-top:1px solid var(--arf-theme-line)}
body:not(.wp-admin) .arf-portal-master-addresses{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
body:not(.wp-admin) .arf-portal-master-address{min-width:0;margin:0;padding:14px;border:1px solid var(--arf-theme-line);background:#fafbfc}
body:not(.wp-admin) .arf-portal-master-address legend{padding:0 5px;color:var(--arf-theme-ink);font-size:.82rem;font-weight:800}
body:not(.wp-admin) .arf-portal-master-same{display:flex!important;align-items:center;gap:9px;margin:0!important;font-weight:700}
body:not(.wp-admin) .arf-portal-master-same input{width:18px;height:18px;min-height:18px;margin:0}
@media(max-width:760px){body:not(.wp-admin) .arf-portal-master-addresses{grid-template-columns:1fr}body:not(.wp-admin) .arf-portal-customer-master-form{margin-top:18px;padding-top:16px}}

/* REQ-HELP-010 (2026-09-21): /intern/hilfe/ - Hilfesuche. Bewusst eigene, immer sichtbare Klassen:
   .augite-help/.arf-help-block traegt waehrend "Hilfe AUS" (Default) das hidden-Attribut; diese Seite
   IST die Hilfe und muss in beiden Schalterzustaenden identisch sichtbar sein. Nutzt ausschliesslich
   die vorhandenen --arf-ops-* Tokens, damit die Flaeche zum Rest von /intern/ passt. */
.arf-help-search__form{display:flex;flex-direction:column;gap:6px;margin:14px 0 0}
.arf-help-search__label{font-size:.82rem;font-weight:700;line-height:1.2}
.arf-help-search__row{display:flex;flex-wrap:wrap;align-items:stretch;gap:8px;min-width:0}
.arf-help-search__input{flex:1 1 18rem;min-width:0;max-width:100%;min-height:46px;margin:0;padding:9px 12px;font:inherit;font-size:1rem;border:1px solid #6b6f73;border-radius:0;background:#fff;color:var(--arf-ops-ink)}
.arf-help-search__input:focus-visible{outline:2px solid var(--ars-accent-strong,#b84e08);outline-offset:1px}
.arf-help-search__submit{flex:0 0 auto;white-space:nowrap}
.arf-help-search__status{margin:10px 0 0;font-size:.82rem;font-weight:700;color:var(--arf-ops-muted)}
.arf-help-search__results{margin:0}
.arf-help-search__results[aria-busy="true"]{opacity:.55}
.arf-help-search__hits{display:grid;gap:12px;margin:12px 0 0;padding:0;list-style:none}
.arf-help-search__hit{margin:0;padding:14px;border:1px solid #cccdd0;border-radius:0;background:var(--arf-ops-paper)}
.arf-help-search__type{margin:0;font-size:.74rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--arf-ops-muted)}
.arf-help-search__hit-title{margin:3px 0 8px;font-size:1rem;line-height:1.25}
.arf-help-search__body>*{margin:0 0 8px}
.arf-help-search__body>*:last-child{margin-bottom:0}
.arf-help-search__reset{margin:12px 0 0;font-size:.82rem}
.arf-help-search__reset a{color:inherit;text-decoration:underline}
@media(max-width:620px){.arf-help-search__row{display:grid;grid-template-columns:1fr}.arf-help-search__submit{width:100%}}

/* REQ-MAINTENANCE-INTERVAL-CALENDAR-001 (Bedienweg, 2026-09-21): /intern/wartung/.
   Nur das, was die Seite ueber die bereits vorhandenen Bausteine (.arf-ops-card,
   .augite-table, .augite-check, .augite-form-row) hinaus braucht: die Faelligkeitsstufe
   als Textmarke (Farbe allein genuegt nicht, UX-ACT-003/WCAG 1.4.1), die Abstaende der
   Intervall-Eingabe auf der 4/8-Skala (UX-LAY-002) und die lokale Querscrollflaeche der
   beiden Tabellen (UX-LAY-005: die SEITE scrollt nie quer, die Datenflaeche darf es).

   Zur Herkunft von .arf-wartung-scroll, damit niemand eine Messung nachschlaegt, die es nicht
   gibt: die Flaeche lag zuerst als display:block;overflow-x:auto am <table> selbst. Ein
   Chromium-Render bei 390 px meldete daraufhin 394 px Querueberlauf - diese Messung war FALSCH,
   ein kaputt zusammengesetzter CSS-Kommentar in der Screenshot-Vorlage hatte die ersten Regeln
   verschluckt, sodass gar keine Scrollflaeche aktiv war. Nachgemessen liefern beide Varianten
   0 px Ueberlauf bei 390 px und bei 1280 px. Der Wrapper bleibt trotzdem, aber aus dem richtigen
   Grund: div > table ist der Tabellenvertrag, den ARF_Backend_UI::table() systemweit rendert
   (div.augite-table-scroll), und nicht aus einem gemessenen Defekt. */
.arf-wartung-scroll{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.arf-wartung-table{width:100%;min-width:0}
.arf-wartung-table small{display:block;color:var(--arf-ops-muted)}
.arf-wartung-stage{display:inline-block;padding:0 8px;border:1px solid currentColor;border-radius:0;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.arf-wartung-stage--due{color:#8b5a12}
.arf-wartung-stage--overdue{color:#9a3412}
.arf-wartung-none{color:var(--arf-ops-muted)}
.arf-wartung-choice{margin:0 0 12px;padding:12px;border:1px solid var(--arf-theme-line,#dadde0);border-radius:0}
.arf-wartung-choice legend{padding:0 4px;font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.arf-wartung-choice .augite-check{display:flex;align-items:center;gap:8px;margin:4px 0}
.arf-wartung-active{margin:0 0 12px;padding:8px 12px;background:var(--arf-theme-soft,#f4f5f6);font-size:.85rem}
.arf-wartung-values{margin-bottom:8px}
.arf-wartung-values small{display:block;color:var(--arf-ops-muted);font-size:.75rem}
.arf-wartung-hint{margin:0 0 16px;font-size:.8rem;color:var(--arf-ops-muted)}
.arf-wartung-actions{display:flex;flex-wrap:wrap;gap:8px}

/* REQ-040 (Live-Abnahme 2026-09-21): der geteilte Ausloeser "Asset identifizieren"
   (ARF_Admin::asset_picker_trigger()) traegt auf /intern/ dieselbe Klasse wie in wp-admin
   ("button button-secondary"), aber nur wp-admin bringt ein Stylesheet dafuer mit - und
   .arf-admin-asset-picker-trigger ist ausschliesslich in admin.css gesetzt, die hier nicht laedt.
   Live gemessen auf /intern/rentalcore/disposition/: 147x17 CSS px, transparenter Hintergrund,
   randlos, unterstrichener Text. Damit war der Ausloeser weder als Knopf erkennbar noch nach
   UX-RWD-002 (>= 48x48 CSS px Zielgroesse, Tabletkonsole) bedienbar - die Komponente funktionierte,
   sah aber nicht wie dieselbe aus. Die Regel gibt ihm die Gestalt der vorhandenen
   Sekundaerknoepfe (.arf-ops-secondary), kein neues Knopfsystem. body:not(.wp-admin) haelt sie
   von den wp-admin-Stellen fern, auf denen public.css als 'arf-ops-base' ebenfalls geladen wird. */
body:not(.wp-admin) .arf-admin-asset-picker-trigger{display:inline-flex;align-items:center;margin-top:6px}
body:not(.wp-admin) .arf-admin-asset-picker-trigger>.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:var(--augite-control-h);padding:var(--augite-button-pad);border:1px solid #c5c7c9;border-radius:0;background:#fff;color:var(--arf-ops-ink,#14181b);font-family:inherit;font-size:var(--augite-control-font-size);line-height:var(--augite-control-line-height);font-weight:var(--augite-button-weight);font-weight:var(--augite-button-weight);line-height:1.15;text-decoration:none;cursor:pointer}
body:not(.wp-admin) .arf-admin-asset-picker-trigger>.button:hover{border-color:var(--ars-accent-strong,#b84e08);color:var(--ars-accent-strong,#b84e08)}
body:not(.wp-admin) .arf-admin-asset-picker-trigger>.button:focus-visible{outline:2px solid #d9600a;outline-offset:2px}
/* REQ-CART-FIELD-SEMANTICS-001: die Feldmeldung des Mengenfeldes spannt die ganze Buchungszeile,
   statt in der 68px-Mengenspalte zu einem senkrechten Wortband zu werden. */
.arf-booking-inline>.arf-field-error{grid-column:1/-1;margin:2px 0 0;font-size:.78rem;line-height:1.35;color:#a3261c;font-weight:600}
.arf-booking-inline>.arf-field-error::before{content:'';display:inline-block}
.arf-field-invalid{border-color:#a3261c!important;outline:2px solid rgba(163,38,28,.25);outline-offset:1px}

/* REQ-INTERN-LAYOUT-CALIBRATION (Live-Abnahme 2026-09-24, RESP-003/RESP-002): bei 320 CSS px
   schob die Kopfzeile der /intern/-Huelle die ganze Seite horizontal auf. Ursache real gemessen
   (Chromium, rental.augite.de, production f44e9428): .arf-ops-context-header ist ein Flexcontainer
   mit align-items:flex-start; ab 900px schaltet er auf flex-direction:column. In einer Spalte
   bedeutet flex-start, dass das Textelement auf max-content schrumpft - also auf die Breite des
   laengsten nicht umbrechbaren Wortes der H1. "Personalabwesenheiten" ergab 351,6px, 
   "Zahlungsbereitschaft" 310,7px, beides mehr als die 320px-Viewportbreite; documentElement.
   scrollWidth war dadurch 400 bzw. 359 gegen clientWidth 320. Seiten mit kurzer H1 ("Buchungen",
   "RentalFlow") blieben nur zufaellig unauffaellig. Die Vorschrift laesst bei 320 CSS px keinen
   horizontalen SEITEN-Scroll zu; die Ausnahme "echte zweidimensionale Datentabelle" meint die
   lokal scrollende Tabelle (.augite-table-scroll, overflow-x:auto), nicht das Dokument.
   Bewusst NUR max-width/min-width am Kind, nicht align-items:stretch am Container: stretch haette
   auch das Geschwister .arf-ops-context-badge auf die volle Breite gezogen (auf Tablet real von
   344px auf 738px gemessen) - eine sichtbare Aenderung auf genau den Geraeten, fuer die diese
   Flaeche gebaut ist. max-width:100% deckelt das Textelement, ohne die Ausrichtung zu aendern.
   hyphens:auto steht VOR overflow-wrap: allein mit break-word brach Chromium "Personalabwesenheiten"
   bei 320px mitten im Wort zu "Personalabwe/senheiten" (Screenshot der ersten Fassung). Mit der
   deutschen Silbentrennung (das Dokument traegt lang="de-DE") bricht dasselbe Wort mit Trennstrich
   an einer Silbengrenze; break-word bleibt nur die Reserve fuer Woerter ohne Trennstelle. */
@media(max-width:900px){
  .arf-ops-context-header>*{min-width:0;max-width:100%}
}
.arf-ops-context-header h1,.arf-ops-context-header p,.arf-ops-context-header .arf-ops-eyebrow{hyphens:auto;overflow-wrap:break-word}

/* REQ-INTERN-RENTALFLOW-ADAPTIVE-LAYOUT-001 (Auftraggeber-Entscheidung 2026-09-25, Frage 1):
   Kommissionierwelle und Betriebslage sind auf der Tablet-Oberflaeche zugeklappte Rahmenbloecke
   oberhalb der Arbeitsliste. Der Kopf ist ein echtes <summary> - Tastatur und Screenreader
   bekommen die Auf-/Zu-Semantik vom Browser, ohne eigenes JavaScript und ohne ARIA-Nachbau.
   Zielgroesse 48px nach UX-RWD-002; die Klappmarke ist zusaetzlich zum Text da, nie statt ihm
   (UX-ICON-001). */
.arf-ops-collapse{margin:0 0 14px;border:1px solid var(--arf-ops-line,#e0e2e4);background:var(--arf-ops-paper,#fff)}
/* REQ-INTERN-KOPFABSTAND-KLAPPBOXEN-001 (Auftraggeberentscheidung 2026-09-28, Nachtrag zur
   Frage "gilt die zugeklappte Klappzeile als Defekt?"): NICHT als Sonderfall ausgesetzt - EIN
   Abstandswert im ganzen Produkt, auch fuer die zugeklappte Zeile. align-items:center zentrierte
   Icon/Kicker/Titel vertikal in der 48px-Zeile statt sie am Systemwert auszurichten - je nach
   Zeilenhoehe des Inhalts (Text allein vs. Text+Piktogramm) mass das zugeklappt 13px an einer
   Stelle und 16px an einer anderen, nirgends den Kartenwert. Jetzt align-items:flex-start +
   padding-top:20px - derselbe Wert, den .arf-ops-card ueberall sonst als obere Innenpolsterung
   fuehrt (Zeile 117), kein neuer. Mit dem 1px Rahmen von .arf-ops-collapse selbst ergibt das
   dieselben 21px vom Boxrand zum Text wie bei jeder aufgeklappten Karte - gemessen (Chromium
   1280px, korrigierte checkVisibility-Pruefung, s.u.). Die Zeile wird dadurch hoeher als 48px;
   das ist nach der Entscheidung ausdruecklich in Kauf genommen. Padding unten bleibt bei 14px -
   dafuer gibt es keine Auftraggebervorgabe, nur die OBERE Kante ist der gemessene Defekt.
   Die Pfeilspitze (::after) bekommt align-self:center, damit sie in der jetzt hoeheren Zeile
   weiter vertikal mittig bleibt, unabhaengig von der neuen align-items:flex-start der Zeile - vom
   [open]-Zustand (Zeile ~3358, top:auto) unberuehrt: der setzt padding/align-items dort per
   hoeherer Selektorspezifitaet ohnehin auf 0 zurueck, die Pfeil-Oberkanten-Zusicherung bleibt. */
.arf-ops-collapse>summary{display:flex;align-items:flex-start;gap:10px;min-height:48px;padding:20px 14px 14px;cursor:pointer;list-style:none;font-weight:650;color:var(--arf-ops-ink,#14181b)}
.arf-ops-collapse>summary::-webkit-details-marker{display:none}
.arf-ops-collapse>summary::after{content:"";flex:0 0 auto;align-self:center;margin-left:auto;width:9px;height:9px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);transition:transform .15s ease}
.arf-ops-collapse[open]>summary::after{transform:rotate(225deg)}
.arf-ops-collapse>summary:focus-visible{outline:2px solid var(--ars-accent-strong,#b84e08);outline-offset:-2px}
.arf-ops-collapse .arf-ops-kicker{flex:0 0 auto}
/* Punkt 3 (Auftraggeber 2026-09-25): das Abschnittspiktogramm sitzt im zugeklappten Kopf genauso
   wie in ARF_Backend_UI::section_head(), damit zugeklappt und aufgeklappt nicht unterschiedlich
   aussehen. Es ist aria-hidden und traegt keine Bedeutung allein - der Text steht daneben. */
.arf-ops-collapse>summary .arf-ops-section-icon{display:grid;place-items:center;flex:0 0 auto;width:24px;height:24px;color:var(--ars-accent-strong,#b84e08)}
.arf-ops-collapse>summary .arf-ops-section-icon svg{width:18px;height:18px}
/* Nachtrag 2 (Auftraggeber 2026-09-25, mit Bildschirmfoto): die Beschriftung der <summary> und der
   Abschnittskopf DARUNTER trugen im aufgeklappten Zustand denselben Kicker und denselben Titel, bei
   der Betriebslage zusaetzlich zweimal dasselbe Piktogramm - dieselbe Information zweimal, keine 80px
   auseinander. Die <summary> ist die KURZFASSUNG des Kopfs, nicht ein zweiter Kopf: im offenen Zustand
   traegt der Abschnittskopf die Beschriftung, die <summary> gibt ihre Textrolle ab.
   Sie wird dabei NICHT mit display:none entfernt - die <summary> IST die Bedienflaeche, ohne sie gibt
   es keinen Weg zurueck. Stattdessen wandert nur die Beschriftungsgruppe in die visuelle Verborgenheit
   (Regelblock .augite-visually-hidden in backend-ui.css, um den dieser Selektor erweitert ist - keine
   zweite Variante derselben Technik). Damit bleibt der zugaengliche Name der <summary> in BEIDEN
   Zustaenden erhalten ("Kommissionierwelle Kommissionierung starten" - benennt, WAS zugeklappt wird),
   und die Klappmarke bleibt sichtbar, klickbar und mit der Tastatur erreichbar. Weil das Verbergen aus
   dem Fluss nimmt statt Boxen zu verschieben, bleibt die Oberkante der <summary> und damit der
   Ausloeser beim Auf- und Zuklappen an derselben Stelle. */
/* REQ-INTERN-KOPFABSTAND-KLAPPBOXEN-001: align-items:flex-start statt center - sonst zentriert
   diese innere Zeile Icon/Kicker/Titel weiterhin gegeneinander (unterschiedliche Zeilenhoehen je
   Schriftgroesse) und die Oberkante des Kicker-/Titeltexts landet ein paar px UNTER der Oberkante
   dieses Blocks - gemessen: mit align-items:center hier lag der Kicker bei 28px, der Titel bei
   24px statt der beabsichtigten 21px, obwohl der Block selbst (dieses Label) schon korrekt bei
   21px stand. Mit flex-start teilen sich Kicker UND Titel dieselbe Oberkante wie der Block. */
.arf-ops-collapse__label{display:flex;align-items:flex-start;gap:10px;flex:1 1 auto;min-width:0}
.arf-ops-collapse__title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* REQ-INTERN-KATEGORIE-KAESTEN-KLAPPBAR-001 (Auftraggeber 2026-09-27, Auftrag 2 "leerer grauer
   Balken"): backend-ui.css blendet die Beschriftung der aufgeklappten <summary> bereits aus (siehe
   Regelblock oben, .arf-ops-collapse[open]>summary>.arf-ops-collapse__label - eine fruehere
   Reparatur gegen den doppelten Kopf und bleibt unangetastet). Die <summary> BEHIELT dabei aber
   ihre volle Zeile: min-height 48px + Polsterung (Regel oben) plus den Kartenhintergrund/-rahmen
   von .arf-ops-collapse dahinter - ein leerer grauer Streifen ueber dem eigentlichen Abschnittskopf,
   gemessen 48px je aufgeklapptem Kasten.
   Die <summary> gibt im aufgeklappten Zustand deshalb auch ihre ZEILE ab: position:absolute nimmt
   sie aus dem Fluss, der Abschnittskopf ruckt an die Kartenoberkante. Sie bleibt die einzige
   Bedienflaeche zurueck ins Zugeklappte, deshalb keine Verkleinerung unter 32x32 CSS-px (die
   Untergrenze der Auftraggebervorgabe; volle 48x48 nach UX-RWD-002 wuerden hier mit dem
   Werkzeugbereich der Karte kollidieren, siehe Reservierung unten - "sofern der Kontext dies
   zulaesst" ist damit nicht gegeben). Die Klappmarke soll auf Hoehe der Kicker-/Titelzeile des
   Abschnittskopfs zu stehen kommen statt darueber - genau wie beim ZUGEKLAPPTEN Kopf, der von
   dieser Regel unberuehrt bleibt (kein [open]).
   .augite-list-card__tools traegt bei den neuen, aus list_card_open() klappbar gemachten Kaesten
   ("+", Aktualisieren, Filter-Piktogramm) und sitzt in DERSELBEN oberen rechten Ecke - ohne
   Reservierung wuerde die Klappmarke diese Bedienelemente ueberdecken. Der rechte Zusatzabstand
   am Kopf schiebt sie nach links frei, ohne den Kopf selbst zu verschieben.

   NACHTRAG REQ-INTERN-RENTALFLOW-ADAPTIVE-LAYOUT-001 (2026-09-27): die Absicht oben war richtig,
   die beiden ZAHLEN waren es nicht. top:14px war als "Innenpolsterung der Karte" begruendet und
   stand auf keiner: wirksam ist auf /intern/ nicht .arf-ops-card{padding:20px 22px} (Zeile 117),
   sondern die spaetere !important-Regel body:not(.wp-admin) .arf-app.arf-ops
   .arf-ops-card:not(.augite-modal){padding:20px 18px} - und 14 ist auch davon keine Ableitung.
   Gemessen (Chromium und WebKit, Vorrichtung MIT der umhuellenden .arf-ops-card, 4 von 4
   Kombinationen): die Oberkante der gerade betaetigten <summary> sprang beim Aufklappen um genau
   14,0 px nach unten, waehrend die Oberkante des <details> stand. Das verletzt das
   Abnahmekriterium woertlich ("ihre Oberkante bleibt konstant").
   Die Rechnung dahinter: zugeklappt ist die <summary> statisch das erste Kind, ihre Oberkante
   liegt also auf der Inhaltsoberkante des <details> = Rahmen (1px) + Polsterung (0). Aufgeklappt
   misst top von der POLSTERKANTE desselben <details>, also ebenfalls Rahmen + 0 - jeder Wert > 0
   ist damit exakt der Sprung. Deshalb steht hier keine neue Zahl, sondern top:auto: die statische
   Position ist per Definition die Stelle, die der Fluss der <summary> zugeweisen haette, also
   dieselbe wie im zugeklappten Zustand. Sie bleibt richtig, wenn .arf-ops-collapse je Polsterung
   oder einen anderen Rahmen bekommt; top:0 waere dann wieder daneben.
   Zweite Zahl: height:32px/min-height:0 sind entfallen, damit die Hoehe wieder aus dem
   min-height:48px der Regel oben kommt (UX-RWD-002, dieselbe Zielgroesse wie der zugeklappte
   Kopf - kein neuer Wert). Ausserhalb des Flusses kostet das keine Zeile, der leere graue Balken
   von Auftrag 2 bleibt also weg, und die Trefferflaeche 32x48 liegt weiter ueber der
   Auftraggeber-Untergrenze 32x32. Erst mit den 48px liegt die Mitte der Marke (24px unter der
   Kartenoberkante) UNTER der Oberkante der Kicker-/Titelzeile (20px = Kartenpolsterung) und damit
   auf ihrer Hoehe statt darueber; mit 32px Hoehe lag sie 4px darueber. Beide Zusicherungen sind in
   test_req_intern_rentalflow_adaptive_layout_001.py im echten Browser gemessen, nicht
   aus dieser Datei abgelesen. */
.arf-ops-collapse{position:relative}
.arf-ops-collapse[open]>summary{position:absolute;top:auto;right:16px;z-index:2;box-sizing:border-box;width:32px;padding:0;margin:0;justify-content:center;background:none;border:0;box-shadow:none}
.arf-ops-collapse[open]>summary::after{margin-left:0}
.arf-ops-collapse[open] .augite-list-card__head,.arf-ops-collapse[open] .arf-ops-section-head{padding-right:46px}
/* Die inneren Sektionen bringen ihren Kartenrahmen selbst mit - im aufgeklappten Zustand wuerde er
   den Rahmen des <details> doppeln, deshalb hier genau einmal zuruecknehmen. */
.arf-ops-collapse>.arf-ops-card,.arf-ops-collapse>.arf-ops-wave{margin:0;border:0}
.arf-ops-collapse>.arf-ops-card+.arf-ops-wave,.arf-ops-collapse>.arf-ops-wave+.arf-ops-wave{border-top:1px solid var(--arf-ops-line,#e0e2e4)}

/* ===================================================================================
 * REQ-INTERN-ABSTAND-KOPF-ZU-INHALT-001 (Auftraggeber 2026-09-27, woertlich: "Der Abstand
 * zwischen den Kacheln und der Menueleiste ist noch zu gross. Das trifft saemtliche Seiten
 * in /intern/. Finde hier eine optimierte Abstandshoehe und passe alle Seiten an. Ich gehe
 * davon aus, der Abstand wie auch zum Seitenrand waere ausreichend.")
 * -----------------------------------------------------------------------------------
 * GEMESSEN am ausgelieferten Stand (Chromium 1440x900, angemeldet, erste Kachel erkannt an
 * eigenem Rahmen/Hintergrund - NICHT an ihrer Breite, sonst findet man <main> und haelt 24px
 * fuer richtig):
 *   /intern/rentalflow/              58px oben gegen 24px seitlich
 *   /intern/rentalcore/ und Unterseiten  72px oben gegen 24px seitlich
 *
 * URSACHE: ZWEI Abstaende addieren sich, die voneinander nichts wissen - <main> traegt einen
 * Aussenabstand von 24px, der Inhaltscontainer zusaetzlich eine obere Polsterung (je nach
 * Flaeche und Breitenstufe 32-48px), auf RentalCore kommen 14px der Modulnavigation dazu.
 *
 * LOESUNG: EINE Quelle statt zweier, und sie fuehrt genau den Wert des Seitenrandes. Der
 * Seitenrand entsteht aus der Containerbreite (calc(100% - 48px) -> 24px je Seite, in der
 * schmalen Stufe calc(100% - 28px) -> 14px); der obere Abstand folgt ihm jetzt Stufe fuer
 * Stufe. Dadurch kann eine kuenftige Aenderung an einer der beiden alten Stellen den Wert
 * nicht mehr still verdoppeln.
 *
 * NUR /intern/: gebunden an body.augite-intern-page. Die oeffentliche Kundenseite,
 * /meine-buchung/ und die Rechtstexte behalten ihre grosszuegige Geometrie - dort ist der
 * Abstand gewollt, und fuer /meine-buchung/ gilt zusaetzlich die bindende Auftraggebervorgabe
 * vom 25.09. ("bleiben im regulaeren Seitenformat"). wp-admin bleibt ebenfalls unberuehrt.
 * =================================================================================== */
body.augite-intern-page:not(.wp-admin) .wp-site-blocks>main{margin-top:0!important}
/* Auf .arf-theme-container selbst gebunden, NICHT ueber seinen Elternteil: die Flaechen
 * fuehren unterschiedliche Elternklassen (.arf-theme-page, .arf-app.arf-ops und weitere).
 * Ein erster Entwurf zaehlte zwei davon auf und traf RentalFlow, aber nicht RentalCore -
 * dort blieben 34px stehen. Eine Aufzaehlung von Elternklassen ist genau die Bauform, die
 * bei der naechsten neuen Flaeche wieder danebengreift. */
/* Die Selektorkette ist nicht Zierde, sondern gemessen: der Browser wurde gefragt, WELCHE
 * Regel gewinnt (CSSOM-Durchlauf ueber alle passenden Regeln statt Textsuche im Quelltext).
 * Es sind fuenf Stufen mit steigender Spezifitaet - 48px, 38px, 32px in der schmalen Stufe,
 * und zweimal 34px an
 *   body:not(.wp-admin) .arf-app.arf-ops.arf-theme-page[data-arf-intern-module]>.arf-theme-container
 * (einmal ohne, einmal mit min-width:1501px). Die letzte ist die tatsaechliche Gewinnerin auf
 * RentalCore. Drei Entwuerfe davor haben verloren, weil sie weniger spezifisch waren als sie -
 * und ein verlorener Selektor sieht im Quelltext genauso richtig aus wie ein gewinnender.
 * Deshalb wird hier jede Stufe mitgefuehrt; die letzte Zeile ist die entscheidende. */
body.augite-intern-page:not(.wp-admin) .arf-theme-container,
body.augite-intern-page:not(.wp-admin) .arf-theme-page>.arf-theme-container,
body.augite-intern-page:not(.wp-admin) .arf-app>.arf-theme-container,
body.augite-intern-page:not(.wp-admin) .arf-app.arf-ops>.arf-theme-container,
body.augite-intern-page:not(.wp-admin) .arf-app.arf-ops.arf-theme-page>.arf-theme-container,
body.augite-intern-page:not(.wp-admin) .arf-app.arf-ops.arf-theme-page[data-arf-intern-module]>.arf-theme-container{padding-top:24px!important}
/* Das erste Kind darf keinen eigenen Aussenabstand obendrauf legen - sonst waere der Abstand
 * wieder eine Summe aus zwei Quellen, und genau das ist der Befund. Gemessen: auf
 * /intern/rentalcore/ bringt nav.arf-ops-actions 10px mit und machte aus 24 wieder 34. */
body.augite-intern-page:not(.wp-admin) .arf-theme-container>*:first-child{margin-top:0!important}
/* BEWUSST KEINE eigene Breitenstufe: gemessen traegt der Container auch bei 800px noch 24px
 * Seitenrand. Eine Stufe bei 840px haette den oberen Abstand dort auf 14px gesetzt und ihn
 * damit vom Seitenrand geloest - also genau die Entkopplung wieder eingefuehrt, die hier
 * abgestellt wird. Ein erster Entwurf hatte diese Stufe; die Nachmessung hat sie widerlegt. */

/* REQ-INTERN-KARTENBAUSTEIN-NICHT-TEXTGEKAPPT-001 (2026-09-28, Auftraggeberbefund woertlich:
   "Ich meine die Box mit 'Zurzeit ist keine Meldung unerledigt'. Die ist doch nicht
   seitenbreit?").
   Die Kappung auf 1320px direkt darueber ist RICHTIG und bleibt - sie ist die Zahl des
   Auftraggebers fuer die Zeilenlaenge von Fliesstext. Sie trifft aber jeden <p> und damit auch
   Bausteine, die nur zufaellig ein <p> sind: gerahmte oder gefuellte Kaesten, Zaehlzeilen,
   Summenzeilen. Die sind kein Fliesstext - sie richten sich nach ihrer Karte.
   Bei 1920px gemessen: Box 1320px, Karteninnenraum 1724px - 404px zu schmal. Systemweiter
   Suchlauf ueber alle /intern/-Seiten fand ACHT solche Bausteine auf FUENF Seiten, alle bei
   genau 1320px. Genau diese sind hier ausgenommen, keiner mehr:
     .arf-ops-empty          Leermeldung           (meldungen, wartung)
     .augite-result-count    Ergebniszahl          (wartung, abwesenheiten)
     .arf-muted              Zaehlzeile            (meldungen)
     .arf-finance-supplement__standard / __total   (rentalinvoice)
     .arp-overview-ok        Statuszeile           (rentalpayments)
   Die Herkunft der Kappung war ueber das CSSOM NICHT auffindbar - die Stylesheets der Seite
   sind dem Skript nicht zugaenglich, jede Regelabfrage kam leer zurueck. Gefunden wurde sie
   erst ueber CSS.getMatchedStylesForNode im Entwicklerprotokoll. Wer hier sucht: nicht
   document.styleSheets nehmen, das antwortet strukturell leer statt falsch. */
body:not(.wp-admin) .arf-app.arf-ops.arf-theme-page[data-arf-intern-module] p.arf-ops-empty,
body:not(.wp-admin) .arf-app.arf-ops.arf-theme-page[data-arf-intern-module] p.augite-result-count,
body:not(.wp-admin) .arf-app.arf-ops.arf-theme-page[data-arf-intern-module] p.arf-muted,
body:not(.wp-admin) .arf-app.arf-ops.arf-theme-page[data-arf-intern-module] p.arf-finance-supplement__standard,
body:not(.wp-admin) .arf-app.arf-ops.arf-theme-page[data-arf-intern-module] p.arf-finance-supplement__total,
body:not(.wp-admin) .arf-app.arf-ops.arf-theme-page[data-arf-intern-module] p.arp-overview-ok{max-width:100%!important}

/* REQ-INTERN-KLAPPKARTE-DOPPELTER-KASTEN-001 (Auftraggeber 2026-09-29, Screenshot /intern/rentalflow/buchung/466/,
   Mitarbeiteruebergabe "Kontext fuer die naechste Bearbeitung": "Hier sind alle Kaesten mit einem zusaetzlichen
   Kasten versehen!"). opsCollapse() (operations.js) legt die Klappkarte um einen Inhalt, dessen Wurzel selbst
   schon ein <section> mit eigenem Rahmen, Hintergrund und Aussenabstand ist (.arf-ops-staff-context,
   .arf-ops-activity, .arf-preparation-checks, .arf-safety-suitability ...): Kasten im Kasten, live gemessen
   1px Rahmen + 14/16px Polsterung + eigener Hintergrund, 1px vom aeusseren Rand. Die Klappkarte IST der Kasten;
   die Wurzel im Inneren gibt Rahmen, Hintergrund und Aussenabstand ab und behaelt nur die Innenpolsterung, mit
   demselben Kopfabstand (20px oben) wie jede andere Karte (REQ-INTERN-KOPFABSTAND-KLAPPBOXEN-001). Bewusst als
   Regel am Baustein und nicht je Klasse: die naechste Klappkarte mit einer solchen Wurzel ist damit mitgeloest. */
.arf-ops-collapse>section{margin:0!important;border:0!important;background:transparent!important;box-shadow:none!important;padding:20px 16px 16px!important}
/* REQ-INTERN-BUCHUNGSTITEL-GROESSE-001 (Auftraggeber 2026-09-29, Screenshot /intern/rentalflow/buchung/466/:
   "Die Anzeige von Buchung -> ars-2026-00014 ist sehr gross und nicht korrekt formatiert!").
   Live gemessen: die <h2> im .arf-ops-detail-head hatte 40,96px Schrift und 20px Aussenabstand unten - die
   Theme-Regel fuer h2 schlug .arf-ops-detail-head h2 (1.45rem), weil dort kein !important steht, die
   Abschnittskoepfe daneben aber 18px tragen. Die Buchungsnummer ist ein Kartentitel wie die uebrigen und
   bekommt dasselbe Format wie im wp-admin (admin.css: 18px/1.25) - eine Groesse fuer dieselbe Rolle. */
.arf-app.arf-ops .arf-ops-detail-head h2{margin:2px 0 0!important;font-size:18px!important;line-height:1.25!important}

/* Schriftschnitt der Kachelbeschriftung in BEIDEN Zustaenden gleich: die alte Portalregel setzte am inneren Label immer 700, deshalb war der
 * kraeftigere Schnitt der gewaehlten Kachel (backend-ui.css, Punkt E) live nie sichtbar anders. Ohne sie waere nur die gewaehlte Kachel
 * fetter und um rund 7 px breiter (gemessen: 176 -> 169 px, test_req_intern_booking_detail_layout_001 Punkt E). Die Auswahl bleibt
 * farbunabhaengig ablesbar an Haekchen und 2 px Rahmen. */
.augite-choice--tiles .augite-check--tile>.augite-check__label{font-weight:650!important}
/* REQ-INTERN-STATUS-ABSCHLUSS-LAYOUT-001 (2026-09-29): Statuskarte und Buchungsabschluss der Buchungsakte.
 * URSACHE des Doppelrahmens: die Kachelgruppe traegt beide Klassensaetze (.augite-choice--tiles UND .arf-choice-row--tiles);
 * die alte Portalregel `.arf-choice-row--tiles label>span` (Zeile ~994) traf dadurch auch das Label <span> INNERHALB der neuen
 * Kachel und zeichnete einen zweiten Kasten hinein. Sie ist jetzt auf Gruppen ohne .augite-choice--tiles beschraenkt.
 * Gemessen an 42 Live-Buchungen: 1-3 Kacheln, mit Zusatzzeile 81 px hoch/370-498 px breit, ohne 56 px/144-221 px. */
.arf-app.arf-ops .arf-booking-status-form .augite-form-row{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;align-items:start;flex:1 1 100%;width:100%;min-width:0} /* das Formular ist ein Flex-Container (.arf-status-change-form): ohne flex-basis/width schrumpfte die Zeile auf 390 px */
.arf-app.arf-ops .arf-booking-status-form .augite-choice__options{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;align-items:stretch;flex:1 1 100%;width:100%;min-width:0} /* das fieldset ist ein Flex-Container: ohne flex-basis schrumpfte das Raster auf 390 px */
.arf-app.arf-ops .arf-booking-status-form .augite-choice--tiles .augite-check--tile{width:auto;max-width:none;margin:0;align-content:center}
.arf-app.arf-ops .arf-booking-status-form__submit{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px}
.arf-app.arf-ops .arf-booking-status-form__submit>.arf-inline-field{flex:1 1 320px;min-width:0;width:auto;max-width:none;margin:0}
.arf-app.arf-ops .arf-booking-status-form__submit>.arf-inline-field input{width:100%}
.arf-app.arf-ops .arf-closure-facts{margin:0 0 16px}
.arf-app.arf-ops .arf-closure-facts .arf-closure-facts__wide{grid-column:1/-1}
.arf-app.arf-ops .arf-closure-facts dd{margin:4px 0 0;font-weight:600}
/* Meldungsliste (rentalcore_issue_list_html): auch in Modalen, die aus dem .arf-app-Baum herausgezogen sind (portal) - deshalb ohne Scope */
.arf-issue-list{margin:0;padding:0;list-style:none;font-weight:400}
.arf-issue-list li{display:flex;align-items:flex-start;gap:8px;margin:4px 0}
.arf-app.arf-ops .arf-closure-facts dd{display:flex;align-items:center;gap:8px}
.arf-app.arf-ops .arf-closure-facts dd:has(>.arf-issue-list){display:block}
/* Tonungen wie in modal.css (.augite-scan-feedback): Amber = Warnung/Blocker, Hinweis neutral, Gruen = bereit/abgeschlossen. Der Ton liegt
 * auf der Kachel (Grund + Balken links), das Piktogramm traegt ihn zusaetzlich farbunabhaengig als Form. */
.arf-app.arf-ops .arf-closure-facts .arf-closure-facts--warn{background:var(--augite-warning-soft,#fff8e5);box-shadow:inset 4px 0 0 var(--augite-warning,#8a5a00)}
.arf-app.arf-ops .arf-closure-facts .arf-closure-facts--warn dd{color:var(--augite-warning,#8a5a00)}
.arf-app.arf-ops .arf-closure-facts .arf-closure-facts--ok{box-shadow:inset 4px 0 0 #1f7a4f}
/* Hinweise bleiben neutral: kein Balken (ein dicker neutralgrauer linker Rand an einem grossen Kasten ist verboten, box_left_edge_scan.py); das Info-Piktogramm traegt den Ton. */
.arf-app.arf-ops .arf-closure-form{padding:0}
.arf-app.arf-ops .arf-closure-action{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 20px;width:100%}
.arf-app.arf-ops .arf-closure-action>.description{flex:1 1 320px;margin:0}
.arf-app.arf-ops .arf-closure-action>.augite-form-row{flex:0 0 auto;margin:0}

/* REQ-INTERN-KACHELN-SYSTEMWEIT-001: Problemereignisse im Verlauf & Audit - Warnfarbe (Amber-Token wie modal.css) und Piktogramm statt Punkt. */
.arf-ops-timeline-item.is-warn .arf-ops-timeline-flag{display:inline-flex;align-items:flex-start;justify-content:center;width:16px;height:16px;margin:1px 0 0 -2px;color:var(--augite-warning,#8a5a00);z-index:1;background:#fbfcfb}
.arf-ops-timeline-item.is-warn .arf-ops-timeline-flag .arf-ui-icon{width:16px;height:16px}
.arf-ops-timeline-item.is-warn>div>strong{color:var(--augite-warning,#8a5a00)}

/* REQ-INTERN-KACHELN-SYSTEMWEIT-001: Zaehlzeile "N Blocker · N Warnungen" der Mitarbeiteruebergabe - ab einem Blocker Warnfarbe (Amber-Token) mit Balken und Piktogramm. */
.arf-ops-staff-context-grid>.arf-ops-context-hints.is-warn{background:var(--augite-warning-soft,#fff8e5);box-shadow:inset 4px 0 0 var(--augite-warning,#8a5a00)}
.arf-ops-staff-context-grid>.arf-ops-context-hints.is-warn>strong{color:var(--augite-warning,#8a5a00)}
.arf-ops-staff-context-grid>.arf-ops-context-hints>strong{display:inline-flex;align-items:center;gap:6px}
.arf-ops-staff-context-grid>.arf-ops-context-hints .arf-ui-icon{flex:0 0 auto;width:16px;height:16px}

/* REQ-INTERN-SCHAEDEN-ANLEGEN-001: Schadenakte auf /intern/ - breite Kennwertkachel und Fotogalerie (die wp-admin-Regel .arf-damage-photo-grid steht in admin.css, das /intern/ nie laedt). */
.arf-app.arf-ops .arf-facts>.arf-facts__wide{grid-column:1/-1}
.arf-app.arf-ops .arf-facts dd{overflow-wrap:anywhere}
.arf-app.arf-ops .arf-damage-photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;padding:4px 0 8px}
.arf-app.arf-ops .arf-damage-photo-grid figure{margin:0}
.arf-app.arf-ops .arf-damage-photo-grid img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover}
.arf-app.arf-ops .arf-damage-photo-grid figcaption{margin-top:4px;font-size:.8rem;overflow-wrap:anywhere}

/* REQ-INTERN-UEBERGABEFREIGABE-HANDLUNG-001: offene Kacheln der Uebergabefreigabe tragen eine Handlung (Sprung zur Karte) oder den Grund. */
.arf-app.arf-ops .arf-admin-gate-item>div{display:grid;gap:2px;align-content:start}
.arf-app.arf-ops .arf-admin-gate-item .arf-gate-fix{justify-self:start;font-weight:600;font-size:.85rem}

/* REQ-INTERN-BUCHUNG-ANLEGEN-001: Anlagemaske Buchung - Positionszeilen als Raster (Menge schmal, Mietartikel breit, zwei Geldfelder, Knopf), weitere Angaben eingeklappt. */
.arf-intern-booking-items{margin:0;padding:0;border:0;min-width:0}
.arf-intern-booking-items>legend{padding:0 0 6px;font-weight:600}
.arf-intern-booking-row{display:grid;grid-template-columns:88px minmax(0,2fr) minmax(0,1fr) minmax(0,1fr) auto;gap:10px 12px;align-items:end;margin:0 0 10px}
.arf-intern-booking-row .arf-inline-field{margin:0;min-width:0}
@media(max-width:700px){.arf-intern-booking-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.arf-intern-booking-row__type{grid-column:1/-1}}
.arf-intern-booking-more>summary{cursor:pointer;font-weight:600;min-height:36px;display:flex;align-items:center}
.arf-intern-booking-more[open]{display:grid;gap:10px 12px}


/* REQ-INTERN-KUNDENFORMULAR-KAESTEN-001: Kundenformular in Kaesten, Feldbreite nach Inhalt (12 Spalten, unter 720 px eine). */
.arf-app.arf-ops .arf-customer-form{display:block}
.arf-app.arf-ops .arf-customer-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:14px 16px;margin-top:12px}
.arf-app.arf-ops .arf-customer-grid [hidden]{display:none!important}
.arf-app.arf-ops .arf-customer-grid>.arf-span-3{grid-column:span 3}.arf-app.arf-ops .arf-customer-grid>.arf-span-4{grid-column:span 4}.arf-app.arf-ops .arf-customer-grid>.arf-span-6{grid-column:span 6}.arf-app.arf-ops .arf-customer-grid>.arf-span-8{grid-column:span 8}.arf-app.arf-ops .arf-customer-grid>.arf-span-9{grid-column:span 9}.arf-app.arf-ops .arf-customer-grid>.arf-span-12{grid-column:span 12}
.arf-app.arf-ops .arf-customer-grid .arf-inline-field{display:flex;flex-direction:column;gap:6px;min-width:0;margin:0}
.arf-app.arf-ops .arf-customer-grid .arf-inline-field input:not([type=checkbox]),.arf-app.arf-ops .arf-customer-grid .arf-inline-field select,.arf-app.arf-ops .arf-customer-grid .arf-inline-field textarea{width:100%;box-sizing:border-box;min-width:0}
.arf-app.arf-ops .arf-customer-no{margin:8px 0 0}
.arf-app.arf-ops .arf-customer-field .arf-inline-field{margin:0}
.arf-app.arf-ops .arf-check-line{display:flex;flex-direction:row;align-items:center;gap:10px;margin:12px 0 0}
.arf-app.arf-ops fieldset.arf-customer-shipping{border:0;margin:0;padding:0;min-width:0}
.arf-app.arf-ops fieldset.arf-customer-shipping.is-disabled{opacity:.5}
.arf-app.arf-ops .arf-customer-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 20px}
@media(max-width:720px){.arf-app.arf-ops .arf-customer-grid>[class*=arf-span-]{grid-column:1/-1}}
.arf-app.arf-ops .arf-customer-grid>.arf-col-start.arf-span-3{grid-column:1/span 3}.arf-app.arf-ops .arf-customer-grid>.arf-col-start.arf-span-4{grid-column:1/span 4}.arf-app.arf-ops .arf-customer-grid>.arf-col-start.arf-span-6{grid-column:1/span 6}.arf-app.arf-ops .arf-customer-grid>.arf-col-start.arf-span-8{grid-column:1/span 8}.arf-app.arf-ops .arf-customer-grid>.arf-col-start.arf-span-9{grid-column:1/span 9}
@media(max-width:720px){.arf-app.arf-ops .arf-customer-grid>.arf-col-start[class*=arf-span-]{grid-column:1/-1}}
.arf-app.arf-ops .arf-customer-grid select{min-height:var(--augite-control-h)}
.arf-app.arf-ops .arf-customer-form label.arf-check-line{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;text-align:left;gap:10px;margin:12px 0 0;width:auto;font-size:.9rem;font-weight:600}
.arf-app.arf-ops .arf-customer-form label.arf-check-line input[type=checkbox]{width:20px;height:20px;min-width:20px;min-height:0;margin:0;flex:0 0 auto}
.arf-app.arf-ops .arf-customer-form label.arf-check-line>span{margin:0}
.arf-app.arf-ops .arf-customer-actions label.arf-check-line{margin:0}

/* REQ-INTERN-FREIGABE-LAYOUT-001 (Auftraggeber 2026-09-30): Preis-/Kautionsfreigabe in der Buchungsakte (Angebotsformular: backend-ui.css, REQ-INTERN-ANGEBOTSKARTE-LAYOUT-001). Das Formular ist ein Flex-Container
   (.arf-status-change-form): ohne flex-basis blieben Tabelle und Notiz schmal, die Aktion hing neben der Notiz. */
.arf-app.arf-ops .arf-release-form{display:block}
.arf-app.arf-ops .arf-release-form .augite-table-wrap,.arf-app.arf-ops .arf-release-form table{width:100%;max-width:100%;box-sizing:border-box}
.arf-app.arf-ops .arf-release-note{display:flex;flex-direction:column;gap:6px;width:100%;margin:16px 0 0}
.arf-app.arf-ops .arf-release-note textarea{width:100%;box-sizing:border-box;min-height:84px}
.arf-app.arf-ops .arf-form-actions{display:flex;justify-content:flex-end;align-items:center;gap:12px;margin:14px 0 0}

/* REQ-FORMULAR-INLINE-FEHLER-001: sichtbare Inline-Fehlermeldung am Feld (gemeinsame Komponente arfInlineErrors() in public.js). */
body:not(.wp-admin) .arf-field-error{display:block;margin:4px 0 0;font-size:.875rem;font-weight:600;line-height:1.35;color:var(--augite-ux-danger,#a4262c)}
body:not(.wp-admin) .arf-field-error[hidden]{display:none!important}
body:not(.wp-admin) .ars-form [aria-invalid="true"]{border-color:var(--augite-ux-danger,#a4262c)!important;outline-color:var(--augite-ux-danger,#a4262c)}
/* REQ-KONTO-FELD-UNTERNEHMEN-AUSBLENDEN-001: .ars-form label{display:grid} (Theme) schlug das hidden-Attribut - das Feld "Unternehmen" blieb bei
   Privatkunden sichtbar. Gilt fuer JEDES per hidden ausgeblendete Element in einem Formular, nicht nur fuer dieses Feld. */
body:not(.wp-admin) .ars-form [hidden],body:not(.wp-admin) .arf-checkout [hidden]{display:none!important}
/* REQ-KONTO-BESTAETIGUNGSANSICHT-001: Bestaetigungsansicht nach dem Absenden (schmales Seitenformat, eine Karte). */
body:not(.wp-admin) .arf-checkout-confirmation{max-width:720px;margin:0 auto;padding:24px;border:1px solid var(--ars-line,#d9dcdf);background:#fff;display:grid;gap:12px}
body:not(.wp-admin) .arf-checkout-confirmation h2{margin:0}
body:not(.wp-admin) .arf-checkout-confirmation h3{margin:8px 0 0;font-size:1rem}
body:not(.wp-admin) .arf-checkout-confirmation__no{display:flex;flex-wrap:wrap;gap:8px;align-items:baseline;margin:0}
body:not(.wp-admin) .arf-checkout-confirmation__no strong{font-size:1.25rem}
body:not(.wp-admin) .arf-checkout-confirmation__steps{margin:0;padding-left:1.25rem;display:grid;gap:4px}
body:not(.wp-admin) .arf-checkout-confirmation p{margin:0}
/* REQ-INTERN-DIALOG-TEXTBREITE-001 (Auftraggeber 2026-09-30): der Rumpf der Nachrichtenansicht nutzt die volle Dialogbreite. Die Zweispalten-Regel der
   Dialogfelder (max-width:calc(50% - 8px)) galt auch fuer ihn - Text brach bei halber Breite um, der Hinweiskasten blieb schmal. */
.augite-modal .arf-message-body{flex:1 1 100%!important;width:100%!important;max-width:100%!important;box-sizing:border-box}
.augite-modal .arf-message-body :is(p,aside,ul,ol,table,div){max-width:100%}

/* REQ-INTERN-UEBERGABEFREIGABE-ABLAUF-001 (Auftraggeber 2026-09-30): Uebergabefreigabe als nummerierte Schrittfolge (Prozessablauf). Gleiche Regeln in /intern/ (public.css)
   und wp-admin (admin.css). Breit: Schritte nebeneinander, die Nummer traegt die Verbindungslinie zum naechsten Schritt; schmal: senkrechte Folge mit durchgehender Linie. */

/* REQ-INTERN-AKTE-TABS-001: Themen-Tabs der Akte (Variante D). Die Leiste scrollt NIE (Auftraggeber 2026-09-30): bei Platzmangel bricht sie um.
   Reiter und Inhalt sind eine Flaeche: der aktive Reiter wird zur Lasche der Inhaltsflaeche (gleicher Grund, durchgehende Rahmenlinie ohne Unterbrechung, Akzentkante oben),
   der Inhalt liegt in einer gerahmten Ablage, in der die Karten wie Blaetter auf einem Tablett stehen. */
.arf-app.arf-ops .arf-record-tabs{margin:8px 0 16px}
.arf-app.arf-ops .arf-record-tabs__list{display:flex;flex-wrap:wrap;gap:4px 4px;overflow:visible;margin:0;padding:0;border-bottom:1px solid var(--arf-ops-line-strong,#b9bcc0)}
.arf-app.arf-ops .arf-record-tabs__tab{appearance:none;background:#eceef0;border:1px solid var(--arf-ops-line,#d7d9dc);border-bottom:0;margin:0 0 -1px;padding:11px 18px;font:inherit;font-weight:700;font-size:.95rem;color:#565a5e;cursor:pointer;white-space:nowrap;display:inline-flex;align-items:center;gap:8px;border-radius:0}
.arf-app.arf-ops .arf-record-tabs__tab:hover{background:#f4f5f6;color:#1e2124}
.arf-app.arf-ops .arf-record-tabs__tab[aria-selected="true"]{background:#f6f7f8;border-color:var(--arf-ops-line-strong,#b9bcc0);border-top:3px solid #d9600a;padding-top:9px;color:#1e2124;position:relative;z-index:1}
.arf-app.arf-ops .arf-record-tabs__tab[aria-selected="true"]::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:#f6f7f8}
.arf-app.arf-ops .arf-record-tabs__tab:focus-visible{outline:2px solid #d9600a;outline-offset:-2px}
.arf-app.arf-ops .arf-record-tabs__count{background:#fff;color:#1e2124;font-size:.75rem;font-weight:700;padding:1px 7px;min-width:20px;text-align:center;border:1px solid var(--arf-ops-line,#d7d9dc)}
.arf-app.arf-ops .arf-record-tabs__attn{display:inline-grid;place-items:center;width:18px;height:18px;background:var(--augite-warning,#8a5a00);color:#fff;font-size:.75rem;font-weight:800;line-height:1}
.arf-app.arf-ops .arf-record-tabs__panel{padding:16px;background:#f6f7f8;border:1px solid var(--arf-ops-line-strong,#b9bcc0);border-top:0}
.arf-app.arf-ops .arf-record-tabs__panel>:last-child{margin-bottom:0}
.arf-app.arf-ops .arf-record-tabs__panel[hidden]{display:none}

/* REQ-INTERN-VERZOEGERUNGSENTGELT-001: Vorschlag Verzoegerungsentgelt im Rueckgabedialog (Steuerelementhoehe der zentralen Skala). */
.arf-ops .arf-late-fee{margin:12px 0 0;padding:12px 14px;border:1px solid #f0c29a;background:#fff8f1}
.arf-ops .arf-late-fee p{margin:4px 0}
.arf-ops .arf-late-fee__badge{display:inline-block;padding:0 8px;line-height:22px;border:1px solid #b84e08;color:#b84e08;font-size:12px;font-weight:700}
.arf-ops .arf-late-fee__form{display:grid;gap:6px;margin-top:10px;max-width:28rem}
.arf-ops .arf-late-fee__form input[type=text]{box-sizing:border-box;min-height:var(--augite-control-h);height:var(--augite-control-h);padding:var(--augite-control-pad);border:1px solid #c5c7c9;background:#fff}
.arf-ops .arf-late-fee__form input.augite-field--mid{width:8rem;max-width:100%}
.arf-ops .arf-late-fee__actions{margin-top:6px}

/* REQ-KONTO-PORTAL-SCHMAL-860-001 (Auftraggeberentscheidung 2026-09-30, Projektvorgabe seit 2026-09-25): das Kundenportal ist eine schmale Lesespalte.
   EINE Regel, EIN Token: --arf-portal-max-width (860px) auf der Huelle aller Kundenansichten - Portal /meine-buchung/, Gast-Ansicht per Token-Link
   (.arf-guest-view teilt die Klassen von .arf-portal) und Zahlung /zahlung/ (.arp-pay-page) sowie die Anmelde-Ansichten des Kundenportals (.arf-access-shell: Login, Passwort-Reset, Einladung, Bestaetigungen -
   REQ-KONTO-ANMELDUNG-SCHMAL-860-001). Mittig (margin-inline:auto); ab Viewport <= 860px + Seitenabstand
   volle Breite mit 14px Rand. Kopf und Navigation des Themes bleiben unangetastet. Die aelteren Portalregeln oben tragen dasselbe Token, keine hat mehr eine
   eigene Zahl (Ratsche: test_req_konto_portal_schmal_860_001.py). NIE auf das breite interne Layout heben. */
body:not(.wp-admin) .arf-app.arf-portal.arf-theme-page>.arf-theme-container,
body:not(.wp-admin) .arf-app.arp-pay-page.arf-theme-page>.arf-theme-container,
body:not(.wp-admin) .arf-app.arf-access-shell.arf-theme-page>.arf-theme-container{
  --arf-portal-max-width:860px;
  width:min(var(--arf-portal-max-width,860px),calc(100% - 48px))!important;max-width:var(--arf-portal-max-width,860px)!important;margin-inline:auto!important;box-sizing:border-box;
}
@media(max-width:860px){
  body:not(.wp-admin) .arf-app.arf-portal.arf-theme-page>.arf-theme-container,
  body:not(.wp-admin) .arf-app.arp-pay-page.arf-theme-page>.arf-theme-container,
  body:not(.wp-admin) .arf-app.arf-access-shell.arf-theme-page>.arf-theme-container{width:calc(100% - 28px)!important}
}
/* Tabellen im Portal: bei Enge Zeilenkarten statt horizontalem Scrollen (td traegt data-label aus public.js portalTable). */
@media(max-width:720px){
  body:not(.wp-admin) .arf-app.arf-portal .arf-portal-table-wrap{overflow:visible;border:0!important}
  body:not(.wp-admin) .arf-app.arf-portal .arf-portal-table,
  body:not(.wp-admin) .arf-app.arf-portal .arf-portal-panel--list .arf-portal-table{min-width:0!important;width:100%;display:block}
  body:not(.wp-admin) .arf-app.arf-portal .arf-portal-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
  body:not(.wp-admin) .arf-app.arf-portal .arf-portal-table tbody{display:grid;gap:10px}
  body:not(.wp-admin) .arf-app.arf-portal .arf-portal-table tbody tr{display:grid;gap:0;border:1px solid var(--arf-theme-line);background:#fff}
  body:not(.wp-admin) .arf-app.arf-portal .arf-portal-table tbody tr[hidden]{display:none!important}
  body:not(.wp-admin) .arf-app.arf-portal .arf-portal-table td{display:grid;grid-template-columns:minmax(6rem,34%) minmax(0,1fr);gap:4px 12px;align-items:start;padding:9px 12px!important;border-bottom:1px solid var(--arf-theme-line);overflow-wrap:anywhere}
  body:not(.wp-admin) .arf-app.arf-portal .arf-portal-table td::before{content:attr(data-label);color:var(--arf-theme-muted);font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
  body:not(.wp-admin) .arf-app.arf-portal .arf-portal-table td:not([data-label])::before{content:none}
  body:not(.wp-admin) .arf-app.arf-portal .arf-portal-table td:last-child{border-bottom:0}
}

/* REQ-HIDDEN-ATTRIBUT-GUARD-001: hidden gewinnt gegen jede display-Regel der App-Oberflaeche (siehe modal.css). */
.arf-app [hidden]:not(#augite-hidden-guard){display:none!important}
/* REQ-INTERN-AKTEN-TABS-WEITERE-001: Kennzahlenreihe der Kundenakte - vier Kacheln nebeneinander, Werte ohne Umbruch */
.arf-ops-customer-kpis .arf-ops-control-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.arf-ops-customer-kpis .arf-ops-control-metric strong{white-space:nowrap}
/* AUGITE-CONTROL-TOKENS:BEGIN - REQ-UI-STEUERELEMENTE-EINHEITLICH-001 (Auftraggeberentscheidung 2026-09-30, Fragebox).
 * EINE Definition aller Steuerelement-Masse fuer /intern/, wp-admin (RentalCore, AssetCore, Invoice, Payments, Procurement) und
 * das Kundenportal. Der Block steht byte-gleich in backend-ui.css (kanonisch), public.css und modal.css - jede Flaeche laedt
 * mindestens eine dieser Dateien; der Pruefstand test_req_ui_steuerelemente_einheitlich_001 erzwingt die Gleichheit.
 * Oeffentliche Website/Theme bleiben ausgenommen. Ausser in diesem Block steht in den erfassten Dateien kein Hoehen-,
 * Schrift-, Innenabstands- oder Radius-Literal fuer Steuerelemente. Hoehe: 40px mit Maus/Stift, 48px bei grobem Zeiger (Touch). Feldschrift (Felder, Selects, Textbereiche): 14px, bei Touch 16px
 * (gegen den iOS-Fokuszoom, Auftraggeber 2026-10-01); Schaltflaechen bleiben 14px. */
:root{--augite-control-h:40px;--augite-control-font-size:14px;--augite-field-font-size:14px;--augite-control-weight:400;--augite-button-weight:600;--augite-control-line-height:1.3;--augite-control-pad-x:12px;--augite-control-pad:0 var(--augite-control-pad-x);--augite-control-pad-area:8px var(--augite-control-pad-x);--augite-button-pad:0 16px;--augite-control-radius:0;--augite-control-border-width:1px;--augite-field-gap:12px;--augite-group-gap:16px;--augite-focus-ring-width:2px;--augite-focus-ring-offset:2px;--augite-control-hover-border:var(--augite-accent-strong,#b84e08);--augite-control-disabled-opacity:.55;--augite-control-error-border:var(--augite-danger,#b32d2e)}
@media (pointer:coarse){:root{--augite-control-h:48px;--augite-field-font-size:16px}}
/* Basisvertrag (Element-Ebene, bewusst niedrige Spezifitaet: jede Spezialregel nennt dieselben Token, daher gleiche Masse).
 * Felder/Selects: Hoehe, Schrift 14px/400, Innenabstand, Radius. Schaltflaechen: Mindesthoehe, 14px/600. Fokusring einheitlich. */
:is(.augite-modal:not(.arf-cart-period-dialog),.arf-ops,.arf-portal,:where(body.wp-admin #wpbody-content)) :is(input:where(:not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=range]):not([type=color]):not([type=file]):not([type=image]):not([type=submit]):not([type=button]):not([type=reset])),select){box-sizing:border-box;height:var(--augite-control-h);min-height:var(--augite-control-h);padding:var(--augite-control-pad);border-radius:var(--augite-control-radius);font-family:inherit;font-size:var(--augite-field-font-size);font-weight:var(--augite-control-weight);line-height:var(--augite-control-line-height)}
:is(.augite-modal:not(.arf-cart-period-dialog),.arf-ops,.arf-portal,body.wp-admin #wpbody-content) textarea{box-sizing:border-box;padding:var(--augite-control-pad-area);border-radius:var(--augite-control-radius);font-family:inherit;font-size:var(--augite-field-font-size);font-weight:var(--augite-control-weight);line-height:var(--augite-control-line-height)}
:is(.augite-modal:not(.arf-cart-period-dialog),.arf-ops,.arf-portal,:where(body.wp-admin #wpbody-content)) :is(.button,.augite-btn,.augite-icon-btn,.arf-ops-primary,.arf-ops-secondary,.arf-ops-icon-button,.augite-modal__button,input[type=submit],input[type=button],input[type=reset]),.augite-modal:not(.arf-cart-period-dialog) :is(button,[role=button]){box-sizing:border-box;min-height:var(--augite-control-h);border-radius:var(--augite-control-radius);font-family:inherit;font-size:var(--augite-control-font-size);font-weight:var(--augite-button-weight);line-height:var(--augite-control-line-height)}
:is(.augite-modal:not(.arf-cart-period-dialog),.arf-ops,.arf-portal,:where(body.wp-admin #wpbody-content)) :is(input,select,textarea,button,.button):focus-visible{outline:var(--augite-focus-ring-width) solid var(--augite-accent,#d9600a);outline-offset:var(--augite-focus-ring-offset)}
:is(.augite-modal:not(.arf-cart-period-dialog),.arf-ops,.arf-portal,:where(body.wp-admin #wpbody-content)) :is(input,select,textarea,button,.button):disabled{opacity:var(--augite-control-disabled-opacity);cursor:not-allowed}
:is(.augite-modal:not(.arf-cart-period-dialog),.arf-ops,.arf-portal,:where(body.wp-admin #wpbody-content)) :is(input,select,textarea):is(:user-invalid,[aria-invalid=true]){border-color:var(--augite-control-error-border)}
/* AUGITE-CONTROL-TOKENS:END */
/* REQ-INTERN-SCHRITTFOLGEN-001 (Stufe 2): Schrittfolgen der Buchungsakte. Die Huellen der Betriebsansicht stehen in backend-ui.css (beim Baustein der Betriebsansicht). */
/* Kundenportal: schmales Seitenformat, eigene Klassen (keine /intern/-Klassen). Marker = Zahl; "Aktuell" steht als Wort unter der Beschriftung, nicht nur als Farbe.
   Flex statt Raster: die Ein-Spalten-Regel des Portals (Entscheidung 18) setzt jedes Raster unter 768 px einspaltig; die Leiste wird dort eine senkrechte Liste. */
body:not(.wp-admin) .arf-portal-steps{list-style:none;margin:0;padding:0;display:flex;flex-wrap:nowrap;justify-content:space-between;gap:8px}
body:not(.wp-admin) .arf-portal-steps__step{display:flex;flex:1 1 0;flex-direction:column;align-items:center;gap:6px;margin:0;padding:0;text-align:center;min-width:0}
body:not(.wp-admin) .arf-portal-steps__text{display:grid;gap:2px;min-width:0}
body:not(.wp-admin) .arf-portal-steps__marker{display:inline-grid;place-items:center;flex:0 0 32px;box-sizing:border-box;width:32px;height:32px;border:2px solid var(--arf-theme-muted);border-radius:0;background:#fff;color:var(--arf-theme-muted);font-weight:700;line-height:1}
body:not(.wp-admin) .arf-portal-steps__label{display:block;min-width:0;overflow-wrap:anywhere;color:var(--arf-theme-muted)}
body:not(.wp-admin) .arf-portal-steps__note{display:block;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.035em}
body:not(.wp-admin) .arf-portal-steps__step.is-done .arf-portal-steps__marker{background:var(--augite-accent-strong,#b84e08);border-color:var(--augite-accent-strong,#b84e08);color:#fff}
body:not(.wp-admin) .arf-portal-steps__step.is-done .arf-portal-steps__label{color:inherit}
body:not(.wp-admin) .arf-portal-steps__step.is-current .arf-portal-steps__marker{background:var(--augite-accent-deep,#7a3506);border-color:var(--augite-accent-deep,#7a3506);color:#fff;box-shadow:0 0 0 3px #fff,0 0 0 5px var(--augite-accent-deep,#7a3506)}
body:not(.wp-admin) .arf-portal-steps__step.is-current .arf-portal-steps__label,body:not(.wp-admin) .arf-portal-steps__step.is-current .arf-portal-steps__note{color:var(--augite-accent-deep,#7a3506);font-weight:800}
body:not(.wp-admin) .arf-portal-steps-wrap{position:relative;min-width:0;margin:0 0 22px}
body:not(.wp-admin) .arf-portal-steps-wrap>.arf-portal-steps{margin:0}
body:not(.wp-admin) .arf-portal-steps__toggle{display:none}
@media(max-width:767px){body:not(.wp-admin) .arf-portal-steps{flex-direction:column;align-items:stretch;gap:10px}body:not(.wp-admin) .arf-portal-steps__step{flex-direction:row;align-items:center;gap:12px;text-align:left}
body:not(.wp-admin) .arf-portal-steps__toggle{display:flex;align-items:center;justify-content:space-between;gap:8px;box-sizing:border-box;width:100%;min-height:var(--augite-control-h);margin:0 0 10px;padding:0 var(--augite-control-pad-x);border:1px solid var(--arf-theme-muted);border-radius:0;background:#fff;color:inherit;font:inherit;font-weight:700;text-align:left;cursor:pointer}
body:not(.wp-admin) .arf-portal-steps__toggle::after{content:"";flex:0 0 auto;width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg)}
body:not(.wp-admin) .arf-portal-steps__toggle[aria-expanded=true]::after{transform:rotate(-135deg)}
body:not(.wp-admin) .arf-portal-steps__toggle:focus-visible{outline:2px solid var(--augite-accent,#d9600a);outline-offset:2px}
body:not(.wp-admin) .arf-portal-steps-wrap:not(.is-open)>.arf-portal-steps{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}}
@media(forced-colors:active){body:not(.wp-admin) .arf-portal-steps__step.is-current .arf-portal-steps__marker{outline:2px solid}}
/* REQ-CRM-NPS-ICS-001: Bewertungsseite (schmales Portalformat, ARF_Login_Screen) - Skala 0 bis 10 als Auswahlfelder, Steuerelemente aus den Tokens. */
body:not(.wp-admin) .arf-nps-scale{display:grid;gap:8px;min-width:0;margin:0;padding:0;border:0}
body:not(.wp-admin) .arf-nps-scale legend{padding:0;margin:0 0 8px;font-weight:700}
body:not(.wp-admin) .arf-nps-scale__options{display:grid;grid-template-columns:repeat(auto-fit,minmax(2.5rem,1fr));gap:4px}
body:not(.wp-admin) .arf-nps-form label.arf-nps-scale__option{position:relative;display:block;margin:0;font-weight:700}
body:not(.wp-admin) .arf-nps-scale__option input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
body:not(.wp-admin) .arf-nps-scale__option span{display:flex;align-items:center;justify-content:center;box-sizing:border-box;min-height:var(--augite-control-h);border:1px solid var(--ars-line);background:var(--ars-white);color:var(--ars-ink)}
body:not(.wp-admin) .arf-nps-scale__option input:checked+span{border-color:var(--ars-green);background:var(--ars-green);color:var(--ars-white)}
body:not(.wp-admin) .arf-nps-scale__option input:focus-visible+span{outline:var(--augite-focus-ring-width) solid var(--augite-accent,#d9600a);outline-offset:var(--augite-focus-ring-offset)}
body:not(.wp-admin) .arf-nps-scale__ends{display:flex;justify-content:space-between;gap:16px;color:var(--ars-muted);font-size:.88rem}
body:not(.wp-admin) .arf-nps-form textarea{box-sizing:border-box;width:100%;font-family:inherit;font-size:var(--augite-field-font-size,1rem)}
