:root{--pink: #fe70d1;--pink-hover: #e558ba;--pink-light: #fff0fa;--pink-border: #f9b8e8;--green: #06C755;--green-hover: #05a847;--green-light: #edfaf3;--green-border: #9de5c0;--text: #1a1a1a;--text-muted: #666;--border: #e0dde8;--surface: #ffffff;--bg: #f8f4fb;--radius: 10px;--radius-sm: 6px;--shadow: 0 1px 4px rgba(0, 0, 0, .08);--shadow-md: 0 2px 10px rgba(254, 112, 209, .12);--ctl-h: 2.25rem;--ctl-radius: 6px;--ctl-font: .78rem;--ctl-pad-x: .7rem;--ctl-gap: .35rem;--ctl-h-sm: 1.75rem;--ctl-radius-sm: 4px;--ctl-font-sm: .72rem;--ctl-pad-x-sm: .5rem;--ctl-h-touch: 44px;--warn-bg: #fffbeb;--warn-text: #b45309;--warn-text-body: #92400e;--warn-border: #f59e0b;--danger-bg: #fef2f2;--danger-text: #991b1b;--danger-strong: #dc2626;--danger-border: #fca5a5;--sun-text: #dc2626;--sat-text: #2563eb;--ok-text: #065f46;--done-bg: #f0fdfa;--done-text: #0f766e;--done-border: #5eead4;--muted-bg: #f3f4f6;--muted-text: #4b5563;--muted-border: #d1d5db}*,*:before,*:after{box-sizing:border-box}body{margin:0;background:var(--bg);font-family:Hiragino Sans,Noto Sans JP,system-ui,sans-serif;color:var(--text);min-height:100vh;-webkit-font-smoothing:antialiased}a{color:var(--pink);font-weight:600;text-decoration:none}a:hover{text-decoration:underline}.app-shell{--app-shell-padding-x: .875rem;--app-shell-padding-bottom: 3rem;--patient-sticky-footer-height: 5.5rem;--app-header-height: 4.05rem;--app-shell-full-height: calc(100dvh - var(--app-header-height));max-width:430px;margin:0 auto;padding:.875rem var(--app-shell-padding-x) var(--app-shell-padding-bottom);display:flex;flex-direction:column;gap:.875rem;min-height:var(--app-shell-full-height)}main{display:flex;flex-direction:column;align-items:stretch}.dev-banner{display:flex;flex-direction:column;gap:.5rem;padding:.75rem 1rem;border-radius:var(--radius-sm);background:#fffbf0;border:1px solid #f5c84a;color:#7a5a00;font-size:.85rem}.dev-banner-controls{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.dev-banner-controls button{padding:.3em .9em;min-height:unset;font-size:.82rem;font-weight:600}.dev-banner-controls input{min-width:12rem;padding:.35rem .6rem;border:1px solid #e0c060;border-radius:var(--radius-sm);font-size:.85rem}button{border-radius:var(--radius-sm);border:1px solid transparent;padding:.75em 1.2em;min-height:var(--ctl-h-touch);font-size:.95rem;font-weight:600;font-family:inherit;background-color:transparent;color:inherit;cursor:pointer;transition:background .18s,box-shadow .18s;line-height:1.4;-webkit-tap-highlight-color:transparent}button:focus-visible{outline:2px solid var(--pink);outline-offset:2px}button:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.ui-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--ctl-gap);min-height:var(--ctl-h);height:var(--ctl-h);padding:0 var(--ctl-pad-x);border:1px solid transparent;border-radius:var(--ctl-radius);background:transparent;color:var(--text);font-size:var(--ctl-font);font-weight:600;font-family:inherit;line-height:1;white-space:nowrap;cursor:pointer;transition:background .18s,color .18s,border-color .18s;-webkit-tap-highlight-color:transparent}.ui-btn:focus-visible{outline:2px solid var(--pink);outline-offset:2px}.ui-btn:disabled{opacity:.45;cursor:not-allowed}.ui-btn--primary{background:var(--pink);border-color:var(--pink);color:#fff}.ui-btn--primary:hover:not(:disabled){background:var(--pink-hover);border-color:var(--pink-hover);color:#fff}.ui-btn--secondary{background:var(--surface);border-color:var(--border);color:var(--text)}.ui-btn--secondary:hover:not(:disabled){background:var(--pink-light);border-color:var(--pink-border);color:var(--pink)}.ui-btn--danger{background:var(--surface);border-color:#e05050;color:#c03030}.ui-btn--danger:hover:not(:disabled){background:#fff5f5;border-color:#c03030;color:#a02020}.ui-btn--small{min-height:var(--ctl-h-sm);height:var(--ctl-h-sm);padding:0 var(--ctl-pad-x-sm);font-size:var(--ctl-font-sm)}.ui-btn--icon{flex-shrink:0;width:var(--ctl-h);min-width:var(--ctl-h);padding:0;border:none;background:transparent;color:var(--text-muted)}.ui-btn--icon:hover:not(:disabled){background:var(--pink-light);color:var(--pink)}.ui-seg{display:flex;flex-shrink:0;align-self:flex-start;min-height:var(--ctl-h);height:var(--ctl-h);background:var(--surface);border:1px solid var(--border);border-radius:var(--ctl-radius);overflow:hidden}.ui-seg-item{display:inline-flex;align-items:center;justify-content:center;gap:var(--ctl-gap);min-height:0;height:100%;padding:0 var(--ctl-pad-x);border:none;border-right:1px solid var(--border);border-radius:0;background:transparent;color:var(--text-muted);font-size:var(--ctl-font);font-weight:600;font-family:inherit;line-height:1;white-space:nowrap;cursor:pointer;transition:background .18s,color .18s;-webkit-tap-highlight-color:transparent}.ui-seg-item:last-child{border-right:none}.ui-seg-item:hover:not(.ui-seg-item--active):not(:disabled){background:var(--pink-light);color:var(--pink)}.ui-seg-item:focus-visible{outline:2px solid var(--pink);outline-offset:-2px}.ui-seg-item--active{background:var(--pink-light);color:var(--pink);font-weight:700}.ui-seg-item--active:hover:not(:disabled){background:var(--pink-light);color:var(--pink)}.ui-toggle{display:inline-flex;align-items:center;justify-content:center;gap:var(--ctl-gap);flex-shrink:0;min-height:var(--ctl-h);height:var(--ctl-h);padding:0 var(--ctl-pad-x);border:1px solid var(--border);border-radius:var(--ctl-radius);background:var(--surface);color:var(--text-muted);font-size:var(--ctl-font);font-weight:600;font-family:inherit;line-height:1;white-space:nowrap;cursor:pointer;transition:background .18s,color .18s,border-color .18s;-webkit-tap-highlight-color:transparent}.ui-toggle:hover:not(.ui-toggle--on):not(:disabled){background:var(--pink-light);color:var(--pink)}.ui-toggle:focus-visible{outline:2px solid var(--pink);outline-offset:2px}.ui-toggle:disabled{opacity:.45;cursor:not-allowed}.ui-toggle--on{background:var(--pink-light);color:var(--pink);font-weight:700}.ui-toggle--on:hover:not(:disabled){background:var(--pink-light);color:var(--pink)}.ui-badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.15rem;height:1.15rem;padding:0 .25rem;border-radius:999px;background:var(--pink);color:#fff;font-size:.65rem;font-weight:700}ul{padding-inline-start:0;margin-block:0;list-style-type:none;display:flex;flex-direction:column;gap:0;background:transparent;border:none;border-radius:0;margin:0}li{background:transparent;padding:0}li:hover{background:transparent}.clinic-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem}.app-header{background:#fff;padding:.65rem 1rem;display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--border);box-shadow:0 1px 6px #0000000f;position:sticky;top:0;z-index:100;--app-header-height: 4.05rem}.app-header-slot{position:absolute;right:.75rem;top:50%;transform:translateY(-50%);display:flex;align-items:center;gap:.35rem;max-width:calc(50% - .5rem)}.app-header-slot-left{position:absolute;left:.75rem;top:50%;transform:translateY(-50%);display:flex;align-items:center;gap:.35rem;max-width:calc(50% - .5rem)}.lang-switch-label-short{display:none}.open-in-browser-btn{min-height:0;height:var(--ctl-h)}@media(max-width:420px){.app-header-slot-left .lang-switch-label-long{display:none}.app-header-slot-left .lang-switch-label-short{display:inline}}.role-switch{display:flex;align-items:center;gap:.35rem}.role-switch-select{min-height:unset;padding:.3rem 1.6rem .3rem .55rem;font-size:.75rem;font-weight:600;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-muted);cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath fill='%23666' d='M1 1l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .45rem center;max-width:7.5rem}.role-switch-select:focus-visible{outline:2px solid var(--pink);outline-offset:2px}.role-switch-logout{min-height:unset;padding:.28rem .45rem;font-size:.68rem;font-weight:600;background:var(--surface);color:var(--text-muted);border:1px solid var(--border);box-shadow:none;white-space:nowrap}.role-switch-logout:hover{background:var(--surface);box-shadow:none;border-color:var(--pink-border)}.app-header-logo{height:2.75rem;width:auto;max-width:min(100%,18rem);object-fit:contain;display:block}.clinic-logo-fallback{display:flex;align-items:center;justify-content:center;box-sizing:border-box;aspect-ratio:320 / 80;max-width:min(100%,20rem);overflow:hidden;text-align:center;font-weight:600;font-size:clamp(.875rem,3.5vw,1.125rem);color:var(--text);line-height:1.2;white-space:nowrap;text-overflow:ellipsis}.clinic-logo-fallback.app-header-logo{height:2.75rem;max-width:min(100%,18rem)}.clinic-logo-fallback.loading-screen-logo{height:4.5rem;max-width:min(100%,20rem)}.loading-screen-message{margin:1rem 0 0;color:var(--text-muted);font-size:.85rem;text-align:center}.loading-screen{min-height:55vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem 1rem}.loading-screen-logo-wrap{position:relative;display:inline-block;overflow:hidden;border-radius:.35rem}.loading-screen-logo{height:4.5rem;width:auto;max-width:min(100%,20rem);object-fit:contain;display:block;animation:logo-gleam 1.8s ease-in-out infinite}.loading-screen-shine{position:absolute;inset:-10% -30%;background:linear-gradient(105deg,transparent 38%,rgba(255,255,255,.15) 44%,rgba(255,255,255,.85) 50%,rgba(255,255,255,.15) 56%,transparent 62%);transform:translate(-130%) skew(-12deg);animation:logo-shine-sweep 1.8s ease-in-out infinite;pointer-events:none}@keyframes logo-shine-sweep{0%,18%{transform:translate(-130%) skew(-12deg)}45%{transform:translate(130%) skew(-12deg)}to{transform:translate(130%) skew(-12deg)}}@keyframes logo-gleam{0%,to{filter:brightness(1)}45%{filter:brightness(1.12) drop-shadow(0 0 10px rgba(254,112,209,.35))}}@media(prefers-reduced-motion:reduce){.loading-screen-logo,.loading-screen-shine{animation:none}}.clinic-header{display:flex;align-items:center;gap:.75rem;padding:.875rem 1rem;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);border-left:4px solid var(--pink)}.clinic-header h1{margin:0;font-size:1.25rem;font-weight:700;color:var(--text)}.clinic-header-sub{margin:0;font-size:.85rem;color:var(--text-muted)}.staff-tabs,.admin-tabs{display:flex;gap:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.staff-tab{flex:1;background:transparent;color:var(--text-muted);border:none;border-right:1px solid var(--border);border-radius:0;padding:.8rem .5rem;font-size:.9rem;font-weight:500;transition:background .15s,color .15s}.staff-tab:last-child{border-right:none}.staff-tab:hover{background:var(--pink-light);color:var(--pink)}.staff-tab--active{background:var(--pink-light);color:var(--pink);font-weight:700;border-bottom:2px solid var(--pink)}.admin-tabs .staff-tab{flex:1 1 calc(33.333% + -0px);min-width:4.5rem;font-size:.82rem}.staff-tab-panel{display:flex;flex-direction:column;gap:1rem}.admin-appointment-entry-actions{display:flex;flex-direction:column;gap:.5rem;width:100%}.tab-content{min-height:65vh}.skeleton{position:relative;overflow:hidden;border-radius:var(--radius-sm);background:linear-gradient(90deg,#ece9f0,#f5f3f7,#ece9f0 80%);background-size:200% 100%;animation:skeleton-shimmer 1.4s ease-in-out infinite}.skeleton:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.55) 50%,transparent 100%);transform:translate(-100%);animation:skeleton-shimmer-overlay 1.4s ease-in-out infinite}.btn-spinner{display:inline-block;width:1em;height:1em;box-sizing:border-box;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:btn-spinner-rotate .65s linear infinite;vertical-align:-.125em}@keyframes btn-spinner-rotate{to{transform:rotate(360deg)}}.cal-grid--loading .cal-daybody{position:relative;overflow:hidden}.cal-grid--loading .cal-daybody:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.45) 50%,transparent 100%);transform:translate(-100%);animation:skeleton-shimmer-overlay 1.4s ease-in-out infinite;pointer-events:none}@media(prefers-reduced-motion:reduce){.skeleton,.skeleton:after{animation:none}.skeleton:after{display:none}.btn-spinner{animation:none;border-top-color:currentColor;opacity:.65}.patient-spinner{animation:none;border-top-color:var(--pink);opacity:.65}.cal-grid--loading .cal-daybody:after{animation:none;transform:none;opacity:.35}}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes skeleton-shimmer-overlay{0%{transform:translate(-100%)}to{transform:translate(100%)}}.staff-section h2:not([class]),.staff-section h3:not([class]){margin:0 0 .75rem;font-size:1.05rem;font-weight:700;color:var(--text)}.staff-section h3:not([class]){font-size:.95rem}.staff-shift-month-group+.staff-shift-month-group{margin-top:1.25rem}.staff-form,.patient-form{display:flex;flex-direction:column;gap:.75rem}.staff-field,.patient-field-block{display:flex;flex-direction:column;gap:.35rem;font-weight:600;font-size:.9rem;color:var(--text)}.staff-field-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.staff-color-chip{flex:0 0 auto;width:.85rem;height:.85rem;border-radius:3px;border:1px solid rgba(0,0,0,.12)}.staff-color-palette{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:.35rem}.staff-color-swatch{width:100%;aspect-ratio:1;padding:0;border:2px solid transparent;border-radius:4px;cursor:pointer}.staff-color-swatch--selected{border-color:var(--text);box-shadow:0 0 0 1px var(--bg, #fff)}.staff-color-custom{display:flex;align-items:center;gap:.5rem}.staff-color-input{width:2.5rem;height:2rem;padding:0;border:1px solid var(--border);border-radius:var(--radius-sm);background:transparent;cursor:pointer}.staff-color-hex{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.85rem;font-weight:500;color:var(--text-muted)}.staff-input,.patient-date-input,.patient-text-input{width:100%;padding:.75rem .875rem;min-height:var(--ctl-h-touch);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:1rem;font-family:inherit;color:var(--text);background:var(--surface);transition:border-color .15s,box-shadow .15s;-webkit-appearance:none}.staff-input:focus,.patient-date-input:focus,.patient-text-input:focus{outline:none;border-color:var(--pink);box-shadow:0 0 0 3px #fe70d126}select.staff-input{cursor:pointer}.staff-option--busy{color:var(--text-muted)}.staff-status,.patient-status{margin:0;font-size:.9rem;color:var(--text-muted)}.staff-alert,.patient-alert{margin:0;padding:.75rem 1rem;border-radius:var(--radius-sm);background:var(--danger-bg);border:1px solid var(--danger-border);color:var(--danger-text);font-size:.9rem}.staff-alert--success{background:var(--green-light);border-color:var(--green-border);color:var(--ok-text)}.staff-alert--warning{background:var(--warn-bg);border-color:#fcd34d;color:var(--warn-text-body)}.shift-calendar{display:flex;flex-direction:column;gap:.5rem}.shift-calendar-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.25rem}.shift-calendar-title{font-size:1rem;font-weight:700;color:var(--text)}.shift-calendar-nav{display:flex;align-items:center;justify-content:center;min-width:var(--ctl-h-touch);min-height:var(--ctl-h-touch);padding:.5rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:.85rem;cursor:pointer;transition:border-color .15s,background .15s}.shift-calendar-nav:hover:not(:disabled){border-color:var(--pink);background:var(--pink-light)}.shift-calendar-nav:disabled{opacity:.35;cursor:not-allowed}.shift-calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.shift-calendar-grid--weekdays{margin-bottom:2px}.shift-calendar-weekday{display:flex;align-items:center;justify-content:center;min-height:32px;padding:.25rem;border:none;border-radius:var(--radius-sm);background:transparent;font-size:.75rem;font-weight:700;color:var(--text-muted);cursor:pointer;transition:background .15s,color .15s}.shift-calendar-weekday:hover{background:var(--pink-light);color:var(--text)}.shift-calendar-weekday--0{color:var(--sun-text)}.shift-calendar-weekday--6{color:var(--sat-text)}.shift-calendar-day{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:2px;aspect-ratio:auto;min-height:64px;padding:.25rem .15rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);font-family:inherit;font-size:.9rem;font-weight:600;color:var(--text);cursor:pointer;transition:border-color .15s,background .15s,color .15s}.shift-calendar-day--empty{border:none;background:transparent;cursor:default;min-height:0}.shift-calendar-day:not(:disabled):not(.shift-calendar-day--empty):hover{border-color:var(--pink-border);background:var(--pink-light)}.shift-calendar-day--selected{border-color:var(--pink);background:var(--pink);color:#fff}.shift-calendar-day--selected:hover{background:var(--pink-hover);border-color:var(--pink-hover)}.shift-calendar-day--disabled,.shift-calendar-day--disabled:disabled{opacity:1;cursor:not-allowed;background:var(--muted-bg);color:var(--muted-text)}.shift-calendar-day--submitted{background:#fef9c3;border-color:#fde68a;color:#713f12}.shift-calendar-day--approved{background:var(--green-light);border-color:var(--green-border);color:var(--ok-text)}.shift-calendar-day--detail{outline:2px solid var(--pink);outline-offset:1px}.shift-calendar-day-num{line-height:1.2;font-size:.85rem}.shift-calendar-day-times{display:flex;flex-direction:column;align-items:center;gap:1px;width:100%}.shift-calendar-day-time{font-size:.58rem;font-weight:700;line-height:1.1;letter-spacing:-.02em}.shift-calendar-day-status{font-size:.55rem;font-weight:600;line-height:1;opacity:.9}.shift-calendar-legend{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin:0 0 .75rem;font-size:.8rem}.shift-calendar-legend-item{display:inline-flex;align-items:center;gap:.35rem;font-weight:600}.shift-calendar-legend-item:before{content:"";width:.7rem;height:.7rem;border-radius:3px;border:1px solid transparent}.shift-calendar-legend-item--submitted:before{background:#fef9c3;border-color:#fde68a}.shift-calendar-legend-item--approved:before{background:var(--green-light);border-color:var(--green-border)}.shift-calendar-detail{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--border)}.shift-calendar-detail-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.shift-calendar-detail-header h3{margin:0;font-size:.95rem}.shift-calendar-summary{margin:0;font-size:.9rem;font-weight:600;color:var(--text-muted);text-align:center}.shift-calendar-form{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--border)}.patient-success{margin:0;padding:.75rem 1rem;border-radius:var(--radius-sm);background:var(--green-light);border:1px solid var(--green-border);color:var(--ok-text);font-weight:600;font-size:.95rem}.ui-pager{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.5rem .75rem;margin-top:.75rem}.ui-pager-range{margin:0;font-size:.8rem;color:var(--text-muted)}.ui-filter-toggle{align-self:flex-start}.ui-filters{display:none;flex-direction:column;gap:.75rem}.ui-filters--open{display:flex}.ui-filter-group{display:flex;flex-direction:column;gap:.35rem;min-width:0}.ui-filter-label{font-size:.72rem;font-weight:700;color:var(--text-muted)}.ui-filter-controls{display:flex;flex-direction:column;gap:.35rem;min-width:0}.ui-filter-dates{display:flex;flex-wrap:wrap;gap:.35rem}.ui-filter-dates .staff-input{flex:0 0 auto;width:9.5rem}.appointment-csv-dates .staff-input{width:11rem}@media(min-width:900px){.app-shell--admin .ui-filter-toggle{display:none}.app-shell--admin .ui-filters{display:flex;flex-direction:row;flex-wrap:wrap;align-items:flex-end;gap:.75rem 1rem}.app-shell--admin .ui-filter-group{flex:0 0 auto;min-width:0}.app-shell--admin .ui-filter-group--text{flex:0 1 15rem;min-width:9rem}.app-shell--admin .ui-filter-controls{flex-direction:row;align-items:center;gap:.5rem}.app-shell--admin .ui-filters .staff-input{height:var(--ctl-h);min-height:0;border-radius:var(--ctl-radius);font-size:var(--ctl-font)}}.ui-page-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem .75rem}.ui-page-head-main{display:flex;align-items:baseline;flex-wrap:wrap;gap:.35rem .5rem;min-width:0}.ui-page-head-main--center{align-items:center}.ui-page-title{margin:0;font-size:15px;font-weight:700;line-height:1.3;color:var(--text)}.ui-page-meta{font-size:.78rem;font-weight:500;color:var(--text-muted);white-space:nowrap}.ui-page-head-actions{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem}.staff-btn-block,.patient-btn-block{width:100%;background:var(--pink);color:#fff}.staff-btn-block:hover:not(:disabled),.patient-btn-block:hover:not(:disabled){background:var(--pink-hover);box-shadow:var(--shadow-md)}.staff-btn-secondary,.patient-btn-secondary{background:var(--surface);color:var(--text);border:1px solid var(--border)}.staff-btn-secondary:hover:not(:disabled),.patient-btn-secondary:hover:not(:disabled){background:var(--bg);box-shadow:var(--shadow)}a.patient-btn-block.patient-btn-secondary{display:block;box-sizing:border-box;text-align:center;text-decoration:none;border-radius:var(--radius-sm);border:1px solid var(--border);padding:.75em 1.2em;min-height:var(--ctl-h-touch);font-size:.95rem;font-weight:600;font-family:inherit;background:var(--surface);color:var(--text);cursor:pointer;transition:background .18s,box-shadow .18s;line-height:1.4;margin-bottom:.75rem}a.patient-btn-block.patient-btn-secondary:hover{background:var(--bg);box-shadow:var(--shadow)}a.patient-btn-block.patient-btn-secondary:focus-visible{outline:2px solid var(--pink);outline-offset:2px}a.patient-btn-block.btn-green{display:block;box-sizing:border-box;text-align:center;text-decoration:none;border-radius:var(--radius-sm);border:1px solid transparent;padding:.75em 1.2em;min-height:var(--ctl-h-touch);font-size:.95rem;font-weight:600;font-family:inherit;background:var(--green);color:#fff;cursor:pointer;transition:background .18s,box-shadow .18s;line-height:1.4;margin-bottom:.75rem}a.patient-btn-block.btn-green:hover{background:var(--green-hover);box-shadow:0 2px 10px #06c75533;text-decoration:none}a.patient-btn-block.btn-green:focus-visible{outline:2px solid var(--green);outline-offset:2px}.staff-btn-small{padding:.35rem .65rem;font-size:.82rem}.btn-green{background:var(--green);color:#fff}.btn-green:hover{background:var(--green-hover);box-shadow:0 2px 10px #06c75533}.staff-list{display:flex;flex-direction:column;gap:.5rem;margin:0}.staff-list li{background:transparent;padding:0}.staff-list-item{display:flex;flex-direction:column;gap:.4rem;padding:.875rem 1rem;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow)}.staff-list-item-main{flex:1}.staff-list-item-date{margin:0 0 .2rem;font-weight:700;font-size:.95rem}.staff-list-item-time,.staff-list-item-detail{margin:0 0 .2rem;font-size:.9rem}.staff-list-item-note,.staff-list-item-meta{margin:0;font-size:.83rem;color:var(--text-muted)}.staff-list-item-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.25rem}.staff-badge{display:inline-block;padding:.2rem .55rem;border-radius:999px;font-size:.76rem;font-weight:700;white-space:nowrap}.staff-badge--submitted{background:#fef9c3;color:#713f12}.staff-badge--pending{background:#ffedd5;color:#9a3412;border:1px solid #fdba74}.staff-badge--approved{background:var(--green-light);color:var(--ok-text);border:1px solid var(--green-border)}.staff-badge--rejected{background:var(--danger-bg);color:var(--danger-text);border:1px solid var(--danger-border)}.staff-badge--booked{background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe}.staff-badge--confirmed{background:var(--pink-light);color:#9d174d;border:1px solid var(--pink-border)}.staff-badge--completed{background:#f0fdf4;color:#166534;border:1px solid #bbf7d0}.staff-badge--cancelled{background:var(--muted-bg);color:var(--muted-text);border:1px solid var(--muted-border)}.staff-badge--noshow{background:var(--danger-bg);color:var(--danger-text);border:1px solid var(--danger-border)}.staff-payroll-summary h2{margin:0 0 .75rem;font-size:1.05rem;font-weight:700}.staff-payroll-cards{display:flex;flex-direction:column;gap:.5rem}.staff-payroll-card{padding:.875rem 1rem;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow)}.staff-payroll-card--total{border-color:var(--pink-border);background:var(--pink-light)}.staff-payroll-card-label{margin:0 0 .25rem;font-size:.82rem;color:var(--text-muted);font-weight:600}.staff-payroll-card-value{margin:0;font-size:1.6rem;font-weight:800;color:var(--text)}.staff-payroll-card--total .staff-payroll-card-value{color:var(--pink-hover)}.admin-assignment-form{display:flex;flex-direction:column;gap:.5rem;margin-bottom:.75rem}.admin-unassigned-staff{color:var(--pink-hover);font-weight:700}.admin-overlap-warning{padding:.75rem;border-radius:var(--radius-sm);background:var(--warn-bg);border:1px solid var(--warn-border);margin-bottom:.5rem}.admin-overlap-warning p{margin:0 0 .5rem;font-size:.88rem;color:#78350f}.admin-table-wrap{overflow-x:auto}.admin-table{width:100%;border-collapse:collapse;font-size:.88rem;background:var(--surface);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.admin-table th,.admin-table td{padding:.6rem .75rem;border:1px solid var(--border);text-align:left}.admin-table thead th{background:var(--pink-light);color:#9d174d;font-weight:700;font-size:.82rem;letter-spacing:.02em}.admin-table tfoot th,.admin-table tfoot td{background:var(--bg);font-weight:700;color:var(--text)}.admin-checkbox-field{display:flex;flex-direction:row;align-items:center;gap:.5rem;font-weight:600;font-size:.9rem}.admin-checkbox-field input[type=checkbox]{width:1.1rem;height:1.1rem;margin:0;accent-color:var(--pink)}.admin-inline-form{width:100%;margin-top:.5rem;padding-top:.75rem;border-top:1px solid var(--border)}.admin-form-actions{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.admin-form-actions .staff-btn-block{flex:1;min-width:6rem}.admin-order-list{display:flex;flex-direction:column;gap:.4rem;margin:.75rem 0 0;padding:0;list-style:none}.admin-order-item{display:flex;align-items:center;gap:.75rem;padding:.55rem .75rem;border:1px solid var(--pink-border);border-radius:var(--radius);background:var(--pink-light)}.admin-order-item-name{font-weight:600;color:var(--text)}.admin-menu-category-group .admin-order-list{margin-top:0}.admin-pack-section{display:flex;flex-direction:column;gap:.75rem}.admin-pack-row{display:grid;grid-template-columns:minmax(0,1fr);gap:.5rem;align-items:end}.admin-pack-row-controls{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto auto;gap:.5rem;align-items:end}.admin-pack-field-menu,.admin-pack-field-price,.admin-pack-field-duration{min-width:0}.admin-pack-field-price-from{align-self:end;padding-bottom:.35rem;white-space:nowrap}.admin-pack-field-remove{display:flex;align-items:flex-end;flex-shrink:0}.admin-pack-remove{width:var(--ctl-h-sm);height:var(--ctl-h-sm);min-width:var(--ctl-h-sm);min-height:var(--ctl-h-sm);padding:0;display:inline-flex;align-items:center;justify-content:center;line-height:1}.admin-pack-total{margin:0;font-size:.9rem;font-weight:600}@media(max-width:480px){.admin-pack-row-controls{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;grid-template-areas:"price duration remove" "price-from price-from price-from"}.admin-pack-field-price{grid-area:price}.admin-pack-field-duration{grid-area:duration}.admin-pack-field-price-from{grid-area:price-from;padding-bottom:0}.admin-pack-field-remove{grid-area:remove;justify-self:end}}@media(max-width:360px){.admin-pack-row-controls{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"price remove" "duration duration" "price-from price-from"}}.admin-modal-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.admin-modal-header .confirm-modal-title{flex:1}.admin-modal-close{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;min-height:0;width:var(--ctl-h);height:var(--ctl-h);margin:-.25rem -.25rem 0 0;padding:0;border:none;border-radius:4px;background:transparent;color:var(--text-muted);font-size:1.25rem;line-height:1;cursor:pointer}.admin-modal-close:hover{background:var(--pink-light);color:var(--text)}.admin-modal-close:focus-visible{outline:2px solid var(--pink);outline-offset:2px}.admin-order-btns{display:flex;flex-wrap:wrap;gap:.25rem;flex-shrink:0;max-width:4.25rem}.admin-order-btn{display:inline-flex;align-items:center;justify-content:center;width:var(--ctl-h-sm);height:var(--ctl-h-sm);min-height:var(--ctl-h-sm);padding:0;font-size:var(--ctl-font-sm);line-height:1;color:var(--pink-dark);background:#fff;border:1px solid var(--pink-border);border-radius:var(--ctl-radius-sm);cursor:pointer;transition:background .15s,border-color .15s}.admin-order-btn:hover:not(:disabled){background:#fde0f4;border-color:var(--pink)}.admin-order-btn:disabled{opacity:.35;cursor:not-allowed}.admin-capability-section{padding:1rem;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow)}.admin-capability-section h3{margin:0 0 .75rem;font-size:.95rem;font-weight:700}.admin-checkbox-list{display:flex;flex-direction:column;gap:.4rem;margin:0}.admin-checkbox-list li{padding:.5rem .75rem;background:transparent;border-radius:var(--radius-sm)}.admin-checkbox-list li:hover{background:var(--pink-light)}.admin-unit-options{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.35rem}.patient-home,.patient-flow{display:flex;flex-direction:column;gap:1rem;flex:1;min-height:0}.patient-header h1{margin:0;font-size:1.25rem;font-weight:700}.patient-step-indicator{margin:.2rem 0 0;color:var(--text-muted);font-size:.85rem}.patient-step-body{display:flex;flex-direction:column;gap:.875rem}.patient-step-body--footer{flex:1;min-height:0;padding-bottom:var(--patient-sticky-footer-height)}.patient-step-body--footer:after{content:"";flex:1 0 0;order:1;min-height:0;pointer-events:none}.patient-menu-category-sections{display:flex;flex-direction:column;gap:1.25rem}.patient-menu-category-heading{margin:0 0 .5rem;font-size:.9375rem;font-weight:600;color:var(--text)}.patient-card-list{display:flex;flex-direction:column;gap:.5rem;margin:0}.patient-card-list li{padding:0;background:transparent}.patient-card-list li:hover{background:transparent}.patient-card{width:100%;display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;padding:.875rem 1rem;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);color:var(--text);text-align:left;box-shadow:var(--shadow);transition:border-color .15s,box-shadow .15s}.patient-card:hover{border-color:var(--pink);box-shadow:var(--shadow-md)}.patient-card--selected{border-color:var(--pink);background:var(--pink-light);box-shadow:var(--shadow-md)}.patient-card-title{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;font-size:1rem;font-weight:700}.patient-card-title-text{line-height:1.4}.patient-pack-badge{display:inline-flex;align-items:center;flex-shrink:0;padding:.1rem .5rem;border-radius:999px;font-size:.7rem;font-weight:700;line-height:1.4;white-space:nowrap;background:var(--pink-light);color:var(--pink);border:1px solid var(--pink-border)}.patient-card--selected .patient-pack-badge{background:var(--surface);color:var(--pink);border-color:var(--pink)}.patient-card--selected .patient-card-meta{color:var(--text-muted)}.patient-card-meta{font-size:.85rem;color:var(--text-muted)}.patient-card-meta--pack-composition{margin-top:.15rem}.patient-card-description{font-size:.8rem;color:var(--text-muted);white-space:pre-line;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;line-height:1.45;width:100%}.patient-card--selected .patient-card-description{color:var(--text-muted)}.patient-card-detail{font-size:.9rem;color:var(--text)}.patient-card--disabled .patient-card-detail{color:var(--muted-text)}.patient-card--selectable{position:relative}div.patient-card--selectable{flex-direction:row;align-items:center;gap:.75rem}.patient-card-select{position:absolute;inset:0;z-index:0;margin:0;padding:0;border:none;background:transparent;cursor:pointer;border-radius:inherit}.patient-card-select:disabled{cursor:not-allowed}.patient-card-face{position:relative;z-index:1;display:flex;flex-direction:row;align-items:center;gap:.75rem;width:100%;min-width:0;pointer-events:none}.patient-card-read-more{pointer-events:auto;margin:0;min-height:0;padding:.1rem 0;border:none;background:transparent;font-size:.8rem;line-height:1.45;color:var(--text-muted);text-decoration:underline;text-underline-offset:.12em;cursor:pointer;align-self:flex-start}.patient-card-read-more:hover{color:var(--text)}.patient-card--disabled,.patient-card--disabled:disabled{opacity:1;background:var(--muted-bg);color:var(--muted-text)}.patient-card--disabled .patient-card-select{pointer-events:none}.patient-card--disabled .patient-card-read-more{pointer-events:auto}.patient-menu-description-modal{display:flex;flex-direction:column;gap:.5rem}.patient-menu-description-modal>p{margin:0}.patient-menu-description-modal-badge{margin-left:.5rem;vertical-align:middle}.patient-menu-description-modal-body{margin:0;font-size:.85rem;color:var(--text-muted);white-space:pre-line;line-height:1.5}.patient-card-check{flex:0 0 auto;width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center;border-radius:50%;border:2px solid var(--border);color:#fff;font-size:.85rem;font-weight:700}.patient-card--selected .patient-card-check{background:var(--pink);border-color:var(--pink)}.patient-card-main{display:flex;flex-direction:column;align-items:flex-start;gap:.2rem;flex:1;min-width:0}.patient-step-hint{margin:0;font-size:.85rem;color:var(--text-muted)}.patient-register-done{gap:0}.patient-register-done-main{flex:1;display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:.875rem;min-height:0;padding:.5rem 0}.patient-register-done-main .patient-success,.patient-register-done-note{text-align:center}.patient-open-in-line-prompt{gap:0}.patient-open-in-line-main{flex:1;display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:.875rem;min-height:0;padding:.5rem 0;overflow-y:auto}.patient-open-in-line-main .patient-open-in-line-link{margin-bottom:0}.patient-open-in-line-header{margin-bottom:.25rem;text-align:center}.patient-open-in-line-notice{margin:0;font-size:.8rem;line-height:1.5;color:var(--text-muted);text-align:center}.patient-open-in-line-footer{display:flex;justify-content:center;padding:.5rem 0 0;flex-shrink:0}.patient-open-in-line-continue{margin:0;padding:.25rem .5rem;min-height:unset;border:none;background:none;color:var(--text-muted);font-size:.82rem;font-weight:500;line-height:1.4;text-decoration:underline;cursor:pointer;-webkit-tap-highlight-color:transparent}.patient-open-in-line-continue:hover{color:var(--text);background:none;box-shadow:none}.patient-open-in-line-continue:focus-visible{outline:2px solid var(--pink);outline-offset:2px}.patient-sticky-footer{position:sticky;bottom:0;z-index:10;order:2;margin-top:calc(-1 * var(--patient-sticky-footer-height));margin-left:calc(-1 * var(--app-shell-padding-x));margin-right:calc(-1 * var(--app-shell-padding-x));margin-bottom:calc(-1 * var(--app-shell-padding-bottom));padding:.75rem var(--app-shell-padding-x) calc(.75rem + env(safe-area-inset-bottom,0px));background:var(--surface);box-shadow:0 -4px 16px #0f172a1a;border:none;border-radius:0}.patient-select-footer.patient-sticky-footer{display:flex;flex-direction:column;gap:.5rem}.patient-sticky-footer--compact{--patient-sticky-footer-height: 3.75rem}.patient-audience-switch{margin:.5rem 0 var(--patient-sticky-footer-height);text-align:center}.patient-audience-switch-btn{padding:0;border:none;font-size:.75rem;color:var(--text-muted);text-decoration:underline;cursor:pointer}.patient-audience-switch-btn:hover{color:var(--text)}.patient-pair-section{margin-top:1rem;padding-top:.75rem;border-top:1px solid var(--border)}.patient-pair-toggle{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:var(--text-muted);cursor:pointer}.patient-pair-toggle input{width:1rem;height:1rem;margin:0}.patient-pair-fields{margin-top:.75rem;display:flex;flex-direction:column;gap:.75rem}.patient-field--optional{font-size:.75rem;color:var(--text-muted)}.patient-pair-phone{margin-top:.5rem}.patient-pair-custom-menu-btn{padding:0;border:none;background:none;font-size:.75rem;color:var(--text-muted);text-decoration:underline;cursor:pointer;text-align:left}.patient-pair-custom-menu-btn:hover{color:var(--text)}.patient-pair-custom-menu-title{margin:0 0 .5rem;font-size:.8125rem;color:var(--text-muted)}.patient-pair-guest-nomination{margin-top:.75rem}.patient-pair-subtotal{margin:.35rem 0 0;font-size:.8125rem;color:var(--text-muted)}.patient-select-summary{display:flex;justify-content:space-between;align-items:baseline;font-size:.9rem;color:var(--text-muted)}.patient-select-total{font-weight:700;color:var(--text)}.patient-summary-menus{margin:0;padding-left:1.1rem}.patient-choice-group{display:flex;flex-direction:column;gap:.5rem}.patient-choice{width:100%;background:var(--surface);color:var(--text);border:1px solid var(--border);box-shadow:var(--shadow)}.patient-choice:hover{border-color:var(--pink);background:var(--pink-light);box-shadow:var(--shadow-md);color:var(--text)}.patient-choice--selected{border-color:var(--pink);background:var(--pink-light);color:#9d174d;box-shadow:var(--shadow-md)}.patient-subsection h3{margin:0 0 .5rem;font-size:.95rem;font-weight:700}.patient-field{display:block;margin-bottom:.3rem;font-weight:600;font-size:.9rem}.patient-field-required{display:inline-block;background:var(--pink);color:#fff;font-size:.75rem;font-weight:700;padding:.15em .5em;border-radius:3px;margin-right:.4em;vertical-align:middle;letter-spacing:.02em}.patient-field-hint{display:block;font-size:.78rem;font-weight:400;color:#888;margin-top:.15rem}.patient-form-field{display:flex;flex-direction:column;gap:.3rem}.patient-text-input--error{border-color:var(--danger-strong)!important;box-shadow:0 0 0 3px #e53e3e1f!important}.patient-field-error{font-size:.8rem;color:var(--danger-strong);margin:0}.patient-char-counter{font-size:.78rem;color:#999;text-align:right;margin:0}.patient-char-counter--limit{color:var(--danger-strong);font-weight:600}.patient-name-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.patient-name-col{display:flex;flex-direction:column;gap:.25rem}.patient-name-label{font-size:.78rem;color:#999;text-align:center}.patient-textarea{resize:vertical;min-height:80px}.patient-booking-terms{display:flex;flex-direction:column;gap:.65rem;margin-top:.25rem}.patient-booking-terms-title{margin:0;font-size:1rem;font-weight:700;color:var(--text)}.patient-booking-terms-lead{margin:0;font-size:.85rem;line-height:1.55;color:var(--text-muted)}.patient-booking-terms-scroll{max-height:33vh;overflow-y:auto;padding:.875rem 1rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);box-shadow:inset 0 1px 2px #0000000a}.patient-booking-terms-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.875rem}.patient-booking-terms-item{margin:0}.patient-booking-terms-item-heading{margin:0 0 .35rem;font-size:.88rem;font-weight:700;line-height:1.45;color:var(--text)}.patient-booking-terms-item-heading:before{content:"☑ ";color:var(--text-muted);font-weight:400}.patient-booking-terms-body,.patient-booking-terms-body-list{margin:0;font-size:.82rem;line-height:1.6;color:var(--text)}.patient-booking-terms-body-list{padding-left:1.1rem}.patient-booking-terms-body-list li+li{margin-top:.35rem}.patient-booking-terms-notes{margin:.875rem 0 0;padding:.75rem 0 0;border-top:1px solid var(--border);list-style:none;display:flex;flex-direction:column;gap:.4rem;font-size:.8rem;line-height:1.55;color:var(--text-muted)}.patient-booking-terms-agree{display:flex;align-items:flex-start;gap:.55rem;margin:0;cursor:pointer;font-size:.9rem;font-weight:600;color:var(--text)}.patient-booking-terms-checkbox{flex:0 0 auto;width:1.125rem;height:1.125rem;margin:.1rem 0 0;accent-color:var(--pink);cursor:pointer}.patient-booking-terms-agree-label{line-height:1.45}.patient-booking-terms-hint{margin:0;font-size:.8rem;color:var(--text-muted)}.patient-slot-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem}.patient-slot{background:var(--surface);color:var(--text);border:1px solid var(--border);padding:.65rem .5rem;font-size:.9rem;box-shadow:var(--shadow);transition:border-color .15s,background .15s}.patient-slot:hover{border-color:var(--green);background:var(--green-light);box-shadow:0 2px 8px #06c75526}.patient-slot--selected{border-color:var(--green);background:var(--green-light);color:var(--ok-text);font-weight:700;box-shadow:0 2px 8px #06c75533}.patient-step-actions{display:flex;gap:.5rem;margin-top:.25rem}.patient-step-actions.patient-sticky-footer{flex-direction:row;margin-top:calc(-1 * var(--patient-sticky-footer-height))}.patient-step-actions button{flex:1}.patient-btn-secondary:disabled,.patient-step-actions button:disabled,.staff-btn-secondary:disabled,.staff-btn-block:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.patient-summary{margin:0;padding:1rem;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow)}.patient-summary--highlight{border-color:var(--green-border);background:var(--green-light)}.patient-summary-row{display:flex;flex-direction:column;gap:.1rem;padding:.5rem 0;border-bottom:1px solid var(--border)}.patient-summary-row:last-child{border-bottom:none}.patient-summary-row dt{font-size:.8rem;color:var(--text-muted);font-weight:600}.patient-summary-row dd{margin:0;font-weight:600}.patient-appointments{margin-top:.25rem}.patient-appointments h2{margin:0 0 .75rem;font-size:1.05rem;font-weight:700}.patient-appointment-list{display:flex;flex-direction:column;gap:.5rem;margin:0}.patient-appointment-list li{padding:0;background:transparent}.patient-appointment-list li:hover{background:transparent}.patient-appointment-item{padding:.875rem 1rem;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow)}.patient-appointment-date{margin:0 0 .2rem;font-weight:700;font-size:.95rem}.patient-appointment-menu{margin:0 0 .2rem;font-size:.9rem}.patient-appointment-meta{margin:0;font-size:.83rem;color:var(--text-muted)}.patient-appointments-toggle{display:block;width:100%;margin-bottom:.75rem;padding:.55rem .75rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-muted);font-size:.88rem;cursor:pointer}.patient-appointments-toggle:hover{background:var(--pink-light);color:var(--text)}.patient-appointments-guest-hint{margin:0 0 .75rem;padding:.55rem .75rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-muted);font-size:.88rem;text-align:center}.patient-sms-auth{margin-top:1rem;padding:1rem;border:1px solid var(--pink);border-radius:var(--radius-sm);background:var(--pink-light);display:flex;flex-direction:column;gap:.75rem}.patient-sms-auth-title{margin:0;font-size:1rem;font-weight:700;color:var(--text)}.patient-sms-auth-hint{margin:0}.patient-phone-readonly{margin:0;padding:.75rem .875rem;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--muted-bg);color:var(--text);font-size:1rem;font-weight:600;letter-spacing:.02em}.patient-menu-skeleton .patient-card{pointer-events:none}.patient-menu-skeleton .patient-card-main{flex:1;min-width:0}.patient-spinner{display:block;width:2rem;height:2rem;box-sizing:border-box;border:3px solid var(--pink-border);border-top-color:var(--pink);border-radius:50%;animation:btn-spinner-rotate .65s linear infinite}.patient-sms-code-input{letter-spacing:.2em;font-size:1.1rem;text-align:center}.patient-sms-auth-cancel{align-self:center;border:none;background:none;color:var(--text-muted);font-size:.85rem;text-decoration:underline;cursor:pointer;padding:.25rem}.patient-sms-auth-cancel:disabled{opacity:.5;cursor:not-allowed}.patient-appointment-actions{margin-top:.5rem;display:flex;flex-direction:column;gap:.35rem}.patient-cancel-btn{align-self:flex-start;padding:.35rem .75rem;font-size:.82rem;min-height:auto}.patient-cancel-hint{margin:0;font-size:.78rem;color:var(--text-muted)}.patient-cancel-group-note{font-size:.82rem;color:var(--warn-text)}.staff-home{display:flex;flex-direction:column;gap:1rem}.staff-header h1{margin:0;font-size:1.25rem;font-weight:700}.staff-greeting{margin:.2rem 0 0;color:var(--text-muted);font-size:.85rem}.sg-dcol{background:var(--pink-light);padding:.3rem .15rem;min-width:2.5rem}.sg-dcol.sun{color:var(--sun-text)}.sg-dcol.sat{color:var(--sat-text)}.confirm-modal-overlay{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem;overscroll-behavior:contain}.confirm-modal{background:var(--surface);border-radius:var(--radius);box-shadow:0 8px 32px #0000002e;padding:1.5rem 1.25rem;max-width:340px;width:100%;max-height:min(85vh,640px);overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:1rem}.confirm-modal--form{max-width:420px;max-height:min(85vh,640px);overflow-y:auto;overscroll-behavior:contain}.confirm-modal.confirm-modal--form{overflow-y:auto}.confirm-modal:has(>.admin-modal-header),.confirm-modal:has(>.admin-card-header),.confirm-modal:has(>.admin-detail-modal__header){padding-top:0}.confirm-modal .admin-card-header,.confirm-modal .admin-modal-header,.confirm-modal .admin-detail-modal__header{position:sticky;top:0;z-index:2;background:var(--surface);border-bottom:1px solid var(--border);margin:0 -1.25rem;padding:1.5rem 1.25rem 1rem;box-shadow:0 1rem 0 var(--surface)}.confirm-modal .admin-card-header .admin-card-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.confirm-modal-title{font-size:1rem;font-weight:700;margin:0;color:var(--text)}.confirm-modal-body{font-size:.9rem;color:var(--text-muted);margin:0}.confirm-modal-actions{display:flex;gap:.5rem}.confirm-modal-actions--stacked{flex-direction:column;gap:1rem}.confirm-modal-actions button{flex:1}.confirm-modal-textarea{min-height:5rem;resize:vertical}.staff-btn-danger{background:var(--danger-strong);color:#fff}.staff-btn-danger:hover{background:#b91c1c}.staff-join-card{padding:1rem;display:flex;flex-direction:column;gap:.75rem}.staff-join-link{display:block;text-align:center;text-decoration:none}.staff-input--code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.08em;text-transform:uppercase}.staff-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.06em}.staff-toast{position:fixed;left:50%;bottom:1.5rem;transform:translate(-50%);background:var(--pink);color:#fff;border-radius:var(--radius);box-shadow:0 4px 16px #0003;padding:.75rem 1.25rem;z-index:1100;font-size:.9375rem;line-height:1.4;animation:staff-toast-in .3s ease-out}.staff-toast--error{background:var(--danger-strong);color:#fff}.staff-toast--exiting{animation:staff-toast-out .3s ease-in forwards}@keyframes staff-toast-in{0%{opacity:0;transform:translate(-50%) translateY(8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@keyframes staff-toast-out{0%{opacity:1;transform:translate(-50%) translateY(0)}to{opacity:0;transform:translate(-50%) translateY(8px)}}.staff-badge--active{background:var(--done-bg);border:1px solid var(--done-border);color:var(--done-text)}.staff-badge--inactive{background:var(--muted-bg);color:var(--muted-text);border:1px solid var(--muted-border)}.staff-badge--provisional{margin-left:.35rem;background:#fff7ed;color:#9a3412;border:1px solid #fdba74;font-size:.75rem}.admin-proxy-booking-modal{gap:0}.admin-detail-modal{display:flex;flex-direction:column;max-height:min(85vh,640px);overflow:hidden;padding:0;gap:0}@media(min-width:900px){.admin-detail-modal{max-width:560px}}.admin-detail-modal__header{flex:none}.admin-detail-modal__datetime{margin:0;font-size:1.05rem;font-weight:700;line-height:1.3;color:var(--text)}.admin-detail-modal__body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:0 1.25rem}.admin-detail-modal__footer{flex:none;display:flex;align-items:center;justify-content:flex-end;gap:.5rem;margin:0;padding:.85rem 1.25rem;border-top:1px solid var(--border);background:var(--surface)}.admin-detail-modal__footer--split{justify-content:space-between}.admin-detail-modal__footer-actions{display:flex;align-items:center;justify-content:flex-end;gap:.5rem;flex-wrap:wrap}.admin-detail-modal__section{display:flex;flex-direction:column;gap:.65rem;padding:.85rem 0;border-top:1px solid var(--border)}.admin-detail-modal__section:first-child{border-top:none;padding-top:.25rem}.admin-detail-modal__section-title{margin:0;font-size:.72rem;font-weight:700;letter-spacing:.08em;color:var(--text-muted);text-transform:none}.admin-detail-modal__section-row{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.admin-detail-modal__section-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:.25rem}.admin-detail-modal__primary-text{margin:0;font-weight:600;line-height:1.4}.admin-detail-modal__secondary-text{margin:0;font-size:.88rem;color:var(--text-muted);line-height:1.4}.admin-detail-modal__section-action{flex:none;align-self:center}.admin-detail-modal__inline-action{align-self:flex-start;margin-top:.15rem}.admin-proxy-booking-section{display:flex;flex-direction:column;gap:.5rem;padding:.85rem 0;border-top:1px solid var(--border)}.admin-proxy-booking-section:first-child{border-top:none;padding-top:.25rem}.admin-proxy-booking-section .admin-section-label,.admin-proxy-booking-section .admin-detail-modal__section-title{margin:0}.admin-proxy-booking-datetime{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.admin-proxy-menu-list,.admin-proxy-staff-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}.admin-proxy-menu-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.65rem;width:100%;padding:.65rem .75rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);cursor:pointer;text-align:left}.admin-proxy-menu-row--selected{background:var(--pink-light);border-color:var(--pink-border)}.admin-proxy-menu-row--selected .admin-proxy-menu-row-name{color:var(--pink)}.admin-proxy-menu-row--disabled{opacity:1;cursor:not-allowed;background:var(--muted-bg)}.admin-proxy-menu-row--disabled .admin-proxy-menu-row-name{color:var(--muted-text)}.admin-proxy-menu-row input[type=checkbox]{margin:0}.admin-proxy-menu-row-name{font-weight:700;line-height:1.35}.admin-proxy-menu-row-pack-note{display:block;margin-top:.15rem;font-size:.75rem;font-weight:400;color:var(--text-muted)}.admin-proxy-menu-row-meta{font-size:.82rem;color:var(--text-muted);white-space:nowrap}.admin-proxy-menu-row .staff-note{grid-column:2 / -1;margin:0}.admin-proxy-menu-item{display:flex;align-items:center;gap:.5rem;font-size:.95rem}.admin-proxy-nomination-toggle{display:flex;flex-direction:column;gap:.25rem}.admin-proxy-nomination-toggle label{display:flex;align-items:center;gap:.5rem;font-size:.95rem}.admin-proxy-nomination-toggle label:has(input:disabled){opacity:.5}.admin-proxy-staff-row .staff-field{margin:0}.admin-proxy-extra-staff-row{display:flex;align-items:flex-end;gap:.5rem}.admin-proxy-extra-staff-row .staff-field{flex:1;margin:0}.admin-appointment-times-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.75rem}.admin-appointment-times-inputs{display:flex;align-items:flex-end;gap:.5rem}.admin-appointment-times-inputs .staff-field{flex:1;margin:0}.admin-section-label{margin:0 0 .5rem;font-size:.78rem;font-weight:700;color:var(--text-muted);letter-spacing:.02em}.appt-detail-body{display:flex;flex-direction:column;gap:0;background:var(--surface)}.admin-pre-wrap{white-space:pre-wrap}.appt-detail-section{display:flex;flex-direction:column;gap:.5rem;padding:.85rem 0;border-top:1px solid var(--border)}.appt-detail-section:first-child{border-top:none;padding-top:0}.appt-detail-section .admin-assignment-form{margin-bottom:0}.confirm-modal .appt-detail-body .staff-btn-block{width:100%}.confirm-modal .appt-detail-body .admin-add-treatment{margin-top:.25rem}.admin-card{padding:0;overflow:hidden;gap:0;border:1px solid var(--border);box-shadow:0 2px 8px #0000000f}.admin-card--editing{border-color:var(--pink-border);box-shadow:0 0 0 2px var(--pink-light)}.admin-card--active,.admin-card--approved,.admin-card--completed{border-left:4px solid var(--green)}.admin-card--inactive,.admin-card--cancelled{border-left:4px solid #9ca3af}.admin-card--compact .admin-card-header{border-bottom:none}.admin-card--inactive.admin-card--muted,.admin-card--muted{background:var(--muted-bg)}.admin-card--muted .admin-card-title,.admin-card--muted .admin-stat-value{color:var(--muted-text)}.admin-card--pending{border-left:4px solid #ca8a04}.admin-card--rejected,.admin-card--noshow{border-left:4px solid var(--danger-strong)}.admin-card--booked{border-left:4px solid #3b82f6}.admin-card--confirmed{border-left:4px solid var(--pink)}.admin-card-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.7rem 1rem;background:var(--pink-light);border-bottom:1px solid var(--pink-border)}.admin-card-header--collapsible{width:100%;margin:0;text-align:left;font-family:inherit;border:none;cursor:pointer;transition:background .15s}.admin-card--collapsed .admin-card-header--collapsible{border-bottom:none}.admin-card-header--collapsible:hover{background:#fde0f4}.admin-card-header-meta{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.admin-card-alert{margin:0;padding:.75rem 1rem 1rem}.admin-card-title{margin:0;font-weight:700;font-size:.95rem;color:var(--text)}.admin-card-body{padding:.875rem 1rem;background:var(--surface)}.admin-card-highlight{margin:0 0 .5rem;font-size:1rem;font-weight:700;color:var(--text)}.admin-card-time{margin:0;font-size:1.15rem;font-weight:800;letter-spacing:.03em;color:var(--text)}.admin-card-subtitle{margin:0;font-size:.82rem;color:var(--text-muted)}.admin-card-note{margin:.5rem 0 0;padding-top:.5rem;border-top:1px dashed var(--border);font-size:.83rem;color:var(--text-muted)}.admin-stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem}.admin-stat{display:flex;flex-direction:column;gap:.15rem;padding:.5rem .65rem;border-radius:var(--radius-sm);background:var(--bg);border:1px solid var(--border)}.admin-stat--wide{grid-column:1 / -1}.admin-stat-label{margin:0;font-size:.72rem;font-weight:600;color:var(--text-muted)}.admin-stat-value{margin:0;font-size:.9rem;font-weight:700;color:var(--text)}.admin-stat-value--mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.82rem;font-weight:600;word-break:break-all}.admin-card-actions{width:100%;margin-top:0;padding:.75rem 1rem 1rem;border-top:1px solid var(--border);background:var(--bg);flex-direction:column;align-items:stretch;gap:.5rem}.admin-card-actions .staff-btn-block,.admin-card-actions .staff-btn-secondary{width:100%}.admin-card-form{padding:1rem;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow)}.admin-card-groups{display:flex;flex-direction:column;gap:1.25rem;margin-top:.75rem}.admin-card-group{display:flex;flex-direction:column;gap:.5rem}.admin-card-group-heading{margin:0;padding:.35rem .5rem;font-size:.88rem;font-weight:700;color:var(--text-muted);border-bottom:2px solid var(--pink-border)}.admin-card-group-heading--sticky{position:sticky;top:0;z-index:1;background:var(--bg)}.admin-card-group-heading--collapsible{display:flex;align-items:center;justify-content:space-between;gap:.5rem;width:100%;text-align:left;font-family:inherit;border:none;border-bottom:2px solid var(--pink-border);cursor:pointer;transition:background .15s}.admin-card-group-heading--collapsible:hover{background:var(--pink-light)}.admin-card-group-toggle-label{flex-shrink:0;font-size:.78rem;font-weight:600;color:var(--pink-hover)}.admin-section-heading{margin:0 0 .75rem;padding:0;font-size:1.1rem;font-weight:700;color:var(--text)}.admin-section-heading--collapsible{display:flex;align-items:center;justify-content:space-between;gap:.5rem;width:100%;padding:.35rem .5rem;text-align:left;font-family:inherit;font-size:1.1rem;font-weight:700;color:var(--text);background:transparent;border:none;border-bottom:2px solid var(--pink-border);cursor:pointer;transition:background .15s}.admin-section-heading--collapsible:hover{background:var(--pink-light)}.admin-shift-filters{display:flex;flex-direction:column;gap:.75rem;margin-bottom:.5rem}.admin-card-list{gap:.75rem}.admin-card-section{margin:0;padding:1rem;border-top:1px solid var(--border)}.admin-card-section .admin-capability-section{margin-top:.75rem;box-shadow:none}.admin-card-section-toggle{margin-bottom:.75rem}.admin-char-counter{font-size:.78rem;color:var(--text-muted);text-align:right;margin:.25rem 0 0}.admin-char-counter--limit{color:#c53030;font-weight:600}.admin-shift-schedule{display:flex;flex-direction:column;gap:.15rem}.admin-shift-edit-row{margin-top:.25rem}.cal-modal .cal-layout{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;padding:0 .65rem}.cal-layout{flex:1;min-height:0;gap:.5rem;overflow:hidden}.staff-tab-panel.cal-layout{gap:.5rem}.staff-note{margin:0;font-size:.78rem;color:var(--text-muted)}.cal-scroll--dense .cal-event{font-size:.6rem;padding:.1rem .15rem}.cal-scroll--dense .cal-event .cal-event-patient,.cal-scroll--dense .cal-event .cal-event-staff,.cal-scroll--dense .cal-event .cal-event-note{display:none}.dayhead-md{display:block;font-size:.8rem;font-weight:700;color:inherit}.dayhead-wday{display:block;font-size:.66rem;font-weight:600;color:inherit}.cal-event{position:absolute;display:flex;flex-direction:column;align-items:flex-start;gap:.1rem;padding:.2rem .3rem;min-height:28px;border:1px solid transparent;border-radius:var(--radius-sm);font-family:inherit;color:var(--text);text-align:left;cursor:pointer;overflow:hidden;z-index:1;box-sizing:border-box;box-shadow:0 1px 2px #00000014;transition:filter .15s,box-shadow .15s;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.cal-event:hover,.cal-event:focus-visible{filter:brightness(.97);box-shadow:0 2px 4px #0000001f;outline:none}.cal-event-unassigned{display:inline-block;flex-shrink:0;font-size:.58rem;font-weight:700;line-height:1.1;padding:.05rem .25rem;border-radius:3px;background:#fef3c7;color:var(--warn-text);white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}.appt-pair-section .staff-status{margin-bottom:.5rem}.staff-badge--pair{background:var(--muted-bg);color:var(--muted-text);border:1px solid var(--muted-border)}.cal-event:hover .cal-event-resize{background:#00000012}.patient-phone-row{display:flex;align-items:center;gap:8px}.patient-phone-input{flex:1 1 0;min-width:0;text-align:center}.patient-phone-sep{color:var(--muted, #888);flex:0 0 auto}.patient-nomination-hint{margin-top:4px}.patient-nomination-fee-note{margin:0 0 12px;color:var(--muted, #666);font-size:.9rem}.patient-coupon-row{display:flex;gap:8px;align-items:center}.patient-coupon-row .patient-text-input{flex:1;min-width:0}.patient-coupon-applied{margin:8px 0 0;font-size:.9rem;color:var(--text)}.patient-coupon-clear{margin-left:8px;padding:0;border:none;background:none;color:var(--pink-dark);text-decoration:underline;cursor:pointer;font:inherit}.shift-cal{margin-top:4px;margin-inline:calc(-1 * var(--app-shell-padding-x))}.shift-cal-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.shift-cal-title-row{display:flex;align-items:center;justify-content:center;gap:8px;flex:1;min-width:0}.shift-cal-title{font-weight:700;font-size:1.05rem;margin:0}.shift-cal-scroll{overflow-x:auto;padding-inline:4px}.shift-cal-inner{width:100%;max-width:620px;margin-inline:auto}.shift-cal-weekdays,.shift-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.shift-cal-weekdays{margin-bottom:4px}.shift-cal-weekday{text-align:center;font-size:.68rem;font-weight:600;color:var(--muted, #667);padding:1px 0}.shift-cal-weekday--sun{color:var(--sun-text)}.shift-cal-weekday--sat{color:var(--sat-text)}.shift-cal-cell{min-height:80px;border:1px solid var(--border, #e2e2e8);border-radius:8px;padding:2px;display:flex;flex-direction:column;gap:2px;background:var(--surface, #fff)}.shift-cal-cell--empty{border:none;background:transparent}.shift-cal-cell--today{outline:2px solid var(--accent, #3b82f6);outline-offset:-1px}.shift-cal-daynum{font-size:.68rem;font-weight:700;color:var(--text, #222)}.shift-cal-daynum--sun{color:var(--sun-text)}.shift-cal-daynum--sat{color:var(--sat-text)}.shift-cal-holiday{margin-left:1px;font-size:.52rem;font-weight:700;color:var(--sun-text)}.shift-cal-entries{display:flex;flex-direction:column;gap:1px}.shift-cal-entry{display:flex;flex-direction:column;align-items:flex-start;text-align:left;border:none;border-radius:4px;padding:1px 2px;font-size:.62rem;line-height:1.1;cursor:default;width:100%;color:var(--text);min-height:0;height:auto}button.shift-cal-entry{cursor:pointer}.shift-cal-entry-name{font-weight:600;line-height:1.1;overflow-wrap:anywhere}.shift-cal-entry-time{font-size:.58rem;opacity:.85;line-height:1}.pat-appt-modal{max-width:520px}.pat-appt-modal .patient-appointments{margin-top:0}.pat-sms-auth-modal{max-width:420px}.pat-sms-auth-modal>.admin-modal-header+*{margin-top:1.5rem}.confirm-modal-overlay--nested{z-index:1100}.shift-sheet-offscreen{position:absolute;left:-10000px;top:0}.shift-image-modal-month{margin:4px 0 0;font-size:.9rem;color:var(--text-muted)}.shift-image-modal-hint{margin:0 0 12px;font-size:.78rem;color:var(--text-muted);text-align:center}.shift-image-modal-previews{display:flex;flex-direction:column;gap:16px;margin-bottom:8px}.shift-image-modal-preview{display:flex;flex-direction:column;gap:8px}.shift-image-modal-img{display:block;width:100%;height:auto;border:1px solid var(--border);border-radius:4px}.shift-sheet{width:297mm;height:210mm;padding:11mm 10mm 10mm;box-sizing:border-box;background:#fff;color:var(--text);overflow:hidden;display:flex;flex-direction:column;-webkit-print-color-adjust:exact;print-color-adjust:exact}.shift-sheet-header{display:flex;justify-content:space-between;align-items:flex-start;gap:4mm;margin-bottom:3mm;padding-bottom:2mm;border-bottom:.35mm solid var(--pink);flex-shrink:0}.shift-sheet-header-left,.shift-sheet-header-right{display:flex;flex-direction:column;gap:.5mm}.shift-sheet-header-right{text-align:right;align-items:flex-end}.shift-sheet-month{margin:0;font-size:4.2mm;font-weight:700;line-height:1.2}.shift-sheet-type{margin:0;font-size:2.8mm;color:var(--text-muted)}.shift-sheet-clinic{margin:0;font-size:3mm;font-weight:600}.shift-sheet-meta{margin:0;font-size:2.4mm;color:var(--text-muted)}.shift-sheet-cal-weekdays,.shift-sheet-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.8mm;flex:1;min-height:0}.shift-sheet-cal-weekdays{margin-bottom:.8mm;flex:0 0 auto}.shift-sheet-cal-weekday{text-align:center;font-size:2.6mm;font-weight:600;color:var(--text-muted)}.shift-sheet-cal-weekday--sun{color:var(--sun-text)}.shift-sheet-cal-weekday--sat{color:var(--sat-text)}.shift-sheet-cal-grid{grid-auto-rows:1fr}.shift-sheet-cal-cell{border:.15mm solid #d8d4e0;border-radius:.6mm;padding:.8mm;min-height:0;display:flex;flex-direction:column;gap:.5mm;overflow:hidden}.shift-sheet-cal-cell--outside{background:#ece9f0;border-color:#e0dde8}.shift-sheet-cal-daynum{font-size:2.4mm;font-weight:700;line-height:1}.shift-sheet-cal-daynum--sun{color:var(--sun-text)}.shift-sheet-cal-daynum--sat{color:var(--sat-text)}.shift-sheet-cal-holiday{margin-left:.4mm;font-size:1.8mm;font-weight:700;color:var(--sun-text)}.shift-sheet-cal-entries{display:flex;flex-direction:column;gap:.4mm;min-height:0;overflow:hidden}.shift-sheet-cal-entry{display:flex;align-items:baseline;gap:.6mm;padding:.35mm .7mm;border-radius:.4mm;font-size:2.3mm;line-height:1.2;overflow:hidden;-webkit-print-color-adjust:exact;print-color-adjust:exact}.shift-sheet-cal-entry-name{font-weight:600;flex-shrink:0;white-space:nowrap}.shift-sheet-cal-entry-time{color:var(--text-muted);white-space:nowrap}.app-shell--pc{max-width:720px;min-height:calc(100vh - 4rem);justify-content:center}.pc-login{display:flex;align-items:center;justify-content:center;padding:2rem 0}.pc-login-card{width:min(520px,100%);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-md);padding:2.5rem 2rem}.pc-login-header h1{margin:0 0 .5rem;font-size:1.75rem;text-align:center}.pc-login-header p{margin:0 0 1.75rem;text-align:center;color:var(--text-muted);font-size:1rem}.pc-login-form{display:flex;flex-direction:column;gap:.75rem}.pc-login-label{font-size:1rem;font-weight:600}.pc-login-input{width:100%;font-size:1.25rem;padding:.85rem 1rem;border:1px solid var(--border);border-radius:var(--radius-sm)}.pc-login-input:focus{outline:2px solid var(--pink-border);border-color:var(--pink)}.pc-login-error{margin:0}.pc-login-submit{margin-top:.5rem;font-size:1.1rem;padding:.9rem 1rem}.message-view-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.25rem 1rem;color:var(--text)}.message-view-title{margin:0 0 1rem;font-size:1.2rem;line-height:1.4}.message-view-body{display:flex;flex-direction:column;gap:.5rem;font-size:1rem;line-height:1.7;white-space:pre-wrap}.message-view-body p{margin:0}.message-view-images{display:flex;flex-direction:column;gap:.75rem;margin-top:1rem}.message-view-image{width:100%;height:auto;border-radius:var(--radius-sm);border:1px solid var(--border);background:#fff}.message-view-status,.message-view-error{margin:0;font-size:1rem;line-height:1.6;color:var(--text)}.message-view-error{color:#8a1f1f}.app-shell--admin{--adm-footer-nav-height: 3.6rem;--app-shell-padding-bottom: calc( 3rem + var(--adm-footer-nav-height) + env(safe-area-inset-bottom, 0px) )}.app-shell--admin:has(.adm-fill){height:var(--app-shell-full-height);--app-shell-padding-bottom: calc( .75rem + var(--adm-footer-nav-height) + env(safe-area-inset-bottom, 0px) )}.adm-layout{display:flex;flex-direction:column;gap:.75rem}.adm-main{display:flex;flex-direction:column;gap:.6rem;min-width:0}.adm-nav{position:fixed;left:0;right:0;bottom:0;z-index:90;display:flex;align-items:stretch;gap:0;padding:0 0 env(safe-area-inset-bottom,0px);border-top:1px solid var(--border);background:var(--surface)}.adm-nav-group{flex:1;min-width:0}.adm-nav-item{position:relative;flex:1;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.15rem;min-width:0;min-height:3.4rem;padding:.4rem .25rem;border:none;border-radius:0;background:transparent;color:var(--text-muted);font-size:.68rem;font-weight:600}.adm-nav-item:hover{background:transparent}.adm-nav-item--active,.adm-nav-item--active:hover{background:transparent;color:var(--pink)}.adm-nav-icon{flex-shrink:0}.adm-nav-label{line-height:1.2;white-space:nowrap}.adm-nav-item .ui-badge{position:absolute;top:.35rem;left:50%;margin-left:.15rem}.adm-nav-children{display:none}.adm-nav-child{display:flex;align-items:center;gap:var(--ctl-gap);width:100%;min-height:var(--ctl-h);height:var(--ctl-h);padding:0 var(--ctl-pad-x);border:none;border-radius:var(--ctl-radius);background:transparent;color:var(--text-muted);font-size:var(--ctl-font);font-weight:600;text-align:left}.adm-nav-child:hover{background:var(--pink-light);color:var(--pink)}.adm-nav-child--active{background:var(--pink-light);color:var(--pink);font-weight:700}.adm-nav-child--active:hover{background:var(--pink-light);color:var(--pink)}.adm-nav-item--active .ui-badge{background:#fff;color:var(--pink)}.adm-main>nav.ui-seg{align-self:flex-start;margin-bottom:.6rem;max-width:100%;overflow-x:auto}.adm-fill,.adm-fill .adm-layout,.adm-fill .adm-main,.adm-fill .tab-content,.adm-fill .staff-tab-panel{flex:1;min-height:0}.adm-fill .tab-content{display:flex;flex-direction:column}@media(max-width:440px){.adm-fill .staff-header{display:none}}.adm-calendar{display:flex;flex-direction:column;flex:1;min-height:26rem;border:1px solid var(--border);border-radius:8px;background:#fff;overflow:hidden}.adm-unassigned-chip{display:inline-flex;align-items:center;padding:.15rem .5rem;border:1px solid var(--warn-border);border-radius:999px;background:var(--warn-bg);color:var(--warn-text);font-size:.72rem;font-weight:600;line-height:1.4;cursor:pointer}.adm-unassigned-chip--active{background:var(--warn-text);color:var(--warn-bg);border-color:var(--warn-text)}.adm-cal-toolbar-row{flex-direction:column;align-items:stretch;gap:6px}.adm-cal-toolbar-line{display:flex;align-items:center;gap:6px;min-width:0}.adm-cal-toolbar-line--primary{justify-content:space-between}.adm-cal-toolbar-line--filters{flex-wrap:nowrap;overflow-x:auto}.adm-cal-toolbar-group{display:flex;align-items:center;gap:6px;min-width:0;flex-shrink:0}.adm-cal-toolbar-group--refresh{flex-shrink:0}.adm-cal-toolbar-group--end{margin-left:auto}.adm-cal-toolbar-divider{width:1px;align-self:stretch;min-height:1.5rem;background:var(--border);flex-shrink:0}.adm-calendar .cal-timegutter-head,.adm-calendar .cal-dayhead,.adm-calendar .cal-daybody{background:#fff}.adm-calendar .cal-daycol--today .cal-dayhead,.adm-calendar .cal-daycol--today .cal-daybody{background:#fde0f4}.adm-calendar .cal-dayhead--today{box-shadow:inset 0 -2px 0 var(--pink)}.adm-calendar .cal-event{background:#e6f4f1;border:1px solid transparent;border-left:3px solid var(--done-text);box-shadow:none}.adm-calendar .cal-event--needs-assignment{background:#fef3c7;border:1px solid transparent;border-left:3px solid var(--warn-text);box-shadow:none}.adm-calendar .cal-event--cancelled,.adm-calendar .cal-event--noshow{background:var(--muted-bg);border:1px solid transparent;border-left:3px solid #9ca3af;background-image:none;filter:none;box-shadow:none}.adm-calendar .cal-event-line1{display:flex;align-items:baseline;gap:.25rem;max-width:100%;min-width:0;overflow:hidden}.adm-calendar .cal-event-line1 .cal-event-time{flex-shrink:0}.adm-calendar .cal-event-line1 .cal-event-menu{flex:1;min-width:0}.adm-calendar .cal-event-line2{display:flex;align-items:center;gap:.15rem;max-width:100%;min-width:0;overflow:hidden}.adm-calendar .cal-event-line2 .cal-event-patient,.adm-calendar .cal-event-line2 .cal-event-staff{flex-shrink:1;min-width:0}.adm-calendar .cal-event-line2-sep{flex-shrink:0;font-size:.62rem;color:var(--text-muted);line-height:1}.adm-calendar .cal-scroll--dense .cal-event .cal-event-line2{display:flex}.adm-calendar .cal-scroll--dense .cal-event .cal-event-note{display:none}.adm-calendar .cal-scroll--dense .cal-event-unassigned{display:inline-block}.adm-calendar .cal-event--cancelled .cal-event-time,.adm-calendar .cal-event--cancelled .cal-event-menu,.adm-calendar .cal-event--cancelled .cal-event-patient,.adm-calendar .cal-event--cancelled .cal-event-staff,.adm-calendar .cal-event--cancelled .cal-event-note,.adm-calendar .cal-event--noshow .cal-event-time,.adm-calendar .cal-event--noshow .cal-event-menu,.adm-calendar .cal-event--noshow .cal-event-patient,.adm-calendar .cal-event--noshow .cal-event-staff,.adm-calendar .cal-event--noshow .cal-event-note{text-decoration:line-through;color:var(--muted-text)}@media(min-width:900px){.app-shell--admin{max-width:min(100%,1400px);--app-shell-padding-x: 1.5rem;--app-shell-padding-bottom: 3rem}.adm-layout{display:grid;grid-template-columns:13.5rem 1fr;gap:1.25rem;align-items:start}.adm-nav{position:sticky;top:calc(var(--app-header-height) + .75rem);display:flex;flex-direction:column;gap:.5rem;padding:0;border:none;background:transparent}.adm-nav-group{display:flex;flex-direction:column;gap:.15rem}.adm-nav-item{flex-direction:row;justify-content:flex-start;gap:var(--ctl-gap);min-height:var(--ctl-h);height:var(--ctl-h);padding:0 var(--ctl-pad-x);border:1px solid var(--border);border-radius:var(--ctl-radius);background:var(--surface);font-size:var(--ctl-font)}.adm-nav-item:hover{background:var(--surface);border-color:var(--pink-border)}.adm-nav-item--active,.adm-nav-item--active:hover{background:var(--pink);border-color:var(--pink);color:#fff}.adm-nav-item .adm-nav-icon{width:18px;height:18px}.adm-nav-item .ui-badge{position:static;margin-left:auto}.adm-nav-children{display:flex;flex-direction:column;gap:.1rem;padding-left:.5rem}.adm-main>nav.ui-seg{display:none}.adm-fill .adm-layout{grid-template-rows:minmax(0,1fr)}.adm-fill .adm-main{align-self:stretch}.app-shell--admin .adm-calendar{min-height:32rem}.adm-cal-toolbar-row{flex-direction:row;flex-wrap:nowrap;align-items:center;gap:12px}.adm-cal-toolbar-line{display:contents}.adm-cal-toolbar-line--primary .adm-cal-toolbar-group--refresh{order:6;margin-left:auto}.adm-cal-toolbar-line--primary .adm-cal-toolbar-group:not(.adm-cal-toolbar-group--refresh){order:1}.adm-cal-toolbar-line--filters .adm-cal-toolbar-divider:first-child{order:2}.adm-cal-toolbar-line--filters .adm-cal-toolbar-group{order:3}.adm-cal-toolbar-line--filters .adm-cal-toolbar-divider:last-of-type{order:4}.adm-cal-toolbar-line--filters .adm-cal-toolbar-group:last-child{order:5}.adm-cal-toolbar-divider{display:block}.app-shell--admin .cal-scroll--dense .cal-event .cal-event-line2{display:flex}.app-shell--admin .admin-card-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(23rem,1fr));gap:.5rem;align-items:start}.app-shell--admin .staff-section>p,.app-shell--admin .staff-status{max-width:60rem}.role-switch-select{font-size:.8rem;max-width:8.5rem}}@media(max-width:899px){.cal-scroll--dense .cal-event-unassigned,.adm-cal-toolbar-divider{display:none}.adm-cal-toolbar-row{gap:6px}.adm-cal-toolbar-divider{display:none}}.cal-refresh-btn-icon{display:inline-flex;align-items:center;justify-content:center;width:1em;min-width:1em}.cal-scroll--loading{pointer-events:none}.appt-line-message{margin-top:.75rem}.appt-line-message-form{display:flex;flex-direction:column;gap:.5rem}.appt-line-message-textarea{min-height:4.5rem;resize:vertical}.appt-line-message-success{color:var(--green)}.appt-line-message-unavailable{margin:0}.confirm-modal.appt-detail-modal,.confirm-modal.appt-proxy-modal{display:flex;flex-direction:column;gap:0;padding:0;overflow:hidden;max-height:min(85vh,640px);max-height:min(85dvh,640px)}.appt-detail-modal .admin-detail-modal__header{position:static;flex:none;margin:0;padding:.7rem 1rem;border-bottom:1px solid var(--pink-border);background:var(--pink-light)}.appt-proxy-modal .admin-detail-modal__header{position:static;flex:none;margin:0;padding:.9rem 1.25rem;border-bottom:1px solid var(--border);background:var(--surface);display:flex;align-items:center;justify-content:space-between;gap:.5rem}.appt-detail-modal .appt-detail-body,.appt-proxy-modal .admin-detail-modal__body{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:1rem 1.25rem}.appt-detail-modal .appt-detail-footer,.appt-proxy-modal .admin-detail-modal__footer{flex:none;margin:0;padding:.85rem 1.25rem;border-top:1px solid var(--border);background:var(--surface)}.appt-detail-modal .appt-delete-slot-btn{flex:none}@media(max-width:440px){.appt-detail-modal .admin-detail-modal__header{padding:.7rem .85rem}.appt-proxy-modal .admin-detail-modal__header{padding:.9rem .85rem}.appt-detail-modal .appt-detail-body,.appt-proxy-modal .admin-detail-modal__body{padding:1rem .85rem}.appt-detail-modal .appt-detail-footer,.appt-proxy-modal .admin-detail-modal__footer{padding:.85rem}}.appt-proxy-menu-sections{display:flex;flex-direction:column;gap:1.25rem;margin-top:.75rem}.appt-proxy-menu-section .ui-seg{margin-bottom:0}.admin-proxy-booking-section>.ui-seg{margin-top:.5rem}.appt-proxy-menu-category-heading{margin:0 0 .5rem;font-size:.9375rem;font-weight:600;color:var(--text)}.adm-calendar .admin-unassigned-staff,.appt-detail-modal .admin-unassigned-staff{color:var(--warn-text)}.appt-action-list{display:flex;flex-direction:column;gap:8px;margin-top:4px}.confirm-modal.appt-delete-slot-confirm{max-width:420px}.appt-nav-list{display:flex;flex-direction:column;margin:-1rem -1.25rem 0}.appt-detail-body .appt-nav-list+*{margin-top:1rem}.appt-nav-row{display:flex;align-items:center;gap:10px;width:100%;min-height:3rem;padding:14px 1.25rem;border:none;border-bottom:1px solid var(--border);text-align:left;font:inherit;cursor:pointer}.appt-nav-row:last-child{border-bottom:none}button.appt-nav-row:hover:not(:disabled),button.appt-nav-row:focus-visible{background:var(--pink-light);box-shadow:none}.appt-nav-row--static{cursor:default}.appt-nav-row:disabled{cursor:default;opacity:1}.appt-nav-row:disabled:hover{background:transparent}@media(max-width:440px){.appt-nav-list{margin:-1rem -.85rem 0}.appt-nav-row{padding-left:.85rem;padding-right:.85rem}}.appt-nav-label{flex:none;width:6em;font-size:.82rem;color:var(--text-muted)}.appt-nav-value{flex:1;min-width:0;font-weight:600}.appt-nav-sub{display:block;font-weight:400;font-size:.82rem;color:var(--text-muted);margin-top:2px}.appt-nav-chevron{flex:none;color:var(--text-muted);font-size:1.1rem}.appt-status-select{font-size:.8rem;font-weight:600;border-radius:999px;padding:2px 8px;border:1px solid var(--border);background:var(--surface)}.appt-delete-link{align-self:center;margin-top:4px;border:none;color:#d33;font-size:.85rem;text-decoration:underline;cursor:pointer}.appt-subview-header{display:flex;align-items:center;gap:10px;margin-bottom:12px}.appt-subview-title{font-weight:700;font-size:1rem}.appt-danger-zone{display:flex;flex-direction:column;gap:1rem;margin-top:1rem;margin-left:-1rem;margin-right:-1rem;padding:1rem;border-top:1px solid #fecaca;background:var(--danger-bg)}.appt-danger-zone-label{color:#b91c1c}.appt-danger-zone-hint{margin:0;font-size:.75rem;color:var(--danger-strong)}.cal-modal{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.cal-modal-toolbar{flex-shrink:0;padding:0 .6rem .35rem}.cal-modal-toolbar.cal-toolbar--compact{gap:.3rem;padding:0 .6rem .35rem}.cal-toolbar-row--main{gap:.25rem}.cal-toolbar-row--main .cal-toolbar-nav{flex:1;min-width:0;justify-content:stretch;gap:.25rem}.cal-modal-toolbar .cal-period-label{flex:1;min-width:0;font-size:.82rem;white-space:nowrap}.cal-toolbar-row-end{display:flex;flex-shrink:0;align-items:center;gap:.05rem}.cal-toolbar-row--filters{gap:.4rem;justify-content:space-between}.cal-modal .cal-viewport{border-radius:0;border-left:none;border-right:none}.cal-draft-bar{flex-shrink:0;display:flex;align-items:center;gap:.5rem;min-width:0;padding:.35rem .75rem calc(.35rem + env(safe-area-inset-bottom,0px));border-top:1px solid var(--border);background:var(--surface);transform:translateY(100%);transition:transform .18s ease-out}.cal-draft-bar--visible{transform:translateY(0)}.cal-draft-bar-body{flex:1;min-width:0;overflow:hidden;padding:.25rem 0;color:var(--text)}.cal-draft-bar-summary{display:block;font-size:.9rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal-draft-bar-cancel,.cal-draft-bar-submit{flex-shrink:0;white-space:nowrap}@media(max-width:440px){.cal-draft-bar{flex-wrap:wrap;justify-content:flex-end}.cal-draft-bar-body{flex:1 1 100%}}@media(prefers-reduced-motion:reduce){.cal-draft-bar{transition:none}}.cal-toolbar{display:flex;flex-direction:column;gap:.75rem;flex-shrink:0}.cal-toolbar--compact{gap:.4rem;margin:0;padding:0}.cal-toolbar-row{display:flex;align-items:center;gap:.5rem;min-width:0}.cal-toolbar-row.cal-toolbar-actions{justify-content:flex-end;flex-wrap:wrap}.cal-toolbar-actions{display:flex;align-items:center;justify-content:flex-end;gap:.5rem;flex-wrap:wrap}.cal-toolbar-nav{display:flex;align-items:center;justify-content:center;gap:.5rem}.cal-period-label{margin:0;flex:1;display:flex;align-items:center;justify-content:center;min-height:var(--ctl-h);height:var(--ctl-h);padding:0;border:none;font:inherit;text-align:center;font-weight:700;font-size:var(--ctl-font);color:var(--text);cursor:pointer}.cal-period-label:hover,.cal-period-label:focus-visible{text-decoration:underline;outline:none}.cal-date-field{flex:1;min-width:0;margin:0}.cal-date-field-label{font-size:.78rem}.cal-scale-bar{display:flex;align-items:center;gap:.65rem}.cal-scale-bar-edge{flex-shrink:0;font-size:.78rem;font-weight:600;color:var(--text-muted)}.cal-scale-bar-control{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:.35rem}.cal-scale-bar-value{font-size:.82rem;font-weight:700;color:var(--pink)}.cal-scale-bar-slider{width:100%;margin:0;accent-color:var(--pink);cursor:pointer}.cal-scale-bar-slider:focus-visible{outline:2px solid var(--pink);outline-offset:2px}.cal-viewport{flex:1;min-height:0;display:flex;flex-direction:column;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);overflow:hidden}.cal-header-band{display:flex;flex-shrink:0;border-bottom:1px solid var(--border);background:var(--surface)}.cal-header-band .cal-timegutter-head{width:2.75rem;flex-shrink:0}.cal-header-band .cal-dayhead{flex:1 1 0;min-width:0;border-right:1px solid var(--border)}.cal-header-band .cal-dayhead:last-child{border-right:none}.cal-body-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.cal-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-top:.5rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow)}.cal-grid{display:flex;min-width:min(100%,22rem);user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.cal-scroll--multi .cal-grid{min-width:100%}.cal-viewport.cal-scroll--multi .cal-body-scroll,.cal-scroll--multi{overflow-x:hidden;touch-action:pan-y}.cal-viewport.cal-scroll--multi .cal-header-band,.cal-viewport.cal-scroll--multi .cal-grid{min-width:100%}.cal-timegutter{flex-shrink:0;width:2.75rem;position:sticky;left:0;z-index:3;background:var(--surface);border-right:1px solid var(--border)}.cal-timegutter-head{height:2.25rem;border-bottom:1px solid var(--border);background:var(--pink-light)}.cal-timegutter-body{position:relative}.cal-hourlabel{display:flex;align-items:flex-start;justify-content:flex-end;padding:.15rem .35rem 0 0;font-size:.68rem;font-weight:600;color:var(--text-muted);box-sizing:border-box;transform:translateY(-.45rem)}.cal-nowmarker{position:absolute;left:0;right:0;z-index:4;display:flex;align-items:center;justify-content:flex-end;gap:.1rem;pointer-events:none;transform:translateY(-50%)}.cal-nowmarker:after{content:"";flex-shrink:0;width:0;height:0;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:5px solid var(--muted-text)}.cal-nowmarker-label{font-size:.62rem;font-weight:700;line-height:1;color:var(--muted-text);padding-right:.15rem}.cal-daycol{flex:1 0 auto;min-width:8.5rem;border-right:1px solid var(--border)}.cal-daycol:last-child{border-right:none}.cal-viewport.cal-scroll--single .cal-header-band .cal-dayhead,.cal-scroll--single .cal-daycol{flex:1 1 auto;min-width:0}.cal-viewport.cal-scroll--multi .cal-header-band .cal-dayhead,.cal-scroll--multi .cal-daycol{flex:1 1 0;min-width:0}.cal-dayhead{min-height:2.25rem;padding:3px 2px;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.15;color:var(--text);background:var(--pink-light);border-bottom:1px solid var(--border)}.cal-dayhead--sun{color:var(--sun-text)}.cal-dayhead--sat{color:var(--sat-text)}.cal-dayhead--today,.cal-daycol--today .cal-dayhead,.adm-calendar .cal-dayhead--today,.adm-calendar .cal-daycol--today .cal-dayhead{background:var(--pink-light);box-shadow:inset 0 -2px 0 var(--pink)}.adm-calendar .cal-daycol--today .cal-daybody{background:#fffbfd}.cal-daybody{position:relative;background:var(--surface);user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:pan-y}.cal-hourline{border-bottom:1px solid var(--border);box-sizing:border-box;pointer-events:none}.cal-hourline:last-child{border-bottom:none}.cal-nowline{position:absolute;left:0;right:0;height:2px;background:var(--muted-text);z-index:2;pointer-events:none}.cal-nowline:before{content:"";position:absolute;left:0;top:-3px;width:7px;height:7px;border-radius:50%;background:var(--muted-text)}.cal-event-time{font-size:.65rem;font-weight:700;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.cal-event-menu{font-size:.72rem;font-weight:700;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.cal-event-menu--cancelled{text-decoration:line-through}.cal-event-status{display:inline-block;font-size:.58rem;font-weight:700;line-height:1.1;padding:.05rem .25rem;border-radius:3px;background:#ffffffb8;color:var(--text-muted);max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal-event-patient,.cal-event-staff,.cal-event-note{font-size:.62rem;color:var(--text-muted);line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.cal-event-staff--unassigned{color:var(--warn-text);font-weight:600}.cal-event-unit{margin-left:.15rem;font-size:.65rem;font-weight:700}.cal-event-pair{margin-left:.2rem;padding:0 .2rem;border-radius:.2rem;font-size:.6rem;font-weight:600;color:var(--text-muted);background:#ffffff8c}.appt-pair-warning{margin:0 0 .5rem;font-size:.8125rem;color:var(--text-muted)}.cal-event--needs-assignment{background:#fff7ed;border:1px dashed #ea580c;border-left:4px solid #ea580c;color:var(--text);box-shadow:0 1px 3px #ea580c33}.cal-event-resize{position:absolute;height:8px;left:0;right:0;cursor:ns-resize;background:transparent;z-index:2}.cal-event-resize--top{top:0}.cal-event-resize--bottom{bottom:0}.cal-event--dragging{z-index:3;opacity:.9;cursor:grabbing;box-shadow:0 4px 12px #0000002e}.cal-event--pending{filter:saturate(.5);pointer-events:none}.cal-event--pending .cal-event-time,.cal-event--pending .cal-event-menu,.cal-event--pending .cal-event-patient,.cal-event--pending .cal-event-staff,.cal-event--pending .cal-event-note{color:var(--muted-text)}.cal-grid--dragging{-webkit-user-select:none;user-select:none}.cal-event--cancelled{opacity:1;background-image:repeating-linear-gradient(-45deg,transparent,transparent 5px,rgba(55,65,81,.1) 5px,rgba(55,65,81,.1) 10px);border-color:#6b7280;filter:saturate(.45) brightness(.98)}.cal-event--cancelled .cal-event-time,.cal-event--cancelled .cal-event-menu,.cal-event--cancelled .cal-event-patient,.cal-event--cancelled .cal-event-staff,.cal-event--cancelled .cal-event-note{text-decoration:line-through;color:var(--muted-text)}.cal-event--cancelled .cal-event-status{background:var(--muted-text);color:#fff;text-decoration:none;font-size:.62rem;letter-spacing:.02em}.cal-event-overflow{position:absolute;display:flex;align-items:center;justify-content:center;padding:.15rem .25rem;min-height:28px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-muted);font-family:inherit;font-size:.65rem;font-weight:700;line-height:1.2;text-align:center;cursor:pointer;overflow:hidden;z-index:2;box-sizing:border-box;box-shadow:none;transition:background .15s,color .15s,border-color .15s}.cal-event-overflow:hover,.cal-event-overflow:focus-visible{background:var(--pink-light);border-color:var(--pink-border);color:var(--pink);outline:none}.cal-draft{position:absolute;left:4px;right:4px;border:2px solid var(--pink);border-radius:var(--radius-sm);background:var(--pink-light);box-sizing:border-box;z-index:5;cursor:grab;display:flex;align-items:center;justify-content:center;overflow:visible;touch-action:none}.cal-draft--interacting{z-index:6;cursor:grabbing}.cal-draft-label{font-size:.65rem;font-weight:700;color:var(--pink);pointer-events:none;text-align:center;padding:0 .5rem;line-height:1.2}.cal-draft-handle{position:absolute;width:var(--ctl-h-touch);height:var(--ctl-h-touch);display:flex;align-items:center;justify-content:center;touch-action:none;z-index:1}.cal-draft-handle:after{content:"";width:10px;height:10px;border-radius:50%;background:var(--pink);border:2px solid var(--surface);box-shadow:0 0 0 1px var(--pink)}.cal-draft-handle--start{top:0;left:0;transform:translate(-30%,-30%);cursor:nwse-resize}.cal-draft-handle--end{bottom:0;right:0;transform:translate(30%,30%);cursor:nwse-resize}.adm-calendar-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-shrink:0;padding:.65rem .75rem;border-bottom:1px solid var(--border);background:#fff}.adm-cal-proxy-btn-icon{display:none}@media(max-width:440px){.adm-fill .adm-calendar-header .ui-page-head-main{flex-wrap:nowrap;align-items:center}.adm-fill .adm-calendar-header .ui-page-title,.adm-fill .adm-cal-proxy-btn-text,.adm-fill .adm-cal-csv-btn-prefix{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.adm-fill .adm-cal-proxy-btn-icon{display:inline}.adm-fill .adm-calendar-header .ui-page-head-actions{flex-wrap:nowrap;flex-shrink:0}.adm-fill .adm-cal-csv-btn{min-height:var(--ctl-h-touch);padding:0 .6rem}.adm-fill .adm-cal-proxy-btn{min-width:var(--ctl-h-touch);min-height:var(--ctl-h-touch);padding:0;font-size:1.1rem}.adm-fill .adm-calendar-header .ui-page-meta{min-width:0;overflow:hidden;text-overflow:ellipsis}.adm-fill .adm-calendar-header .adm-unassigned-chip{flex-shrink:0}}@media(max-width:899px){.cal-toolbar-row.adm-cal-toolbar-row{align-items:stretch}.adm-cal-toolbar-line.adm-cal-toolbar-line--filters{flex-wrap:wrap}}.pending-cancellation-fee-alert-title{margin:0 0 .35rem;font-weight:700}.pending-cancellation-fee-alert-summary{margin:0 0 .35rem}.pending-cancellation-fee-alert-list{gap:.35rem}.pending-cancellation-fee-alert-list p{margin:0}.appt-detail-body .ui-btn--block{width:100%}.appt-patient-link-actions{display:flex;flex-wrap:wrap;gap:var(--ctl-gap);margin-top:.5rem}.appt-line-follow-panel{display:flex;flex-direction:column;gap:.65rem}.appt-line-follow-head{position:sticky;top:-1rem;z-index:1;display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:1rem 0 .65rem;margin-top:-1rem;background:var(--surface)}.appt-line-follow-head>.ui-btn{flex:none}.appt-line-follow-title{margin:0;font-size:var(--ctl-font);font-weight:700;display:flex;align-items:baseline;gap:.35rem;flex-wrap:wrap;min-width:0}.appt-line-follow-count{font-weight:500;color:var(--muted-text)}.appt-line-follow-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.appt-line-follow-list-item{display:flex;flex-direction:column;gap:.5rem}.appt-line-follow-item{display:flex;align-items:center;gap:.75rem;width:100%;min-height:var(--ctl-h);padding:.55rem .65rem;border:1px solid var(--border);border-radius:var(--ctl-radius);background:var(--surface);color:var(--text);text-align:left}.appt-line-follow-item:hover:not(:disabled){border-color:var(--pink-border);background:var(--pink-light)}.appt-line-follow-item--selected{border-color:var(--pink);background:var(--pink-light)}.appt-line-follow-item--disabled:disabled{opacity:1;color:var(--muted-text);cursor:not-allowed;background:var(--muted-bg);border-color:var(--muted-border)}.appt-line-follow-avatar{flex-shrink:0;width:2.25rem;height:2.25rem;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--muted-bg);color:var(--muted-text);font-size:var(--ctl-font);font-weight:700;overflow:hidden}.appt-line-follow-avatar--image{object-fit:cover}.appt-line-follow-main{display:flex;flex-direction:column;gap:.15rem;min-width:0}.appt-line-follow-name{font-weight:600}.appt-line-follow-when,.appt-line-follow-note{font-size:.85em;color:var(--muted-text)}.appt-line-follow-confirm{display:flex;flex-direction:column;gap:.5rem;padding:.65rem;border:1px solid var(--border);border-radius:var(--ctl-radius);background:var(--surface)}.appt-line-follow-confirm--danger{background:var(--warn-bg);border-color:var(--warn-border);color:var(--warn-text-body)}.appt-line-follow-confirm-text{margin:0}.appt-line-follow-confirm-actions{display:flex;flex-wrap:wrap;gap:.5rem}.proxy-booking-warning-list{gap:.35rem}.appt-subsc-warn{color:var(--warn-text-body);background:var(--warn-bg);border:1px solid var(--warn-border);border-radius:var(--ctl-radius);padding:.35rem .5rem}.admin-patient-register-qr{display:block;margin:0 auto 1rem;max-width:100%;height:auto}.pat-appt-pair-badge{display:inline-block;margin-left:.35rem;padding:.1rem .4rem;border-radius:.25rem;font-size:.6875rem;background:var(--muted-bg);color:var(--text-muted)}.admin-patient-search-toolbar{display:flex;align-items:flex-end;gap:.5rem}.admin-patient-search-toolbar .admin-patient-search-field{flex:1;min-width:0;margin-bottom:0}.admin-patient-search-bar{display:flex;align-items:center;gap:.5rem;min-width:0}.admin-patient-search-bar .staff-input{flex:1 1 auto;min-width:0}.admin-patient-search-bar .staff-input::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none}@media(min-width:900px){.app-shell--admin .admin-patient-search-bar{max-width:24rem}.app-shell--admin .admin-patient-search-bar .staff-input{height:var(--ctl-h);min-height:0;border-radius:var(--ctl-radius);font-size:var(--ctl-font)}}.admin-patient-search-list{list-style:none;margin:.5rem 0 0;padding:0;flex:none;max-height:12rem;overflow-y:auto;border:1px solid var(--border);border-radius:var(--radius)}.admin-patient-search-item{display:flex;flex-direction:column;align-items:flex-start;gap:.15rem;width:100%;padding:.6rem .75rem;border:none;border-bottom:1px solid var(--border);background:var(--surface);text-align:left;cursor:pointer}.admin-patient-search-list li:last-child .admin-patient-search-item{border-bottom:none}.admin-patient-search-item:hover,.admin-patient-search-item--selected{background:var(--pink-light)}.admin-patient-search-item--selected .admin-patient-search-name{color:var(--pink)}.admin-patient-search-name{font-weight:600;color:var(--text)}.admin-patient-search-phone{font-size:.85rem;color:var(--text-muted)}.admin-patient-suggest-reason{font-size:.8rem;color:var(--text-muted)}.admin-patient-suggest-empty{margin:.5rem 0 0;font-size:.85rem;color:var(--text-muted)}.admin-patient-search-empty{padding:.75rem;color:var(--text-muted);font-size:.9rem}.admin-patient-relink-source-title,.admin-patient-relink-target-title{margin:.75rem 0 0;font-weight:600}.admin-patient-relink-source-hint{margin:.25rem 0 0;font-size:.85rem;color:var(--text-muted)}.admin-patient-relink-source-list{list-style:none;margin:.5rem 0 0;padding:0;flex:none;max-height:14rem;overflow-y:auto;border:1px solid var(--border);border-radius:var(--radius)}.admin-patient-relink-source-item{display:flex;flex-direction:column;gap:.15rem;padding:.6rem .75rem;border-bottom:1px solid var(--border)}.admin-patient-relink-source-item:last-child{border-bottom:none}.admin-patient-relink-source-when{font-weight:600;color:var(--text)}.admin-patient-relink-source-status{display:inline-block;margin-left:.35rem;padding:.1rem .45rem;font-size:.75rem;border:1px solid var(--muted-border);border-radius:999px;background:var(--muted-bg);color:var(--muted-text)}.admin-patient-relink-source-what,.admin-patient-relink-source-note{font-size:.85rem;color:var(--text-muted)}.admin-patient-relink-source-note{margin:0;white-space:pre-wrap}.admin-patient-queue-list{list-style:none;margin:.75rem 0 0;padding:0;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.admin-patient-queue-item{display:flex;flex-direction:column;align-items:flex-start;gap:.15rem;width:100%;padding:.6rem .75rem;border:none;border-bottom:1px solid var(--border);background:var(--surface);text-align:left;cursor:pointer}.admin-patient-queue-list li:last-child .admin-patient-queue-item{border-bottom:none}.admin-patient-queue-item:hover:not(:disabled){background:var(--pink-light)}.admin-patient-queue-title{font-weight:600;color:var(--text)}.admin-patient-queue-desc{font-size:.85rem;color:var(--text-muted)}.admin-patient-queue-badge{align-self:flex-start;padding:.1rem .45rem;font-size:.75rem;border:1px solid var(--done-border);border-radius:999px;background:var(--done-bg);color:var(--done-text)}.admin-patient-queue-note,.admin-patient-queue-result{margin:.5rem 0 0;font-size:.85rem;color:var(--text-muted)}.admin-patient-list{margin-top:.75rem}.admin-patient-list-row{display:flex;align-items:flex-start;justify-content:space-between;width:100%;text-align:left;cursor:pointer}.admin-patient-list-row-main{display:flex;flex-direction:column;gap:.2rem;min-width:0;flex:1}.admin-patient-list-name{font-weight:600;color:var(--text);word-break:break-word}.admin-patient-list-phone{font-size:.85rem;color:var(--text-muted)}.admin-patient-list-badges{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.35rem;flex-shrink:0}.admin-patient-detail-modal{width:min(100%,36rem);max-width:36rem;gap:.75rem}.admin-patient-detail-header{display:flex;flex-direction:column;gap:.25rem;min-width:0}.admin-patient-detail-phone{margin:0;font-size:.9rem;color:var(--text-muted)}.admin-patient-detail-badges{display:flex;flex-wrap:wrap;gap:.35rem}.admin-patient-page{--pat-gap-tight: .5rem;--pat-gap: .75rem;--pat-gap-block: 1rem}.admin-patient-workspace{display:flex;flex-direction:column;gap:1rem;min-width:0}.admin-patient-talk-pane{position:relative;display:flex;flex-direction:column;gap:var(--pat-gap);min-width:0;min-height:0;height:62vh;min-height:22rem;padding:var(--pat-gap);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow)}.admin-patient-thread{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column}.admin-patient-thread--empty{align-items:center;justify-content:center}.admin-patient-compose{display:flex;flex-direction:column;gap:.5rem;flex:none}.admin-patient-link-guide{display:flex;flex-direction:column;gap:var(--pat-gap)}.admin-patient-link-guide-reason{margin:0;font-size:.85rem;color:var(--text-muted)}.admin-patient-link-guide-title{margin:0;font-size:.9rem;font-weight:700;color:var(--text)}.admin-patient-link-guide-steps{margin:0;padding-left:1.4rem;font-size:.85rem;line-height:1.6}.admin-patient-link-guide-steps li+li{margin-top:var(--pat-gap)}.admin-patient-link-guide-steps li>span{display:block}.admin-patient-link-guide-steps li>button{margin-top:.5rem}.admin-patient-talk-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:var(--pat-gap);border-radius:var(--radius);overflow-y:auto;background:var(--surface);background:color-mix(in srgb,var(--surface) 80%,transparent)}.admin-patient-talk-overlay-card{display:flex;flex-direction:column;gap:.5rem;width:100%;max-width:26rem;padding:var(--pat-gap);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-md)}.admin-patient-talk-overlay-title{margin:0;font-weight:700;color:var(--text)}.admin-patient-talk-overlay-text{margin:0;font-size:.85rem;color:var(--text-muted)}.admin-patient-record-desc{margin:0 0 .5rem;font-size:.85rem;color:var(--text-muted)}.admin-patient-record-actions{display:flex;flex-wrap:wrap;gap:.5rem}.admin-patient-record-note{margin:.35rem 0 0;font-size:.8rem;color:var(--text-muted)}.admin-patient-profile{display:none;position:fixed;inset:0;z-index:1000;overscroll-behavior:contain;flex-direction:column;gap:1rem;padding:1rem;overflow-y:auto;background:var(--bg)}.admin-patient-profile--open{display:flex}.admin-patient-profile-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.admin-patient-profile-title{margin:0;font-size:15px;font-weight:700;color:var(--text)}@media(min-width:900px){.admin-patient-workspace{flex-direction:row;align-items:flex-start}.admin-patient-talk-pane{flex:1;height:min(70vh,42rem)}.admin-patient-profile{display:flex;position:static;z-index:auto;flex:0 0 22rem;max-height:min(70vh,42rem);padding:0;background:transparent}.admin-patient-profile-toggle,.admin-patient-profile-head{display:none}}.admin-patient-card-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.35rem .75rem;margin-bottom:var(--pat-gap)}.admin-patient-card-title{margin:0;font-size:.85rem;font-weight:700;color:var(--text-muted)}.admin-patient-card-actions{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem}.admin-patient-card-meta{margin:0;font-size:.8rem;color:var(--text-muted)}.admin-patient-panel{padding:1.25rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow)}.admin-patient-ticket-ended-trigger{align-self:flex-start;margin-top:.5rem}.admin-patient-ticket-list{margin:0;padding:0;list-style:none;display:grid;gap:.5rem}.admin-patient-ticket-row{display:flex;align-items:flex-start;justify-content:space-between;gap:.65rem;padding:.65rem .75rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}.admin-patient-ticket-row-main{flex:1;min-width:0;display:grid;gap:.25rem}.admin-patient-ticket-row-summary{margin:0;font-size:.85rem;color:var(--text-muted);line-height:1.35}.admin-patient-ticket-row-actions{display:flex;flex-shrink:0;flex-direction:column;align-items:stretch;gap:.35rem}.admin-patient-ticket-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem}.admin-patient-ticket-name{margin:0;font-weight:600;color:var(--text)}.admin-patient-ticket-meta{margin:0;display:grid;gap:.35rem}.admin-patient-ticket-detail-body{display:grid;gap:.75rem}.admin-patient-ticket-detail-history{max-height:min(40vh,16rem);overflow-y:auto;padding-right:.15rem}.admin-patient-ticket-detail-history-title{margin:0 0 .35rem;font-size:.85rem;font-weight:600;color:var(--text)}.admin-patient-ticket-use-highlight{margin:0;font-size:.85rem;font-weight:600;color:var(--ok-text)}.admin-patient-ticket-ended-list{margin:0;padding:0;list-style:none;display:grid;gap:.5rem}.admin-patient-ticket-ended-row{display:flex;align-items:center;justify-content:space-between;gap:.65rem;padding:.5rem 0;border-bottom:1px solid var(--border)}.admin-patient-ticket-ended-row:last-child{border-bottom:none}.admin-patient-ticket-ended-row-main{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;min-width:0}.admin-patient-fee-panel{padding:var(--pat-gap);border:1px solid var(--warn-border);border-left-width:3px;border-radius:var(--radius-sm);background:var(--warn-bg)}.admin-patient-fee-panel .admin-patient-card-title,.admin-patient-fee-total{color:var(--warn-text)}.admin-patient-fee-total{margin:0;font-size:.85rem;font-weight:700;font-variant-numeric:tabular-nums}.admin-patient-fee-list{margin:0;padding:0;list-style:none;display:grid;gap:var(--pat-gap-tight)}.admin-patient-fee-row{display:grid;grid-template-columns:minmax(5.5rem,auto) auto;justify-content:start;gap:.15rem .75rem;align-items:baseline}.admin-patient-fee-date{font-size:.85rem;font-variant-numeric:tabular-nums;color:var(--warn-text-body)}.admin-patient-fee-amount{font-weight:700;font-variant-numeric:tabular-nums;color:var(--warn-text)}.admin-patient-fee-note{grid-column:1 / -1;font-size:.8rem;line-height:1.5;color:var(--warn-text-body);word-break:break-word}.admin-patient-page-info{margin:0;display:grid;gap:var(--pat-gap-tight)}.admin-patient-page-info-row{display:grid;grid-template-columns:6.5rem 1fr;gap:.5rem;align-items:baseline}.admin-patient-page-info-row dt{margin:0;font-size:.85rem;color:var(--text-muted)}.admin-patient-page-info-row dd{margin:0}.admin-patient-page-phone{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.admin-patient-sms-recipient{margin:0;word-break:break-word}.admin-patient-sms-field{margin:0}.admin-patient-sms-textarea{min-height:calc(var(--ctl-h) * 4);resize:vertical}.admin-patient-sms-count{margin:0;font-size:.85rem;color:var(--text-muted)}.admin-patient-sms-count--over{color:var(--danger-text)}.admin-patient-sms-send{width:100%}.admin-patient-sms-confirm{margin:0;line-height:1.6;word-break:break-word}.admin-patient-sms-preview{max-height:40vh;overflow-y:auto;padding:.75rem;border:1px solid var(--border);border-radius:var(--ctl-radius);background:var(--bg);line-height:1.6;white-space:pre-wrap;word-break:break-word}.admin-patient-appointment-list{margin:0;padding:0;list-style:none;display:grid;gap:var(--pat-gap-tight)}.admin-patient-appointment-row{display:grid;grid-template-columns:minmax(8rem,1.2fr) 1fr auto;gap:.5rem;align-items:center;width:100%;padding:.55rem .65rem;border:1px solid var(--border);border-radius:.5rem;background:#fff;text-align:left;font:inherit;color:inherit;cursor:pointer}.admin-patient-appointment-row:hover{background:var(--surface-muted, #f8fafc)}.admin-patient-appointment-datetime{font-weight:600;font-size:.9rem}.admin-patient-appointment-menu,.admin-patient-appointment-staff{font-size:.85rem;color:var(--text-muted)}.admin-patient-talk-thread{display:flex;flex-direction:column;gap:.75rem;margin-top:auto}.admin-patient-talk-row{display:flex;flex-direction:column;gap:.2rem;max-width:85%}.admin-patient-talk-row--outgoing{align-self:flex-end;align-items:flex-end}.admin-patient-talk-row--incoming{align-self:flex-start;align-items:flex-start}.admin-patient-talk-bubble{padding:.55rem .75rem;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border)}.admin-patient-talk-bubble--outgoing{background:var(--pink-light);border-color:var(--pink-border)}.admin-patient-talk-bubble--incoming{background:var(--surface)}.admin-patient-talk-bubble--failed{background:var(--danger-bg);border-color:var(--danger-border)}.admin-patient-talk-text{margin:0;font-size:.9rem;line-height:1.5;color:var(--text);white-space:pre-wrap;word-break:break-word}.admin-patient-talk-text--unsent{text-decoration:line-through;color:var(--muted-text)}.admin-patient-talk-unsent{margin:.35rem 0 0;font-size:.75rem;color:var(--muted-text)}.admin-patient-talk-failed{margin:.35rem 0 0;font-size:.75rem;color:var(--danger-text)}.admin-patient-talk-meta{margin:0;font-size:.7rem;color:var(--text-muted)}.admin-patient-talk-input{resize:vertical;min-height:4.5rem}@media(min-width:1280px){.admin-patient-detail-modal{max-width:32rem}}@media(max-width:440px){.admin-patient-panel{padding:1rem}.admin-patient-appointment-row{grid-template-columns:1fr auto;row-gap:.15rem}.admin-patient-appointment-datetime{grid-column:1 / -1}.admin-patient-list-row{flex-direction:column;align-items:stretch}.admin-patient-list-badges{justify-content:flex-start}.admin-patient-talk-row{max-width:92%}}.admin-patient-relink-panel{margin-top:.5rem;display:flex;flex-direction:column;gap:.5rem}.admin-patient-relink-confirm p{margin:0}.admin-patient-relink-confirm p+p{margin-top:.35rem}.admin-patient-relink-lead{margin:0}.admin-patient-relink-parties{margin:.5rem 0 0;display:flex;flex-direction:column;gap:.5rem}.admin-patient-relink-party{display:flex;gap:.5rem;align-items:baseline}.admin-patient-relink-party-role{flex:none;min-width:3.5rem;font-size:.8rem;color:var(--text-muted)}.admin-patient-relink-party-body{margin:0;display:flex;flex-direction:column;gap:.1rem;min-width:0}.admin-patient-relink-party-name{font-weight:600;color:var(--text)}.admin-patient-relink-party-identity{font-size:.8rem;color:var(--text-muted)}.pat-appt{position:relative;border-left:4px solid var(--border)}.pat-appt--confirmed{border-left-color:var(--pink)}.pat-appt--booked{border-left-color:#5aa2e6}.pat-appt--completed{border-left-color:#9aa0a6}.pat-appt--cancelled{border-left-color:#d0d0d0;opacity:.72}.pat-appt--noshow{border-left-color:#e0993a}.pat-appt-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:.35rem;gap:.5rem}.pat-appt-badge{display:inline-block;font-size:.72rem;font-weight:700;padding:2px 10px;border-radius:999px;border:1px solid transparent}.pat-appt-badge--confirmed{background:#fde5f4;color:#b3247e;border-color:#f6c4e4}.pat-appt-badge--booked{background:#e4f0ff;color:#255f9e;border-color:#c4ddf7}.pat-appt-badge--completed{background:#eef0f2;color:#565b60;border-color:#dce0e4}.pat-appt-badge--cancelled{background:#f3f3f3;color:#8a8a8a;border-color:#e2e2e2}.pat-appt-badge--noshow{background:#fbe7d3;color:#9a5a12;border-color:#f2d3a6}.pat-appt-nomination{font-size:.78rem;color:var(--text-muted)}.pat-appt-datetime{display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap;margin:0 0 .15rem}.pat-appt-date{font-weight:700;font-size:1rem}.pat-appt-time{font-weight:600;font-size:.92rem;color:var(--text)}.pat-appt-menu{margin:0 0 .1rem;font-size:.9rem;color:var(--pink-deep, #e64bb5);font-weight:600}.pat-appt-composition{margin:0 0 .1rem}.pat-appt-meta-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media(prefers-color-scheme:dark){.pat-appt-badge--confirmed{background:#4a2540;color:#f6c4e4;border-color:#7a3d66}.pat-appt-badge--booked{background:#1e3a5f;color:#c4ddf7;border-color:#3a6a9e}.pat-appt-badge--completed{background:#3a3d40;color:#dce0e4;border-color:#565b60}.pat-appt-badge--cancelled{background:#3a3a3a;color:#b0b0b0;border-color:#555}.pat-appt-badge--noshow{background:#4a3520;color:#f2d3a6;border-color:#7a5a30}.pat-appt--cancelled{opacity:.85}}.admin-patient-cell--line{color:var(--ok-text);white-space:nowrap}.admin-patient-cell--line-off{color:var(--text-muted)}.admin-patient-table-wrap{margin-top:.75rem;overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.admin-patient-table{width:100%;border-collapse:collapse;table-layout:fixed}.admin-patient-th--name{width:34%}.admin-patient-th--phone{width:21%}.admin-patient-th--last-visit{width:19%}.admin-patient-th--visit-type{width:9%}.admin-patient-th--line{width:13%}.admin-patient-th--chevron{width:4%}.admin-patient-table th{padding:.5rem .375rem;background:var(--bg);border-bottom:1px solid var(--border);text-align:left;font-size:.72rem;font-weight:700;color:var(--text-muted);white-space:nowrap}.admin-patient-cell{padding:.5rem .375rem;font-size:.9rem;vertical-align:middle}.admin-patient-table th:first-child,.admin-patient-table td:first-child{padding-left:.9rem}.admin-patient-table th:last-child,.admin-patient-table td:last-child{padding-right:.9rem}.admin-patient-table tbody tr+tr td{border-top:1px solid var(--border)}.admin-patient-cell--phone,.admin-patient-cell--last-visit{font-variant-numeric:tabular-nums;color:var(--text-muted);white-space:nowrap}.admin-patient-cell--visit-type{color:var(--text-muted);white-space:nowrap}.admin-patient-cell--chevron{text-align:right}.admin-patient-row-chevron{color:var(--text-muted);font-size:1.1rem;line-height:1}.admin-patient-table-row{cursor:pointer}.admin-patient-table-row:hover{background:var(--pink-light)}.admin-patient-open{padding:0;min-height:0;border:none;font:inherit;font-weight:600;color:var(--text);text-align:left;cursor:pointer}.admin-patient-open:hover{color:var(--pink)}.admin-patient-open:focus-visible{outline:2px solid var(--pink);outline-offset:2px}.admin-patient-cell-label{display:none}.admin-patient-cell-skeleton{display:inline-block;width:5rem;height:.8em;border-radius:var(--radius-sm);background:var(--border);opacity:.5}@media(max-width:899px){.admin-patient-table,.admin-patient-table tbody,.admin-patient-table td{display:block}.admin-patient-table thead{display:none}.admin-patient-table-wrap{overflow-x:visible}.admin-patient-table-row{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name       line" "phone      line" "last-visit visit-type";gap:.15rem .5rem;margin-bottom:.5rem;padding:.75rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow)}.admin-patient-cell{padding:0;border-bottom:none}.admin-patient-cell--name{grid-area:name}.admin-patient-cell--phone{grid-area:phone}.admin-patient-cell--last-visit{grid-area:last-visit}.admin-patient-cell--visit-type{grid-area:visit-type;text-align:right}.admin-patient-cell--line{grid-area:line;align-self:start}.admin-patient-cell-label{display:inline;margin-right:.35rem}.admin-patient-table .admin-patient-cell--empty,.admin-patient-table .admin-patient-cell--chevron{display:none}.admin-patient-cell--phone,.admin-patient-cell--last-visit,.admin-patient-cell--visit-type{font-size:.8rem}}@media(min-width:900px){.admin-patient-table-row{height:42px}}.admin-patient-appt-detail-status{margin:0}.admin-patient-appt-detail{margin:0;display:grid;gap:.5rem}.admin-patient-appt-detail-row{display:grid;grid-template-columns:7rem 1fr;gap:.5rem;align-items:baseline}.admin-patient-appt-detail-row dt{margin:0;font-size:.85rem;color:var(--text-muted)}.admin-patient-appt-detail-row dd{margin:0;white-space:pre-wrap;word-break:break-word}@media(max-width:440px){.admin-patient-appt-detail-row{grid-template-columns:1fr;gap:.15rem}}.admin-patient-note-unsaved{display:inline-block;padding:.1rem .45rem;border:1px solid var(--warn-border);border-radius:999px;background:var(--warn-bg);color:var(--warn-text);font-size:.72rem;font-weight:700;white-space:nowrap}.admin-patient-note-input{resize:vertical;min-height:5rem}.admin-patient-hidden-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;margin:0;padding:.75rem 1rem;border:1px solid var(--muted-border);border-radius:var(--radius);background:var(--muted-bg);color:var(--muted-text)}.admin-patient-hidden-badge{display:inline-block;margin-left:.35rem;padding:.1rem .45rem;border:1px solid var(--muted-border);border-radius:999px;background:var(--muted-bg);color:var(--muted-text);font-size:.75rem;font-weight:600;white-space:nowrap;vertical-align:middle}.admin-patient-hide-effects{margin:0;padding-left:1.25rem;display:flex;flex-direction:column;gap:.35rem}.patient-nomination-row .patient-card-meta{display:block}.admin-patient-talk-media-list{display:flex;flex-direction:column;gap:.5rem}.admin-patient-talk-media{display:flex;flex-direction:column;gap:.3rem}.admin-patient-talk-media-image{display:block;width:100%;max-width:18rem;max-height:20rem;object-fit:contain;border-radius:var(--radius-sm);background:var(--muted-bg)}.admin-patient-talk-media-label{margin:0;font-size:.8rem;font-weight:600;color:var(--text);word-break:break-word}.admin-patient-talk-media-note{margin:0;font-size:.72rem;color:var(--muted-text)}.admin-patient-attach{display:flex;flex-direction:column;gap:.4rem;align-items:flex-start}.admin-patient-attach-input{display:none}.admin-patient-attach-list{list-style:none;margin:0;padding:0;width:100%;display:flex;flex-direction:column;gap:.4rem}.admin-patient-attach-actions{display:flex;align-items:center;gap:.5rem}.admin-patient-attach-count{font-size:.75rem;color:var(--text-muted);font-variant-numeric:tabular-nums}.admin-patient-attach-card{display:flex;width:100%;gap:.6rem;align-items:flex-start;padding:.5rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}.admin-patient-attach-thumb{flex:none;width:3.5rem;height:3.5rem;object-fit:cover;border-radius:var(--radius-sm);background:var(--muted-bg)}.admin-patient-attach-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:.15rem}.admin-patient-attach-name{margin:0;font-size:.8rem;font-weight:600;color:var(--text);word-break:break-all}.admin-patient-attach-size{margin:0;font-size:.72rem;color:var(--text-muted)}.admin-patient-attach-note{margin:0;font-size:.72rem;color:var(--muted-text)}.admin-patient-load-failure{display:flex;flex-direction:column;align-items:center;gap:.5rem;margin:0;padding:.75rem 1rem;text-align:center}.admin-patient-load-failure-text{margin:0;font-size:.9rem;color:var(--text-muted)}.admin-patient-load-failure-hint{margin:0;font-size:.78rem;color:var(--text-muted)}.admin-patient-talk-length{margin:0;align-self:flex-end;font-size:.78rem;font-variant-numeric:tabular-nums;color:var(--warn-text-body)}.admin-patient-talk-length--over{color:var(--danger-text);font-weight:600}.admin-patient-send-error-text{margin:0 0 .5rem}.admin-patient-send-error-text:only-child{margin-bottom:0}.sg-cell .sg-mark--tel{background:transparent;color:var(--green);font-size:.62rem;letter-spacing:.02em;cursor:pointer}.sg-cell .sg-mark--tel:hover{background:var(--green-light);text-decoration:none}.sg-cell--closed{background:var(--muted-bg)}.sg-cell .sg-mark--closed{color:var(--muted-text);font-size:.78rem;cursor:default}.pat-prepay-section{margin:1rem 0 1.25rem;padding:1rem;border:1px solid var(--border);border-radius:var(--ctl-radius);background:var(--surface)}.pat-prepay-amount{margin:.25rem 0 .75rem;font-size:1.125rem;font-weight:600}.pat-prepay-card-host{min-height:2.75rem;margin-bottom:.5rem}.pat-prepay-wallet-host--visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.pat-prepay-card-host--hidden{display:none}.pat-prepay-method-fieldset{border:none;margin:0 0 .75rem;padding:0}.pat-prepay-method-legend{font-weight:600;margin-bottom:.5rem}.pat-prepay-save-card{display:flex;align-items:flex-start;gap:.5rem;margin-top:.75rem;font-size:.95rem}.pat-saved-cards-section{margin-bottom:1.25rem}.pat-saved-card-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.pat-saved-card-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.65rem .75rem;border:1px solid var(--border);border-radius:var(--ctl-radius);background:var(--surface)}.pat-saved-card-row--confirm-only{flex-direction:column;align-items:stretch}.pat-saved-card-row-label{flex:1;min-width:0;cursor:pointer}.pat-saved-card-row-label--radio{display:flex;align-items:flex-start;gap:.5rem}.pat-saved-card-radio{margin-top:.2rem;flex-shrink:0}.pat-saved-card-row-text{line-height:1.4}.pat-saved-card-row-remove{flex-shrink:0}.pat-saved-card-row-confirm{width:100%}.pat-saved-card-row-confirm-text{margin:0 0 .65rem;font-size:.9rem;color:var(--text)}.pat-saved-card-row-confirm-actions{display:flex;flex-wrap:wrap;gap:.5rem}.pat-prepay-note{margin:.5rem 0 0;font-size:.8125rem;color:var(--text-muted)}.patient-tickets-section{margin-bottom:1.25rem}.patient-tickets-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.75rem}.patient-ticket-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--ctl-radius);padding:.85rem 1rem}.patient-ticket-card-name{margin:0 0 .35rem;font-weight:600}.patient-ticket-card-remaining{margin:0;color:var(--text)}.patient-ticket-card-expiry{margin:.25rem 0 0;font-size:.85rem;color:var(--text-muted)}.pat-subsc-section{margin:0 0 1rem}.pat-subsc-plan-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.75rem}.pat-subsc-plan-card{border:1px solid var(--border);border-radius:var(--ctl-radius);padding:.75rem 1rem;background:var(--surface)}.pat-subsc-plan-name{margin:0;font-weight:600}.pat-subsc-plan-price{margin:.25rem 0 0}.pat-subsc-plan-desc{margin:.35rem 0 0;font-size:.9rem;color:var(--text-muted)}.pat-subsc-interval-note{margin:.75rem 0;font-size:.9rem;color:var(--text-muted)}.pat-subsc-status-line{margin:0 0 .75rem}.pat-subsc-warn{margin:0 0 .75rem;color:var(--warn-text-body);background:var(--warn-bg);border:1px solid var(--warn-border);border-radius:var(--ctl-radius);padding:.5rem .75rem}.pat-subsc-cancel-btn,.pat-subsc-apply-btn{width:100%;max-width:20rem}.pat-subsc-email-hint{margin-top:.25rem}.admin-patient-subsc-line{margin:0 0 .5rem}.admin-patient-subsc-warn{margin:0 0 .5rem;color:var(--warn-text-body);background:var(--warn-bg);border:1px solid var(--warn-border);border-radius:var(--ctl-radius);padding:.35rem .5rem}.admin-patient-subsc-empty,.admin-patient-subsc-ended{margin:0;color:var(--text-muted)}.admin-patient-subsc-ended-meta{margin:0;font-size:.875rem;color:var(--text-muted)}.admin-patient-subsc-cancel{margin-top:.5rem}.patient-step-body--footer.pat-step-body--inner-footer{padding-bottom:0}.pat-step-body--inner-footer>.patient-sticky-footer{margin-top:0}.pat-step-body--inner-footer>.patient-alert{scroll-margin-bottom:calc(var(--patient-sticky-footer-height) + .5rem)}.hist-panel{gap:.6rem}.log-badge{display:inline-block;padding:.2rem .55rem;border:1px solid transparent;border-radius:999px;font-size:.76rem;font-weight:700;white-space:nowrap}.log-badge--created{background:var(--green-light);border-color:var(--green-border);color:var(--ok-text)}.log-badge--updated{background:var(--muted-bg);border-color:var(--muted-border);color:var(--muted-text)}.log-badge--deleted{background:var(--danger-bg);border-color:var(--danger-border);color:var(--danger-text)}.log-source{font-size:.72rem;color:var(--text-muted)}.hist-fee-badge{display:inline-block;margin-left:.35rem;padding:.1rem .45rem;font-size:.75rem;border:1px solid transparent;border-radius:999px;white-space:nowrap}.hist-fee-badge--pending{background:var(--warn-bg);border-color:var(--warn-border);color:var(--warn-text)}.hist-fee-badge--done{background:var(--done-bg);border-color:var(--done-border);color:var(--done-text)}.hist-fee-badge--muted{background:var(--muted-bg);border-color:var(--muted-border);color:var(--muted-text)}.hist-table-head{display:none}.hist-rows{display:flex;flex-direction:column;gap:.35rem;margin:0;padding:0;list-style:none}.hist-row{min-width:0}.hist-row-btn{display:grid;grid-template-columns:minmax(0,1fr) auto auto;grid-template-areas:"patient    type  chevron" "appt-date  appt-date chevron" "summary    summary chevron" "changed-at actor chevron";gap:.1rem .5rem;width:100%;min-height:0;padding:.5rem .65rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);font-family:inherit;font-size:.8rem;font-weight:400;line-height:1.45;text-align:left;cursor:pointer}.hist-row-btn:hover{background:var(--pink-light)}.hist-cell{min-width:0;overflow-wrap:anywhere}.hist-cell--changed-at{grid-area:changed-at;font-size:.75rem;color:var(--text-muted)}.hist-cell--appt-date{grid-area:appt-date;color:var(--text-muted)}.hist-cell--type{grid-area:type;justify-self:end}.hist-cell--patient{grid-area:patient;display:flex;align-items:center;flex-wrap:wrap;gap:.35rem}.hist-patient{font-weight:700;font-size:.9rem}.hist-cell--summary{grid-area:summary;color:var(--text-muted)}.hist-cell--actor{grid-area:actor;justify-self:end;font-size:.75rem;color:var(--text-muted);text-align:right}.hist-cell--chevron{grid-area:chevron;display:flex;align-items:center;align-self:stretch}.hist-cell-label:after{content:": "}.hist-row-chevron{flex:none;color:var(--text-muted);font-size:1.1rem}.log-empty{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem .75rem}.log-detail-head{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;margin:.5rem 0 .9rem}.log-detail-patient{margin:0;font-size:1rem;font-weight:700}.log-detail-schedule{margin:0;font-size:.9rem}.log-detail-note{margin-left:.35rem;font-size:.72rem;color:var(--text-muted)}.log-detail-section-title{margin:.75rem 0 .35rem;font-size:.85rem;font-weight:700}.log-timeline{margin:0;padding:0 0 0 1rem;list-style:none;border-left:2px solid var(--border)}.log-timeline-item{position:relative;margin:0 0 .85rem;padding:0 0 0 .65rem}.log-timeline-item:before{content:"";position:absolute;left:-1.15rem;top:.35rem;width:.5rem;height:.5rem;border:2px solid var(--border);border-radius:50%;background:var(--surface)}.log-timeline-item--current{margin-left:-.5rem;padding:.5rem .5rem .5rem .65rem;border-radius:var(--radius);background:var(--pink-light)}.log-timeline-head{display:flex;align-items:center;flex-wrap:wrap;gap:.3rem .5rem}.log-timeline-when{font-size:.8rem;font-weight:700}.log-timeline-actor{font-size:.75rem;color:var(--text-muted)}.log-timeline-summary{margin:.25rem 0 0;font-size:.8rem}.log-change-list{margin:.25rem 0 0}.log-change-list dt{font-size:.72rem;font-weight:700;color:var(--text-muted)}.log-change-list dd{margin:0 0 .2rem;font-size:.8rem}@media(min-width:900px){.app-shell--admin .hist-table{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow:hidden}.app-shell--admin .hist-cell{grid-area:auto}.app-shell--admin .hist-table-head,.app-shell--admin .hist-row-btn{display:grid;grid-template-areas:none;grid-template-columns:9rem 9.5rem 4.5rem minmax(7rem,1fr) minmax(12rem,2fr) 9rem 1.5rem;align-items:center;gap:.75rem;padding:.5rem .9rem}.app-shell--admin .hist-table-head{border-bottom:1px solid var(--border);background:var(--bg)}.app-shell--admin .hist-th{font-size:.72rem;font-weight:700;color:var(--text-muted)}.app-shell--admin .hist-rows{gap:0}.app-shell--admin .hist-row+.hist-row .hist-row-btn{border-top:1px solid var(--border)}.app-shell--admin .hist-row-btn{border:none;border-radius:0}.app-shell--admin .hist-cell-label{display:none}.app-shell--admin .hist-cell--changed-at,.app-shell--admin .hist-cell--appt-date{white-space:nowrap}.app-shell--admin .hist-cell--type{justify-self:start}.app-shell--admin .hist-cell--actor{justify-self:start;text-align:left}.app-shell--admin .hist-cell--chevron{display:block;justify-self:end}}.pending-fee-total{margin:0;padding:.5rem .75rem;border:1px solid var(--warn-border);border-radius:var(--radius);background:var(--warn-bg);color:var(--warn-text-body);font-size:.9rem;font-weight:700}.pending-fee-list{display:flex;flex-direction:column;gap:.35rem;margin:0;padding:0;list-style:none}.pending-fee-item{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name amount" "when when" "note note";gap:.1rem .75rem;width:100%;min-height:0;padding:.5rem .65rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);font-family:inherit;font-size:.8rem;font-weight:400;line-height:1.45;text-align:left;cursor:pointer}.pending-fee-item:hover{background:var(--pink-light)}.pending-fee-name{grid-area:name;font-weight:700;font-size:.9rem}.pending-fee-when{grid-area:when;color:var(--text-muted);font-size:.75rem}.pending-fee-amount{grid-area:amount;justify-self:end;font-weight:700;white-space:nowrap}.pending-fee-note{grid-area:note;color:var(--text-muted);font-size:.75rem}.pending-fee-modal-name{font-weight:600;color:var(--text)}.pending-fee-modal-when{font-size:.85rem;color:var(--text-muted)}.admin-menu-header-actions{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:.45rem;flex-shrink:0}.admin-menu-row-main{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .65rem;flex:1;min-width:0}.admin-menu-name-btn{margin:0;padding:0;min-height:0;height:auto;border:none;font:inherit;font-weight:700;color:var(--text);cursor:pointer;text-align:left}.admin-menu-name-btn:hover{color:var(--pink);text-decoration:underline;text-underline-offset:2px}.admin-menu-name-btn:focus-visible{outline:2px solid var(--pink);outline-offset:2px;border-radius:2px}.admin-menu-row-meta{font-size:.85rem;color:var(--text-muted)}.admin-menu-row-meta-line{flex:1 1 100%;display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .5rem;min-height:1.625rem}.admin-menu-row-category-select{margin:0;height:var(--ctl-h);min-height:var(--ctl-h);padding:0 1.5rem 0 var(--ctl-pad-x);border:1px solid var(--border);border-radius:var(--ctl-radius);background:var(--surface);color:var(--text-muted);font:inherit;font-size:var(--ctl-font);font-weight:600;cursor:pointer;max-width:min(100%,9.5rem);min-width:0}.admin-menu-row-category-select:disabled{opacity:1;background:var(--muted-bg);color:var(--muted-text);cursor:default}.admin-menu-category-sections{display:flex;flex-direction:column;gap:1rem}.admin-menu-category-management{margin:.75rem 0}.admin-menu-category-name{font-weight:600;color:var(--text)}.admin-menu-row-actions{flex:1 1 100%;display:flex;justify-content:flex-start}.admin-menu-row-copy-error{flex:1 1 100%;margin:0}.admin-menu-booking-url{margin:0 0 1rem;padding:.75rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);display:flex;flex-direction:column;gap:.5rem}.admin-menu-booking-url-value{margin:0;font-size:.75rem;word-break:break-all;color:var(--text-muted);line-height:1.4}.admin-menu-description{resize:vertical;min-height:4.5rem}.admin-menu-row-description{flex:1 1 100%;font-size:.8rem;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sg-weeknav{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.sg-weeknav-label{font-size:.9rem;font-weight:700;color:var(--pink-hover);text-align:center;flex:1;white-space:nowrap}.sg-weeknav-btn{background:var(--surface);color:var(--pink);border:1px solid var(--pink-border);border-radius:var(--radius-sm);padding:.5rem .75rem;min-height:var(--ctl-h-touch);font-size:.85rem;font-weight:700;white-space:nowrap}.sg-weeknav-btn:hover:not(:disabled){background:var(--pink-light);box-shadow:none}.sg-weeknav-btn:disabled{opacity:.35;cursor:not-allowed;box-shadow:none}.sg-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);background:var(--surface);position:relative}.sg-scroll--loading{pointer-events:none}.sg-loading-overlay{position:absolute;inset:0;z-index:3;display:flex;align-items:center;justify-content:center;background:#ffffffb8}.sg-table{--sg-cell-h: 2.15rem;width:100%;border-collapse:collapse;font-size:.8rem}.sg-table th,.sg-table td{border:1px solid var(--border);text-align:center;padding:0}.sg-corner,.sg-time{position:sticky;left:0;z-index:2;background:var(--pink-light);color:#9d174d;font-weight:700;font-size:.72rem;white-space:nowrap;padding:.3rem .35rem;min-width:2.6rem}.sg-time{background:var(--surface);color:var(--text)}.sg-cell{height:var(--sg-cell-h)}.sg-cell--none{background:#fafafa}.sg-mark{width:100%;height:var(--sg-cell-h);display:flex;align-items:center;justify-content:center;font-size:.95rem;font-weight:700;border:none;border-radius:0;box-shadow:none;padding:0;min-height:unset;background:transparent;-webkit-tap-highlight-color:transparent}.sg-mark--ok{color:var(--green);cursor:pointer}.sg-mark--ok:hover{background:var(--green-light);box-shadow:none}.sg-mark--selected{background:var(--green);color:#fff}.sg-mark--selected:hover{background:var(--green-hover);color:#fff}.sg-mark--none{color:#ccc}.sg-empty{padding:1.5rem .5rem;color:var(--text-muted);font-size:.9rem;text-align:center}.sg-legend{margin:0;font-size:.8rem;color:var(--text-muted);text-align:center}.sg-legend-ok{color:var(--green);font-weight:700}.sg-legend-none{color:#ccc;font-weight:700}.admin-invite-actions{flex-wrap:wrap}.admin-menu-message-fields{display:flex;flex-direction:column;gap:.75rem}.admin-menu-message-block{display:flex;flex-direction:column;gap:.5rem}.admin-menu-message-body{display:flex;flex-direction:column;gap:.75rem;padding:.25rem 0 .5rem}.admin-menu-message-badge{margin-left:.5rem;font-size:.78rem;font-weight:600;color:var(--text-muted)}.admin-menu-message-preview-wrap{display:flex;flex-direction:column;gap:.5rem}.admin-menu-message-preview{display:block;max-width:100%;max-height:200px;width:auto;border:1px solid var(--border);border-radius:8px;background:var(--surface)}.admin-menu-message-image-actions{display:flex;flex-wrap:wrap;gap:.5rem}.admin-menu-message-upload{display:inline-flex;width:fit-content}.admin-menu-message-file-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.admin-coupon-usage-note{margin:0 0 1rem;font-size:.85rem;color:var(--text-muted)}.menu-audience-seg{width:fit-content;max-width:100%}.set-section-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem .75rem}.set-section-head .staff-note{margin:0;min-width:0}.set-table-head{display:none}.set-rows{display:flex;flex-direction:column;gap:.35rem;margin:0;padding:0;list-style:none}.set-row{min-width:0}.set-row-inner{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name   status" "role   role" "perm   perm";gap:.1rem .5rem;padding:.5rem .65rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);font-size:.8rem;line-height:1.45}.set-cell{min-width:0;overflow-wrap:anywhere;color:var(--text-muted)}.set-cell--name{grid-area:name;display:flex;align-items:center;gap:.4rem;min-width:0;color:var(--text)}.set-cell--role{grid-area:role}.set-cell--perm{grid-area:perm}.set-cell--status{grid-area:status;display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:.35rem}.set-cell-label:after{content:": "}@media(min-width:900px){.app-shell--admin .set-table{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow:hidden}.app-shell--admin .set-cell{grid-area:auto}.app-shell--admin .set-table-head,.app-shell--admin .set-row-inner{display:grid;grid-template-areas:none;grid-template-columns:minmax(9rem,1.6fr) minmax(6rem,1fr) minmax(5rem,.8fr) minmax(8rem,1.2fr);align-items:center;gap:.75rem;padding:.5rem .9rem}.app-shell--admin .set-table-head{border-bottom:1px solid var(--border);background:#faf7fb}.app-shell--admin .set-th{font-size:.72rem;font-weight:700;color:var(--text-muted)}.app-shell--admin .set-rows{gap:0}.app-shell--admin .set-row+.set-row .set-row-inner{border-top:1px solid var(--border)}.app-shell--admin .set-row-inner{border:none;border-radius:0}.app-shell--admin .set-cell-label{display:none}.app-shell--admin .set-cell--status{justify-content:flex-start}}.set-disclosure.admin-card-header{background:var(--surface)}.set-disclosure.admin-card-header:hover{background:var(--pink-light)}.set-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem}.set-search{flex:1 1 14rem;min-width:0;max-width:24rem;height:var(--ctl-h);min-height:var(--ctl-h);font-size:var(--ctl-font)}.set-status-seg{flex:0 0 auto;width:fit-content;max-width:100%}.set-row-inner--coupon{grid-template-areas:"code   status" "detail detail" "period period" "usage  usage"}.set-cell--code{grid-area:code;min-width:0;color:var(--text)}.set-cell--detail{grid-area:detail}.set-cell--period{grid-area:period}.set-cell--usage{grid-area:usage}@media(min-width:900px){.app-shell--admin .set-row-inner--coupon,.app-shell--admin .set-table:has(.set-row-inner--coupon) .set-table-head{grid-template-columns:minmax(8rem,1fr) minmax(12rem,2.4fr) minmax(8rem,1.2fr) minmax(6rem,1fr) 6rem}}.set-menu-category-heading{margin:0 0 .4rem;font-size:.9375rem;font-weight:700;color:var(--text)}.admin-menu-category-group+.admin-menu-category-group{margin-top:.9rem}.set-row-inner--menu{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"order menu     action" "order meta     meta" "order category status";align-items:center}.set-cell--order{grid-area:order;display:flex;gap:2px;align-self:center}.set-cell--menu{grid-area:menu;display:flex;align-items:center;flex-wrap:wrap;gap:.35rem;min-width:0;color:var(--text)}.set-cell--meta{grid-area:meta}.set-menu-desc{display:block;margin-top:.1rem}.set-cell--category{grid-area:category;display:flex;align-items:center;gap:.35rem;min-width:0}.set-cell--action{grid-area:action;display:flex;align-items:center;justify-content:flex-end}@media(min-width:900px){.app-shell--admin .set-row-inner--menu{grid-template-areas:none;grid-template-columns:5rem minmax(9rem,1.5fr) minmax(9rem,1.6fr) 8.5rem 6rem 2.75rem}.app-shell--admin .set-cell--action{justify-content:center}}.set-status{white-space:nowrap;font-weight:500}.set-status--on{color:var(--done-text)}.set-status--off{color:var(--muted-text)}.set-row--stopped .set-cell,.set-row--stopped .admin-menu-name-btn{color:var(--text-muted)}.set-row--stopped .staff-color-chip{opacity:.4}.set-subsection-heading{display:flex;align-items:center;justify-content:space-between;gap:.5rem;width:100%;min-height:0;margin:0 0 .5rem;padding:.35rem .5rem;border:none;border-bottom:1px solid var(--border);background:none;font-family:inherit;font-size:.95rem;font-weight:600;color:var(--text-muted);text-align:left;cursor:pointer;transition:background .15s}.set-subsection-heading:hover{background:var(--pink-light)}.set-disclosure-chevron{display:inline-block;flex-shrink:0;font-size:.9rem;line-height:1;color:var(--text-muted);transition:transform .15s}.admin-section-heading--collapsible[aria-expanded=true] .set-disclosure-chevron,.set-subsection-heading[aria-expanded=true] .set-disclosure-chevron,.set-disclosure[aria-expanded=true] .set-disclosure-chevron{transform:rotate(180deg)}.set-linkrows{display:flex;flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none}.set-linkrow{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;padding:.65rem .75rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.set-linkrow-main{flex:1 1 16rem;min-width:0}.set-linkrow-name{margin:0;font-weight:700;color:var(--text)}.set-linkrow-detail{margin:.15rem 0 0;font-size:.85rem;color:var(--text-muted)}.set-linkrow-url{margin:.3rem 0 0;font-size:.75rem;line-height:1.4;color:var(--text-muted);word-break:break-all}.set-linkrow-actions{flex:0 0 auto;display:flex;flex-wrap:wrap;gap:.5rem}.set-linkrow-alert{flex:1 1 100%;margin:0}.admin-ticket-empty{display:flex;flex-direction:column;align-items:flex-start;gap:.75rem}.set-row-inner--ticket{grid-template-areas:"name   status" "qty    qty" "price  price" "saving saving" "valid  valid"}.set-cell--ticket-name{grid-area:name;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:.15rem}.set-ticket-kind{font-size:.75rem;color:var(--text-muted)}.admin-patient-ticket-history{margin-top:.75rem;display:flex;flex-direction:column;gap:.5rem}.admin-patient-ticket-history-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}.admin-patient-ticket-history-item{display:flex;flex-wrap:wrap;gap:.5rem;font-size:.85rem}.admin-patient-ticket-history-item--muted{color:var(--muted-text)}.admin-patient-ticket-use-highlight,.appt-ticket-usage-remaining{font-weight:600;color:var(--ok-text)}.admin-patient-ticket-use-highlight{margin:.5rem 0 0;font-size:.9rem}.appt-ticket-usage-row .appt-nav-value{display:flex;flex-direction:column;align-items:flex-start;gap:.5rem}.set-cell--ticket-qty{grid-area:qty}.set-cell--ticket-price{grid-area:price}.set-cell--ticket-savings{grid-area:saving}.set-cell--ticket-validity{grid-area:valid}@media(min-width:900px){.app-shell--admin .set-row-inner--ticket,.app-shell--admin .set-table-head--ticket{grid-template-columns:minmax(10rem,1.6fr) minmax(5rem,.7fr) minmax(5rem,.7fr) minmax(8rem,1.2fr) minmax(5rem,.7fr) 6rem}.app-shell--admin .set-row-inner--ticket{grid-template-areas:none}}.admin-prepay-row{display:block;margin-top:.35rem;font-size:.8125rem}.admin-prepay-row--paid{color:var(--done-text);background:var(--done-bg);border:1px solid var(--done-border);border-radius:var(--ctl-radius);padding:.35rem .5rem}.admin-prepay-row--refunded{color:var(--muted-text);background:var(--muted-bg);border:1px solid var(--muted-border);border-radius:var(--ctl-radius);padding:.35rem .5rem}.admin-prepay-row--failed{color:var(--danger-text);background:var(--danger-bg);border:1px solid var(--danger-border);border-radius:var(--ctl-radius);padding:.35rem .5rem}.settings-subsc-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.settings-subsc-row-main{width:100%;display:grid;grid-template-columns:1fr auto auto auto;gap:.75rem;align-items:center;text-align:left;border:1px solid var(--border);border-radius:var(--ctl-radius);padding:.75rem 1rem;background:var(--surface);min-height:var(--ctl-h)}.settings-subsc-name{font-weight:600}.settings-subsc-price,.settings-subsc-count{color:var(--text-muted);font-size:.9rem}.staff-home .staff-tabs .staff-tab{font-size:.82rem;padding:.75rem .25rem}.staff-google-calendar-panel{gap:.75rem}.staff-google-calendar-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.staff-google-calendar-title{margin:0;font-size:1.05rem;font-weight:700}.staff-google-calendar-active{margin:0;padding:.65rem .75rem;border-radius:var(--ctl-radius);background:var(--done-bg);color:var(--done-text);border:1px solid var(--done-border)}.staff-google-calendar-actions{display:flex;flex-wrap:wrap;gap:.5rem}.staff-google-calendar-status--ok{color:var(--done-text)}.staff-google-calendar-status--warn{color:var(--warn-text-body);background:var(--warn-bg);border:1px solid var(--warn-border);border-radius:var(--ctl-radius);padding:.65rem .75rem}.shift-panel{gap:.6rem}.shift-attention-chip{display:inline-flex;align-items:center;padding:.15rem .5rem;border:1px solid var(--warn-border);border-radius:999px;background:var(--warn-bg);color:var(--warn-text);font-size:.72rem;font-weight:600;font-family:inherit;line-height:1.4;cursor:pointer}.shift-attention-chip:hover{background:#fef3c7}.shift-cal-head{justify-content:flex-start;flex-wrap:wrap;padding-inline:4px}.shift-cal-title-row{flex:0 1 auto;justify-content:flex-start;gap:.25rem}.shift-cal-title{min-width:5.5rem;font-size:.95rem;text-align:center}@media(min-width:900px){.app-shell--admin .shift-cal{margin-inline:0}.app-shell--admin .shift-cal-head,.app-shell--admin .shift-cal-scroll{padding-inline:0}.app-shell--admin .shift-cal-inner{max-width:none}.app-shell--admin .shift-cal-weekday{font-size:.78rem}.app-shell--admin .shift-cal-cell{min-height:6.5rem;padding:4px;gap:3px}.app-shell--admin .shift-cal-daynum{font-size:.8rem}.app-shell--admin .shift-cal-entries{gap:2px}.app-shell--admin .shift-cal-entry{flex-direction:row;align-items:baseline;gap:.3rem;padding:2px 5px;font-size:.72rem}.app-shell--admin .shift-cal-entry-name{flex:1;min-width:0}.app-shell--admin .shift-cal-entry-time{flex-shrink:0;font-size:.68rem}}.confirm-modal.shift-modal{display:flex;flex-direction:column;gap:0;padding:0;overflow:hidden;max-height:min(85vh,640px);max-height:min(85dvh,640px)}.shift-modal .admin-modal-header{position:static;flex:none;margin:0;padding:.9rem 1.25rem;border-bottom:1px solid var(--border);background:var(--surface)}.shift-modal-body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:1rem;padding:1rem 1.25rem;overflow-y:auto;overscroll-behavior:contain}.shift-modal-footer{flex:none;display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;margin:0;padding:.85rem 1.25rem;border-top:1px solid var(--border);background:var(--surface)}.shift-modal-footer-actions{display:flex;gap:.5rem;margin-left:auto}@media(max-width:440px){.shift-modal .admin-modal-header{padding:.9rem .85rem}.shift-modal-body{padding:1rem .85rem}.shift-modal-footer{padding:.85rem}}.shift-calendar-notice{margin:0 0 .75rem;padding:.5rem .75rem;border:1px solid var(--warn-border);border-radius:var(--ctl-radius);background:var(--warn-bg);color:var(--warn-text-body);font-size:.8125rem;line-height:1.5}
