:root{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#20342d;background:#f5f2eb;--forest:#18382e;--forest2:#254a3b;--ink:#20342d;--muted:#718177;--line:#dfe4db;--paper:#fffefa;--cream:#f5f2eb;--accent:#d9a66d;--shadow:0 12px 38px #19392c12}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.55;cursor:wait}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #bc823e;outline-offset:2px}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(28px,2.7vw,40px);letter-spacing:-.045em;margin:2px 0 0}h2{font-size:22px;letter-spacing:-.025em;margin-bottom:5px}h3{font-size:16px;margin-bottom:8px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.app-shell{display:grid;grid-template-columns:238px minmax(0,1fr);min-height:100vh}.main-sidebar{background:linear-gradient(175deg,#214437,#142e26);color:#f4f7ef;min-height:100vh;padding:28px 18px 22px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;z-index:10}.brand{display:flex;align-items:center;gap:11px;padding:0 8px 32px}.brand-mark{display:grid;place-items:center;flex:none;width:39px;height:43px;border:1px solid #d8aa70;color:#f5d8ae;font-family:Georgia,serif;font-size:17px;border-radius:11px 11px 5px 5px}.brand strong{font-family:Georgia,serif;font-size:16px;line-height:1.1;font-weight:500;display:block}.brand small{display:block;font-size:10px;color:#b5c7bc;margin-top:6px}.main-nav{display:grid;gap:5px}.main-nav button{display:flex;align-items:center;gap:12px;width:100%;background:none;border:0;color:#bfcfc5;text-align:left;border-radius:11px;padding:13px 12px;font-weight:550}.main-nav button span{font-size:20px;width:25px;text-align:center;font-weight:400}.main-nav button:hover,.main-nav button[aria-current=page]{background:#ffffff18;color:#fff}.main-nav button[aria-current=page]{box-shadow:inset 3px 0 #dfa96f}.side-spacer{flex:1}.side-note{border:1px solid #70917b69;background:#ffffff0b;border-radius:12px;padding:12px;font-size:12px;line-height:1.5}.side-note small,.source-note{color:#adbeaf;font-size:11px}.live-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#b4d39d;margin-right:5px}.operator-label{font-size:11px;color:#b8cdbd;margin:20px 0 6px}.main-sidebar select{width:100%;background:#173228;color:#fff;border:1px solid #6b8a74;border-radius:8px;padding:9px}.source-note{margin:14px 0 0;line-height:1.4}.main-content{min-width:0;padding:27px clamp(18px,2.6vw,42px) 40px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:28px}.eyebrow{font-size:10px;font-weight:750;letter-spacing:.2em;color:#a1784f;margin-bottom:6px}.top-actions{display:flex;align-items:center;gap:12px}.today-label{color:var(--muted);font-size:13px;white-space:nowrap}.icon-button,.date-controls button,.soft-button{border:1px solid var(--line);background:#fffefa;color:var(--ink);border-radius:9px;padding:10px 14px;min-height:40px}.icon-button{font-size:23px;line-height:1;padding:6px 12px}.icon-button:hover,.soft-button:hover,.date-controls button:hover{background:#f1f5eb}.primary-button{border:1px solid #255640;background:#28543e;color:#fff;border-radius:9px;padding:10px 17px;min-height:40px;font-weight:650;box-shadow:0 5px 13px #28543e24}.primary-button:hover{background:#1e4533}.notice{padding:12px 15px;border:1px solid #c5d4be;background:#eaf4e6;color:#22503a;border-radius:9px;margin:0 0 20px}.notice.error{border-color:#e5b8ad;background:#fff0eb;color:#914c38}.section-toolbar{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:18px;flex-wrap:wrap}.subtext,.field-hint,.footnote{color:var(--muted);font-size:13px;line-height:1.5;margin-bottom:0}.date-controls{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.date-controls input{height:40px;border:1px solid var(--line);border-radius:9px;padding:0 10px;background:#fffefa;color:var(--ink)}.day-summary{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.summary-chip{border:1px solid var(--line);background:#fffefa;padding:8px 11px;border-radius:9px;font-size:12px;color:#4f6659}.summary-chip strong{color:var(--ink)}.calendar-frame{background:var(--paper);border:1px solid var(--line);border-radius:15px;box-shadow:var(--shadow);overflow:hidden}.calendar-head{display:grid;grid-template-columns:63px repeat(3,minmax(180px,1fr));border-bottom:1px solid var(--line);background:#f9faf5}.calendar-head>div{padding:14px 14px 13px;border-left:1px solid var(--line)}.calendar-head>div:first-child{border-left:0}.calendar-head strong{display:block;font-size:14px}.calendar-head small{display:block;margin-top:4px;font-size:11px;color:var(--muted)}.calendar-scroll{height:min(65vh,760px);min-height:450px;overflow:auto;scrollbar-color:#bbc9b9 transparent}.calendar-grid{display:grid;grid-template-columns:63px repeat(3,minmax(180px,1fr));height:1440px;position:relative;background:repeating-linear-gradient(to bottom,#fffefa 0,#fffefa 59px,#e7ebe4 59px,#e7ebe4 60px)}.time-column{position:relative;border-right:1px solid var(--line)}.time-label{position:absolute;left:13px;transform:translateY(-9px);font-size:11px;color:#8c9a8e;font-variant-numeric:tabular-nums}.footnote{margin-top:13px}.filter-bar{display:flex;flex-wrap:wrap;gap:12px;background:#fffefa;border:1px solid var(--line);border-radius:13px;padding:15px;margin:0 0 16px}.filter-bar label{display:grid;gap:6px;font-size:11px;font-weight:650;color:#597065;min-width:170px}.filter-bar label:first-child{flex:1 1 220px}.filter-bar input,.filter-bar select{border:1px solid #d4ded2;background:#fff;border-radius:8px;padding:9px 10px;min-height:39px;color:var(--ink);width:100%}.table-wrap{overflow:auto;background:#fffefa;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}table{width:100%;border-collapse:collapse;min-width:760px;text-align:left}th{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:#849488;background:#f6f8f2;padding:13px 15px;white-space:nowrap}td{padding:13px 15px;border-top:1px solid #ebeee8;font-size:13px;vertical-align:middle}td strong{font-weight:650}td small{display:block;color:#8b998f;margin-top:3px}tbody tr:hover{background:#fafbf7}.table-action{border:1px solid #b7cdb9;border-radius:7px;padding:7px 10px;color:#315d42;background:#f3f8f1;white-space:nowrap;font-size:12px}.stock-unset{color:#a56e4f;font-weight:600}.laundry-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:15px}.laundry-card{background:#fffefa;border:1px solid var(--line);border-radius:14px;padding:19px;box-shadow:var(--shadow)}.laundry-card h3{font-family:Georgia,serif;font-size:19px;font-weight:500;margin:0 0 7px}.laundry-states{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:17px 0}.state-box{padding:12px;border-radius:9px;background:#f5f7f0}.state-box small{display:block;color:#738579;font-size:11px}.state-box strong{display:block;margin-top:4px;font-size:20px;font-variant-numeric:tabular-nums}.state-box:nth-child(2){background:#edf2ea}.state-box:nth-child(3){background:#f5efe5}.state-box:nth-child(4){background:#e9f0f2}.detail-panel{position:fixed;right:0;top:0;bottom:0;width:min(440px,100vw);background:#fffefa;z-index:30;border-left:1px solid #d8e0d6;box-shadow:-12px 0 35px #1d3e2b1c;display:flex;flex-direction:column}.detail-panel[hidden]{display:none}.detail-head{display:flex;justify-content:space-between;align-items:flex-start;padding:22px 24px 16px;border-bottom:1px solid var(--line)}.detail-head h2{font-family:Georgia,serif;font-weight:500;font-size:25px;margin:0}.detail-head button,.dialog-head button{border:0;background:#f0f3ed;color:#516759;border-radius:8px;width:34px;height:34px;font-size:24px;line-height:1}.detail-scroll{overflow:auto;padding:18px 24px 30px}.detail-info{font-size:12px;color:#7b8c80;background:#f5f8f2;border-radius:8px;padding:10px;margin-bottom:18px}form label{display:grid;gap:6px;font-size:12px;font-weight:650;color:#4e6656;margin-bottom:14px}form input,form select,form textarea{width:100%;border:1px solid #d3dfd2;border-radius:8px;background:#fff;color:#23392b;min-height:39px;padding:9px 10px;font-weight:400}form textarea{resize:vertical;line-height:1.4}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:11px}.form-section{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:16px 0;margin:7px 0 18px}.form-section-head{display:flex;justify-content:space-between;align-items:center}.form-section-head h3{margin:0}.text-button{border:0;background:none;color:#2f704d;font-size:12px;font-weight:700;padding:5px}.booking-item{display:grid;grid-template-columns:minmax(0,1fr) 64px 90px 28px;gap:5px;align-items:end;margin-top:10px}.booking-item label{margin:0;font-size:10px}.booking-item input,.booking-item select{padding:6px;min-width:0;font-size:11px}.booking-item .remove-item{border:0;color:#986f61;background:#f7f0ed;border-radius:7px;height:39px;font-size:20px}.total-card{background:#eef4eb;border-radius:10px;padding:13px;font-size:13px;margin-bottom:14px}.total-line{display:flex;justify-content:space-between;gap:10px;margin:4px 0}.total-line:last-child{border-top:1px solid #d0decf;padding-top:8px;margin-top:9px;font-weight:750}.form-actions{display:flex;justify-content:flex-end;gap:8px}.form-error{color:#9e4b37;background:#fff0e9;border:1px solid #e7c0b5;border-radius:8px;padding:10px;font-size:12px}.discussion{border-top:1px solid var(--line);margin-top:24px;padding-top:20px}.discussion h3{margin:0 0 8px}.discussion #message-form{margin:16px 0 24px}.message-card{border:1px solid #e0e8dc;background:#f8faf5;border-radius:9px;padding:11px;margin-top:8px;font-size:13px;white-space:pre-wrap;overflow-wrap:anywhere}.message-card small{display:block;color:#7e9280;margin-bottom:5px;font-size:11px}.history-list{padding-left:18px;color:#6f8074;font-size:11px;line-height:1.6}.history-list li{margin-bottom:6px}.mobile-scrim{position:fixed;inset:0;background:#11281d91;z-index:25}.action-dialog,.ledger-dialog{border:1px solid var(--line);border-radius:16px;background:#fffefa;color:var(--ink);padding:22px;width:min(450px,calc(100vw - 28px));max-height:90vh;overflow:auto;box-shadow:0 24px 65px #132d2280}.ledger-dialog{width:min(600px,calc(100vw - 28px))}.action-dialog::backdrop,.ledger-dialog::backdrop{background:#132b2088}.dialog-head{display:flex;align-items:start;justify-content:space-between;gap:20px}.dialog-head h2{font-family:Georgia,serif;font-weight:500;font-size:23px}.action-dialog .subtext{margin-bottom:17px}.ledger-row{padding:13px 0;border-top:1px solid var(--line);font-size:13px}.ledger-row small{display:block;color:#819283;margin-top:5px}.empty{padding:30px 14px;color:#819283;text-align:center}.pill{display:inline-block;background:#edf2e9;color:#4d7656;border-radius:99px;padding:3px 7px;font-size:10px;font-weight:700}.pill.demo{background:#fff0da;color:#9a6837}
@media(max-width:1100px){.app-shell{grid-template-columns:200px minmax(0,1fr)}.main-sidebar{padding-inline:12px}.main-content{padding:24px 18px}.calendar-frame{overflow:auto}.detail-panel{width:min(430px,100vw)}}
@media(max-width:720px){.app-shell{display:block}.main-sidebar{position:relative;height:auto;min-height:0;padding:13px 14px 9px;display:block}.brand{padding:0 0 11px}.brand-mark{height:32px;width:32px;font-size:14px}.brand strong{font-size:14px}.brand small,.side-note,.source-note,.operator-label,.main-sidebar select,.side-spacer{display:none}.main-nav{display:flex;overflow-x:auto;gap:4px}.main-nav button{width:auto;white-space:nowrap;font-size:12px;padding:8px 9px}.main-nav button span{font-size:15px;width:auto}.main-content{padding:18px 13px 35px}.topbar{margin-bottom:20px}.today-label{display:none}.section-toolbar{align-items:start}.date-controls{width:100%}.date-controls .primary-button{margin-left:auto}.calendar-scroll{height:65vh}.detail-panel{width:min(100vw,500px);border-radius:16px 16px 0 0;top:5vh;bottom:0}.detail-scroll{padding:15px 18px 30px}.detail-head{padding:16px 18px}.mobile-scrim:not([hidden]){display:block}.filter-bar{padding:11px}.filter-bar label{flex:1 1 130px}.laundry-cards{grid-template-columns:1fr}}
@media(max-width:440px){.date-controls input{width:145px}.date-controls button{padding:8px 10px}.date-controls .primary-button{width:100%;margin:4px 0 0}.form-grid{grid-template-columns:1fr 1fr}.booking-item{grid-template-columns:minmax(0,1fr) 52px 72px 26px}.booking-item input,.booking-item select{font-size:10px;padding:4px}.topbar h1{font-size:28px}}
.booking-board{display:grid;grid-template-columns:repeat(5,minmax(210px,1fr));gap:12px;overflow-x:auto;padding-bottom:12px}.board-lane{min-height:360px;border:1px solid var(--line);border-radius:13px;background:#f9faf6;padding:12px}.board-lane h3{font-size:13px;color:#486354;margin:3px 3px 14px}.board-card{display:block;width:100%;text-align:left;border:1px solid #dbe5d8;background:#fffefa;border-radius:10px;padding:11px;margin-bottom:9px;color:var(--ink);box-shadow:0 3px 9px #1c3e2810}.board-card:hover{border-color:#8aaf8f}.board-card>span,.board-card>small{display:block;font-size:11px;line-height:1.45}.board-card>small{margin-top:8px;color:#78897b}.board-card .board-card-head{display:flex;align-items:start;justify-content:space-between;gap:6px;font-size:13px;margin-bottom:5px}.board-card .board-card-head strong{overflow-wrap:anywhere}.board-card .due{color:#9b6a29}.board-card .overdue{color:#a34832;font-weight:700}.board-card[data-status=awaiting_prepayment]{border-style:dashed;border-color:#d6a95a;background:#fffbf2}.board-card[data-status=confirmed]{border-left:3px solid #77a781}.board-card[data-status=arrived]{border-left:3px solid #5c9fa3}.board-card[data-status=completed]{opacity:.88}.lane-empty{color:#98a99b;font-size:12px;text-align:center;padding:24px 0}.booking-actions,.booking-extra{border-top:1px solid var(--line);padding-top:20px;margin-top:20px}.booking-actions button{width:100%;margin:4px 0}.booking-actions label{margin:14px 0 4px}.payment-timer{background:#fff4df;color:#8d622a;border-radius:8px;padding:10px;font-size:12px}.payment-timer.overdue{background:#fff0e9;color:#a24833;font-weight:700}.danger-button{border:1px solid #d9aca2;background:#fff8f5;color:#aa5341;border-radius:9px;padding:10px;min-height:40px;font-weight:650}.status-field{display:grid;gap:6px;font-size:12px;color:#4e6656}.status-field strong{display:flex;align-items:center;min-height:39px;border:1px solid #d3dfd2;border-radius:8px;background:#f7faf4;padding:8px 10px;color:#254f36}.channel-note{font-size:11px;color:#8a9079;align-self:center;line-height:1.4}.received-line{font-size:12px;color:#627669;margin:1px 0 11px}.received-line strong{color:#224b35}.outbox-card{border:1px solid #e0e8d9;background:#f7faf5;border-radius:9px;padding:11px;margin:10px 0;font-size:12px}.outbox-card strong{display:block}.outbox-card p{white-space:pre-wrap;overflow-wrap:anywhere;margin:7px 0}.outbox-card small{color:#8c7960}.receipt-row{display:flex;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid var(--line);font-size:12px}.receipt-row a{color:#2e6844;overflow-wrap:anywhere}.receipt-row small{color:var(--muted);white-space:nowrap}.client-layout{display:grid;grid-template-columns:minmax(260px,360px) minmax(0,1fr);gap:17px;align-items:start}.client-list{display:grid;gap:7px;max-height:72vh;overflow:auto}.client-card,.client-visit{width:100%;display:grid;text-align:left;gap:4px;border:1px solid var(--line);border-radius:10px;background:#fffefa;padding:12px;color:var(--ink)}.client-card:hover,.client-card.selected,.client-visit:hover{border-color:#79a185;background:#f8fbf6}.client-card strong{font-size:14px}.client-card span,.client-visit span{font-size:12px}.client-card small{font-size:11px;color:var(--muted)}.client-detail{background:#fffefa;border:1px solid var(--line);border-radius:14px;padding:22px;min-height:300px}.client-detail h2{font-family:Georgia,serif;font-weight:500}.client-detail h3{margin-top:25px}.client-phone{font-size:14px;color:#607568}.client-visit{margin-top:8px}.client-visit strong{font-size:13px}.client-detail>.primary-button{margin:10px 0}.mobile-scrim{display:none}.detail-panel{box-shadow:-10px 0 26px #1d3e2b13}
@media(min-width:1200px){.panel-open .main-content{margin-right:440px}}
@media(max-width:900px){.booking-board{grid-template-columns:repeat(5,230px)}.client-layout{grid-template-columns:1fr}.client-list{max-height:300px}.client-detail{min-height:0}}
@media(max-width:720px){.mobile-scrim:not([hidden]){display:block}.booking-board{grid-template-columns:repeat(5,220px)}.board-lane{min-height:320px}.client-layout{gap:10px}.client-detail{padding:16px}}
.source-summary{margin:18px 0;padding:14px;border:1px solid #d9e2d7;border-radius:10px;background:#f6f9f4}.source-summary h3{margin:0 0 12px!important;font-size:14px}.source-summary-row{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-top:1px solid #e5ebe2;font-size:12px}.source-summary-row span{color:#6b7f70}.source-summary-row strong{text-align:right;font-weight:650}.source-summary>.field-hint{margin-top:12px}
.outbox-card.archived{border-color:#dedbd4;background:#f5f3ef;color:#6e746d}.outbox-card.archived p{color:#777d76}.outbox-archive-label{display:inline-block;margin-top:6px;padding:4px 7px;border-radius:6px;background:#efe4dc;color:#935c49;font-size:11px;font-weight:700}
.booking-chat-list{display:grid;gap:9px;margin:14px 0}.chat-entry{border:1px solid #dce6dc;background:#f8faf5;border-radius:10px;padding:12px;font-size:12px;overflow-wrap:anywhere}.chat-entry.internal_note{border-left:3px solid #6d947b}.chat-entry.customer_draft{border-left:3px solid #c59b62;background:#fffaf0}.chat-entry.receipt{border-left:3px solid #6999a7;background:#f4f9fa}.chat-entry.archived{opacity:.75}.chat-entry small{display:block;color:#738376;font-size:11px;margin-bottom:5px}.chat-entry p{white-space:pre-wrap;margin:8px 0}.chat-entry a{color:#2e6844}.chat-entry img{display:block;max-width:100%;max-height:240px;object-fit:contain;margin:8px 0;border-radius:6px}.external-composer{border:1px dashed #d7ded5;border-radius:10px;padding:12px;margin-bottom:14px;background:#fafaf7}.external-composer label{margin:0 0 8px}.manual-receipt{border:1px solid var(--line);border-radius:9px;padding:10px 12px;margin:12px 0}.manual-receipt summary{cursor:pointer;font-size:12px;font-weight:700;color:#3f6b4b}.manual-receipt form{margin-top:12px}.receipt-confirm{border-top:1px solid #d8e5e6;padding-top:10px;margin-top:10px}.receipt-confirm button{width:100%}
.loyalty-summary,.loyalty-rules{background:#fffcf5;border-color:#e9dcc7}.loyalty-card{display:grid;gap:3px;padding:10px 0;border-top:1px solid #ece2d3;font-size:12px}.loyalty-balance{font-size:20px;color:#244c37}.loyalty-card small{color:var(--muted)}.loyalty-rules p{font-size:12px;line-height:1.5;margin:8px 0}.loyalty-warning{border-left:3px solid #c89556;padding:8px 10px;background:#fff5e6;color:#805d35}.loyalty-summary .field-hint{margin-top:10px}
.loyalty-history{background:#fafbf8}.loyalty-movement{display:grid;grid-template-columns:minmax(130px,1fr) minmax(140px,1.5fr) auto;gap:10px;align-items:center;border-top:1px solid #e5ebe2;padding:9px 0;font-size:12px}.loyalty-movement span{color:var(--muted)}.loyalty-movement strong{font-weight:600}.loyalty-movement b{white-space:nowrap;color:#244c37}.loyalty-history>.soft-button{margin-top:12px}@media(max-width:580px){.loyalty-movement{grid-template-columns:1fr auto}.loyalty-movement strong{grid-column:1/-1;grid-row:2}}

.booking-conditions{border:1px solid var(--line);border-radius:10px;background:#f8faf5;padding:12px}.booking-conditions summary{cursor:pointer;font-size:13px;font-weight:650;line-height:1.6;color:var(--forest);overflow-wrap:anywhere}.booking-conditions summary:focus-visible{outline:3px solid #bc823e;outline-offset:3px}.booking-conditions[open] summary{margin-bottom:18px}.booking-conditions .form-actions{margin-bottom:0}

.external-composer label{display:grid;gap:7px;font-size:12px}.external-composer textarea{width:100%;border:1px solid var(--line);border-radius:8px;padding:10px;background:#f1f3ee;color:#6f7d72;resize:none}.external-composer button{width:100%;cursor:not-allowed}

.detail-head{padding:15px 20px 12px}.detail-head .eyebrow{margin-bottom:3px}.detail-head h2{font-size:19px;line-height:1.2}.detail-scroll{padding-top:13px}.detail-info{padding:6px 9px;margin-bottom:10px;font-size:11px}
.visit-snapshot{border:1px solid #cfdfd1;background:linear-gradient(135deg,#f1f7ef,#fffdf7);border-radius:12px;padding:14px 15px;margin-bottom:12px;display:grid;gap:5px;min-width:0}
.visit-snapshot-time{font:normal 19px Georgia,serif;color:#244b35;line-height:1.25}.visit-snapshot-place{font-size:12px;color:#5d7564;line-height:1.35}.visit-snapshot-top{display:flex;align-items:center;gap:5px 10px;flex-wrap:wrap;min-width:0;margin-top:4px}.visit-snapshot-top strong{font-size:13px;min-width:0;overflow-wrap:anywhere}.visit-snapshot-top a{font-size:12px;color:#31694b;white-space:nowrap}.visit-status{border-radius:99px;background:#e2eee0;color:#3d6647;font-size:10px;padding:3px 7px;font-weight:700}.visit-snapshot-total{font-size:15px;color:#244b35;margin-top:4px;font-variant-numeric:tabular-nums}
.visit-history{border:1px solid #e0e6dd;background:#fffefa;border-radius:11px;padding:12px;margin-bottom:12px}.visit-history h3{font-size:13px;margin:0 0 8px;color:#355f43}.visit-history h4{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#899b8c;margin:11px 0 6px}.visit-history-group:first-of-type h4{margin-top:4px}.visit-history-list{display:grid;gap:5px}.visit-history-row{display:grid;gap:2px;width:100%;border:1px solid #e2e9df;border-radius:8px;background:#f8faf6;text-align:left;padding:8px 10px;color:#2b4b35}.visit-history-row:hover{background:#eef5ed;border-color:#b9d0ba}.visit-history-row strong{font-size:12px}.visit-history-row span,.visit-history-row small{font-size:11px;color:#718474}.visit-history-row small{color:#9b8a70}.visit-history .text-button{padding:7px 4px;margin-top:3px}
.discussion{margin-top:16px;padding-top:16px}.discussion>h3{font-family:Georgia,serif;font-size:20px;font-weight:500;color:#274b36}.past-visit-detail{border:1px solid #dfddd2;background:#fbfaf5;border-radius:11px;padding:12px;margin-top:12px}.past-visit-detail>.soft-button{width:100%;text-align:left}.past-visit-body{margin-top:12px}.past-visit-body h4{font-size:14px;margin:0 0 7px}.past-visit-meta{font-size:12px;color:#627365;line-height:1.45}.past-visit-items{padding-left:18px;font-size:12px;line-height:1.55;color:#4e6152}.past-chat-list{display:grid;gap:7px;margin-top:13px}.past-visit-detail .historical-visit{margin-bottom:0}
.chat-entry.booking_event{border-left:3px solid #9cae9a;background:#f5f7f1}.chat-item-event{color:#446b4c;font-weight:650}
.visit-item-form{border:1px solid #d7e4d5;background:#f8fbf6;border-radius:11px;padding:13px;margin:14px 0 18px}.visit-item-form h3{font-size:14px;margin:0 0 5px}.visit-item-form .field-hint{font-size:11px;margin-bottom:13px}.visit-item-form label{margin-bottom:10px}.visit-item-fields{display:grid;grid-template-columns:minmax(80px,1fr) minmax(130px,1.5fr);gap:8px}.visit-item-preview{font-size:12px;font-weight:700;color:#2e6844;margin:1px 0 10px}.visit-item-form>.primary-button{width:100%}.visit-item-form .form-error{margin:0 0 10px}
@media(max-width:440px){.detail-head{padding:11px 14px 9px}.detail-head h2{font-size:17px}.detail-scroll{padding:11px 13px 26px}.detail-info{font-size:10px}.visit-snapshot{padding:11px 12px}.visit-snapshot-time{font-size:17px}.visit-history{padding:10px}.visit-history-row{padding:8px}.visit-item-form{padding:11px}.visit-item-fields{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr)}.visit-item-fields input{min-width:0}}

/* Keep the current booking visible while the compact visit history or chat scrolls. */
.detail-info{display:none}
.visit-snapshot{position:sticky;top:0;z-index:2;grid-template-columns:minmax(0,1fr) auto;gap:2px 8px;padding:9px 11px;margin-bottom:7px;box-shadow:0 4px 12px #1c493014}
.visit-snapshot-time{font-size:16px;line-height:1.2;grid-column:1}
.visit-snapshot-total{font-size:13px;margin:0;grid-column:2;grid-row:1;align-self:center;white-space:nowrap}
.visit-snapshot-place{grid-column:1/-1;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.visit-snapshot-top{grid-column:1/-1;margin:1px 0 0;gap:3px 7px;flex-wrap:nowrap;overflow:hidden}
.visit-snapshot-top strong{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}
.visit-snapshot-top a{font-size:11px;flex:none}
.visit-snapshot-top .visit-status{display:none}
.visit-history{max-height:116px;overflow:auto;padding:6px 9px;margin-bottom:7px;scrollbar-color:#b6c9b7 transparent}
.visit-history h3{font-size:12px;margin-bottom:3px}.visit-history h4{font-size:10px;margin:6px 0 3px}
.visit-history-group:first-of-type h4{margin-top:2px}.visit-history-list{gap:3px}
.visit-history-row{padding:4px 7px;gap:0;border-radius:6px}.visit-history-row strong{font-size:11px}.visit-history-row span{font-size:10px}
.visit-history .text-button{padding:3px 4px;margin:0}
.booking-conditions{padding:7px 10px}.booking-conditions summary{line-height:1.35}
.booking-actions{margin-top:8px;padding-top:8px}.booking-actions>h3{display:none}
#action-controls{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.booking-actions button{width:auto;min-height:34px;padding:6px 9px;margin:0;flex:1;font-size:12px}
.booking-actions label{flex-basis:100%;margin:2px 0 0}.payment-timer{padding:6px 8px;margin:0 0 6px}
.discussion{margin-top:8px;padding-top:8px}.discussion>h3{font-size:17px;margin-bottom:5px}
@media(max-width:440px){.visit-snapshot{padding:8px 9px}.visit-snapshot-time{font-size:15px}.visit-snapshot-total{font-size:12px}.visit-snapshot-place{font-size:10px}.visit-history{max-height:108px;padding:5px 7px}.booking-actions button{font-size:11px}}

.calendar-legend{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 10px}
.time-label:first-child{transform:none}
.calendar-legend-item{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:8px;background:var(--paper);padding:6px 9px;font-size:11px;min-width:0}
.calendar-legend-item strong{white-space:nowrap}.calendar-legend-item small{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.calendar-legend-swatch{width:10px;height:10px;border-radius:3px;background:var(--house-border);flex:none}
[data-house="2332638"]{--house-bg:#dfecfb;--house-border:#5580b9;--house-ink:#23466d;--house-line:#bdd3ec}
[data-house="2332623"]{--house-bg:#fff1c9;--house-border:#c59035;--house-ink:#6c4c14;--house-line:#f1d998}
[data-house="2389281"]{--house-bg:#ffe2d8;--house-border:#d2755f;--house-ink:#793f33;--house-line:#f4beae}
.calendar-head{display:grid;grid-template-columns:54px minmax(0,1fr);min-width:0;align-items:center;gap:0}
.calendar-head>span,.calendar-head>strong{padding:10px 12px;font-size:12px}.calendar-head>span{color:var(--muted)}.calendar-head>strong{border-left:1px solid var(--line)}
.calendar-grid{display:grid;grid-template-columns:54px minmax(0,1fr);min-width:0}.time-column{grid-column:1}.calendar-events{position:relative;height:1440px;grid-column:2;min-width:0;cursor:crosshair;background:repeating-linear-gradient(to bottom,transparent 0,transparent 29px,#eff1ec 29px,#eff1ec 30px,transparent 30px,transparent 60px)}
.calendar-slot{position:absolute;left:calc(var(--lane) * 100% / var(--lanes));width:calc(100% / var(--lanes));height:0;z-index:2}
.calendar-slot:hover,.calendar-slot:focus-within{z-index:4}
.calendar-booking,.calendar-cleaning{position:absolute;left:3px;right:3px;display:block;width:calc(100% - 6px);margin:0;text-align:left;overflow:hidden;border:1px solid var(--house-border,#71917a);border-radius:6px;color:var(--house-ink,#234c37);box-shadow:0 2px 5px #1e3f3018}
.calendar-booking{top:0;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;background:var(--house-bg,#e4f0e2);padding:3px 5px;line-height:1.2}
.calendar-booking strong,.calendar-booking span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.calendar-booking strong{font-size:11px}.calendar-booking span{font-size:10px}.calendar-booking .calendar-guest{font-weight:650}
.calendar-booking.is-short{padding:0 5px}.calendar-booking.is-short .calendar-guest,.calendar-booking.is-short .calendar-card-status{display:none}.calendar-booking.is-tiny span{display:none}
.calendar-booking[data-status="awaiting_prepayment"]{border-style:dashed;border-width:2px}
.calendar-cleaning{background:repeating-linear-gradient(135deg,var(--house-bg,#e4f0e2) 0,var(--house-bg,#e4f0e2) 5px,var(--house-line,#cadfca) 5px,var(--house-line,#cadfca) 7px);border-top:0;border-radius:0 0 6px 6px;padding:0 5px;font-size:10px;line-height:1.2}
.calendar-booking:hover,.calendar-cleaning:hover{filter:brightness(.96)}
@media(max-width:720px){.calendar-legend-item{flex:1 1 140px}.calendar-legend-item small{max-width:115px}.calendar-head,.calendar-grid{min-width:0}}

/* RB03.04: one modal workspace, with native dialogs for secondary work. */
#booking-panel:not([open]){display:none}
#booking-panel[open]{display:flex;flex-direction:column;position:fixed;inset:0;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;border:0;border-radius:0;background:#f7f8f5;box-shadow:none;overflow:hidden}
#booking-panel::backdrop,.visit-subdialog::backdrop{background:#10271fd1}
#booking-panel .detail-head{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:7px 14px;flex:none;padding:9px 20px 10px;border-bottom:1px solid #dce5d9;background:#fffefa;box-shadow:0 3px 12px #24402c0d}
#close-booking{border:0;background:transparent;color:#265039;font-size:13px;font-weight:700;white-space:nowrap;padding:7px 3px;min-height:36px}
.visit-top-actions{display:flex;justify-content:flex-end;gap:6px;min-width:0}.visit-top-actions button{min-height:34px;padding:6px 10px;font-size:12px}
#booking-panel .visit-snapshot{grid-column:1/-1;grid-row:2;position:static;display:flex;align-items:center;flex-wrap:wrap;gap:2px 13px;min-width:0;margin:0;padding:0;border:0;border-radius:0;background:none;box-shadow:none}
#booking-panel .visit-snapshot-time{font:600 17px/1.25 Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#214a34;white-space:nowrap}
#booking-panel .visit-snapshot-place{font-size:12px;color:#556f5c;white-space:nowrap;max-width:260px;overflow:hidden;text-overflow:ellipsis}
#booking-panel .visit-snapshot-top{display:flex;align-items:center;gap:6px;min-width:0;overflow:hidden;white-space:nowrap}
#booking-panel .visit-snapshot-top strong{max-width:220px;font-size:12px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}
#booking-panel .visit-snapshot-top a{font-size:11px}
#booking-panel .visit-snapshot-top .visit-status{display:inline-block;font-size:10px}
.visit-snapshot-money{display:flex;gap:10px;flex-wrap:wrap;align-items:center;font-variant-numeric:tabular-nums}
#booking-panel .visit-snapshot-total,#booking-panel .visit-snapshot-prepayment{font-size:12px;margin:0;white-space:nowrap}
#booking-panel .visit-snapshot-prepayment{color:#885c24}
.visit-notice{grid-column:1/-1;margin:0;padding:6px 9px;font-size:11px}
.visit-snapshot-payment,.visit-draft-badge{font-size:11px;color:#8a6b3a}.visit-draft-badge{color:#9e5844;font-weight:700}
#visit-chat-scroll{flex:1;min-height:0;overflow:auto;padding:18px clamp(14px,4vw,42px) 24px;scrollbar-color:#a9bca9 transparent}
#booking-panel .discussion{width:min(100%,880px);margin:0 auto;padding:0;border:0}
#booking-panel .booking-chat-list{display:flex;flex-direction:column;gap:11px;margin:0;padding:0 0 10px}
#booking-panel .chat-entry{width:fit-content;max-width:min(78%,650px);padding:10px 13px;border-radius:14px;background:#fffefa;box-shadow:0 3px 10px #1d3d2910;font-size:13px;line-height:1.45}
#booking-panel .chat-entry.internal_note[data-operator="operator-1"]{align-self:flex-start;border-left:3px solid #5e9274;background:#fffefa}
#booking-panel .chat-entry.internal_note[data-operator="operator-2"]{align-self:flex-end;border:1px solid #c7ddcb;background:#edf6ec}
#booking-panel .chat-entry.receipt,#booking-panel .chat-entry.booking_event{align-self:center;max-width:min(90%,700px)}
#booking-panel .chat-entry small{font-size:10px}.chat-technical-events{border-top:1px solid var(--line);margin:16px 0 4px;padding-top:10px}
.chat-technical-events summary{cursor:pointer;color:#567361;font-size:12px;font-weight:700}.chat-technical-events .chat-entry{margin:9px 0;max-width:100%}
#booking-panel .visit-composer{flex:none;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 10px;align-items:end;border-top:1px solid #dce5d9;background:#fffefa;padding:10px max(18px,calc((100vw - 880px)/2));box-shadow:0 -4px 14px #1a372312}
#booking-panel .visit-composer[hidden]{display:none}
#booking-panel #message-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 9px;align-items:end;min-width:0}
#booking-panel #message-form label{display:grid;gap:4px;margin:0;font-size:11px;font-weight:700;color:#53715c}
#booking-panel #message-form textarea{width:100%;min-height:44px;max-height:140px;resize:vertical;padding:9px 11px;border:1px solid #c8d8c9;border-radius:10px;background:#fbfdf9;font-size:13px}
#booking-panel #message-form button[type=submit]{min-height:42px;border:1px solid #28543e;background:#28543e;color:#fff;border-radius:9px;padding:8px 15px;font-weight:700}
#booking-panel #message-form .form-error{grid-column:1/-1}
.guest-channel{grid-column:1/-1;color:#7b8c7c;font-size:10px}
.visit-subdialog[open]{width:min(680px,calc(100vw - 24px));max-width:none;max-height:min(92dvh,900px);padding:0 18px 20px;overflow:auto;border:1px solid #dce5d9;border-radius:15px;background:#fffefa;color:var(--ink);box-shadow:0 24px 70px #132d2266}
.visit-subdialog-head{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 -18px 12px;padding:13px 18px;border-bottom:1px solid var(--line);background:#fffefa}
.visit-subdialog-head h2{font-size:19px;margin:0}.visit-subdialog-head button{min-height:34px}
.visit-subdialog .booking-conditions{border:0;padding:0;background:none}.visit-subdialog .booking-conditions summary{display:none}
.visit-subdialog .visit-history{display:block;max-height:none;overflow:visible;border:0;margin:0;padding:0}
.visit-subdialog .booking-actions{border:0;margin:0;padding:0}.visit-subdialog .visit-item-form{border:0;margin:0;padding:0;background:none}
.visit-subdialog .manual-receipt,.visit-subdialog #settings-button{margin-top:16px}
#booking-panel .past-visit-detail{max-width:880px;margin:0 auto}
@media(max-width:720px){#booking-panel .detail-head{padding:8px 12px;gap:4px 8px}.visit-top-actions button{padding:5px 7px;min-height:32px;font-size:11px}#booking-panel .visit-snapshot-time{font-size:15px}#booking-panel .visit-snapshot-place{font-size:11px}#booking-panel .visit-snapshot-top strong{max-width:160px}#booking-panel .visit-composer{padding:8px 12px}#visit-chat-scroll{padding:12px 12px 18px}#booking-panel .chat-entry{max-width:91%}}
@media(max-width:400px){#close-booking{font-size:11px}.visit-top-actions{gap:3px}.visit-top-actions button{font-size:10px;padding:5px}#booking-panel .visit-snapshot{gap:2px 7px}#booking-panel .visit-snapshot-place{max-width:140px}#booking-panel #message-form button[type=submit]{padding:7px 9px}}
#booking-panel .detail-head #close-booking,#booking-panel .visit-top-actions button{width:auto;height:auto;line-height:1.25;white-space:nowrap}
#booking-panel .visit-top-actions button{font-size:12px;flex:none}
@media(max-width:440px){#booking-panel .detail-head{grid-template-columns:1fr}.visit-top-actions{grid-column:1;justify-content:flex-start;flex-wrap:wrap}#booking-panel .visit-snapshot{grid-column:1;grid-row:auto}#booking-panel .visit-top-actions button{font-size:11px}}
.visit-discard-dialog[open]{width:min(430px,calc(100vw - 24px));padding:20px}.visit-discard-dialog h2{font-size:20px;margin:0 0 10px}.visit-discard-dialog .field-hint{margin-bottom:18px}.visit-discard-buttons{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}.visit-discard-buttons button{min-height:40px}

/* RB03.05: discussions stay inside their root message; each has its own composer. */
#booking-panel .chat-entry.thread-open{width:min(100%,720px);max-width:95%}
#booking-panel .thread-toggle{display:block;margin-top:7px;text-align:left}
.inline-thread{display:grid;gap:9px;margin-top:10px;padding:10px;border:1px solid #cbdccf;border-radius:11px;background:#f5f9f3}
.inline-thread[hidden]{display:none}
.inline-thread-head{display:flex;align-items:center;gap:8px;min-width:0}
.inline-thread-head strong{font-size:12px;color:#2e6042}
.inline-thread-head small{margin:0;color:#788e7d}
.inline-thread-head button{margin-left:auto;white-space:nowrap}
.inline-thread-messages{display:grid;gap:7px;max-height:280px;overflow:auto}
#booking-panel .inline-thread-messages .chat-entry{width:100%;max-width:100%;margin:0;background:#fffefa;box-shadow:none}
.thread-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;align-items:end}
.thread-form label{margin:0;min-width:0}
.thread-form textarea{min-height:38px;max-height:100px;resize:none;overflow:auto;padding:8px 10px;font-size:13px}
.thread-form button{min-height:38px;padding:7px 10px;font-size:12px}
.thread-form .form-error{grid-column:1/-1;margin:0}
#booking-panel .visit-composer{grid-template-columns:auto minmax(0,1fr);gap:4px 8px;padding-top:7px;padding-bottom:7px}
#booking-panel #message-form{gap:5px}
#booking-panel #message-form label{min-width:0}
#booking-panel #message-form textarea{height:38px;min-height:38px;max-height:100px;resize:none;overflow:auto;padding:8px 10px;line-height:1.35}
#booking-panel #message-form button[type=submit]{min-height:38px;padding:7px 11px;font-size:12px}
.visit-action-menu{position:relative;align-self:end}
.visit-action-menu summary{display:grid;place-items:center;width:38px;height:38px;border:1px solid #c8d9c9;border-radius:9px;background:#eff6ed;color:#28543e;font-size:24px;font-weight:400;cursor:pointer;list-style:none}
.visit-action-menu summary::-webkit-details-marker{display:none}
.visit-action-menu-list{position:absolute;bottom:44px;left:0;z-index:8;display:grid;min-width:155px;padding:5px;border:1px solid #d9e3d7;border-radius:10px;background:#fffefa;box-shadow:0 12px 30px #1c3a2a26}
.visit-action-menu:not([open]) .visit-action-menu-list{display:none}
.visit-action-menu-list button{border:0;background:none;text-align:left;padding:9px 11px;border-radius:7px;color:#234a34;font-size:13px}
.visit-action-menu-list button:hover,.visit-action-menu-list button:focus-visible{background:#edf5ec}
#booking-panel .guest-channel{grid-column:1/-1;margin-left:46px}
.new-discussion-form label{margin-bottom:10px}.new-discussion-form textarea{min-height:90px}
@media(max-width:440px){#booking-panel .chat-entry.thread-open{max-width:100%}.inline-thread{padding:8px}.inline-thread-head{flex-wrap:wrap}.thread-form button{padding:7px 8px}}

.visit-snapshot-top .visit-status{display:inline-block;font-size:10px;padding:2px 5px;border-radius:5px;background:#e9eee5;color:#45614c;white-space:nowrap}
