.portal{background:#f3f5f1;min-height:100vh;color:#292929}.portal *{box-sizing:border-box}.portal-top{height:102px;background:white;border-bottom:1px solid #dee4db;padding:18px 4%;display:flex;align-items:center;justify-content:space-between}.portal-brand img{width:210px}.portal-top>div{display:flex;gap:24px;font-size:12px}.portal-layout{display:grid;grid-template-columns:255px minmax(0,1fr);max-width:1600px;margin:auto}.portal-sidebar{padding:40px 25px 40px 32px;background:#e5ebe0;border-right:1px solid #d7ded3;min-height:calc(100vh - 102px)}.portal-sidebar .eyebrow{font-size:9px;letter-spacing:.15em}.portal-sidebar h2{font-size:33px;letter-spacing:-.04em;margin-bottom:35px}.portal-sidebar nav{display:flex;position:static;flex-direction:column;gap:5px;align-items:stretch;background:none;padding:0;box-shadow:none}.portal-sidebar nav button{border:0;text-align:left;background:transparent;padding:12px 14px;font-size:13px;color:#545f4d;border-radius:3px}.portal-sidebar nav button:hover{background:#d6ddd2}.portal-sidebar nav button.active{background:#71836b;color:white}.sidebar-note{font-size:10px;margin-top:55px;color:#5d6d53;line-height:1.7}.sidebar-note p{font-size:10px;margin-top:9px}.dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#71836b;margin-right:5px}.portal-main{padding:40px 4%;min-width:0}.portal-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:28px}.portal-heading h1{font-size:45px;letter-spacing:-.04em;margin:0;line-height:1.1}.portal-heading .eyebrow{font-size:9px;margin-bottom:12px}.p-button{background:#292929;border:1px solid #292929;color:white;padding:12px 19px;font-size:12px;display:inline-flex;align-items:center;justify-content:center;min-height:46px;border-radius:2px;cursor:pointer}.p-button:hover{background:#34452f;border-color:#34452f}.portal button:disabled{cursor:not-allowed;opacity:.45}.portal button:not(.p-button):not(.client-card):not(.diary-entry):not(.p-modal-close):not(.selected):not(.active){color:inherit}.p-text-link{padding:0;border:0;border-bottom:1px solid #71836b;background:none;font-size:12px;cursor:pointer;display:inline-block}.portal-main .panel{padding:28px;background:white;border:1px solid #dfe4dc;border-radius:4px;margin-bottom:24px}.portal h2{font-size:32px;letter-spacing:-.04em}.portal h3{font-family:Georgia,serif;font-size:22px;letter-spacing:-.025em;margin-bottom:12px}.portal p{font-size:14px;color:#656e5f}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:25px}.stats article{padding:23px 20px;background:white;border:1px solid #dfe4dc;border-radius:4px}.stats span{font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:#617058;display:block}.stats strong{font-family:Georgia,serif;font-size:37px;font-weight:400;display:block;margin:10px 0 7px;letter-spacing:-.04em}.stats small{font-size:9px;color:#7e8b76}.setup-card{background:#d8ded4;padding:30px;display:flex;align-items:center;justify-content:space-between;gap:30px;margin-bottom:24px;border-radius:4px}.setup-card .eyebrow{font-size:9px;margin-bottom:10px}.setup-card h2{margin-bottom:15px}.setup-card p{max-width:520px;margin-bottom:0;font-size:13px}.setup-card .p-button{flex-shrink:0}.setup-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.setup-grid ul{font-size:13px;color:#656e5f;padding-left:18px;line-height:1.8}.panel-title{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:10px}.panel-title h2{font-size:27px;margin:0}.panel-title button,.row-actions button,.toolbar>button:not(.p-button),.diary-controls button,.service-row button,.modal-actions>button:not(.p-button),table button,.invoice-line>button{background:none;border:0;border-bottom:1px solid #b4c0ac;padding:3px 0;font-size:11px;color:#4f5d46}.empty{padding:40px 20px;text-align:center}.empty-circle{display:flex;width:40px;height:40px;border:1px solid #b4c1ac;border-radius:50%;align-items:center;justify-content:center;color:#71836b;font-weight:bold;font-size:22px;margin:0 auto 18px}.empty h3{font-size:23px}.empty p{max-width:390px;margin:0 auto;font-size:12px}.hint{font-size:11px!important;color:#75856b!important;line-height:1.7}.alert{padding:15px 20px;border:1px solid;margin:15px 0;position:relative;font-size:13px;border-radius:3px}.alert.error{border-color:#dec7bc;background:#fbf0eb;color:#873e24}.alert.success{border-color:#c5d3be;background:#f0f5ed;color:#3c5a34}.alert>button{position:absolute;right:10px;top:6px;background:none;border:0;font-size:20px}.loading{font-size:12px!important}.field{display:block;margin-bottom:20px;min-width:0}.field>span,.field-title{display:block;font-size:11px;font-weight:600;color:#596750;margin-bottom:8px}.portal input:not([type=checkbox]),.portal select,.portal textarea{width:100%;background:#fff;border:1px solid #ced6c9;padding:11px 12px;border-radius:3px;min-height:45px;font:inherit;font-size:13px;color:#292929}.portal textarea{resize:vertical}.portal input:focus,.portal select:focus,.portal textarea:focus{outline:2px solid #9bac90;outline-offset:1px}.check-field{display:flex;gap:10px;align-items:flex-start;font-size:12px;color:#56624f;margin-bottom:20px;line-height:1.7}.check-field input{accent-color:#71836b;width:17px;height:17px;flex-shrink:0;margin-top:2px}.toolbar{display:flex;align-items:center;gap:20px;justify-content:space-between;margin-bottom:24px}.toolbar>input{max-width:480px}.toolbar p{margin:0;font-size:12px}.toolbar>.p-button{flex-shrink:0}.client-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.client-card{padding:25px;background:white;text-align:left;border:1px solid #dae0d6;border-radius:4px;min-width:0}.client-card:hover{border-color:#71836b}.avatar{display:flex;width:44px;height:44px;background:#e5eae2;border-radius:50%;align-items:center;justify-content:center;font-size:13px;color:#34452f;margin-bottom:20px}.client-card h3{font-size:23px}.client-card p{font-size:11px;overflow-wrap:anywhere}.client-card .hint{font-size:9px!important}.appointment-row{display:flex;gap:20px;align-items:center;padding:23px 0;border-bottom:1px solid #e6eae3}.appointment-row:last-child{border-bottom:0}.date-tile{width:58px;min-width:58px;background:#ecf0ea;text-align:center;padding:8px;line-height:1.25;border-radius:3px}.date-tile strong{display:block;font-family:Georgia,serif;font-size:26px;font-weight:400}.date-tile span{font-size:10px;text-transform:uppercase;color:#6f8363}.appointment-info{flex:1}.appointment-info h3{font-size:22px;margin-bottom:4px}.appointment-info p{font-size:11px;margin-bottom:6px}.row-actions{display:flex;gap:12px;flex-wrap:wrap;justify-content:flex-end;max-width:200px}.status{display:inline-block;font-size:9px;letter-spacing:.03em;padding:3px 8px;text-transform:capitalize;background:#e5eae2;border-radius:3px;color:#5d6d53}.status-confirmed,.status-paid,.status-delivered,.status-enabled{background:#edf2e7;color:#52633f}.status-cancelled,.status-void,.status-failed,.status-undelivered{background:#f5e8e2;color:#8a5a45}.status-not_connected,.status-needs_review{background:#f5edda;color:#816626}.service-row{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:20px 0;border-bottom:1px solid #dfe4dc}.service-row:last-child{border-bottom:0}.service-row h3{font-size:23px;margin-bottom:5px}.service-row p{font-size:12px;margin:0}.service-row button{flex-shrink:0}.diary-controls{display:flex;gap:22px;align-items:center;flex-wrap:wrap;margin-bottom:24px}.diary-controls input{max-width:160px}.week-grid{display:grid;grid-template-columns:repeat(7,minmax(130px,1fr));overflow:auto;border:1px solid #d8ded4;background:white;margin-bottom:25px;border-radius:4px}.diary-day{padding:18px 10px;min-height:310px;border-right:1px solid #dbe1d7}.diary-day h3{font-family:Arial,sans-serif;font-size:12px;border-bottom:1px solid #dee4db;padding-bottom:15px}.diary-entry{width:100%;display:block;text-align:left;border:0;border-left:3px solid #71836b;background:#e8ece6;margin:12px 0;padding:12px 10px;border-radius:3px}.diary-entry strong,.diary-entry span,.diary-entry small{display:block}.diary-entry strong{font-size:10px;font-weight:400;color:#34452f}.diary-entry span{font-size:12px;margin:5px 0}.diary-entry small{font-size:10px;color:#738866}.day-off{font-size:10px;background:#e1e6de;padding:8px}.welcome-note{padding:22px;background:#dfe5dc;border-radius:3px;margin-bottom:25px}.welcome-note p{margin:0;font-size:13px}.welcome-note h3{margin-bottom:12px}.welcome-note a{text-decoration:underline}.booking-panel{max-width:760px}.booking-flow{max-width:600px}.time-slots{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:25px}.time-slots button{background:white;border:1px solid #c3cdbd;padding:12px;font-size:12px;border-radius:3px}.time-slots button.selected{background:#71836b;color:white;border-color:#71836b}.booking-summary{background:#ecf0ea;padding:25px;margin:25px 0}.booking-summary h3{font-size:25px}.booking-summary p:last-child{margin-bottom:0}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;font-size:12px}th{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:#718565;padding:12px;border-bottom:1px solid #cad3c5}td{padding:18px 12px;border-bottom:1px solid #e5e9e2;font-size:11px}.connection-banner{background:#dae0d6;padding:30px;display:flex;justify-content:space-between;align-items:flex-start;gap:30px;border-radius:4px;margin-bottom:24px}.connection-banner h2{font-size:31px;margin-bottom:16px}.connection-banner p{max-width:650px;font-size:13px}.connection-banner .status{white-space:nowrap}.message-preview{background:#f0f3ee;padding:20px;border-left:2px solid #71836b;font-size:13px!important}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.settings-form h3{margin-top:35px}.hours-row{display:flex;align-items:center;gap:15px;margin:12px 0;font-size:12px}.hours-row .check-field{width:140px;margin:0}.hours-row input[type=time]{width:110px}.time-off-form{display:flex;gap:15px;align-items:flex-end}.time-off-form .field{flex:1}.time-off-form>.p-button{margin-bottom:20px}.modal-backdrop{position:fixed;inset:0;z-index:50;background:#1d1915a8;display:flex;align-items:center;justify-content:center;padding:30px;overflow-y:auto}.p-modal{background:white;border-radius:5px;padding:40px;width:620px;max-width:100%;max-height:90vh;overflow:auto;position:relative;box-shadow:0 10px 70px #0003}.p-modal-close{position:absolute;top:10px;right:15px;width:30px;height:30px;font-size:25px;background:none;border:0;color:#56654c}.p-modal h2{font-size:36px}.p-modal .eyebrow{font-size:9px;margin-bottom:15px}.modal-actions{margin-top:28px;display:flex;gap:20px;align-items:center;flex-wrap:wrap}.invoice-line{padding:20px 0;border-bottom:1px solid #dce2d9}.invoice-total{text-align:right;font-family:Georgia,serif;font-size:28px!important;color:#292929!important;margin:25px 0}.invoice-modal{width:800px}.invoice-head{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #c4cebd;padding-bottom:25px;margin-bottom:30px}.invoice-head img{width:220px}.invoice-head h2{margin:0;font-size:38px}.invoice-address{display:flex;justify-content:space-between;gap:20px}.invoice-address p{font-size:12px}.portal-denied{padding:80px 8%}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
@media(max-width:1100px){.portal-layout{grid-template-columns:220px minmax(0,1fr)}.portal-sidebar{padding:35px 20px}.portal-sidebar h2{font-size:29px}.portal-main{padding:35px 4%}.stats{grid-template-columns:1fr 1fr}.client-grid{grid-template-columns:1fr 1fr}.appointment-row{flex-wrap:wrap}.row-actions{margin-left:78px;max-width:none;justify-content:flex-start}.setup-card{align-items:flex-start;flex-direction:column;gap:20px}.setup-grid{grid-template-columns:1fr}.portal-top>div{font-size:11px;gap:15px}.time-off-form{flex-wrap:wrap}.connection-banner{display:block}.connection-banner>.status{margin-top:15px}}
@media(max-width:700px){body:has(.portal){padding-bottom:0}.portal-top{height:83px;padding:15px 5%}.portal-brand img{width:160px}.portal-top>div{font-size:10px;gap:12px}.portal-layout{display:block}.portal-sidebar{padding:20px 5%;min-height:0;border-right:0;border-bottom:1px solid #ced6c9}.portal-sidebar>.eyebrow,.portal-sidebar>h2,.sidebar-note{display:none}.portal-sidebar nav{flex-direction:row;gap:8px;overflow-x:auto;padding-bottom:5px}.portal-sidebar nav button{padding:10px 13px;white-space:nowrap;font-size:11px;border:1px solid #c3cdbd!important}.portal-sidebar>.p-text-link{margin-top:15px}.portal-main{padding:27px 5%}.portal-heading h1{font-size:35px}.portal-heading .eyebrow{font-size:8px}.portal-heading .p-button{padding:10px 13px;min-height:42px;font-size:10px}.stats{gap:12px}.stats article{padding:20px 15px}.stats strong{font-size:30px}.stats span{font-size:8px}.stats small{font-size:8px}.portal-main .panel{padding:22px}.portal h2{font-size:29px}.panel-title h2{font-size:25px}.appointment-row{gap:14px;padding:20px 0}.date-tile{width:48px;min-width:48px}.appointment-info h3{font-size:20px}.appointment-info p{font-size:10px}.row-actions{margin-left:62px;gap:17px}.toolbar{flex-wrap:wrap;gap:16px}.toolbar>input{max-width:none}.client-grid{grid-template-columns:1fr 1fr;gap:12px}.client-card{padding:20px 15px}.client-card h3{font-size:21px}.client-card p{font-size:10px}.client-card .hint{font-size:8px!important}.service-row h3{font-size:22px}.service-row p{font-size:11px}.portal .p-button{font-size:11px}.diary-controls{gap:15px}.week-grid{grid-template-columns:repeat(7,150px)}.form-grid{grid-template-columns:1fr;gap:0}.hours-row{gap:8px}.hours-row .check-field{width:110px;font-size:10px}.hours-row input[type=time]{width:90px;font-size:11px;padding:8px}.time-off-form{display:block}.time-off-form>.p-button{margin:0 0 20px}.time-slots{grid-template-columns:repeat(3,1fr)}.modal-backdrop{padding:15px}.p-modal{padding:35px 23px;max-height:92vh}.p-modal h2{font-size:31px}.invoice-head img{width:165px}.invoice-head h2{font-size:28px}.invoice-address p{font-size:10px}.invoice-modal table{min-width:0}.invoice-modal td,.invoice-modal th{padding:12px 5px;font-size:9px}.setup-card{padding:25px}.setup-card h2{font-size:30px}.setup-card p{font-size:12px}.connection-banner{padding:25px}.connection-banner h2{font-size:28px}.portal-top a{white-space:nowrap}}
@media print{body{padding:0!important;background:white!important}.portal-top,.portal-layout,.no-print,.p-modal-close,.p-modal>.alert{display:none!important}.modal-backdrop{position:static!important;display:block!important;background:white!important;padding:0!important;overflow:visible!important}.p-modal{display:block!important;position:static!important;box-shadow:none!important;max-width:none!important;width:100%!important;max-height:none!important;overflow:visible!important;padding:12mm!important}.portal{background:white}.print-invoice{display:block!important}.print-invoice table{width:100%}.invoice-total{font-size:22pt!important}@page{size:A4;margin:10mm}}

.portal-brand img{filter:hue-rotate(65deg) saturate(.4)}

/* Match the deeper sage salon identity across client and staff portals. */
.portal{background:#b6c2b2;--dark-tan:#34452f;--tan:#71836b;--muted:#46523f}
.portal-sidebar{background:#a4b2a1;border-color:#8d9e86}
.portal-sidebar nav button{color:#34452f}
.portal-sidebar nav button:hover{background:#b6c2b2}
.portal-sidebar nav button.active,.portal .p-button,.portal .time-slots button.selected{background:#34452f;border-color:#34452f;color:#fff}
.portal .p-button:hover,.portal .time-slots button.selected:hover{background:#253721;border-color:#253721}
.portal .p-button:focus-visible,.portal button:focus-visible,.portal a:focus-visible{outline:3px solid #34452f;outline-offset:4px}
.portal .setup-card,.portal .welcome-note,.portal .connection-banner{background:#a4b2a1;color:#292929}
.portal .setup-card p,.portal .welcome-note p,.portal .connection-banner p,.portal .setup-grid ul{color:#3e493a}
.portal .sidebar-note,.portal .sidebar-note p{color:#34452f}
.portal .eyebrow{color:#34452f}
.portal .booking-summary,.portal .message-preview{background:#d3ddcd}
.portal .hint{color:#4d6044!important}
.portal .date-tile,.portal .avatar{background:#d3ddcd}
.portal .diary-entry{background:#d3ddcd;border-left-color:#34452f}
.portal .check-field input{accent-color:#34452f}
@media print{.portal{background:#fff}.portal .p-button{display:none}}

.finance-actions{display:flex;gap:16px;flex-wrap:wrap;align-items:center}.finance-review{margin:25px 0 18px}.finance-space .stats{grid-template-columns:repeat(3,minmax(0,1fr))}.finance-space input[type=file]{white-space:normal;max-width:100%}@media(max-width:700px){.finance-space .stats{grid-template-columns:1fr}.finance-space .finance-actions{gap:14px}}

.invoice-payments{margin:24px 0;padding-top:20px;border-top:1px solid #8d9e86}.payment-form{margin:25px 0;padding:22px;background:#e5ebe0}.payment-awaiting{display:block;margin-top:7px;font-size:10px;color:#34452f}.invoice-payments .welcome-note p{margin-top:12px}.invoice-payments details{margin-top:24px}

.policy-summary{padding:24px;background:#d3ddcd;margin:25px 0}.policy-bands{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:24px 0}.policy-bands>div{padding:20px;background:#e5ebe0;border-top:3px solid #34452f}.policy-bands strong,.policy-bands span,.policy-bands small{display:block}.policy-bands strong{font-size:13px;margin-bottom:10px;color:#34452f}.policy-bands span{font-family:Georgia,serif;font-size:22px;line-height:1.3;margin-bottom:12px}.policy-bands small{font-size:12px;line-height:1.7}.full-policy h1{font-size:42px}.full-policy h2{font-size:27px;margin-top:32px}.full-policy p{line-height:1.8}.policy-ack{padding:15px 0;border-top:1px solid #8d9e86}.policy-ack span{font-size:13px;line-height:1.7}.policy-page .wrap{max-width:1050px}.policy-page .section{padding-top:55px}.policy-page .portal-brand img{filter:hue-rotate(65deg) saturate(.4)}@media(max-width:700px){.policy-bands{grid-template-columns:1fr}.full-policy h1{font-size:32px}.policy-summary{padding:18px}.policy-bands span{font-size:21px}}
