.portal-page { background:#fff9ee; color:#32170e; }
.portal-page [hidden] { display:none !important; }
.portal-page .skip-link:not(:focus) { clip-path:inset(50%); width:1px; height:1px; overflow:hidden; white-space:nowrap; }
.portal-page a { color:#12592f; text-underline-offset:4px; }
.portal-page button, .portal-page input, .portal-page textarea, .portal-page select { font:inherit; }
.portal-page button, .portal-page a, .portal-page input, .portal-page select, .portal-page textarea { -webkit-tap-highlight-color:transparent; }
.portal-page :focus-visible { outline:3px solid #12592f; outline-offset:4px; }
.portal-page button { cursor:pointer; min-height:44px; border:1px solid #cbbcaa; border-radius:12px; padding:10px 15px; background:#fffdf8; color:#542311; font-weight:700; }
.portal-page button:disabled { cursor:not-allowed; opacity:.58; }
.portal-header { display:flex; align-items:center; justify-content:space-between; gap:24px; padding:20px max(24px,calc((100vw - 1320px)/2)); border-bottom:1px solid #e6d9c8; background:#fffdf8; }
.portal-brand { display:flex; align-items:center; gap:14px; text-decoration:none; font-family:Fredoka,sans-serif; font-size:1.4rem; color:#542311 !important; }
.portal-brand img { width:64px; height:64px; border-radius:50%; }
.portal-brand small { display:block; margin-top:3px; font-family:Montserrat,sans-serif; font-size:.72rem; font-weight:500; color:#75685f; }
.portal-header-actions { display:flex; align-items:center; flex-wrap:wrap; gap:18px; font-size:.88rem; font-weight:700; }
.portal-layout { max-width:1320px; margin:0 auto; display:grid; grid-template-columns:238px minmax(0,1fr); gap:48px; padding:40px 24px 72px; min-height:calc(100vh - 200px); }
.portal-sidebar { min-width:0; }
.portal-greeting { font-family:Fredoka,sans-serif; font-size:1.55rem; margin:12px 0 24px; overflow-wrap:anywhere; }
#portal-nav { display:grid; gap:5px; }
#portal-nav a { display:block; border-radius:12px; padding:13px 15px; text-decoration:none; color:#542311; font-size:.88rem; font-weight:600; }
#portal-nav a[aria-current=page] { background:#542311; color:#fffdf8; }
#portal-nav a:hover { background:#eedfca; color:#542311; }
.portal-nav-label { margin:22px 15px 8px; text-transform:uppercase; letter-spacing:.1em; font-size:.65rem; font-weight:800; color:#75685f; }
.portal-help { margin-top:28px; padding:20px; border:1px solid #ddcfb9; border-radius:18px; font-size:.79rem; line-height:1.7; }
.portal-help p { margin:8px 0; }
.portal-main { min-width:0; }
.portal-main h1 { font-size:clamp(1.8rem,3vw,2.8rem); margin:6px 0 14px; line-height:1.13; font-family:Fredoka,sans-serif; font-weight:600; }
.portal-main h2 { font-size:1.3rem; font-family:Fredoka,sans-serif; margin:0 0 15px; }
.portal-main h3 { font-size:1rem; margin:0 0 12px; }
.portal-intro { margin:0 0 28px; max-width:710px; color:#68584e; font-size:.92rem; line-height:1.8; }
.portal-card { background:#fffdf8; border:1px solid #e2d5c1; border-radius:20px; padding:26px; margin:0 0 20px; overflow-wrap:anywhere; }
.portal-card p { line-height:1.65; }
.portal-login { padding:clamp(24px,5vw,56px); background:#f3e5c7; max-width:760px; }
.portal-login h2 { font-size:2rem; }
.portal-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.portal-grid .portal-card { margin:0; }
.portal-form { display:grid; gap:18px; }
.portal-form fieldset { min-width:0; border:1px solid #d4c3aa; border-radius:12px; margin:18px 0; padding:18px; }
.portal-form legend { font-weight:700; font-size:.85rem; padding:0 8px; }
.portal-form label { display:grid; gap:8px; font-size:.85rem; font-weight:700; min-width:0; }
.portal-form input:not([type=checkbox]), .portal-form textarea, .portal-form select { width:100%; min-width:0; border:1px solid #bfb09a; border-radius:10px; background:white; color:#32170e; min-height:46px; padding:11px 12px; }
.portal-form textarea { min-height:96px; resize:vertical; }
.portal-form small, .portal-muted { color:#68584e; font-size:.78rem; font-weight:400; line-height:1.65; }
.portal-form .portal-checkbox { display:flex; flex-direction:row; align-items:flex-start; line-height:1.65; gap:12px; }
.portal-checkbox input { accent-color:#12592f; flex:0 0 20px; width:20px; min-width:20px; min-height:20px; height:20px; margin-top:1px; }
.portal-form-row { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.portal-actions { display:flex; align-items:center; flex-wrap:wrap; gap:12px; }
.portal-page .portal-primary { display:inline-flex; align-items:center; justify-content:center; min-height:46px; padding:12px 20px; border:1px solid #542311; border-radius:12px; background:#542311; color:#fffdf8; text-decoration:none; font-size:.87rem; font-weight:700; }
.portal-page .portal-danger { border-color:#a52217; color:#a52217; }
.portal-notice { padding:15px 18px; background:#f5e8c6; border:1px solid #d9bf82; border-radius:12px; font-size:.83rem; line-height:1.7; margin-bottom:22px; }
.portal-status { font-size:.86rem; line-height:1.7; margin-bottom:18px; border-radius:12px; }
.portal-status:empty { display:none; }
.portal-status:not(:empty) { padding:14px 18px; background:#e5f0df; border:1px solid #a6c69a; }
.portal-status.error { background:#fff0eb; border-color:#c98470; color:#811d11; }
.portal-empty { padding:40px 26px; text-align:center; border:1px dashed #c9b89e; border-radius:18px; background:#fffdf8; }
.portal-empty strong { display:block; font-family:Fredoka,sans-serif; font-size:1.35rem; margin-bottom:12px; }
.portal-toolbar { display:flex; align-items:end; flex-wrap:wrap; gap:14px; margin-bottom:22px; }
.portal-toolbar label { flex:1 1 150px; }
.portal-toolbar button { flex:0 0 auto; }
.portal-order-header { display:flex; justify-content:space-between; align-items:start; gap:16px; flex-wrap:wrap; margin-bottom:20px; }
.portal-order-header h2 { margin:0 0 5px; }
.portal-badges { display:flex; flex-wrap:wrap; gap:6px; margin:12px 0; }
.portal-badge { display:inline-block; border-radius:7px; padding:5px 8px; background:#eee4d4; font-size:.72rem; font-weight:700; }
.portal-badge.good { background:#dbeacf; color:#24542a; }
.portal-badge.warning { background:#fff0c2; color:#725005; }
.portal-order-lines { list-style:none; margin:0; padding:0; }
.portal-order-lines li { display:flex; justify-content:space-between; gap:16px; padding:12px 0; border-bottom:1px solid #eee3d5; font-size:.86rem; }
.portal-order-lines li span { min-width:0; }
.portal-order-lines small { display:block; margin-top:5px; color:#68584e; }
.portal-totals { display:grid; gap:9px; margin:20px 0; font-size:.88rem; }
.portal-totals div { display:flex; justify-content:space-between; gap:16px; }
.portal-totals div:last-child { font-weight:800; }
.portal-note { padding:12px 16px; background:#f8f0e2; border-radius:10px; font-size:.86rem; white-space:pre-wrap; }
.portal-table-wrap { overflow:auto; border:1px solid #e2d5c1; border-radius:15px; }
.portal-table { border-collapse:collapse; width:100%; font-size:.8rem; background:#fffdf8; }
.portal-table th { text-align:left; background:#eee2cb; color:#542311; }
.portal-table th, .portal-table td { padding:14px 12px; border-bottom:1px solid #e2d5c1; vertical-align:top; overflow-wrap:anywhere; }
.portal-table td small { display:block; margin-top:6px; color:#68584e; }
.portal-pagination { display:flex; align-items:center; justify-content:space-between; gap:14px; margin:20px 0; font-size:.8rem; }
.portal-stat { font-family:Fredoka,sans-serif; font-size:2.2rem; color:#542311; margin:6px 0; }
.portal-review-text { white-space:pre-wrap; }
.portal-stars { letter-spacing:3px; color:#85570d; font-size:1.2rem; }
.portal-chat { display:grid; gap:14px; max-height:480px; overflow:auto; margin-bottom:22px; padding:2px; }
.portal-message { padding:17px 20px; background:#f2e5ce; border-radius:16px; line-height:1.8; font-size:.88rem; white-space:pre-wrap; overflow-wrap:anywhere; }
.portal-message.user { background:#e5efdf; margin-left:28px; }
.portal-footer { border-top:1px solid #e2d5c1; padding:25px; display:flex; justify-content:center; gap:20px; flex-wrap:wrap; font-size:.75rem; color:#68584e; }
.portal-picture { width:64px; height:64px; object-fit:cover; border-radius:12px; }
.portal-item-title { display:flex; gap:15px; align-items:center; margin-bottom:20px; }
.portal-page details { border-top:1px solid #e2d5c1; padding-top:16px; margin-top:18px; }
.portal-page summary { cursor:pointer; font-weight:700; line-height:1.6; min-height:44px; }
.portal-page .portal-readonly { font-size:.8rem; border-left:3px solid #b88a32; padding-left:12px; line-height:1.7; }
.welcome-coupon { margin:0 0 28px; padding:24px 0; border-block:1px solid #c9dbbf; }
.welcome-coupon .eyebrow { color:#12592f; font-size:.75rem; letter-spacing:0; }
.welcome-coupon h2 { font-size:1.6rem; line-height:1.25; }
.welcome-coupon p { max-width:680px; line-height:1.65; }
.welcome-coupon-code { display:flex; align-items:center; flex-wrap:wrap; gap:12px; margin:18px 0; }
.welcome-coupon-code code { min-width:0; padding:10px 0; font-size:1.05rem; font-weight:700; color:#12592f; overflow-wrap:anywhere; }
.welcome-coupon .portal-actions > a, .welcome-coupon-code button { border-radius:6px; }
.welcome-coupon .portal-actions > a { min-height:44px; }
#welcome-coupon-copy-status:empty { display:none; }
.portal-totals small { display:block; margin-top:4px; font-size:.75rem; overflow-wrap:anywhere; }
.account-notifications, .product-announcement { margin:26px 0; padding:24px 0; border-block:1px solid #d4dccc; }
.account-notifications h2, .product-announcement h2 { font-size:1.35rem; line-height:1.35; margin:0 0 12px; }
.notification-list { list-style:none; padding:0; margin:16px 0; }
.notification-list li { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; padding:16px 0; border-bottom:1px solid #e2d5c1; }
.notification-list li > div { display:grid; gap:6px; min-width:0; flex:1 1 180px; overflow-wrap:anywhere; font-size:.875rem; }
.notification-list small { color:#68584e; font-size:.8125rem; }
.notification-list button, .product-announcement button, #notifications-retry { min-height:44px; border-radius:6px; white-space:normal; }
.product-announcement .portal-primary { border-radius:6px; width:fit-content; max-width:100%; }
.product-announcement p { line-height:1.65; overflow-wrap:anywhere; }
#notifications-status[role="alert"], #announcement-status[role="alert"] { color:#8a271c; }
.portal-repeat { margin-top:22px; border-top:1px solid #e2d5c1; padding-top:20px; }
.portal-repeat p { margin:12px 0 0; }
.portal-section-title { margin-top:36px; }
.portal-saved-actions { margin-top:20px; }
.portal-favorites, .portal-business-items { list-style:none; margin:16px 0 24px; padding:0; }
.portal-favorites li, .portal-business-items li { display:flex; align-items:center; gap:16px; padding:18px 0; border-bottom:1px solid #e2d5c1; }
.portal-favorites li > div, .portal-business-items li > div { min-width:0; flex:1; display:grid; gap:7px; overflow-wrap:anywhere; }
.portal-favorites span, .portal-business-items span { font-size:.8rem; color:#68584e; }
.portal-business-items label { display:grid; gap:6px; font-size:.78rem; }
.portal-business-items input { width:86px; min-height:44px; padding:8px; border:1px solid #c7b89e; border-radius:7px; background:#fffdf8; color:#542311; font:inherit; }
.portal-favorites button, .portal-business-items button, .portal-saved-actions button, #saved-retry, #business-retry { min-height:44px; }
.portal-request-details { display:grid; gap:16px; font-size:.86rem; }
.portal-request-details div { display:grid; grid-template-columns:minmax(95px,1fr) minmax(0,3fr); gap:14px; }
.portal-request-details dt { font-weight:700; }
.portal-request-details dd { margin:0; white-space:pre-wrap; overflow-wrap:anywhere; }
.portal-quote h3, .portal-quote h4 { overflow-wrap:anywhere; }
.portal-quote h4 { margin:22px 0 12px; }
.portal-recipe-card { display:flex; gap:20px; align-items:center; }
.portal-recipe-card > img { width:120px; height:120px; object-fit:cover; border-radius:12px; flex-shrink:0; }
.portal-recipe-card > div { min-width:0; flex:1; }
.portal-recipe-card h2 { font-size:1.3rem; overflow-wrap:anywhere; }
.portal-location-heading { display:flex; align-items:baseline; justify-content:space-between; gap:14px; flex-wrap:wrap; }
.portal-location-heading h3 { margin:0; overflow-wrap:anywhere; }
.portal-location-address { white-space:pre-wrap; overflow-wrap:anywhere; line-height:1.7; }
.portal-location-card .portal-muted { overflow-wrap:anywhere; }
.portal-map-help { padding-left:22px; font-size:.86rem; line-height:1.8; }
.portal-map-help li { margin:10px 0; }
.portal-recipe-stats caption { text-align:left; padding:16px 12px; font-weight:700; color:#542311; }
.portal-recipe-stats th:first-child { min-width:150px; }
.portal-recipe-stats td { font-variant-numeric:tabular-nums; }
#location-editor { scroll-margin-top:25px; }
#locations-list, #recipe-favorites-content { min-width:0; }
#recipe-favorites-retry, #locations-retry, #recipe-stats-refresh, .portal-location-card button { min-height:44px; }
@media(max-width:480px) { .portal-recipe-card { flex-direction:column; align-items:flex-start; } .portal-recipe-card > img { width:100%; height:160px; } }
@media(max-width:480px) { .portal-business-items li { flex-wrap:wrap; gap:12px; } .portal-business-items li > div { flex-basis:100%; } .portal-business-items label { flex:1; } .portal-request-details div { grid-template-columns:1fr; gap:5px; } }
@media(max-width:900px) { .portal-layout { grid-template-columns:190px minmax(0,1fr); gap:24px; } .portal-brand small { display:none; } .portal-brand { font-size:1.1rem; } .portal-grid { grid-template-columns:1fr; } }
@media(max-width:650px) { .portal-header { padding:15px 18px; gap:14px; align-items:flex-start; } .portal-brand { gap:9px; font-size:.97rem; } .portal-brand img { width:45px; height:45px; } .portal-header-actions { justify-content:flex-end; gap:8px; font-size:.73rem; } .portal-header-actions button { padding:8px; font-size:.73rem; } .portal-layout { display:block; padding:22px 18px 45px; } .portal-sidebar>.eyebrow, .portal-greeting, .portal-help { display:none; } #portal-nav { display:flex; flex-wrap:wrap; gap:6px; padding-bottom:22px; } #portal-nav a { padding:10px 12px; background:#f0e5d3; font-size:.73rem; min-height:44px; display:flex; align-items:center; } .portal-nav-label { flex-basis:100%; margin:12px 0 4px; } .portal-card { padding:20px; } .portal-form-row { grid-template-columns:1fr; } .portal-order-lines li { font-size:.78rem; } .portal-order-lines li b { flex-shrink:0; } .portal-intro { font-size:.86rem; } .portal-main h1 { margin-top:4px; } .portal-login h2 { font-size:1.6rem; } }
@media(prefers-reduced-motion:reduce) { .portal-page, .portal-page * { scroll-behavior:auto; } }
