@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+Thai:wght@400;500;600;700&family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:wght@500;600&display=swap');
:root{--ink:#343b35;--muted:#92978b;--green:#747c60;--line:#e8e9e1;--paper:#fff;--bg:#f7f8f3;--pink:#f5e5e3;--sage:#e8eee0;--lilac:#ede8f5;--yellow:#faf0d9}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px 'DM Sans','Noto Sans Thai',sans-serif}button,input,select,textarea{font:inherit}button,a,input,select{outline-offset:4px}button{cursor:pointer;border:1px solid var(--line);background:white;color:var(--ink);border-radius:9px;padding:10px 15px;transition:background .15s}button:hover{background:#eef0e8}button.primary{background:var(--green);color:white;border-color:var(--green)}button.primary:hover{background:#616b4e}button.soft{background:#f0f2e9;color:#677251}button.danger{color:#b15e5e}.layout{display:grid;grid-template-columns:222px 1fr;min-height:100vh}.sidebar{background:#fcfcf9;border-right:1px solid var(--line);padding:32px 20px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:9px;margin:0 12px 38px}.flower{font-size:40px;color:#7c866a}.brand b{font:26px 'Playfair Display',serif;letter-spacing:-1px}.brand small{display:block;font-size:9px;letter-spacing:3px;margin-top:4px;color:var(--muted)}.navlabel{font-size:10px;letter-spacing:2px;color:var(--muted);margin:0 14px 12px}.nav{display:flex;flex-direction:column;gap:7px}.nav button{text-align:left;border:0;background:transparent;padding:13px;display:flex;gap:12px;align-items:center;color:#777e72}.nav button.active{background:#e9eddf;color:#525f3e;font-weight:600}.ico{width:20px;display:inline-flex;justify-content:center;font-size:19px}.sidebottom{margin-top:auto}.sidecard{background:#f0f2e8;border-radius:12px;padding:17px;line-height:1.8;margin-bottom:20px}.sidecard small{color:#879078}.profile{display:flex;align-items:center;gap:10px}.avatar{height:37px;width:37px;border-radius:50%;background:#e9e2d5;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:#746954;font-weight:600;overflow:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.profile small{display:block;color:var(--muted);font-size:11px}.main{min-width:0}.topbar{height:80px;padding:0 36px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;background:#fcfcf9}.crumb{font-size:12px;color:#93988d}.topright{display:flex;align-items:center;gap:16px}.demo{font-size:10px;color:#8b826c;background:#f5efdf;border:1px solid #eee5cd;padding:5px 9px;border-radius:5px}.topright select{border:0;background:transparent;color:#747c6c;font-size:12px}.content{padding:31px 36px 28px;max-width:1800px;margin:auto}.heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px}.eyebrow{font-size:10px;letter-spacing:2px;color:#9b9e8e;margin-bottom:7px}.heading h1{font-size:27px;font-weight:500;margin:0 0 6px;letter-spacing:-.5px}.sub{font-size:12px;color:#92978b;margin:0}.heading button{padding:12px 19px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:17px;margin-bottom:25px}.stat{background:white;border:1px solid var(--line);border-radius:12px;padding:19px 20px}.stat .label{font-size:11px;color:#93988c;display:flex;justify-content:space-between}.stat .value{font-size:29px;font-weight:500;margin:6px 0 3px}.stat .hint{font-size:10px;color:#98a087}.stat:nth-child(2){background:#f1f4ec}.stat:nth-child(3){background:#faf0ed}.stat:nth-child(4){background:#f3f0f8}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:22px}.panel{background:white;border:1px solid var(--line);border-radius:12px;overflow:hidden}.toolbar{padding:17px 19px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;justify-content:space-between;flex-wrap:wrap}.toolbar select,.toolbar input{padding:9px 10px;border:1px solid var(--line);border-radius:7px;background:white;font-size:12px;max-width:180px}.row{display:flex;gap:9px;align-items:center}.tabs{background:#f4f5ef;padding:3px;border-radius:7px;display:flex}.tabs button{padding:6px 12px;background:transparent;border:0;border-radius:5px;font-size:11px}.tabs button.active{background:white;box-shadow:0 1px 4px #0000000c}.datebar{padding:16px 19px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:6px}.datebar h3{font-size:14px;font-weight:500;margin:0}.datebar button{padding:5px 10px;font-size:12px}.legend{font-size:9px;display:flex;gap:12px;color:#8e9588;padding:14px 19px;align-items:center}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#c9d5b5;margin-right:5px}.calendar{overflow:auto}.daygrid{min-width:530px}.gridhead{display:grid;grid-template-columns:58px repeat(var(--cols),1fr);border-bottom:1px solid var(--line)}.techhead{padding:16px 6px;text-align:center;border-left:1px solid var(--line);font-size:12px}.techhead .avatar{height:33px;width:33px;font-size:11px;margin-right:6px}.techhead small{display:block;font-size:9px;color:var(--muted);margin-top:5px}.timeline{position:relative;display:grid;grid-template-columns:58px repeat(var(--cols),1fr);height:660px}.times div{height:66px;font-size:10px;color:#a0a69a;text-align:center;padding-top:8px}.lane{position:relative;border-left:1px solid var(--line);background:repeating-linear-gradient(to bottom,transparent 0,transparent 65px,#edf0e8 65px,#edf0e8 66px)}.booking{position:absolute;left:6px;right:6px;border:0;border-left:3px solid #adbb95;background:var(--sage);border-radius:6px;text-align:left;padding:9px 9px;overflow:hidden;font-size:11px}.booking.pink{background:var(--pink);border-color:#d5a49e}.booking.lilac{background:var(--lilac);border-color:#b5a1cc}.booking.yellow{background:var(--yellow);border-color:#d6bc7b}.booking b{display:block;margin:4px 0;font-size:12px;font-weight:600}.booking small{font-size:10px;opacity:.75}.booking .status{font-size:8px;display:inline-block;background:#ffffff90;padding:2px 5px;border-radius:4px;margin-top:6px}.rightcol{display:flex;flex-direction:column;gap:18px}.asidebox{padding:20px}.asidebox h3{font-size:14px;font-weight:500;margin:0 0 4px}.smallnote{font-size:10px;color:var(--muted)}.staffitem{display:flex;align-items:center;gap:10px;margin-top:19px}.staffitem .name{font-size:12px;flex:1}.staffitem small{display:block;font-size:10px;color:var(--muted);margin-top:3px}.tag{background:#edf1e6;color:#7f8d68;font-size:9px;border-radius:4px;padding:4px 6px}.tag.leave{background:#f6eee7;color:#ae906e}.capacity{margin-top:22px;border-top:1px solid var(--line);padding-top:15px}.progress{height:6px;background:#f0f2e9;border-radius:5px;margin:10px 0;overflow:hidden}.progress span{display:block;background:#bcc9a3;height:100%;border-radius:5px}.quote{background:#eceee2;padding:23px;border-radius:12px;position:relative;overflow:hidden}.quote .bigflower{font-size:75px;position:absolute;right:-5px;bottom:-22px;color:#d7ddc4}.quote p{font:italic 21px 'Playfair Display',serif;position:relative;line-height:1.4;margin:9px 0 16px}.quote small{font-size:10px;color:#919982}.footer{font-size:9px;color:#a4aa9b;display:flex;justify-content:space-between;margin-top:22px}.empty{padding:45px 20px;text-align:center;color:#979e90;font-size:13px}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:18px}.entity{padding:23px}.entity h3{margin:13px 0 5px;font-weight:500}.entity p{font-size:12px;color:#929989;line-height:1.8}.entity .actions{border-top:1px solid var(--line);padding-top:14px;margin-top:18px;display:flex;justify-content:space-between}.entity button{font-size:11px;padding:6px 12px}.entity .heroicon{background:#eeeade;border-radius:10px;display:inline-block;padding:12px;font-size:26px}.tablewrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:12px}th,td{text-align:left;padding:15px 18px;border-bottom:1px solid var(--line);white-space:nowrap}th{font-size:11px;background:#fafbf6;color:#8f9687;font-weight:500}td button{font-size:11px;padding:6px 10px}.month{display:grid;grid-template-columns:repeat(7,1fr);min-width:560px}.month .cell{min-height:118px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:8px;font-size:11px}.cell button{display:block;width:100%;font-size:9px;padding:4px;text-align:left;background:var(--sage);margin-top:4px}.cell.today{background:#faf8ef}.weekday{text-align:center;padding:12px;font-size:10px;color:var(--muted)}dialog{padding:0;border:1px solid var(--line);border-radius:17px;width:min(660px,94vw);max-height:90vh;box-shadow:0 24px 90px #3b49332b;color:var(--ink)}dialog::backdrop{background:#29312659;backdrop-filter:blur(3px)}.modalhead{padding:22px 26px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.modalhead h2{font-size:20px;font-weight:500;margin:0}.modalhead button{border:0;padding:4px 8px;font-size:20px}.modalbody{padding:23px 26px}.modalfoot{padding:17px 26px;background:#fafbf7;display:flex;justify-content:flex-end;gap:10px;border-top:1px solid var(--line)}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:17px}.field{display:flex;flex-direction:column;gap:7px;font-size:12px}.field.full{grid-column:1/-1}.field input,.field select,.field textarea{border:1px solid #dfe4d6;padding:10px 11px;border-radius:7px;background:white;color:var(--ink);min-width:0}.field textarea{min-height:70px}.checks{display:flex;gap:9px;flex-wrap:wrap}.check{border:1px solid var(--line);border-radius:7px;padding:9px;font-size:11px;display:flex;gap:6px;align-items:center}.notice{padding:12px 14px;background:#f0f3e9;border-radius:8px;font-size:11px;color:#788567;line-height:1.8;margin-bottom:19px}.error{color:#ac5555;background:#f9eaea;padding:12px;border-radius:7px;margin:12px 0;font-size:12px}.slot{display:flex;justify-content:space-between;align-items:center;text-align:left;width:100%;margin:8px 0;gap:10px}.slot small{display:block;color:var(--muted);margin-top:3px}.slotlist{max-height:300px;overflow:auto}.summary{background:#f2f4ec;border-radius:10px;padding:16px;margin-bottom:20px;line-height:1.9;font-size:12px}.amount{font-size:24px}.week{display:grid;grid-template-columns:repeat(7,minmax(100px,1fr));min-width:750px}.weekcol{padding:10px;border-right:1px solid var(--line);min-height:400px}.weekcol h4{font-size:11px;font-weight:500}.weekcol button{font-size:10px;display:block;width:100%;margin:8px 0;text-align:left;background:var(--sage)}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);padding:13px 24px;background:#56634a;color:white;border-radius:10px;box-shadow:0 4px 20px #0002;display:none;z-index:99;font-size:13px}.mobilebrand{display:none}.filterline{display:flex;gap:10px;margin-bottom:20px;flex-wrap:wrap}.filterline input,.filterline select{border:1px solid var(--line);border-radius:8px;padding:10px;background:white} .muted{color:var(--muted)}@media(min-width:1500px){.workspace{grid-template-columns:minmax(0,1fr) 290px}.content{padding:35px 45px}}@media(max-width:1150px){.workspace{grid-template-columns:1fr}.rightcol{display:grid;grid-template-columns:1fr 1fr}.quote{display:none}.layout{grid-template-columns:190px 1fr}.sidebar{padding:28px 12px}.content{padding:25px}.topbar{padding:0 25px}}@media(max-width:760px){.layout{display:block}.sidebar{height:auto;position:static;padding:16px;border-right:0;border-bottom:1px solid var(--line)}.brand{margin:0 0 14px}.brand b{font-size:22px}.brand small,.navlabel,.sidebottom{display:none}.nav{flex-direction:row;overflow:auto;gap:5px}.nav button{white-space:nowrap;padding:9px;font-size:11px}.nav .ico{display:none}.topbar{height:55px;padding:0 17px}.crumb{display:none}.topright{width:100%;justify-content:space-between}.content{padding:22px 15px}.heading h1{font-size:23px}.heading button{font-size:11px;padding:10px}.stats{grid-template-columns:1fr 1fr;gap:10px}.stat{padding:14px}.stat .value{font-size:25px}.rightcol{grid-template-columns:1fr}.formgrid{grid-template-columns:1fr}.field.full{grid-column:auto}.legend{flex-wrap:wrap}.heading{gap:10px}.footer span:last-child{display:none}.modalbody{padding:20px}.datebar{flex-wrap:wrap}.toolbar{padding:13px}}

.booking{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start}.booking br{display:none}.brand b{white-space:nowrap;font-size:23px}.brand small{font-size:8px;letter-spacing:2px}.brand{margin-left:5px;margin-right:0;gap:7px}.brand .flower{font-size:32px}

/* Actual-service editor */
dialog.visit-dialog{width:min(920px,96vw);max-height:94vh}.visit-dialog .modalhead{padding:23px 30px}.visit-dialog .modalbody{padding:24px 30px}.visit-dialog .notice{font-size:12px}.visit-dialog .modalfoot{position:sticky;bottom:0;z-index:1}.sectiontitle{font-size:16px;font-weight:600;margin:0 0 15px}.service-list{border:1px solid var(--line);border-radius:10px;overflow:hidden}.service-row{display:grid;grid-template-columns:minmax(0,1fr) 105px 115px;align-items:center;gap:15px;padding:17px 18px;border-bottom:1px solid var(--line);font-size:14px;cursor:pointer}.service-row:last-child{border:0}.service-row:has(input:checked){background:#f0f4e9}.service-labels{padding:10px 18px;background:#f8f9f4;font-size:11px;color:#828b78;cursor:default}.service-row>strong,.service-row>span:last-child{text-align:right}.service-name{display:flex;align-items:center;gap:12px;line-height:1.6}.service-name input{width:18px;height:18px;flex-shrink:0;accent-color:var(--green)}.service-icon{color:#8a9479;font-size:23px}.service-time{color:#727c68;font-size:13px}.extra-heading{display:flex;align-items:center;justify-content:space-between;margin:25px 0 15px}.extra-heading h3{margin:0}.extra-row{display:grid;grid-template-columns:minmax(0,1fr) 165px 36px;gap:12px;align-items:end;margin-bottom:13px}.extra-row .remove-extra{height:43px;padding:0;font-size:23px}.visit-bottom{display:grid;grid-template-columns:1fr 1fr;gap:28px;border-top:1px solid var(--line);margin-top:24px;padding-top:24px}.visit-bottom .smallnote{line-height:1.9}.charge-preview{background:#f1f4eb;border-radius:10px;padding:18px}.charge-preview>div,.bill-breakdown>div{display:flex;justify-content:space-between;gap:14px;margin-bottom:10px;font-size:13px}.charge-preview .net-total{border-top:1px solid #dce4d0;padding-top:13px;margin-top:14px;font-size:19px}.charge-preview small{font-size:11px;color:#7e8971}.bill-breakdown{border-bottom:1px solid var(--line);margin-top:18px}.bill-breakdown span:first-child{overflow-wrap:anywhere}.visit-dialog .field input{font-size:14px}#extras:empty::before{content:'ยังไม่มีรายการเพิ่มเติม';display:block;padding:18px;border:1px dashed #dce1d3;border-radius:8px;color:#8c9583;font-size:12px;text-align:center}@media(max-width:600px){.visit-dialog .modalbody,.visit-dialog .modalhead{padding:20px 16px}.service-row{grid-template-columns:minmax(0,1fr) 68px 76px;gap:8px;padding:14px 10px;font-size:12px}.service-name{gap:7px}.service-icon{display:none}.service-time{font-size:11px}.service-labels{font-size:10px}.extra-row{grid-template-columns:minmax(0,1fr) 110px 30px;gap:8px}.visit-bottom{grid-template-columns:1fr;gap:18px}.visit-dialog .modalfoot{padding:15px 16px}.visit-dialog .field{font-size:11px}}

.shop-switch{display:flex;flex-direction:column;gap:7px;margin:0 5px 23px;color:#8b937f;font-size:11px}.shop-switch select{max-width:100%;border:1px solid var(--line);padding:10px;background:white;border-radius:8px;color:var(--ink)}.shop-swatch{width:46px;height:46px;display:block;border-radius:12px}.brand b{font:22px 'DM Sans','Noto Sans Thai',sans-serif;white-space:normal;overflow-wrap:anywhere}.brand{margin-bottom:20px}.sidebar .nav{gap:2px}.sidebar .nav button{padding:11px}.nav button.active,.sidecard{background:var(--store-tint)}.job-history{background:#f6f7f1;border-radius:8px;padding:14px;margin-top:15px;font-size:12px;overflow-wrap:anywhere}.job-history h3{margin:0;font-size:13px}.topright select{max-width:240px}.field input[type=color]{height:45px;padding:4px}.shop-switch select{font-size:12px}@media(max-width:760px){.shop-switch{margin:0 0 12px;max-width:280px}.topright{gap:5px}.topright select{max-width:170px;font-size:10px}.demo{font-size:9px}.brand b{font-size:22px}}
.tech-picker{border:1px solid #dfe4d6;border-radius:7px;background:white}.tech-picker summary{padding:12px;cursor:pointer;overflow-wrap:anywhere}.tech-picker summary:focus-visible{outline:2px solid var(--green);outline-offset:2px}.tech-options{border-top:1px solid var(--line);padding:8px;max-height:210px;overflow:auto}.tech-options label{display:flex;align-items:center;gap:10px;padding:10px;cursor:pointer;border-radius:6px}.tech-options label:has(input:checked){background:var(--sage)}.tech-options input{accent-color:var(--green);width:16px;height:16px}
.mobile-dock{display:none}.more-menu{display:grid;gap:10px}.more-menu button{display:flex;align-items:center;gap:14px;text-align:left;min-height:54px;font-size:14px}.more-menu button span:first-child{font-size:23px;color:var(--green)}.more-menu button span:last-child{margin-left:auto}.more-menu button[aria-current=page]{background:var(--store-tint);border-color:var(--green)}
@media(max-width:760px){
 .sidebar .nav{display:none}.sidebar{padding:16px 18px}.sidebar .brand{margin-bottom:12px}.sidebar .shop-switch{margin-bottom:0}.main{padding-bottom:calc(90px + env(safe-area-inset-bottom,0px))}.topbar{height:auto;min-height:55px;padding:12px 17px}.topright{flex-wrap:wrap;gap:10px}.topright .demo{font-size:9px}.topright select{max-width:100%}
 .mobile-dock{display:flex;position:fixed;z-index:30;bottom:0;left:0;right:0;align-items:stretch;justify-content:space-around;background:rgba(255,255,251,.97);border-top:1px solid var(--line);box-shadow:0 -6px 28px #39432b0d;backdrop-filter:blur(16px);padding:8px max(8px,env(safe-area-inset-right,0px)) calc(8px + env(safe-area-inset-bottom,0px)) max(8px,env(safe-area-inset-left,0px));}
 .mobile-dock button{flex:1;min-width:0;max-width:160px;border:0;border-radius:13px;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:6px 2px;min-height:58px;color:#7a826f}.mobile-dock button>span{font-size:23px;line-height:25px}.mobile-dock button>small{font-size:11px;white-space:nowrap}.mobile-dock button[aria-current=page],.mobile-dock button.active{background:var(--store-tint);color:var(--green);font-weight:600}.mobile-dock button:focus-visible{outline:2px solid var(--green);outline-offset:-2px}
 #toast{bottom:calc(92px + env(safe-area-inset-bottom,0px));max-width:90vw;width:max-content;box-sizing:border-box}
 dialog.mobile-menu-dialog{position:fixed;inset:auto 0 0;margin:0;width:100%;max-width:100%;max-height:85dvh;border-radius:22px 22px 0 0;padding-bottom:env(safe-area-inset-bottom,0px);box-sizing:border-box}.mobile-menu-dialog .modalhead{padding:22px}.mobile-menu-dialog .modalbody{padding:8px 22px 24px}
}
.shop-filter{align-items:end;gap:16px}.shop-filter .muted{font-size:12px;padding-bottom:12px}.shop-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.shop-card-head .tag{font-size:11px;padding:6px 10px}.shop-card .actions{flex-wrap:wrap;gap:10px;justify-content:flex-start}.shop-card .actions button{min-height:40px}button:disabled{opacity:.55;cursor:not-allowed}
.brand.brand-switch{margin:0 0 24px;gap:7px;min-width:0}.brand-choice{flex:1;min-width:0}.brand-switch .flower{flex-shrink:0;font-size:30px}.brand-choice select{display:block;width:100%;min-width:0;min-height:44px;border:0;border-radius:8px;padding:6px 21px 6px 0;background-color:transparent;color:var(--ink);font:500 20px 'DM Sans','Noto Sans Thai',sans-serif;cursor:pointer;text-overflow:ellipsis}.brand-choice select:hover{background-color:var(--store-tint)}.brand-choice select:focus-visible{outline:2px solid var(--green);outline-offset:2px}.brand-choice select option{font-size:14px;color:var(--ink);background:white}.brand-choice small{font-size:8px;letter-spacing:1.5px;margin-top:0}@media(max-width:760px){.sidebar .brand.brand-switch{margin:0;max-width:100%;gap:10px}.brand-choice select{font-size:22px;min-height:44px;padding-left:4px}.brand-switch .flower{font-size:32px}}
dialog.schedule-dialog{width:min(1080px,96vw);max-height:94dvh}.schedule-controls{display:flex;justify-content:space-between;align-items:center;gap:15px;flex-wrap:wrap}.schedule-period{display:flex;align-items:center;gap:12px;margin:20px 0}.schedule-period h3{flex:1;text-align:center;font-size:18px;margin:0}.shift-summary{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:20px}.shift-summary>span{background:#f0f3e9;border-radius:8px;padding:10px 16px;font-size:13px}.shift-summary>span:nth-child(2){background:#f9e9e7}.shift-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.shift-weekday{text-align:center;padding:8px;font-size:12px;color:var(--muted)}.shift-day{min-width:0;min-height:100px;text-align:left;padding:10px 7px;border-radius:8px;display:flex;flex-direction:column;gap:5px;background:#edf3e6;border-color:#dce6d3}.shift-day.leave{background:#fae9e6;border-color:#efd3cd}.shift-day.inactive{background:#f1f1ef;border-color:#ddd}.shift-day.is-today{box-shadow:inset 0 0 0 2px var(--green)}.shift-day span,.shift-day small{font-size:10px;overflow-wrap:anywhere}.shift-day small{color:#7a8175}.shift-year{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.shift-year section{border:1px solid var(--line);border-radius:12px;padding:10px}.shift-year .shift-day{min-height:36px;padding:5px 0;text-align:center;align-items:center;gap:1px}.shift-year .shift-day span{font-size:7px}.shift-year .shift-day b{font-size:11px}.shift-year .shift-weekday{font-size:9px;padding:4px 0}.shift-month-title{width:100%;border:0;font-size:13px;margin-bottom:6px}.shift-detail{background:#fafbf8;border:1px solid var(--line);border-radius:12px;padding:20px}.shift-detail h3{font-size:16px}.shift-job{display:flex;gap:18px;border-top:1px solid var(--line);padding:14px 0;font-size:13px}.shift-job small{display:block;color:var(--muted);margin-top:6px}@media(max-width:760px){.shift-year{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.schedule-period{gap:5px}.schedule-period h3{font-size:15px}.schedule-period button{padding:8px 11px}.shift-day{min-height:90px;padding:7px 3px}.shift-day span,.shift-day small{font-size:9px}.schedule-dialog .modalbody{padding:16px}.shift-year section{padding:6px}.shift-year .shift-grid{gap:3px}.shift-year .shift-day span{display:none}}@media(max-width:440px){.shift-year{grid-template-columns:1fr}.shift-year .shift-day span{display:block;font-size:9px}.shift-year .shift-day{min-height:42px}}
dialog.booking-dialog{width:min(850px,96vw);max-height:94dvh}.booking-services{margin-top:26px;border-top:1px solid var(--line);padding-top:22px}.booking-services h3{font-size:17px;margin:0 0 6px}.booking-services>.smallnote{font-size:12px;margin:0 0 16px}.booking-services .service-row{min-height:76px}.booking-services .service-labels{min-height:auto}.booking-services .service-row:has(input:checked){background:#eaf2e0;box-shadow:inset 4px 0 var(--green)}.booking-services .service-row:focus-within{outline:2px solid var(--green);outline-offset:-2px}.booking-services .service-name{font-size:14px}.booking-estimate{margin-top:14px;background:#f1f4eb;padding:14px;border-radius:8px;font-size:12px;line-height:1.8}.booking-slots .slot{padding:20px;min-height:98px;border-radius:12px}.booking-slots .slot b{font-size:19px}.booking-slots .slot small{font-size:13px}.booking-slots .slot>span:last-child{color:var(--green);font-weight:600;white-space:nowrap}.booking-form [hidden]{display:none!important}.booking-dialog .modalfoot{position:sticky;bottom:0;z-index:2}.booking-dialog .summary{overflow-wrap:anywhere}@media(max-width:600px){.booking-services .service-row{grid-template-columns:minmax(0,1fr) 65px 72px;padding:14px 10px;gap:7px}.booking-services .service-name{font-size:12px}.booking-services .service-name input{width:20px;height:20px}.booking-dialog .modalbody{padding:18px 14px}.booking-dialog .modalfoot{padding:14px;flex-wrap:wrap}.booking-dialog .modalfoot button{min-height:44px;font-size:12px}.booking-slots .slot{padding:15px;gap:8px}.booking-slots .slot b{font-size:17px}}
.booking-icon{width:24px;height:24px;flex-shrink:0;vertical-align:middle}.booking-form #backToFilters{order:-1;margin-right:auto;display:inline-flex;align-items:center;gap:7px;background:#3f4b35;border-color:#3f4b35;color:white;font-size:16px;font-weight:600;min-height:48px}.booking-form #backToFilters:hover{background:#2e3926}.booking-recap{display:grid;grid-template-columns:1fr 1fr;gap:22px;background:#f0f3e9;border:1px solid #e0e6d7;border-radius:14px;padding:24px;margin-bottom:26px}.recap-line{display:flex;gap:12px;min-width:0;align-items:flex-start}.recap-line>.booking-icon{color:#526244;margin-top:2px}.recap-line>div{min-width:0}.recap-line span,.recap-line small{display:block;color:#56614e;font-size:14px;line-height:1.6}.recap-line strong{display:block;font-size:17px;font-weight:600;line-height:1.6;overflow-wrap:anywhere}.recap-line .recap-total{font-size:26px;color:#35452b}.recap-services{grid-column:1/-1;grid-row:2}.assign-slot{border:1px solid #d9dfd1;border-radius:14px;padding:22px;margin-bottom:18px;background:white}.assign-heading{display:flex;gap:12px;align-items:center;margin-bottom:18px}.assign-heading>.booking-icon{color:#526244}.assign-heading h4{font-size:22px;margin:0;line-height:1.5}.assign-heading p{margin:4px 0 0;font-size:16px;color:#56614e}.assign-slot fieldset{border:0;margin:0;padding:0;min-width:0}.assign-slot legend{font-size:16px;font-weight:600;margin-bottom:12px}.assign-slot legend span{font-weight:400;color:#59634f;display:inline-block}.assign-staff{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.assign-staff label{display:flex;align-items:center;gap:10px;min-height:68px;padding:12px;border:1px solid #dce1d5;border-radius:10px;cursor:pointer;font-size:16px;overflow-wrap:anywhere}.assign-staff label:has(input:checked){background:#e9f1df;border-color:#60744f;box-shadow:inset 0 0 0 1px #60744f}.assign-staff label:focus-within{outline:2px solid #526244;outline-offset:2px}.assign-staff input{width:22px;height:22px;accent-color:#435736;flex-shrink:0}.assign-footer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:14px;border-top:1px solid var(--line);padding-top:18px;margin-top:18px}.assign-footer>span{font-size:15px;color:#4b5742}.assign-footer button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:50px;font-size:16px;background:#435736;border-color:#435736}.assignment-error:not(:empty){padding:12px;margin-top:12px;background:#fae9e6;color:#8d3737;border-radius:8px;font-size:15px}.booking-dialog .sectiontitle{font-size:19px}.booking-dialog .empty{font-size:16px;line-height:1.8}.booking-dialog .modalfoot [data-cancel]{min-height:48px;font-size:16px}@media(max-width:600px){.booking-recap{grid-template-columns:1fr;gap:18px;padding:18px}.recap-services{grid-column:auto;grid-row:auto}.recap-line strong{font-size:17px}.recap-line span,.recap-line small{font-size:14px}.assign-slot{padding:16px}.assign-staff{grid-template-columns:1fr}.assign-heading h4{font-size:21px}.assign-footer button{width:100%;font-size:16px}.booking-form #backToFilters{font-size:15px;padding:10px 12px}.booking-dialog .modalfoot{gap:8px}.booking-dialog .modalhead{padding:20px 16px}.booking-dialog .modalhead h2{font-size:20px}.booking-dialog .modalfoot [data-cancel]{font-size:15px}}
dialog.booking-dialog.booking-conditions{width:min(640px,96vw)}#bookingFilters .formgrid{grid-template-columns:minmax(0,300px) 150px;gap:20px 24px;max-width:474px}#bookingFilters .field{font-size:15px;min-width:0}#bookingFilters input,#bookingFilters select{min-height:48px;font-size:16px;width:100%}#bookingFilters input[name=date]{max-width:210px}#bookingFilters input[name=count]{max-width:110px}#bookingFilters input[name=time]{max-width:150px}#bookingFilters .tech-options input{min-height:0;width:20px;height:20px}#bookingFilters .tech-picker summary{font-size:16px;min-height:48px}#bookingFilters .smallnote{font-size:12px;line-height:1.7}#bookingServiceStep{border-top:0;margin-top:0;padding-top:0}#bookingServiceStep h3{font-size:20px}#bookingServiceStep .booking-estimate{font-size:15px}@media(max-width:600px){#bookingFilters .formgrid{grid-template-columns:minmax(0,1fr) 110px;gap:18px 12px;max-width:none}#bookingFilters input[name=date]{max-width:100%;padding:10px 6px}#bookingFilters input[name=time]{max-width:110px;padding:10px 6px}#bookingFilters .field.full{grid-column:1/-1}#bookingFilters select[name=branch]{font-size:15px;padding-left:8px}.booking-conditions .notice{font-size:12px}}
dialog:has(.customer-form){width:min(850px,96vw);max-height:94dvh}.customer-form .field{font-size:15px}.customer-form input,.customer-form textarea{font-size:16px;min-height:48px}.customer-form .modalfoot{position:sticky;bottom:0;z-index:2}.customer-form .modalfoot button{min-height:48px;font-size:16px}.customer-recap{gap:20px}.customer-recap .recap-line{padding-bottom:14px;border-bottom:1px solid #dce4d3}.customer-recap .recap-line:nth-last-child(-n+2){border-bottom:0;padding-bottom:0}@media(max-width:600px){.customer-form .modalbody{padding:18px 14px}.customer-form .modalfoot{padding:14px}.customer-recap .recap-line:nth-last-child(2){border-bottom:1px solid #dce4d3;padding-bottom:14px}}

/* Mobile layout: one scroll region per dialog, readable controls, no clipped fields. */
@media(max-width:760px){
 body:has(dialog[open]){overflow:hidden}
 .layout,.main,.content,.panel,.entity,.field,.brand-choice{min-width:0}
 .content{padding:22px 14px 28px}.heading{flex-wrap:wrap;align-items:flex-start;gap:14px}.heading>div{min-width:0;flex:1 1 180px}.heading h1{font-size:24px;line-height:1.45;overflow-wrap:anywhere}.heading .sub{font-size:14px;line-height:1.7}.heading>button{min-height:46px;font-size:14px;white-space:normal}
 .cards{grid-template-columns:minmax(0,1fr);gap:16px}.entity{padding:20px}.entity h3{font-size:19px;overflow-wrap:anywhere}.entity p{font-size:14px;overflow-wrap:anywhere}.entity .actions{gap:10px;flex-wrap:wrap}.entity button{min-height:44px;font-size:14px}.entity .tag{font-size:12px}.entity .actions button{flex:1 1 auto}
 .filterline{align-items:end;gap:10px}.filterline input,.filterline select,.filterline button{max-width:100%;min-height:46px;font-size:15px;min-width:0}.filterline button{white-space:normal;text-align:left}.filterline input[type=date]{width:185px}.filterline input[type=month]{width:190px}
 .toolbar{display:flex;flex-wrap:wrap;gap:12px}.toolbar .row{display:flex;flex-wrap:wrap;gap:8px;min-width:0;width:100%}.toolbar select{min-width:0;max-width:100%;font-size:14px;min-height:44px}.tabs{max-width:100%;display:flex;flex-wrap:wrap}.tabs button{min-height:42px;font-size:14px}.datebar{gap:12px;padding:14px}.datebar .row{flex-wrap:wrap;gap:8px;min-width:0;max-width:100%}.datebar button{min-width:40px;min-height:40px}.datebar h3{font-size:16px}.datebar input[type=date]{max-width:170px!important;width:160px;font-size:14px!important;min-height:44px}.calendar{max-width:100%;overflow:auto;overscroll-behavior-x:contain}.legend{font-size:12px;line-height:1.7;gap:10px}.rightcol{min-width:0}.stat{min-width:0}.stat .label{font-size:12px}.stat .value{font-size:25px;overflow-wrap:anywhere}.stat .hint{font-size:12px;line-height:1.6}.smallnote{line-height:1.7}
 dialog[open],dialog[open].booking-dialog,dialog[open].booking-conditions,dialog[open].visit-dialog,dialog[open].schedule-dialog,dialog[open]:has(.customer-form){display:flex;flex-direction:column;width:calc(100vw - 16px);max-width:calc(100vw - 16px);max-height:calc(100dvh - 20px);padding:0;overflow:hidden;border-radius:18px}
 dialog>.modalhead{flex:0 0 auto;min-width:0;gap:10px;padding:16px;border-bottom:1px solid var(--line);background:#fff}.modalhead h2{min-width:0;flex:1;font-size:20px!important;line-height:1.45;overflow-wrap:anywhere}.modalhead button{flex:0 0 44px;width:44px;height:44px;align-self:flex-start;font-size:26px}
 dialog>form{display:flex;flex-direction:column;min-height:0;overflow:hidden;flex:1 1 auto}dialog>.modalbody,dialog>form>.modalbody{overflow-y:auto;overflow-x:hidden;min-height:0;flex:1 1 auto;padding:18px 16px!important;overscroll-behavior:contain;scrollbar-gutter:stable}
 dialog .modalfoot{position:static!important;flex:0 0 auto;padding:12px!important;gap:8px;flex-wrap:wrap;border-top:1px solid var(--line)}dialog .modalfoot button{min-height:46px;font-size:14px!important;white-space:normal;line-height:1.5;padding:10px 12px;max-width:100%}dialog .modalfoot .primary{flex:1 1 140px}.booking-form #backToFilters{font-size:14px;min-height:46px;padding:10px}.booking-form #backToFilters .booking-icon{width:20px;height:20px}
 dialog .formgrid{grid-template-columns:minmax(0,1fr);gap:18px}dialog .field.full{grid-column:1/-1}dialog .field{min-width:0;font-size:14px;gap:8px}dialog .field input,dialog .field select,dialog .field textarea{font-size:16px;min-height:46px;width:100%;max-width:100%;min-width:0;box-sizing:border-box}dialog input[type=date],dialog input[type=time],dialog input[type=month]{appearance:none;-webkit-appearance:none;min-width:0;max-width:100%}dialog .field input[type=checkbox]{width:20px;min-height:20px;height:20px;flex-shrink:0}dialog .notice{font-size:13px;line-height:1.7;padding:13px}dialog .smallnote{font-size:12px;color:#687260}dialog .check{font-size:14px;min-height:46px;max-width:100%;overflow-wrap:anywhere}dialog .check input{width:20px;height:20px;flex-shrink:0}dialog .checks{gap:10px}
 #bookingFilters .formgrid{grid-template-columns:minmax(0,1fr) 112px;gap:18px 12px;max-width:100%}#bookingFilters .field.full{grid-column:1/-1}#bookingFilters input[name=date],#bookingFilters input[name=count],#bookingFilters input[name=time]{max-width:100%;width:100%}#bookingFilters .tech-options input{width:20px;height:20px;min-height:20px}.tech-picker summary{font-size:16px;line-height:1.6}.tech-options label{min-height:46px;font-size:15px}
 .booking-services .service-row,.visit-dialog .service-row{grid-template-columns:minmax(0,1fr) 66px 70px;padding:14px 9px;gap:7px}.service-name{min-width:0;overflow-wrap:anywhere}.service-name input{width:22px!important;height:22px!important;flex-shrink:0}.service-icon{display:none}.service-name,.booking-services .service-name{font-size:14px}.service-time{font-size:12px}.service-row strong{font-size:14px}.service-labels{font-size:11px}.service-list{max-width:100%}.booking-estimate{font-size:14px!important}
 .extra-heading{gap:10px;flex-wrap:wrap}.extra-heading button{min-height:44px;font-size:14px}.extra-row{grid-template-columns:minmax(0,1fr) 90px 34px;gap:8px}.extra-row .remove-extra{min-height:46px}.visit-bottom{grid-template-columns:minmax(0,1fr);gap:18px}.charge-preview .net-total{font-size:20px}
 .schedule-controls{align-items:stretch}.schedule-controls .field{max-width:190px}.schedule-period{flex-wrap:wrap;gap:8px}.schedule-period h3{font-size:16px;min-width:100px}.shift-grid{min-width:0}.shift-day{min-height:68px}.shift-day small{display:none}.shift-day span{font-size:10px}.shift-day b{font-size:14px}.shift-detail{padding:14px}.shift-job{flex-direction:column;gap:6px}.shift-summary{gap:8px}.shift-summary>span{font-size:13px;padding:10px}.shift-year{grid-template-columns:1fr}.shift-year .shift-day{min-height:40px}.shift-year .shift-day span{display:block}.shift-year .shift-day b{font-size:12px}
 .tablewrap:has(table.mobile-records){overflow:visible;border:0;background:transparent}.mobile-records,.mobile-records tbody{display:block;width:100%}.mobile-records thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.mobile-records tr{display:block;padding:15px;background:white;border:1px solid var(--line);border-radius:12px;margin-bottom:14px}.mobile-records td{display:block;width:100%;padding:8px 0;white-space:normal;overflow-wrap:anywhere;border:0;font-size:15px}.mobile-records td[data-label]:before{content:attr(data-label);display:block;font-size:12px;color:#687260;margin-bottom:4px}.mobile-records td[data-label='']:before{display:none}.mobile-records td button{min-height:44px;font-size:14px}.mobile-records td .tag{font-size:12px}.mobile-records td.empty{padding:20px 0}.mobile-dock button small{font-size:11px}.mobile-dock button{min-height:58px}
}
@media(max-width:360px){
 #bookingFilters .formgrid{grid-template-columns:minmax(0,1fr)}#bookingFilters input[name=count]{max-width:120px}#bookingFilters input[name=time]{max-width:160px}#bookingFilters input[name=date]{max-width:220px}#bookingFilters .field.full{grid-column:auto}
 .booking-services .service-row,.visit-dialog .service-row{grid-template-columns:minmax(0,1fr) auto;gap:8px 12px}.service-row .service-name{grid-column:1/-1;font-size:15px}.service-row .service-time{padding-left:34px}.service-labels{display:none}.service-row strong{font-size:15px}.extra-row{grid-template-columns:minmax(0,1fr) 36px}.extra-row .field:first-child{grid-column:1/-1}.extra-row .field:nth-child(2){grid-column:1}.booking-form .modalfoot:has(#backToFilters:not([hidden])) #findSlots:not([hidden]){flex-basis:100%}.modalhead h2{font-size:18px!important}.heading{display:block}.heading>button{margin-top:12px}.topright{align-items:flex-start}.topright select{max-width:100%;min-height:36px}.brand-choice select{font-size:20px}.stats{gap:8px}.stat{padding:12px}.stat .value{font-size:23px}.mobile-dock{padding-left:4px;padding-right:4px}.mobile-dock button small{font-size:10px}.mobile-dock button>span{font-size:21px}.schedule-period #scheduleToday{margin-left:auto}
}

/* Desktop filters fill the modal; mobile retains its compact layout. */
@media (min-width:761px){
 #bookingFilters .formgrid{max-width:none;width:100%;grid-template-columns:minmax(0,1.6fr) minmax(100px,.7fr) minmax(170px,1fr) minmax(130px,.8fr);gap:20px 16px;align-items:start}
 #bookingFilters input[name=date],#bookingFilters input[name=count],#bookingFilters input[name=time]{max-width:none;width:100%}
 #bookingFilters .field.full{grid-column:1/-1}
 #bookingFilters .tech-picker{width:100%}
}
/* Service-first booking with inline availability filters */
#bookingServiceStep>.field{max-width:160px;margin-bottom:18px}.booking-live-filters #bookingFilters{padding-bottom:20px;border-bottom:1px solid #e4e7dc}.live-booking-summary{display:flex;gap:12px;align-items:flex-start;background:#f1f3e9;border-radius:14px;padding:16px;margin:20px 0}.live-booking-summary svg{width:24px;height:24px;flex-shrink:0}.live-booking-summary strong,.live-booking-summary span{display:block}.live-booking-summary span{margin-top:6px;font-size:15px}.booking-live-filters .sectiontitle{font-size:18px}

/* Keep booking actions with their task: search by filters, continue in footer. */
.booking-search-actions{display:flex;align-items:flex-start;padding-top:29px}.booking-search-actions button{min-height:48px;white-space:nowrap}.booking-live-filters .modalbody>.live-booking-summary{margin:0 0 24px}.live-booking-summary[hidden]{display:none}#bookingNext{display:inline-flex;align-items:center;justify-content:center;gap:8px}#bookingNext[hidden]{display:none}#bookingNext svg{width:20px;height:20px}.assign-slot.selected-slot{border-color:var(--green);box-shadow:0 0 0 1px var(--green)}
@media(min-width:761px){#bookingFilters .field.full{grid-column:1/4}#bookingFilters .booking-search-actions{grid-column:4;grid-row:2}.booking-search-actions button{width:100%}}
@media(max-width:760px){#bookingFilters .booking-search-actions{grid-column:1/-1;padding-top:0;justify-content:flex-end}.booking-search-actions button{width:100%;min-height:46px}.booking-live-filters #bookingNext{flex:1 1 150px}}

/* Report records stay in one readable row at every width. */
.report-table{width:100%;min-width:390px;table-layout:fixed}.report-table th,.report-table td{padding:15px 12px;white-space:nowrap}.report-table th:first-child{width:25%}.report-table th:nth-child(2){width:19%}.report-table th:nth-child(3),.report-table th:nth-child(4){width:28%}.report-table th:not(:first-child),.report-table td:not(:first-child){text-align:right}.report-table td{font-size:15px}.report-tablewrap{overflow-x:auto}.report-filters select{min-width:180px}.report-filters #backup{margin-left:auto}
@media(max-width:760px){.report-table th{font-size:12px}.report-table th,.report-table td{padding:15px 10px}.report-filters{display:flex;align-items:center}.report-filters input,.report-filters select{flex:1 1 160px;min-width:0}.report-filters #backup{margin-left:0}}

/* Filters search automatically; separate results from the filter divider. */
.booking-live-filters #bookingFilters .field.full{grid-column:1/-1}.booking-live-filters #findSlots[hidden]{display:none}.booking-live-filters #searchresults{padding-top:20px}.booking-live-filters #searchresults>.sectiontitle{margin-top:0}
/* Compact service and staff management */
.service-profile{display:flex;align-items:flex-start;gap:20px}.service-profile .heroicon{width:78px;height:78px;flex:0 0 78px;display:grid;place-items:center;overflow:hidden}.service-profile img{width:100%;height:100%;object-fit:cover}.service-profile h3{margin:0 0 8px}.service-profile p{margin:4px 0}.service-entity .actions{align-items:center;gap:10px;flex-wrap:wrap}.service-entity .actions button{flex:0 0 auto}.status-switch{display:inline-flex;gap:10px;align-items:center;cursor:pointer}.status-switch input{position:absolute;opacity:0;width:1px!important;height:1px!important}.switch-track{display:inline-block;width:38px;height:22px;border-radius:20px;background:#b7bcb0;position:relative;flex-shrink:0}.switch-track:after{content:'';width:16px;height:16px;position:absolute;top:3px;left:3px;border-radius:50%;background:white;transition:transform .15s}.status-switch[aria-checked=true] .switch-track,.status-switch input:checked+.switch-track{background:var(--green)}.status-switch[aria-checked=true] .switch-track:after,.status-switch input:checked+.switch-track:after{transform:translateX(16px)}.status-switch:focus-within{outline:2px solid var(--green);outline-offset:4px}.staff-profile{display:grid;grid-template-columns:minmax(100px,.7fr) minmax(0,1.3fr);gap:20px;align-items:start}.staff-details{margin:0;overflow-wrap:anywhere}.attendance-actions{display:flex;gap:10px;margin-top:12px}.attendance-actions button{flex:1;min-height:44px}.attendance-actions button[aria-pressed=true]{background:var(--sage);border-color:var(--green);color:#3f4b35}.attendance-actions button[data-leave][aria-pressed=true]{background:var(--pink);border-color:#c49a94}.staff-active{display:flex;flex-direction:row;justify-content:space-between;align-items:center;margin-bottom:24px}.staff-edit-profile{display:grid;grid-template-columns:120px minmax(0,1fr);gap:24px;margin-bottom:20px}.staff-upload{position:relative;display:flex;flex-direction:column;align-items:center;gap:10px;cursor:pointer;font-size:12px}.staff-upload input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.photo-circle{display:grid;place-items:center;width:100px;height:100px;border-radius:50%;background:#f0f2e9;border:1px dashed #a8b096;font-size:28px;overflow:hidden}.photo-circle img{width:100%;height:100%;object-fit:cover}.staff-upload:focus-within .photo-circle{outline:2px solid var(--green)}.staff-edit-identity{display:grid;gap:16px}.staff-name-age{display:grid;grid-template-columns:minmax(0,1fr) 90px;gap:16px}.staff-editor .formgrid{grid-template-columns:repeat(2,minmax(0,1fr))}.staff-editor .field{min-width:0}.staff-editor .field.full{grid-column:1/-1}.staff-service-options .service-row{font-size:14px}.schedule-controls .field{flex-direction:row;align-items:center;white-space:nowrap;gap:12px}.schedule-controls .field input{width:auto;min-width:0}.visit-bottom .discount-field{display:grid;grid-template-columns:minmax(0,1fr) 150px;align-items:center;gap:12px}.discount-field input{text-align:right;font-variant-numeric:tabular-nums}.discount-field .smallnote{grid-column:1/-1}.visit-bottom:has(.discount-field){grid-template-columns:1fr}
@media(max-width:760px){.service-entity .actions button{flex:0 1 auto}.staff-editor .formgrid{grid-template-columns:repeat(2,minmax(0,1fr))}.staff-editor .staff-active{flex-direction:row}.staff-editor .staff-name-age{grid-template-columns:minmax(0,1fr) 90px}.schedule-controls .field input{width:160px}.visit-bottom .discount-field{grid-template-columns:minmax(0,1fr) 140px}}
@media(max-width:440px){.staff-edit-profile{grid-template-columns:76px minmax(0,1fr);gap:14px}.photo-circle{width:70px;height:70px}.staff-editor .staff-name-age{grid-template-columns:minmax(0,1fr) 70px;gap:10px}.staff-editor .formgrid{grid-template-columns:1fr}.staff-profile{grid-template-columns:90px minmax(0,1fr);gap:12px}.service-profile{gap:14px}.service-profile .heroicon{width:60px;height:60px;flex-basis:60px}.visit-bottom .discount-field{grid-template-columns:minmax(0,1fr) 110px}.schedule-controls .field{width:100%;justify-content:space-between}}
.schedule-controls .field{max-width:none}.schedule-controls .field input{width:180px;flex:0 0 180px}

/* Required customer fields and mobile visit headers. */
.required-mark{color:#c23838;font-weight:700}.visit-time strong,.visit-time small{display:block}.visit-time small{color:#687260;margin-top:5px}.visit-manage{background:#414e35;color:white;border-color:#414e35}.visit-manage:hover{background:#33412a}
@media(max-width:760px){
 .visit-records.mobile-records tbody tr:not(:has(td[colspan])){display:grid;grid-template-columns:minmax(0,1fr) 110px;grid-template-areas:"time status" "time action" "customer customer" "staff staff" "services services" "amount amount";gap:8px 14px;padding:18px}
 .visit-records.mobile-records td{min-width:0;padding:6px 0}
 .visit-records.mobile-records td:nth-child(1){grid-area:customer;border-top:1px solid var(--line);margin-top:8px;padding-top:14px}
 .visit-records.mobile-records td:nth-child(2){grid-area:time;background:#f0f3e9;border-radius:10px;padding:12px;align-self:stretch}
 .visit-records.mobile-records td:nth-child(3){grid-area:staff}
 .visit-records.mobile-records td:nth-child(4){grid-area:services}
 .visit-records.mobile-records td:nth-child(5){grid-area:amount;font-size:18px;font-weight:600}
 .visit-records.mobile-records td:nth-child(6){grid-area:status;text-align:right;padding:0;align-self:center}
 .visit-records.mobile-records td:nth-child(7){grid-area:action;text-align:right;padding:0}
 .visit-records.mobile-records td:nth-child(2):before,.visit-records.mobile-records td:nth-child(6):before,.visit-records.mobile-records td:nth-child(7):before{display:none}
 .visit-records .visit-time strong{font-size:21px;line-height:1.4;white-space:nowrap}.visit-records .visit-time small{font-size:14px;line-height:1.6}.visit-records .visit-manage{min-height:44px;width:100%;font-weight:600}
}
@media(max-width:360px){.visit-records.mobile-records tbody tr:not(:has(td[colspan])){grid-template-columns:minmax(0,1fr) 88px;gap:8px;padding:12px}.visit-records .visit-time strong{font-size:16px}.visit-records.mobile-records td:nth-child(2){padding:9px}.visit-records .visit-time small{font-size:12px}}

/* Production: sign-in, installer and boot screens share the studio look. */
.auth-page{min-height:100vh;display:grid;place-items:center;padding:32px 16px;background:radial-gradient(circle at 15% 10%,#eef1e6 0,transparent 45%),radial-gradient(circle at 90% 90%,#f6ebe8 0,transparent 40%),var(--bg)}
.auth-card{width:min(420px,100%);padding:34px 32px;box-shadow:0 24px 70px #3b49331a}.install-card{width:min(720px,100%)}
.auth-brand{display:flex;align-items:center;gap:10px;margin-bottom:26px}.auth-brand .flower{font-size:36px;color:var(--green)}.auth-brand b{display:block;font:500 22px 'DM Sans','Noto Sans Thai',sans-serif}.auth-brand small{display:block;font-size:8px;letter-spacing:2px;color:var(--muted);margin-top:3px}
.auth-card h1{font-size:25px;font-weight:500;margin:0 0 6px}.auth-card .sub{margin-bottom:22px}.auth-card form{display:grid;gap:16px}.auth-card .field input{min-height:46px;font-size:15px}
.auth-submit{min-height:48px;font-size:15px;margin-top:6px}.auth-foot{margin:20px 0 0;text-align:center;line-height:1.7}
.auth-button{display:inline-block;margin-top:6px;background:var(--green);color:#fff;text-decoration:none;padding:13px 20px;border-radius:9px}
.install-card .sectiontitle{margin:12px 0 0;padding-top:18px;border-top:1px solid var(--line)}.install-card .check.full{grid-column:1/-1;line-height:1.6}
.install-checks{list-style:none;padding:0;margin:0 0 6px;display:grid;gap:6px;font-size:12px}.install-checks li{display:flex;gap:8px;align-items:baseline;padding:8px 12px;border-radius:7px;background:#f0f3e9;color:#55613f}.install-checks li.bad{background:#f9eaea;color:#ac5555}.install-checks small{color:inherit;opacity:.8}
.boot-loading{min-height:100vh;display:flex;flex-direction:column;gap:14px;align-items:center;justify-content:center;color:var(--muted);font-size:13px}.boot-loading .flower{font-size:44px;color:var(--green);animation:petal-spin 2.4s linear infinite}.boot-loading button{animation:none}
@keyframes petal-spin{to{transform:rotate(360deg)}}
@media(max-width:600px){.auth-card{padding:26px 20px}.install-card .formgrid{grid-template-columns:1fr}}
