:root { --green:#0d4d31; --brand:#176b45; --soft:#e7f3ec; --line:#d7ded9; --ink:#1d2822; --muted:#65736b; --warn:#fff5cf; --danger:#b42318; font-family:Arial,Helvetica,sans-serif; color:var(--ink); background:#f3f6f4; }
* { box-sizing:border-box; }
body { margin:0; min-height:100vh; background:#f3f6f4; }
button,input,select,textarea { font:inherit; }
.portal-header { position:sticky; top:0; z-index:10; min-height:60px; display:flex; align-items:center; gap:18px; padding:0 max(18px,calc((100vw - 1180px)/2)); background:var(--green); color:#fff; }
.portal-header strong { font-size:18px; }
.back-link,.quiet-button { color:#fff; text-decoration:none; background:transparent; border:0; opacity:.85; }
.quiet-button { margin-left:auto; cursor:pointer; }
.portal-main { width:min(1180px,calc(100% - 28px)); margin:24px auto 50px; }
.card { margin-bottom:18px; padding:22px; border:1px solid var(--line); border-radius:13px; background:#fff; box-shadow:0 9px 25px rgba(30,52,40,.07); }
.login-card { max-width:440px; margin:8vh auto; }
h1,h2,h3,p { margin-top:0; } h1 { font-size:25px; } h2 { margin-bottom:14px; font-size:20px; }
.stack-form,.feedback-form { display:grid; gap:12px; }
label { display:grid; gap:5px; color:var(--muted); font-size:12px; }
input,select,textarea { width:100%; min-height:42px; padding:8px 10px; border:1px solid #b8c4bc; border-radius:8px; background:#fff; color:var(--ink); }
textarea { resize:vertical; }
input:focus,select:focus,textarea:focus { outline:2px solid #70abd0; outline-offset:-1px; }
.primary-button,.secondary-button { min-height:42px; padding:0 15px; border-radius:8px; font-weight:700; cursor:pointer; }
.primary-button { border:1px solid var(--brand); background:var(--brand); color:#fff; }
.secondary-button { border:1px solid var(--brand); background:#fff; color:var(--green); }
.demo-note,.small-note { margin:13px 0 0; color:var(--muted); font-size:12px; }
.error-text { min-height:18px; color:var(--danger); }
.welcome-row,.section-head { display:flex; align-items:center; justify-content:space-between; gap:18px; }
.eyebrow { color:var(--brand); font-size:11px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.contact-box { text-align:right; color:var(--muted); font-size:13px; line-height:1.5; }
.portal-nav { display:flex; gap:6px; overflow:auto; margin:0 0 18px; padding:6px; border:1px solid var(--line); border-radius:10px; background:#fff; }
.portal-nav a { padding:9px 12px; border-radius:7px; color:var(--green); text-decoration:none; white-space:nowrap; }
.portal-nav a:hover { background:var(--soft); }
.portal-nav a[aria-current="page"] { background:var(--soft); font-weight:bold; }
.product-name > span + span { margin-left:5px; }
.customer-order { margin-top:15px; }
.customer-order > summary { cursor:pointer; padding:14px 4px; }
.ordered-lines { display:grid; gap:8px; }
.ordered-line { display:grid; grid-template-columns:minmax(0,1fr) minmax(220px,360px); gap:16px; border:1px solid var(--line); border-radius:9px; padding:14px; }
.cancellation-form summary { color:var(--green); cursor:pointer; min-height:44px; padding:10px 0; }
.cancellation-state { color:#67540c; background:var(--warn); border-radius:8px; padding:10px; }
.cancellation-state.is-confirmed { color:#165b38; background:#e6f4eb; }
@media (max-width:720px) { .ordered-line { grid-template-columns:1fr; gap:8px; } }
.section-head input { max-width:320px; }
.delivery-label { width:min(260px,100%); margin:0 0 14px; }
.order-deadline { margin:0 0 14px; padding:9px 11px; border-left:3px solid #d5a91e; background:var(--warn); color:#67540c; font-size:13px; }
.product-list { display:grid; gap:9px; }
.product-row { display:grid; grid-template-columns:82px minmax(220px,1fr) auto; gap:13px; align-items:center; min-height:106px; padding:11px 13px; border:1px solid #e0e5e2; border-radius:12px; background:#fff; }
.product-photo { width:78px; height:78px; display:grid; place-items:center; overflow:hidden; border:1px solid #e1e7e3; border-radius:10px; background:linear-gradient(145deg,#f5f8f6,#e1eee7); color:#6d8176; font-size:17px; font-weight:800; letter-spacing:.08em; }
.product-photo img { width:100%; height:100%; object-fit:contain; background:#fff; }
.product-name strong,.list-row strong { display:block; line-height:1.3; }
.product-name span,.list-row span { color:var(--muted); font-size:12px; }
.product-name b { display:block; margin-top:6px; color:var(--green); font-size:15px; }
.product-controls { display:grid; justify-items:end; gap:9px; }
.unit-choice { display:flex; align-items:center; gap:7px; }
.unit-choice select { width:116px; min-height:36px; padding:5px 8px; }
.unit-static { min-width:82px; padding:7px 10px; border-radius:99px; background:#f2f5f3; color:var(--muted); text-align:center; font-size:12px; }
.quantity-stepper { display:flex; align-items:center; justify-content:flex-end; gap:7px; }
.quantity-stepper output { min-width:38px; color:var(--ink); text-align:center; font-size:19px; font-weight:800; font-variant-numeric:tabular-nums; }
.step-button { width:39px; height:39px; padding:0; border:1px solid #9bcbb7; border-radius:50%; background:#fff; color:var(--brand); font-size:25px; line-height:1; cursor:pointer; }
.step-button.is-plus { border-color:#2b83f6; background:#2b83f6; color:#fff; }
.step-button:disabled { border-color:#d7ded9; background:#f4f6f5; color:#a8b2ac; cursor:default; }
.quantity-stepper.is-compact .step-button { width:32px; height:32px; font-size:20px; }
.quantity-stepper.is-compact output { min-width:28px; font-size:15px; }
.cart-row,.list-row { display:grid; gap:9px; align-items:center; padding:10px; border:1px solid #e0e5e2; border-radius:9px; }
.cart-row { grid-template-columns:minmax(220px,1fr) 112px 58px 95px 78px; margin-bottom:7px; background:#fbfcfb; }
.cart-unit { color:var(--muted); text-align:center; font-size:12px; }
.remove-line { padding:6px 4px; border:0; background:transparent; color:var(--danger); cursor:pointer; }
.cart-total { font-size:18px; font-weight:800; color:var(--green); }
.full-label { margin:12px 0; }
.simple-list { display:grid; gap:8px; }
.list-row { grid-template-columns:minmax(220px,1fr) auto; }
.list-actions { display:flex; gap:7px; align-items:center; }
.status-pill { display:inline-block; padding:5px 8px; border-radius:99px; background:var(--soft); color:var(--green); font-size:11px; white-space:nowrap; }
.feedback-form { grid-template-columns:1fr 1fr auto; align-items:end; margin-top:18px; padding-top:18px; border-top:1px solid var(--line); }
.feedback-form h3 { grid-column:1/-1; font-size:15px; margin-bottom:0; }.feedback-form .wide { grid-column:span 2; }
.portal-toast { position:fixed; right:18px; bottom:18px; max-width:360px; padding:11px 14px; border-radius:8px; background:#27352e; color:#fff; opacity:0; transform:translateY(7px); transition:.18s; pointer-events:none; }.portal-toast.show { opacity:1; transform:none; }
.catalog-card { padding:16px; }
.catalog-card h2 { margin:0; font-size:19px; }
.catalog-search { display:flex; gap:6px; width:min(390px,100%); }
.catalog-search input { min-width:0; }
.catalog-search .secondary-button { padding:0 10px; }
.catalog-tabs { display:flex; gap:4px; flex-wrap:wrap; align-items:center; margin:12px 0 9px; }
.catalog-tabs a { color:var(--green); text-decoration:none; padding:9px 11px; border-radius:6px; font-size:14px; }
.catalog-tabs a[aria-current="page"] { background:var(--soft); font-weight:bold; }
.catalog-tabs .cart-jump { margin-left:auto; }
.catalog-card .order-deadline { font-size:12px; padding:7px 9px; margin-bottom:8px; }
.catalog-notice { font-size:13px; line-height:1.45; background:#f2f6f3; padding:10px; border-radius:6px; margin-bottom:8px; }
.catalog-card .product-list { gap:3px; }
.catalog-card .product-row { grid-template-columns:48px minmax(0,1fr) auto; min-height:72px; padding:7px 9px; gap:10px; border-radius:6px; }
.catalog-card .product-photo { width:46px; height:46px; border-radius:6px; font-size:13px; }
.catalog-card .product-name strong { font-size:14px; }
.last-ordered { display:block; color:var(--muted); font-size:11px; margin-top:3px; }
.changed-article { display:block; color:#80620b; font-size:12px; margin-top:3px; }
.catalog-card .product-controls { display:flex; align-items:center; gap:10px; }
.catalog-card .product-controls select { width:94px; min-height:36px; padding:4px 6px; font-size:13px; }
.catalog-card .unit-static { min-width:62px; padding:5px 7px; }
.catalog-card .quantity-stepper { gap:3px; }
.catalog-card .quantity-stepper output { min-width:30px; font-size:16px; }
.catalog-card .step-button { width:36px; height:36px; font-size:23px; }
.favorite-button { width:34px; min-height:44px; padding:0; border:0; background:transparent; color:#69756f; font-size:25px; cursor:pointer; }
.favorite-button.is-favorite { color:#b58312; }
.is-unavailable { background:#f7f8f7; }
.unavailable-label { color:var(--muted); font-size:12px; }
.alternative-link,.changed-choice a { color:var(--green); font-size:13px; padding:8px 0; }
.changed-choice { grid-column:2/-1; display:flex; gap:14px; flex-wrap:wrap; align-items:center; }
.changed-choice label { display:flex; align-items:center; gap:6px; color:var(--ink); }
.changed-choice input { width:20px; min-height:20px; height:20px; margin:0; }
.catalog-pages { display:flex; justify-content:center; gap:20px; margin-top:14px; }
.reorder-link { display:block; color:var(--green); text-decoration:none; padding:3px 0; }
.reorder-link:hover strong { text-decoration:underline; }
.reorder-link span { font-size:12px; }
.ordered-line { padding:10px; gap:12px; }
.ordered-line .small-note { margin-top:5px; }
.ordered-lines { gap:5px; }
.photo-request-link { margin:5px 0 9px; font-size:12px; }
.photo-request-link a,.return-photo-link { color:var(--green); }
.return-photo-link { display:inline-block; padding:6px 0; font-size:12px; }
.photo-request-main { max-width:820px; }
.photo-upload-form { margin-top:16px; }
.photo-upload-form .small-note { margin:0; }
.request-photos { display:flex; flex-wrap:wrap; gap:10px; margin:12px 0; }
.request-photos a { display:block; }
.request-photos img { width:150px; height:150px; object-fit:contain; border:1px solid var(--line); border-radius:8px; background:#f5f7f6; }
.photo-withdraw { margin-top:18px; }
.visually-hidden { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0; }
@media (max-width:720px) {
    .portal-header { padding:0 14px; }.portal-header strong { font-size:15px; }
    .portal-main { width:min(100% - 18px,1180px); margin-top:12px; }.card { padding:15px; border-radius:10px; }
    .welcome-row,.section-head { align-items:flex-start; flex-direction:column; }.contact-box { text-align:left; }.section-head input { max-width:none; }
    .product-row { grid-template-columns:70px minmax(0,1fr); gap:10px; padding:10px 8px; border-width:0 0 1px; border-radius:0; }
    .product-photo { width:68px; height:68px; }
    .product-controls { grid-column:2; display:flex; align-items:center; justify-content:space-between; width:100%; }
    .unit-choice { flex-direction:row; }.unit-choice span { display:none; }.unit-choice select { width:105px; }
    .unit-static { min-width:70px; }
    .cart-row { grid-template-columns:minmax(0,1fr) auto 42px; }.cart-row .product-name { grid-column:1/-1; }.cart-row .line-price { text-align:right; }.cart-row .remove-line { grid-column:1/-1; justify-self:end; }
    .feedback-form { grid-template-columns:1fr; }.feedback-form h3,.feedback-form .wide { grid-column:auto; }.feedback-form .secondary-button { min-height:44px; }
    .list-row { grid-template-columns:1fr; }.list-actions { flex-wrap:wrap; }
    .catalog-card { padding:11px; }
    .catalog-card .section-head { gap:8px; }
    .catalog-search { width:100%; }
    .catalog-tabs { gap:0; margin-top:6px; }
    .catalog-tabs a { padding:9px 8px; font-size:13px; }
    .catalog-tabs .cart-jump { margin-left:0; }
    .catalog-card .product-row { grid-template-columns:40px minmax(0,1fr); gap:5px 8px; padding:7px 3px; }
    .catalog-card .product-photo { width:38px; height:38px; grid-row:1/3; align-self:start; }
    .catalog-card .product-controls { grid-column:2; justify-content:space-between; width:100%; gap:7px; }
    .catalog-card .product-controls select { width:94px; min-height:40px; }
    .catalog-card .step-button { width:40px; height:40px; }
    .catalog-card .changed-choice { grid-column:2; gap:4px; }
}

/* Compact portal only: do not compress login, staff or photo-upload forms. */
.portal-compact .portal-header { height:48px; min-height:48px; gap:12px; padding:0 max(14px,calc((100vw - 1180px)/2)); }
.portal-compact .portal-brand { flex:none; font-size:16px; letter-spacing:.03em; }
.portal-identity { display:flex; align-items:center; gap:7px; flex:1; min-width:0; margin:0; font-size:14px; font-weight:500; }
.portal-identity > span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.portal-identity small { flex:none; font-size:12px; opacity:.8; }
.portal-switch { flex:none; color:#fff; font-size:12px; font-weight:700; padding:6px 8px; border:1px solid rgba(255,255,255,.55); border-radius:6px; text-decoration:none; min-height:32px; display:inline-flex; align-items:center; }
.portal-person { flex:none; max-width:32vw; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:12px; opacity:.9; }
.portal-compact .portal-header form { flex:none; margin:0; }
.portal-compact .portal-header button { min-height:44px; font-size:12px; padding:0 4px; }
.portal-compact .portal-main { margin-top:8px; }
.portal-compact .portal-nav { gap:2px; flex-wrap:wrap; overflow:visible; padding:2px; margin-bottom:8px; box-shadow:none; }
.portal-compact .portal-nav a { display:flex; align-items:center; min-height:40px; padding:6px 10px; font-size:13px; }
.portal-compact .portal-nav .cart-jump { margin-left:auto; font-weight:bold; }
.portal-compact .contact-box { text-align:left; }
.portal-compact .catalog-card { padding:10px; box-shadow:none; }
.catalog-toolbar { position:sticky; top:48px; z-index:5; display:grid; grid-template-columns:auto minmax(210px,1fr); align-items:center; gap:8px; background:#fff; padding:4px 0; border-bottom:1px solid var(--line); }
.portal-compact .catalog-tabs { grid-column:1; grid-row:1; margin:0; gap:2px; }
.portal-compact .catalog-tabs a { min-height:40px; display:flex; align-items:center; padding:6px 10px; }
.portal-compact .catalog-search { grid-column:2; grid-row:1; width:100%; max-width:540px; justify-self:end; }
.portal-compact .catalog-search input { min-height:40px; }
.portal-compact .catalog-search button { min-height:40px; }
.catalog-meta { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:0 12px; margin:2px 0 4px; }
.portal-compact .catalog-meta .order-deadline { margin:0; padding:4px 0; background:none; border:0; font-size:11px; }
.portal-compact .photo-request-link { display:flex; flex-wrap:wrap; gap:0 12px; margin:0; font-size:11px; }
.portal-compact .photo-request-link a { display:inline-flex; align-items:center; min-height:32px; }
.photo-special-case { margin-top:10px; padding:12px 16px; box-shadow:none; }
.photo-special-case summary { min-height:44px; display:flex; align-items:center; color:var(--green); font-size:13px; cursor:pointer; }
.photo-special-case summary::after { content:'⌄'; margin-left:auto; padding-left:10px; font-size:20px; line-height:1; }
.photo-special-case details[open] summary::after { transform:rotate(180deg); }
.photo-special-case .small-note { margin:3px 0 9px; }
.photo-special-case .photo-request-link { gap:8px 16px; }
.photo-special-case .photo-request-link a { min-height:44px; font-size:13px; }
.portal-compact #bestellen,.portal-compact #warenkorb { scroll-margin-top:56px; }
.portal-compact .product-row { scroll-margin-top:155px; }
.portal-compact a:focus-visible,.portal-compact button:focus-visible { outline:2px solid #2687c8; outline-offset:2px; }
@media (max-width:640px) {
    .portal-compact .portal-header { gap:8px; padding:0 10px; }
    .portal-compact .portal-main { width:calc(100% - 16px); }
    .portal-compact .portal-nav a { min-height:44px; padding:6px 4px; font-size:12px; }
    .portal-compact .catalog-card { padding:8px; }
    .catalog-toolbar { grid-template-columns:minmax(0,1fr); gap:0; }
    .portal-compact .catalog-search { grid-column:1; grid-row:1; max-width:none; }
    .portal-compact .catalog-search input { font-size:16px; min-height:44px; }
    .portal-compact .catalog-search button { min-height:44px; }
    .portal-compact .catalog-tabs { grid-column:1; grid-row:2; }
    .portal-compact .catalog-tabs a { min-height:44px; padding:6px 8px; font-size:13px; }
    .portal-compact .photo-request-link a { min-height:44px; }
    .catalog-meta { gap:0 8px; }
}
@media (max-width:420px) { .portal-identity small { display:none; } .portal-identity { font-size:12px; } }

/* A compact, price-free checkout; no account/upload controls in this area. */
#warenkorb h2 { margin:0; font-size:18px; }
#warenkorb h2 small { font-weight:400; font-size:13px; }
.cart-delivery { display:flex; flex-wrap:wrap; align-items:end; gap:8px; margin:10px 0; }
.cart-delivery label { width:155px; }
.cart-delivery button { min-height:40px; }
.checkout-lines { display:grid; gap:0; }
.checkout-line { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:4px 12px; align-items:center; padding:8px 0; border-bottom:1px solid var(--line); }
.checkout-line > strong { font-size:14px; overflow-wrap:anywhere; }
.checkout-quantity { display:flex; gap:7px; align-items:center; flex-wrap:wrap; margin:0; }
.checkout-quantity input:not([type="hidden"]) { width:70px; min-height:40px; text-align:right; }
.checkout-quantity span { min-width:24px; font-size:13px; }
.checkout-quantity button { min-height:40px; padding:5px 8px; font-size:12px; }
.checkout-line > .error-text,.checkout-line > details { grid-column:1/-1; margin:2px 0; font-size:13px; }
.cart-review summary { color:var(--green); min-height:40px; display:flex; align-items:center; cursor:pointer; }
.cart-review p { margin:5px 0; }
.cart-confirm { display:flex; gap:8px; align-items:center; }
.cart-confirm input { width:20px; height:20px; min-height:20px; }
.checkout-submit { margin-top:12px; }
.checkout-submit p { margin:0; }
.primary-button:disabled { opacity:.5; cursor:not-allowed; }
@media (max-width:640px) {
    .checkout-line { grid-template-columns:1fr; }
    .checkout-quantity { justify-content:flex-end; }
    .checkout-quantity input:not([type="hidden"]) { font-size:16px; min-height:44px; }
    .cart-delivery { gap:6px; }
    .cart-delivery label { width:calc(50% - 3px); }
    .cart-delivery button { min-height:44px; }
}
.remove-line.visibility-target{outline:2px solid #a6291d;outline-offset:3px}
.remove-line:target{outline:3px solid #a6291d;outline-offset:3px}
.customer-order .order-acknowledged,.customer-order .order-awaiting{display:block;margin-top:6px;font-size:13px;font-weight:400;line-height:1.4}
.customer-order .order-acknowledged{color:#17613f}.customer-order .order-awaiting{color:#65736b}
.catalog-card .product-quantity{width:72px;min-width:0;min-height:36px;padding:5px;text-align:center;font-size:16px;font-weight:700;font-variant-numeric:tabular-nums;border:1px solid var(--line);border-radius:6px;background:#fff;color:inherit;scroll-margin-top:130px}
.catalog-card .product-quantity:focus{outline:2px solid var(--green);outline-offset:2px}
.catalog-card .product-quantity[aria-invalid="true"]{outline:2px solid #a6291d;outline-offset:2px}
.catalog-card .quantity-save{min-height:36px;padding:5px 9px;border:1px solid var(--green);border-radius:6px;background:var(--green);color:#fff;font-weight:700;cursor:pointer}
@media(max-width:640px){.catalog-card .product-controls{flex-wrap:wrap}.catalog-card .product-quantity{min-height:44px;width:66px}.catalog-card .quantity-save{min-height:44px}}
/* 27.10.2026: "Meine Bestellungen" on phones. Delivery day and preferred time as two clear
   columns (iOS date fields are wider than their label otherwise); an opened order is framed
   so the next order is clearly separate. */
.order-delivery-change{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px 14px;align-items:end}
.order-delivery-change label{width:auto;min-width:0}
.order-delivery-change input[type="date"]{-webkit-appearance:none;appearance:none;display:block;min-width:0;width:100%;box-sizing:border-box}
.order-delivery-change button,.order-delivery-change .small-note{grid-column:1/-1;justify-self:start;margin:0}
@media(max-width:360px){.order-delivery-change{grid-template-columns:1fr}}
#historie .customer-order{margin:0 0 16px}
#historie .customer-order[open]{border:2px solid var(--brand);background:#f6faf7;box-shadow:0 4px 14px rgba(13,77,49,.12)}
#historie .customer-order[open]>summary{border-bottom:1px solid var(--line);margin:-2px -2px 10px;padding-bottom:10px}
#historie .customer-order[open] .ordered-line{background:#fff}
/* K16 27.10.2026: "Zugänge für Ihr Restaurant" (account view). */
.team-message{margin:8px 0;padding:8px 10px;border-left:4px solid var(--brand);background:var(--soft)}
.team-message.is-error{border-color:var(--danger);background:#fdecec}
.team-invite{margin:10px 0;padding:10px;border:1px solid #e9d38c;border-radius:9px;background:#fffbea}
.team-invite input{margin:4px 0;font-size:13px}
.team-share a{margin-right:6px;font-weight:700}
.team-list{display:grid;gap:6px;margin:10px 0}
.team-row{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 12px;align-items:center;padding:8px 10px;border:1px solid var(--line);border-radius:9px}
.team-row > div:first-child{display:grid;gap:2px;min-width:0}
.team-row span{font-size:13px;color:var(--muted);overflow-wrap:anywhere}
.team-row.is-removed{opacity:.65}
.team-row.needs-fix,.team-add .needs-fix{outline:3px solid var(--danger);outline-offset:2px}
.team-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.team-actions form{margin:0}
.team-actions button{min-height:40px;padding:6px 10px;font-size:13px}
.team-actions .danger-quiet{color:var(--danger);border-color:#e4b4ae;background:#fff}
.team-add{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) auto;gap:8px;align-items:end;padding-top:10px;border-top:1px solid var(--line)}
@media(max-width:640px){.team-add{grid-template-columns:1fr}.team-actions button{min-height:44px}}
