.tb-portal{--portal-paper:#fffdfa;--portal-line:#e3d9cf;display:grid;grid-template-columns:205px minmax(0,1fr);border:1px solid var(--portal-line);border-radius:12px;overflow:hidden;background:#f6eee4}.tb-portal-sidebar{display:flex;flex-direction:column;gap:1rem;padding:1.25rem;background:var(--portal-paper);border-right:1px solid var(--portal-line)}.tb-portal-brand{font:700 1.65rem/1.05 var(--tb-serif);color:var(--tb-wine)}.tb-portal-sidebar .tb-eyebrow,.tb-portal-header .tb-eyebrow{margin:0}.tb-portal-sidebar nav{display:grid;gap:.3rem}.tb-portal-sidebar nav a{display:block;padding:.56rem .66rem;border-radius:5px;font-weight:650;text-decoration:none;color:var(--tb-ink)}.tb-portal-sidebar nav a:hover,.tb-portal-sidebar nav a[aria-current=page]{color:var(--tb-wine);background:#f0e1dc}.tb-account{display:grid;gap:.15rem;margin-top:auto;padding-top:1rem;border-top:1px solid var(--portal-line);font-size:.9rem}.tb-portal-main{padding:clamp(14px,2.2vw,26px);min-width:0}.tb-portal-header,.tb-panel-title,.tb-pagination{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap}.tb-portal-header{margin-bottom:1.1rem}.tb-portal-header h2{margin:.2rem 0 0;font-size:clamp(1.85rem,3vw,2.65rem)}.tb-portal-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(125px,1fr));gap:.75rem;margin-bottom:1rem}.tb-portal-stats>div,.tb-panel{background:var(--portal-paper);border:1px solid var(--portal-line);border-radius:9px;min-width:0;padding:1rem;box-shadow:0 2px 7px #3c241108}.tb-portal-stats span{display:block;font-size:.85rem;color:var(--tb-muted)}.tb-portal-stats strong{font-size:clamp(1.25rem,2.3vw,1.85rem);line-height:1.2}.tb-portal-grid{display:grid;grid-template-columns:minmax(0,2.2fr) minmax(185px,1fr);gap:1rem}.tb-panel h3{font:700 1.15rem/1.3 var(--tb-sans);margin:0 0 .65rem}.tb-panel-title{margin-bottom:.7rem}.tb-panel-title h3{margin:0}.tb-empty{padding:1rem;background:#f7efe7;border-radius:7px;color:var(--tb-muted)}.tb-table-scroll{overflow:auto}.tb-table{width:100%;border-collapse:collapse;font-size:.88rem}.tb-table th{text-align:left;background:#f2e9e0;white-space:nowrap}.tb-table th,.tb-table td{padding:.58rem;border-bottom:1px solid var(--portal-line);vertical-align:top}.tb-table td p{margin:.4rem 0}.tb-table summary{cursor:pointer;color:var(--tb-wine)}.tb-order-items{min-width:115px;padding-left:1.15rem}.tb-portal .tb-button{font-size:.87rem;padding:.52rem .72rem}.tb-refund{margin-top:.5rem}.tb-refund label{display:block;min-width:140px}.tb-menu-row{display:flex;gap:.75rem;align-items:center;border-bottom:1px solid var(--portal-line);padding:.7rem 0;flex-wrap:wrap}.tb-menu-row img{width:56px;height:56px;border-radius:5px;object-fit:cover}.tb-menu-row-actions{display:flex;gap:.7rem;align-items:center;margin-left:auto}.tb-portal label{font-weight:600}.tb-button-row{display:flex;align-items:center;flex-wrap:wrap;gap:.55rem}.tb-check{display:block;margin:.5rem 0}.tb-portal fieldset{border:1px solid var(--portal-line);margin-bottom:1rem}.tb-portal legend{font-weight:700}.tb-hours{margin-bottom:1rem}.tb-hours>div{display:grid;grid-template-columns:minmax(90px,.7fr) 1fr 1fr;gap:.6rem;padding:.45rem 0;align-items:center;border-bottom:1px solid var(--portal-line)}.tb-booking{padding:.9rem 0;border-bottom:1px solid var(--portal-line)}.tb-pagination{margin-top:1rem}.tb-error{border-color:#9b2c25;background:#fff0eb}.tb-success{border-color:#43704b;background:#f0f6ed}.tb-portal-login{max-width:510px}
@media(max-width:1050px){.tb-portal-grid{grid-template-columns:1fr}.tb-portal{grid-template-columns:175px minmax(0,1fr)}}
@media(max-width:740px){.tb-portal{grid-template-columns:1fr}.tb-portal-sidebar{border-right:0;border-bottom:1px solid var(--portal-line);gap:.55rem;padding:.8rem}.tb-portal-sidebar nav{display:flex;overflow:auto;gap:.25rem}.tb-portal-sidebar nav a{white-space:nowrap;font-size:.88rem}.tb-account{display:flex;justify-content:space-between;padding-top:.4rem}.tb-portal-main{padding:.75rem}.tb-hours>div{gap:.35rem;grid-template-columns:1fr 1fr}.tb-hours>div strong{grid-column:1/-1}}
.tb-queue-status{font-size:.85rem;color:var(--tb-muted);margin:.3rem 0 .7rem}
.tb-queue-status[data-failed]{color:#7c271e;background:#fff0eb;border-radius:5px;padding:.45rem .6rem}
