.portal-row-clickable{cursor:pointer;transition:background-color .15s ease}.portal-row-clickable:focus-visible td,.portal-row-clickable:hover td{background:var(--soft-surface,#f3f7f5)}.portal-row-clickable:focus-visible{outline:2px solid var(--mint-strong,#2f8f5b);outline-offset:-2px}.portal-skel{background:linear-gradient(90deg,var(--neutral-50) 25%,var(--neutral-100) 37%,var(--neutral-50) 63%);background-size:400% 100%;border-radius:var(--radius-xs);animation:portal-skel 1.4s ease infinite}.portal-skel-row{cursor:default}.portal-shell-skeleton,.portal-skel-row{pointer-events:none}.portal-skeleton-nav-row,.portal-skeleton-nav-row:hover{background:transparent}.portal-skeleton-page{display:flex;flex-direction:column;gap:24px}.portal-skeleton-heading{display:flex;flex-direction:column;gap:10px}.portal-skeleton-card{display:flex;flex-direction:column;gap:18px;min-height:280px}.portal-skeleton-card-head{align-items:center;display:flex;gap:16px;justify-content:space-between}.portal-skeleton-detail{display:flex;flex-direction:column;gap:24px}.portal-skeleton-detail-head{align-items:center;display:flex;justify-content:space-between}.portal-skeleton-detail-grid{display:grid;gap:20px;grid-template-columns:minmax(0,1.2fr) minmax(280px,.8fr)}@media (max-width:760px){.portal-shell-skeleton{display:block}.portal-shell-skeleton .portal-sidebar{display:none}.portal-shell-skeleton .portal-page{padding:20px 16px 40px}.portal-skeleton-detail-grid{grid-template-columns:1fr}}@keyframes portal-skel{0%{background-position:100% 50%}to{background-position:0 50%}}@media (prefers-reduced-motion:reduce){.portal-skel{animation:none}}.portal-grow{flex:1;min-width:0}.portal-pm-row{align-items:center;display:flex;gap:12px;justify-content:space-between}.portal-pm-actions{align-items:center;display:flex;flex:0 0 auto;flex-wrap:wrap;gap:8px;justify-content:flex-end}.portal-pm-active-control{align-items:center;display:flex;flex-direction:column;gap:4px}.portal-pm-active-label{color:var(--muted);font-size:.72rem;font-weight:700;white-space:nowrap}.portal-pm-add-actions{margin-top:20px}@media (max-width:760px){.portal-pm-add-actions{margin-top:4px}}.portal-pm-types{margin-bottom:14px}.portal-pm-inline{display:flex;gap:8px;width:100%}.portal-field .portal-pm-inline input{flex:1 1 auto;min-width:0;width:auto}.portal-field .portal-pm-inline select{flex:0 0 auto;width:auto}.portal-field select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#fff;background-image:linear-gradient(45deg,transparent 44%,var(--muted) 44%,var(--muted) 56%,transparent 56%),linear-gradient(135deg,transparent 44%,var(--muted) 44%,var(--muted) 56%,transparent 56%);background-position:calc(100% - 18px) 50%,calc(100% - 12px) 50%;background-repeat:no-repeat;background-size:6px 6px;border:1px solid var(--line);border-radius:10px;color:var(--ink);font:inherit;padding:10px 36px 10px 12px;width:100%}.portal-pm-note{margin-top:6px}.portal-pay-progress{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}.portal-pay-bar{background:var(--line);border-radius:999px;height:10px;overflow:hidden}.portal-pay-bar-fill{background:var(--mint-strong);border-radius:999px;display:block;height:100%;transition:width .3s ease}.portal-pay-figures{display:flex;gap:24px}.portal-pay-figures>div{display:flex;flex-direction:column}.portal-pay-figures strong{font-size:1.1rem}.portal-pay-list{max-width:100%;margin-top:4px;min-width:0}.portal-pay-item,.portal-pay-list-head{align-items:center;-moz-column-gap:8px;column-gap:8px;display:grid;grid-template-columns:minmax(92px,.85fr) minmax(86px,.75fr) minmax(110px,1fr) minmax(156px,1.4fr);min-width:0}.portal-pay-list-head{color:var(--muted);font-size:.75rem;font-weight:800;letter-spacing:.02em;padding:0 10px 3px;text-transform:uppercase}.portal-pay-item{background:var(--soft-surface);border:1px solid var(--line);border-radius:10px;padding:12px 10px}.portal-pay-list-head>span:first-child,.portal-payment-tracking-card .portal-pay-item>.portal-pay-row-marker{display:none}.portal-pay-list-head>span:nth-child(3){text-align:left}.portal-pay-list-head>span:nth-child(5){text-align:center}.portal-payment-tracking-card .portal-pay-amount{justify-self:start;text-align:left}.portal-payment-tracking-card .portal-pay-actions,.portal-payment-tracking-card .portal-pay-state-cell{justify-content:center}.portal-payment-tracking-card .portal-pay-actions .portal-button{font-size:.72rem;padding:6px 8px}.portal-pay-detail-marker,.portal-pay-row-marker{background:#699274;border-radius:50%;display:block;height:5px;width:5px}.portal-pay-person{min-width:0;overflow-wrap:anywhere}.portal-pay-mobile-label{color:var(--muted);display:none;font-size:.7rem;font-weight:800;text-transform:uppercase}.portal-pay-receipt-cell,.portal-pay-state-cell{align-items:center;display:flex;flex-wrap:wrap;min-width:0}.portal-receipt-thumb{background:none;border:1px solid var(--line);border-radius:8px;flex:0 0 auto;height:44px;overflow:hidden;padding:0;width:44px}.portal-receipt-thumb img{height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.portal-receipt-none{flex:0 0 auto;font-size:.8rem}.portal-receipt-viewer{background:var(--panel,#fff);border-radius:16px;max-height:90vh;max-width:520px;overflow:auto;padding:16px;width:min(520px,92vw)}.portal-receipt-viewer img{border-radius:10px;display:block;height:auto;max-width:100%}.portal-pay-confirmed{color:var(--mint-strong,#2ea06e)}.portal-pay-confirmed,.portal-pay-rejected{flex:0 0 auto;font-weight:800;white-space:nowrap}.portal-pay-rejected{color:var(--coral,#e26d5a)}.portal-pay-actions{display:flex;flex:0 0 auto;flex-wrap:wrap;gap:6px;min-width:0}.portal-extras-list{display:grid;gap:0;max-width:100%;margin-top:14px;min-width:0}.portal-extras-item,.portal-extras-list-head{align-items:center;display:grid;gap:6px;grid-template-columns:minmax(92px,1.15fr) repeat(2,minmax(76px,.95fr)) minmax(100px,1.15fr);min-width:0}.portal-extras-list-head{color:var(--muted);font-weight:900;letter-spacing:.04em;font-size:.68rem;padding:0 8px 8px;text-transform:uppercase}.portal-extras-item{background:var(--soft-surface,#f7faf8);border:1px solid var(--line);border-radius:10px;margin-top:8px;padding:12px 8px}.portal-extras-list-head>span:first-child,.portal-service-tip-card .portal-extras-item>.portal-pay-row-marker{display:none}.portal-extras-list-head>span:nth-child(n+3){text-align:center}.portal-extras-state,.portal-extras-value{align-items:flex-start;display:flex;flex-direction:column;gap:3px;min-width:0}.portal-extras-person{display:flex;flex-direction:column;gap:2px;min-width:0;overflow-wrap:anywhere}.portal-extras-person .portal-muted{font-size:inherit}.portal-extras-amounts{display:contents}.portal-extras-value strong{font-size:.84rem;font-variant-numeric:tabular-nums;white-space:nowrap}.portal-extras-state,.portal-service-tip-card .portal-extras-value{align-items:center;text-align:center}.portal-extras-state{font-size:.78rem}.portal-service-tip-card .portal-extras-state .portal-badge{background:transparent;padding:0;text-align:center;white-space:normal}.portal-scan-menu-list{display:flex;flex-direction:column;gap:8px;margin:10px 0;max-height:46vh;overflow-y:auto}.portal-scan-menu-row{align-items:center;display:flex;gap:8px}.portal-scan-menu-cat,.portal-scan-menu-name,.portal-scan-menu-price,.portal-scan-menu-row input[type=text]{border:1px solid var(--line,#dce3df);border-radius:8px;font:inherit;min-width:0;padding:8px 10px}.portal-scan-menu-name{flex:2}.portal-scan-menu-cat{flex:1}.portal-scan-menu-price{flex:0 0 92px;width:92px}.portal-pay-payer{align-items:center;cursor:help;display:inline-flex;gap:4px;position:relative}.portal-pay-hint{color:var(--mint-strong,#2f8f5b);font-size:.8rem}.portal-pay-tooltip{background:var(--ink,#151716);border-radius:10px;bottom:calc(100% + 8px);box-shadow:0 12px 30px rgba(0,0,0,.22);color:#fff;display:none;flex-direction:column;gap:6px;left:0;max-width:260px;padding:8px 11px;position:absolute;white-space:normal;z-index:30}.portal-pay-tooltip-row{align-items:center;display:flex;gap:12px;justify-content:space-between;min-width:170px}.portal-pay-item-tooltip{width:min(320px,calc(100vw - 32px))}.portal-pay-allocation-tooltip{box-sizing:border-box;width:min(270px,calc(100vw - 32px))}.portal-pay-allocation-tooltip .portal-pay-tooltip-row{min-width:0}.portal-pay-item-tooltip .portal-pay-tooltip-row{align-items:start;display:grid;gap:8px;grid-template-columns:7px minmax(0,1fr) minmax(38px,auto);min-width:0;padding:4px 0}.portal-pay-item-tooltip .portal-pay-tooltip-row+.portal-pay-tooltip-row{border-top:1px solid rgba(255,255,255,.16)}.portal-pay-detail-marker{background:#9fd1ad;margin-top:.48em}.portal-pay-detail-name{line-height:1.35;min-width:0}.portal-pay-detail-quantity{font-variant-numeric:tabular-nums;text-align:right}.portal-pay-tooltip-row strong{color:#fff;font-weight:900;white-space:nowrap}.portal-pay-payer:focus .portal-pay-tooltip,.portal-pay-payer:focus-within .portal-pay-tooltip,.portal-pay-payer:hover .portal-pay-tooltip{display:flex}.portal-pay-amount{cursor:help;flex:0 0 auto;position:relative;text-align:right;white-space:nowrap}.portal-pay-amount-tooltip{box-sizing:border-box;left:auto;max-width:calc(100vw - 32px);min-width:0;right:0;width:390px}.portal-pay-amount-tooltip .portal-pay-tooltip-row{white-space:nowrap}.portal-pay-progress-paid{align-self:flex-start;text-align:left}.portal-pay-progress-tooltip{left:0;min-width:230px;right:auto}.portal-pay-amount:focus .portal-pay-tooltip,.portal-pay-amount:focus-within .portal-pay-tooltip,.portal-pay-amount:hover .portal-pay-tooltip{display:flex}@media (min-width:881px){.portal-service-tip-card .portal-extras-state .portal-badge{width:100%}.portal-pay-item,.portal-pay-list-head{-moz-column-gap:clamp(12px,2.5cqi,18px);column-gap:clamp(12px,2.5cqi,18px);grid-template-columns:minmax(92px,.85fr) minmax(86px,.75fr) minmax(110px,1fr) minmax(156px,1.4fr);padding-inline:12px}.portal-pay-receipt-cell{padding-left:4px}.portal-extras-item,.portal-extras-list-head{-moz-column-gap:clamp(12px,2.5cqi,18px);column-gap:clamp(12px,2.5cqi,18px);grid-template-columns:minmax(104px,1.2fr) repeat(2,minmax(84px,1fr)) minmax(108px,1.15fr);padding-inline:12px}}@container (max-width: 450px){.portal-pay-item,.portal-pay-list-head{-moz-column-gap:8px;column-gap:8px;grid-template-columns:minmax(72px,.9fr) minmax(66px,.75fr) minmax(96px,1fr) minmax(126px,1.3fr);padding-inline:6px}.portal-pay-list-head{font-size:.62rem}.portal-payment-tracking-card .portal-pay-actions .portal-button{font-size:.64rem;padding:5px 6px}.portal-receipt-none{font-size:.7rem}.portal-extras-item,.portal-extras-list-head{-moz-column-gap:8px;column-gap:8px;grid-template-columns:minmax(68px,1.1fr) repeat(2,minmax(56px,.95fr)) minmax(76px,1.1fr);padding-inline:6px}.portal-extras-list-head{font-size:.58rem;letter-spacing:0}.portal-extras-value strong{font-size:.76rem}.portal-extras-state{font-size:.68rem}}@container (max-width: 380px){.portal-pay-item,.portal-pay-list-head{-moz-column-gap:6px;column-gap:6px;grid-template-columns:minmax(58px,1fr) minmax(52px,.72fr) minmax(64px,.88fr) minmax(90px,1.15fr);padding-inline:4px}.portal-pay-list-head{font-size:.56rem}.portal-payment-tracking-card .portal-pay-actions .portal-button,.portal-receipt-none{font-size:.62rem}.portal-extras-item,.portal-extras-list-head{-moz-column-gap:6px;column-gap:6px;grid-template-columns:minmax(52px,1.05fr) repeat(2,minmax(44px,.9fr)) minmax(62px,1fr);padding-inline:4px}.portal-extras-state,.portal-extras-value strong{font-size:.68rem}}@media (max-width:880px){.portal-extras-list-head,.portal-payment-tracking-card .portal-pay-item>.portal-pay-row-marker,.portal-service-tip-card .portal-extras-item>.portal-pay-row-marker{display:none}.portal-extras-item{align-items:start;-moz-column-gap:10px;column-gap:10px;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"person state" "amounts amounts";row-gap:9px}.portal-extras-person{grid-area:person;min-width:0}.portal-extras-amounts{display:flex;gap:clamp(28px,12vw,56px);grid-area:amounts;max-width:300px;width:100%}.portal-extras-state{grid-area:state}.portal-extras-value{align-items:flex-start}.portal-extras-state,.portal-extras-value{flex-direction:column;justify-content:flex-start}.portal-extras-state{align-items:flex-end}.portal-pay-list-head{display:none}.portal-pay-item{align-items:start;-moz-column-gap:10px;column-gap:10px;grid-template-columns:minmax(92px,.78fr) minmax(0,1.22fr);grid-template-areas:"person amount" "receipt state";row-gap:10px;position:relative}.portal-pay-person{grid-area:person}.portal-pay-amount{grid-area:amount}.portal-pay-amount-tooltip{bottom:auto;left:max(16px,env(safe-area-inset-left));max-width:none;position:fixed;right:max(16px,env(safe-area-inset-right));top:50%;transform:translateY(-50%);width:auto;z-index:80}.portal-pay-amount-tooltip .portal-pay-tooltip-row{min-width:0;white-space:normal}.portal-pay-receipt-cell{grid-area:receipt}.portal-pay-state-cell{grid-area:state}.portal-pay-receipt-cell,.portal-pay-state-cell{align-items:flex-start;flex-direction:column;gap:7px;justify-content:flex-start}.portal-pay-mobile-label{display:block}.portal-pay-actions{flex-wrap:nowrap;gap:6px;justify-content:flex-start;width:100%}.portal-payment-tracking-card .portal-pay-actions .portal-button{flex:1 1 0;font-size:.72rem;min-height:38px;padding:8px 7px;white-space:nowrap}}.portal-filters{align-items:flex-end;display:flex;flex-wrap:wrap;gap:12px;margin-bottom:14px}.portal-filters .portal-field{margin:0}.admin-survey-row{align-items:center;display:flex;gap:14px}.admin-stars{color:var(--mint-strong,#2f8f5b);flex:0 0 auto;font-size:.95rem;letter-spacing:1px;white-space:nowrap}.admin-stars-off{color:var(--line,#dce3df)}.portal-badge{background:var(--soft-surface,#f3f7f5);border-radius:999px;color:var(--mint-strong,#2f8f5b);display:inline-block;font-size:.8rem;font-weight:800;padding:4px 10px;white-space:nowrap}.portal-badge.is-open{color:#7a4a12}.portal-badge.is-rejected{color:var(--coral,#e26d5a)}.star-rating{align-items:center;display:inline-flex;gap:6px;white-space:nowrap}.star-rating-track{color:var(--line,#dce3df);display:inline-block;letter-spacing:1px;position:relative}.star-rating-fill{color:var(--mint-strong,#2f8f5b);left:0;overflow:hidden;position:absolute;top:0;white-space:nowrap}.star-rating-value{font-weight:800}.star-rating-empty{font-size:.85rem}.portal-bill-row.has-date{grid-template-columns:minmax(95px,1fr) minmax(95px,.85fr) minmax(110px,1fr) minmax(50px,.5fr) minmax(100px,.9fr) minmax(100px,.85fr) minmax(126px,1.2fr) minmax(120px,1fr) max-content}.portal-bill-date{font-size:.85rem;white-space:nowrap}.portal-date-search{align-items:flex-end;display:flex;flex-wrap:wrap;gap:12px;margin-bottom:16px}.portal-date-search .portal-field{margin:0;min-width:140px}.portal-bill-row.has-date .portal-bill-row-link>.portal-pay-status{max-width:100%;min-width:0;width:100%}.portal-bill-row.has-date .portal-bill-delete{font-size:.78rem;padding:5px 10px}