:root{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC",sans-serif;color:#152e44;background:#f5f7fa;font-size:16px;--blue:#1666b0;--muted:#65778a;--orange:#ed9a2a;--line:#dde5ed}*{box-sizing:border-box}body{margin:0;padding-bottom:90px}a{color:var(--blue);text-decoration:none}button,input,textarea,select{font:inherit}button,a.button{cursor:pointer;border:1px solid var(--line);border-radius:12px;padding:12px 17px;background:#fff;color:#17354c;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:46px}button.primary,a.primary{background:var(--blue);color:white;border-color:var(--blue)}button:disabled{opacity:.55;cursor:wait}header{height:78px;background:white;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:10px max(20px,calc((100vw - 1080px)/2));gap:20px}.brand{display:flex;align-items:center;gap:8px;color:#155a94;font-size:24px;font-weight:800}.brand img{width:44px;height:44px;object-fit:contain}.brand small{display:block;font-size:10px;letter-spacing:3px}.header-actions{display:flex;gap:16px;align-items:center}.header-actions button{font-size:14px;padding:8px 12px;min-height:38px}main{max-width:1080px;margin:32px auto;padding:0 22px;min-height:60vh}h1{font-size:clamp(28px,4vw,44px);letter-spacing:-1px;margin:8px 0 18px;line-height:1.2}h2{font-size:23px;margin:0 0 16px}h3{font-size:19px;margin:0 0 8px}p{line-height:1.7}small,.muted{color:var(--muted)}.eyebrow{color:var(--blue);font-size:12px;letter-spacing:2px;font-weight:800}.hero{padding:36px;background:linear-gradient(120deg,#e5f2ff,#fff8e8);border:1px solid #d7e7f4;border-radius:24px;position:relative;overflow:hidden}.hero p{max-width:600px}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:24px;margin:18px 0}.grid>.card{margin:0}.entry{padding:28px;text-align:left;display:block;border-radius:18px;box-shadow:0 5px 20px #1e527b07}.entry .symbol{display:block;color:var(--blue);font-size:32px;margin-bottom:22px}.entry strong{display:block;font-size:24px}.entry span{display:block;font-weight:400;color:var(--muted);margin-top:10px}.actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:14px}.subtle{background:#eef4f9!important}.badge{display:inline-block;background:#eaf4fc;color:#28628b;border-radius:30px;padding:5px 10px;font-size:12px;margin:3px 4px 3px 0}.badge.warning{background:#fff2d9;color:#926018}.badge.red{background:#fff0ee;color:#af403b}.price{font-size:27px;font-weight:800;color:#153a5a;white-space:nowrap}.fee-banner{background:#eaf5ef;border:1px solid #cce3d5;border-radius:18px;padding:22px;margin:20px 0}.fee-banner .price{color:#246340}.provider-head{display:flex;gap:14px;align-items:center}.avatar{width:64px;height:64px;border-radius:16px;object-fit:cover;background:#e7f1fa;display:grid;place-items:center;color:#2170ad;font-size:25px;flex-shrink:0}.provider-card{display:flex;flex-direction:column;gap:12px}.provider-card .actions{margin-top:auto}.provider-card p{margin:0;font-size:14px}.stars{color:#b7790c;font-weight:700}.form{max-width:700px}.form label{display:grid;gap:7px;margin:16px 0;font-size:14px;font-weight:600}.form input:not([type=checkbox]),.form textarea,.form select{width:100%;padding:13px;border:1px solid #cbd8e4;border-radius:10px;background:#fff;color:#16344a;min-height:46px}.form textarea{min-height:130px;resize:vertical}.form .check{display:flex;align-items:flex-start;gap:10px;line-height:1.7}.check input{margin-top:6px;flex-shrink:0}fieldset{border:1px solid var(--line);border-radius:12px;padding:16px;margin:16px 0}input:focus,textarea:focus,select:focus,button:focus-visible,a:focus-visible{outline:3px solid #add4f8;outline-offset:2px}.steps{display:flex;gap:8px;margin:20px 0}.steps span{padding:9px 14px;border-radius:30px;font-size:13px;background:#e9eef3;color:#697c8c}.steps .active{background:#d9ebff;color:#125c99}.error{background:#fff0ee;border-left:4px solid #bf5349;padding:14px;border-radius:8px;margin:15px 0}.notice{background:#fff6e6;border:1px solid #efdfbd;border-radius:10px;padding:13px 20px;font-size:14px;line-height:1.7}.empty{text-align:center;padding:36px;color:var(--muted)}.row{padding:20px 0;border-bottom:1px solid var(--line)}.row:last-child{border:0}.row h3{font-size:17px}.split{display:flex;justify-content:space-between;align-items:center;gap:15px;flex-wrap:wrap}.conversation{width:100%;display:flex;justify-content:flex-start;text-align:left;margin:10px 0;padding:20px}.conversation>span:first-child{text-align:left;align-items:flex-start}.unread{border-radius:20px;background:#d93645;color:white;font-size:12px;padding:3px 7px;min-width:23px;text-align:center}.chat-log{height:48vh;min-height:260px;overflow:auto;background:#edf3f9;border-radius:15px;padding:18px;margin:16px 0;display:flex;flex-direction:column;gap:12px}.bubble{align-self:flex-start;background:#fff;border-radius:14px;padding:12px 15px;max-width:82%;white-space:pre-wrap;overflow-wrap:anywhere}.bubble.mine{align-self:flex-end;background:#d7ebfc}.bubble small{font-size:10px;display:block;margin-top:6px}.bubble img{max-width:250px;max-height:260px;width:100%;border-radius:8px}.bubble audio{max-width:100%;width:240px}.composer textarea{min-height:80px;width:100%;padding:14px;border-radius:12px;border:1px solid var(--line)}.files{display:flex;gap:10px;flex-wrap:wrap}.files img,.gallery img{height:140px;max-width:100%;object-fit:cover;border-radius:10px}.gallery{display:flex;gap:14px;flex-wrap:wrap}.terms p{font-size:15px;line-height:1.9}.terms h3{margin-top:24px}nav{position:fixed;bottom:0;left:0;right:0;z-index:20;background:#fff;border-top:1px solid var(--line);display:flex;justify-content:center;gap:12px;padding:9px 12px calc(9px + env(safe-area-inset-bottom));box-shadow:0 -5px 20px #1c354407}nav a{padding:9px 20px;font-size:14px;border-radius:10px;color:var(--muted)}nav a.active{color:#1767ad;background:#edf5ff}footer{font-size:12px;color:var(--muted);max-width:1080px;margin:30px auto;padding:20px 22px}#pilot{background:#fff8e9;text-align:center;color:#80612c;padding:8px;font-size:12px}#toast{position:fixed;bottom:100px;left:50%;transform:translateX(-50%);background:#18374e;color:#fff;padding:14px 20px;border-radius:14px;z-index:50;max-width:90vw}.loading{padding:70px;text-align:center;color:var(--muted)}.admin-table{width:100%;border-collapse:collapse;font-size:13px}.admin-table td,.admin-table th{text-align:left;border-bottom:1px solid var(--line);padding:12px}.table-scroll{overflow:auto}@media(max-width:680px){header{height:68px;padding:8px 18px}.brand{font-size:20px}.brand img{width:35px;height:35px}main{margin:20px auto;padding:0 16px}.hero{padding:25px}.grid,.grid.three{grid-template-columns:1fr}.hero .grid{grid-template-columns:1fr 1fr;gap:10px}.entry{padding:18px}.entry strong{font-size:19px}.entry span{font-size:12px}.entry .symbol{margin-bottom:14px}.card{padding:19px}.header-actions{gap:10px;font-size:13px}nav{gap:0;justify-content:space-around}nav a{padding:10px 8px;font-size:12px}.steps span{padding:8px 10px;font-size:12px}.bubble{max-width:90%}}
:is(.hero a.entry){display:block}
.steps{flex-wrap:wrap}.otp-row{display:flex;align-items:center;gap:12px;margin-top:14px}.otp-row #code-status{font-size:12px;flex:1}.onboarding{border-color:#bed8f0;background:#f3f8ff}
@media(max-width:680px){#app .approve{display:inline-flex;width:auto;margin:2px 0 2px 10px;padding:8px 11px;min-height:38px;font-size:12px;white-space:nowrap;vertical-align:middle}#app .row>b{display:inline;line-height:1.5}}
#app .approve[data-membership-approved="1"]{color:#a52f2f;background:#fff2f1;border-color:#e5aaa6;font-weight:700}#app .approve[data-membership-approved="1"]:hover{background:#ffe5e2;border-color:#cf7770}
            
/* Premium Apple-inspired visual system: calm surfaces, clear hierarchy, restrained color. */
:root{font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text","PingFang SC","Helvetica Neue",sans-serif;color:#1d1d1f;background:#f5f5f7;font-size:16px;--blue:#0071e3;--blue-dark:#0066cc;--muted:#6e6e73;--orange:#ff9f0a;--line:#d2d2d7;--surface:#fff;--soft:#f2f2f7;--shadow:0 12px 35px rgba(0,0,0,.06)}
body{background:linear-gradient(180deg,#fbfbfd 0,#f5f5f7 70%);color:#1d1d1f;padding-bottom:100px;-webkit-font-smoothing:antialiased}
a{color:var(--blue);transition:color .2s ease}a:hover{color:var(--blue-dark)}
header{height:72px;position:sticky;top:0;z-index:30;background:rgba(255,255,255,.82);backdrop-filter:saturate(180%) blur(18px);-webkit-backdrop-filter:saturate(180%) blur(18px);border-bottom:1px solid rgba(210,210,215,.65);padding:10px max(24px,calc((100vw - 1120px)/2));box-shadow:0 1px 14px rgba(0,0,0,.03)}
.brand{color:#1d1d1f;font-size:21px;letter-spacing:-.5px;gap:9px}.brand:hover{color:#1d1d1f}.brand img{width:40px;height:40px;border-radius:11px}.brand small{color:#6e6e73;font-size:9px;letter-spacing:2.6px;margin-top:1px}
.header-actions{gap:14px}.header-actions button{color:var(--blue);background:transparent;border:0;min-height:34px;padding:6px 10px;font-size:14px}.header-actions a{font-size:14px;font-weight:600}
main{max-width:1120px;margin:42px auto;padding:0 28px;min-height:64vh}h1{font-size:clamp(32px,4.5vw,52px);font-weight:700;letter-spacing:-1.8px;line-height:1.12;margin:10px 0 22px}h2{font-size:24px;letter-spacing:-.5px;font-weight:650;margin:0 0 18px}h3{font-size:19px;letter-spacing:-.25px;font-weight:650}p{line-height:1.65}small,.muted{color:var(--muted)}.eyebrow{color:var(--blue);font-size:12px;letter-spacing:2.5px;font-weight:700}
button,a.button{border:1px solid rgba(210,210,215,.8);border-radius:12px;padding:12px 18px;background:rgba(255,255,255,.95);color:#1d1d1f;font-weight:600;min-height:44px;box-shadow:0 1px 2px rgba(0,0,0,.03);transition:transform .18s ease,box-shadow .18s ease,background .18s ease,border-color .18s ease}button:hover,a.button:hover{transform:translateY(-1px);box-shadow:0 6px 15px rgba(0,0,0,.08);color:#1d1d1f}button.primary,a.primary{background:var(--blue);border-color:var(--blue);color:#fff;box-shadow:0 5px 14px rgba(0,113,227,.2)}button.primary:hover,a.primary:hover{background:var(--blue-dark);border-color:var(--blue-dark);color:#fff}.subtle{background:#f2f2f7!important;border-color:transparent}
.hero{padding:52px 46px;background:linear-gradient(135deg,#fff 0%,#f4f8ff 56%,#eef5ff 100%);border:1px solid rgba(210,210,215,.7);border-radius:28px;box-shadow:var(--shadow);overflow:hidden}.hero p{max-width:650px;color:#6e6e73}.hero .grid{margin-top:34px}.entry{padding:28px 26px;border-radius:20px;border:1px solid rgba(210,210,215,.7);background:rgba(255,255,255,.72);box-shadow:0 8px 24px rgba(0,0,0,.05);backdrop-filter:blur(8px)}.entry:hover{border-color:#b7d7f7;background:#fff}.entry .symbol{color:var(--blue);font-size:30px;margin-bottom:20px}.entry strong{font-size:21px;letter-spacing:-.3px}.entry span{font-size:14px;color:var(--muted);margin-top:9px}
.card{background:rgba(255,255,255,.95);border:1px solid rgba(210,210,215,.7);border-radius:20px;padding:28px;margin:22px 0;box-shadow:var(--shadow)}.grid>.card{margin:0}.actions{gap:10px;margin-top:18px}.badge{background:#eef6ff;color:#1769b0;padding:6px 10px;border-radius:999px;font-size:12px}.badge.warning{background:#fff4d8;color:#9a6100}.badge.red{background:#fff0ef;color:#b63832}.price{font-size:28px;letter-spacing:-.8px}.fee-banner{background:linear-gradient(135deg,#f1fbf5,#eaf7ef);border:1px solid #cbe7d4;border-radius:20px;padding:24px;margin:22px 0}.fee-banner .price{color:#237341}
.provider-card{gap:14px}.provider-card .actions{margin-top:auto}.avatar{border-radius:18px;background:#edf5ff;color:var(--blue)}.provider-head{gap:15px}.stars{color:#b06d00}.row{padding:22px 0;border-bottom:1px solid #e5e5ea}.row:last-child{border:0}.split{gap:18px}
.form{max-width:720px}.form label{gap:8px;margin:18px 0;color:#3a3a3c}.form input:not([type=checkbox]),.form textarea,.form select{border:1px solid #c7c7cc;border-radius:12px;background:#fff;color:#1d1d1f;padding:13px 14px;min-height:46px;transition:border-color .2s ease,box-shadow .2s ease}.form input:not([type=checkbox]):focus,.form textarea:focus,.form select:focus{border-color:#78b8f2;box-shadow:0 0 0 4px rgba(0,113,227,.12);outline:0}.form textarea{min-height:140px}fieldset{border:1px solid #d2d2d7;border-radius:14px;padding:18px;margin:18px 0;background:#fafafd}fieldset legend{padding:0 6px;color:#6e6e73;font-size:13px;font-weight:600}
.notice{background:#fff8e6;border:1px solid #f1dfb5;border-radius:14px;padding:14px 18px;color:#765a20}.error{background:#fff1f0;border-left:4px solid #d64b45;border-radius:12px;padding:15px}.steps{gap:8px}.steps span{background:#e9e9ee;color:#6e6e73;border-radius:999px}.steps .active{background:#dceeff;color:#0066cc}
.chat-log{background:#f2f2f7;border-radius:18px;padding:20px}.bubble{border-radius:18px;box-shadow:0 2px 7px rgba(0,0,0,.04)}.bubble.mine{background:#d9edff}.composer textarea{border:1px solid #c7c7cc;border-radius:14px;background:#fff}
nav{background:rgba(255,255,255,.88);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-top:1px solid rgba(210,210,215,.7);box-shadow:0 -4px 22px rgba(0,0,0,.06);padding:10px 12px calc(10px + env(safe-area-inset-bottom));gap:10px}nav a{border-radius:12px;color:#6e6e73;padding:10px 22px;font-weight:500}nav a.active{color:var(--blue);background:#e8f3ff;font-weight:650}
footer{color:#86868b;font-size:12px;margin-top:44px}#pilot{background:#fff8e6;color:#7a5c1c;padding:9px;font-size:12px;border-bottom:1px solid #f1dfb5}#customer-welcome{max-width:1080px;margin:16px auto -10px;padding:13px 22px;border-radius:14px;background:linear-gradient(90deg,#eef7ff,#fff);border:1px solid #d7e8f7;color:#145b96;font-size:16px;font-weight:700}#toast{background:#1d1d1f;border-radius:14px;box-shadow:0 8px 24px rgba(0,0,0,.18)}.loading{padding:90px 20px;color:var(--muted)}.admin-table td,.admin-table th{border-bottom:1px solid #e5e5ea;padding:14px}.admin-module-icon{filter:saturate(.75);margin-right:4px}
#app .admin-module-toggle{color:var(--blue)!important;font-weight:600;border-radius:10px!important;box-shadow:none!important}.admin-module-toggle:hover{background:#eef6ff!important}.category-toggle{border-radius:10px!important}
@media(max-width:680px){header{height:64px;padding:8px 16px}.brand{font-size:19px}.brand img{width:36px;height:36px}main{margin:25px auto;padding:0 16px}.hero{padding:34px 22px;border-radius:22px}.hero .grid{margin-top:24px}.card{padding:21px 18px;border-radius:18px}.entry{padding:22px 18px}.entry strong{font-size:18px}.grid,.grid.three{gap:14px}.header-actions{gap:5px}.header-actions button{padding:5px 7px}.actions{gap:8px}.actions button,.actions a.button{padding:10px 13px;min-height:42px}.admin-module-toggle{padding:2px 6px!important}.admin-module-icon{font-size:17px}.row{padding:18px 0}nav a{padding:10px 9px;font-size:12px}footer{padding:0 16px;text-align:center}}
/* Admin mobile spacing: keep staff permissions and professional points as separate visual blocks. */
#staff-form{margin-top:24px;padding-top:20px;border-top:1px solid var(--line)}
#points-form{margin-top:34px;padding-top:24px;border-top:2px solid #d9e4ee}
#points-form h3{margin:0 0 18px}
#staff-form>button,#points-form>button{margin-top:18px}
@media(max-width:680px){#staff-form{margin-top:22px;padding-top:18px}#points-form{margin-top:30px;padding-top:22px}}
/* Keep the notification/complaint actions visually separate from the home hero card. */
#app>.actions:first-child{margin-bottom:26px;padding:0 2px}
#app>.actions:first-child button,#app>.actions:first-child a.button{margin-bottom:0}
@media(max-width:680px){#app>.actions:first-child{margin-bottom:24px;gap:9px}}
.home-alerts{margin-top:0}.home-alert-button{position:relative;overflow:visible}.alert-unread{background:#ff3b30!important;color:#fff!important;border:2px solid #fff;box-shadow:0 2px 7px rgba(255,59,48,.42);position:absolute;top:-10px;right:-10px;min-width:22px;height:22px;display:grid;place-items:center;padding:0 5px;font-size:11px;font-weight:800;line-height:1;animation:alertBadgeIn .32s cubic-bezier(.2,1.45,.4,1) both,alertBadgePulse 2.4s ease-in-out .5s infinite}@keyframes alertBadgeIn{from{opacity:0;transform:scale(.35)}to{opacity:1;transform:scale(1)}}@keyframes alertBadgePulse{0%,100%{transform:scale(1)}50%{transform:scale(1.1)}}@media(prefers-reduced-motion:reduce){.alert-unread{animation:none}}
/* Mobile pull-to-refresh feedback; the gesture is enabled only on touch devices. */
#pull-refresh{position:fixed;z-index:60;top:10px;left:50%;pointer-events:none;opacity:0;transform:translate(-50%,-18px) scale(.94);padding:8px 14px;border:1px solid rgba(210,210,215,.85);border-radius:999px;background:rgba(255,255,255,.92);color:var(--muted);font-size:12px;font-weight:600;box-shadow:0 6px 18px rgba(0,0,0,.1);transition:opacity .18s ease,transform .18s ease}
#pull-refresh[style*="--pull-progress"]{opacity:min(1,var(--pull-progress));transform:translate(-50%,calc((var(--pull-progress) * 18px) - 18px)) scale(calc(.94 + min(.06,var(--pull-progress) * .06)))}
#pull-refresh.refreshing{opacity:1;transform:translate(-50%,12px) scale(1)}
@media(max-width:680px){body{overscroll-behavior-y:none}}
/* Original Flashman chat bubbles: both sides use the shield avatar, with a directional tail. */
.chat-row{display:flex;align-items:flex-end;gap:9px;max-width:88%;align-self:flex-start}
.chat-row.theirs{align-self:flex-end;flex-direction:row-reverse}
.chat-avatar{width:36px;height:36px;flex:0 0 36px;border-radius:11px;object-fit:contain;background:#fff;border:1px solid #cbd8e4;box-shadow:0 2px 8px rgba(0,0,0,.08)}
.chat-row .bubble{position:relative;align-self:flex-end;margin:0;max-width:calc(100% - 45px);border:1px solid #cbd8e4;border-radius:16px;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.04)}
.chat-row.theirs .bubble{background:#e8f3ff;border-color:#b9daf7}
.chat-row.mine .bubble::before,.chat-row.theirs .bubble::before{content:"";position:absolute;bottom:11px;width:11px;height:11px;background:inherit;border-top:1px solid;border-right:1px solid;transform:rotate(45deg)}
.chat-row.mine .bubble::before{left:-6px;border-color:#cbd8e4;transform:rotate(-135deg)}
.chat-row.theirs .bubble::before{right:-6px;border-color:#b9daf7;transform:rotate(45deg)}
@media(max-width:680px){.chat-row{max-width:94%;gap:7px}.chat-avatar{width:32px;height:32px;flex-basis:32px;border-radius:10px}.chat-row .bubble{max-width:calc(100% - 39px);padding:11px 13px}}
.chat-avatar.avatar-fallback{position:relative;display:flex;align-items:center;justify-content:center;overflow:visible}
.chat-avatar.avatar-fallback.customer{background:linear-gradient(145deg,#eef7ff,#d6eaff);border-color:#b8d5ed}
.chat-avatar.avatar-fallback.customer::before{content:"";position:absolute;top:7px;width:11px;height:11px;border-radius:50%;background:#5e9bd0;box-shadow:0 0 0 2px rgba(255,255,255,.55)}
.chat-avatar.avatar-fallback.customer::after{content:"";position:absolute;bottom:5px;width:22px;height:12px;border-radius:13px 13px 7px 7px;background:#5e9bd0}
.chat-avatar.avatar-fallback.provider{background:#fff;border-color:#b9cfe0;padding:3px}
.chat-avatar.avatar-fallback.provider>img{width:100%;height:100%;object-fit:contain;border:0;box-shadow:none}
.chat-avatar.avatar-fallback.provider::before{content:"";position:absolute;z-index:2;top:-5px;left:7px;width:20px;height:8px;border:1px solid #b36e14;border-radius:8px 8px 2px 2px;background:#e7a43a;transform:rotate(-6deg)}
.chat-avatar.avatar-fallback.provider::after{content:"";position:absolute;z-index:3;top:1px;left:3px;width:28px;height:4px;border:1px solid #b36e14;border-radius:4px;background:#f0ba4a}

/* Flashman repair journey: original blue/yellow promotion, independent of the reference site. */
.flashman-home{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,.9fr);gap:34px;align-items:center;background:linear-gradient(135deg,#061d35 0%,#0b4b86 55%,#1478be 100%);color:#fff}.flashman-home .eyebrow{color:#ffbd32}.flashman-home h1{color:#fff}.flashman-home p{color:#dceeff}.repair-entry{margin-top:10px;background:#ffb51b!important;border-color:#ffb51b!important;color:#182a3b!important;box-shadow:0 8px 22px #001c3f66!important}.hvac-carousel{min-height:344px;position:relative}.hvac-track{height:100%;min-height:344px}.hvac-slide{position:absolute;inset:0;margin:0;border-radius:22px;overflow:hidden;opacity:0;transform:translateX(12px);transition:opacity .38s ease,transform .38s ease;box-shadow:0 18px 38px #001b3d77}.hvac-slide.active{opacity:1;transform:translateX(0)}.hvac-slide img{width:100%;height:344px;object-fit:cover;display:block}.hvac-slide::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 35%,rgba(0,15,32,.8))}.hvac-slide figcaption{position:absolute;z-index:1;left:20px;right:20px;bottom:20px;display:grid;gap:5px}.hvac-slide figcaption b{font-size:22px;letter-spacing:-.4px}.hvac-slide figcaption small{color:#fff;font-size:13px}.carousel-dots{position:absolute;z-index:2;bottom:-2px;left:0;right:0;display:flex;justify-content:center;gap:7px}.carousel-dots button{width:7px;min-height:7px;height:7px;padding:0;border:0;border-radius:99px;background:#fff8;box-shadow:none}.carousel-dots button.active{width:22px;background:#ffb51b}.journey{margin-top:28px}.request-wizard{max-width:760px;margin:0 auto}.wizard-heading{margin-top:24px}.wizard-progress{height:7px;border-radius:999px;background:#e5e5ea;overflow:hidden;margin:18px 0 13px}.wizard-progress i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#0071e3,#36a5f7);transition:width .25s ease}.wizard-steps{display:flex;justify-content:space-between;gap:4px;margin-bottom:22px}.wizard-steps span{display:grid;place-items:center;width:25px;height:25px;border-radius:50%;background:#e5e5ea;color:#86868b;font-size:11px;font-weight:700}.wizard-steps span.active{background:#0071e3;color:#fff;box-shadow:0 0 0 4px #dceeff}.wizard-steps span.done{background:#dff3e7;color:#217345}.choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:10px 0 18px}.choice{position:relative;display:block!important;margin:0!important}.choice input{position:absolute;opacity:0}.choice span{display:grid;gap:5px;min-height:94px;padding:17px;border:1px solid #d2d2d7;border-radius:15px;background:#fff;transition:border-color .18s ease,box-shadow .18s ease,background .18s ease}.choice small{font-weight:400}.choice input:checked+span{border-color:#0071e3;background:#f0f8ff;box-shadow:0 0 0 3px #dceeff}.choice input:checked+span::after{content:"✓";position:absolute;right:12px;top:10px;width:21px;height:21px;border-radius:50%;display:grid;place-items:center;background:#0071e3;color:#fff;font-size:12px}.invite-page{max-width:930px;margin:24px auto 100px}.invite-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:24px 0}.invite-card{position:relative;display:grid;grid-template-columns:28px 56px 1fr;gap:13px;align-items:center;padding:17px;border:1px solid #d2d2d7;border-radius:18px;background:#fff;cursor:pointer;transition:border-color .18s ease,box-shadow .18s ease}.invite-card>input{position:absolute;opacity:0}.invite-card:has(input:checked){border-color:#0071e3;background:#f7fbff;box-shadow:0 7px 16px #006cc51c}.invite-check{display:grid;place-items:center;width:23px;height:23px;border:1px solid #a1a1a6;border-radius:7px;color:transparent}.invite-card input:checked~.invite-check{background:#0071e3;border-color:#0071e3;color:#fff}.invite-card .avatar{width:52px;height:52px;font-size:20px}.invite-card .avatar img{width:100%;height:100%;object-fit:cover;border-radius:inherit}.invite-card b,.invite-card small{display:block}.invite-card small{margin-top:3px;font-size:12px}.invite-bar{position:sticky;bottom:76px;z-index:10;display:flex;align-items:center;gap:8px;padding:14px 17px;border:1px solid #d2d2d7;border-radius:16px;background:rgba(255,255,255,.94);backdrop-filter:blur(14px);box-shadow:0 10px 30px #00000014}.invite-bar b{color:#0071e3;font-size:21px}.invite-bar button{margin-left:auto}
@media(max-width:680px){.flashman-home{grid-template-columns:1fr;padding:28px 20px;gap:24px}.hvac-carousel,.hvac-track{min-height:245px}.hvac-slide img{height:245px}.hvac-slide figcaption b{font-size:19px}.choice-grid,.invite-list{grid-template-columns:1fr}.choice span{min-height:74px}.wizard-steps span{width:22px;height:22px;font-size:10px}.invite-page{margin-top:20px}.invite-card{grid-template-columns:25px 48px 1fr;padding:14px}.invite-card .avatar{width:46px;height:46px}.invite-bar{bottom:72px}}
.record-control{width:46px;min-width:46px;padding:10px!important;font-size:19px;line-height:1}.record-control.recording{background:#e34b4b!important;border-color:#e34b4b!important;color:#fff!important;animation:recordPulse 1s ease-in-out infinite}.attachment-note{display:block;width:100%;min-height:1.4em;margin-top:2px}.audio-attachment{display:grid;gap:6px;margin-top:8px}.attachment-name{font-size:12px;color:var(--muted)}@keyframes recordPulse{50%{transform:scale(1.06);box-shadow:0 0 0 5px rgba(227,75,75,.16)}}@media(prefers-reduced-motion:reduce){.record-control.recording{animation:none}}
.request-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 18px;margin:12px 0 18px;padding:13px 15px;border:1px solid var(--line);border-radius:12px;background:#f9fbfd}.request-summary div{display:flex;gap:7px;min-width:0}.request-summary dt{font-weight:800;color:#163c5c;white-space:nowrap}.request-summary dd{margin:0;color:#53687b;overflow-wrap:anywhere}@media(max-width:680px){.request-summary{grid-template-columns:1fr;gap:7px}}
.account-title{display:flex;align-items:center;gap:12px;margin:8px 0 18px}.account-title h1{margin:0}.account-avatar{display:grid;place-items:center;flex:0 0 48px;width:48px;height:48px;border-radius:16px;object-fit:cover;background:#e8f4ff;color:#1870b7;border:1px solid #c7e0f5;font-size:23px;font-weight:700}.account-avatar-fallback{font-size:24px}
/* Unread chat cues are intentionally distinct from platform-notification badges. */
nav a[href="#messages"]{position:relative}.message-nav-dot{position:absolute;top:5px;right:calc(50% - 23px);width:8px;height:8px;border:2px solid #fff;border-radius:50%;background:#ff3b30;box-shadow:0 1px 5px rgba(255,59,48,.6);animation:messageDotPulse 1.8s ease-in-out infinite}.conversation.has-unread{border-color:#f2b5b5;background:#fffafa}.conversation-new{display:inline-block;margin-left:7px;color:#dc2f3d;font-size:11px;font-style:normal;font-weight:800;letter-spacing:.04em;animation:conversationNewPulse 1.35s ease-in-out infinite}@keyframes messageDotPulse{50%{transform:scale(1.35)}}@keyframes conversationNewPulse{50%{transform:scale(1.08);color:#b81427}}@media(prefers-reduced-motion:reduce){.message-nav-dot,.conversation-new{animation:none}}

.attachment-viewer{position:fixed;inset:0;width:100vw;height:100dvh;max-width:100vw;max-height:100dvh;margin:0;padding:64px 16px 24px;box-sizing:border-box;border:0;background:rgba(0,0,0,.94);color:white;overflow:auto;text-align:center}
.attachment-viewer::backdrop{background:rgba(0,0,0,.85)}
.attachment-viewer[open]{display:flex;align-items:center;justify-content:center}
.attachment-viewer img{max-width:100%;max-height:calc(100dvh - 100px);object-fit:contain}
.attachment-viewer-close{position:fixed;top:max(12px,env(safe-area-inset-top));right:max(16px,env(safe-area-inset-right));z-index:2;width:48px;height:48px;padding:0;border:1px solid #aaa;border-radius:50%;background:#222;color:#fff;font-size:36px;line-height:1;cursor:pointer}
.attachment-viewer a{color:white}.attachment-viewer [hidden]{display:none!important}

a.button.conversation{justify-content:flex-start!important;text-align:left!important}.conversation>span:first-child,.conversation>span:first-child b,.conversation>span:first-child small{display:block;text-align:left!important;align-self:flex-start}

/* Customer-selected service is an intentional, reversible state. */
.service-cancel{background:#c93636!important;border-color:#a91e1e!important;color:#fff!important}
.service-cancel:hover{background:#a91e1e!important}
.service-selected{color:#b42318!important;border-left:4px solid #d92d20!important;font-weight:700}

.service-selected-other{background:#fff1f0!important;border-left-color:#d92d20!important;color:#b42318!important}
#chat-form :disabled{opacity:.55;cursor:not-allowed}

/* Request wizard controls */
.steps .step-link{min-height:0;padding:9px 14px;border:0;border-radius:30px;font-size:13px;background:#e9eef3;color:#697c8c}.steps .step-link.active{background:#d9ebff;color:#125c99}.steps .step-link:hover{background:#dceeff;color:#125c99}

/* Interactive 9-step request navigation */
.wizard-steps .wizard-step-link{display:grid;place-items:center;width:25px;height:25px;min-height:25px;padding:0;border:0;border-radius:50%;background:#e5e5ea;color:#86868b;font-size:11px;font-weight:700}.wizard-steps .wizard-step-link.active{background:#0071e3;color:#fff;box-shadow:0 0 0 4px #dceeff}.wizard-steps .wizard-step-link.done{background:#dff3e7;color:#217345}.wizard-steps .wizard-step-link:hover{filter:brightness(.96)}

.hold-to-talk{width:auto!important;min-width:118px;padding:0 13px!important;gap:7px;user-select:none;touch-action:none}.hold-to-talk .record-label{font-size:.9rem;font-weight:700}.hold-to-talk.recording{background:#c62828;color:#fff;border-color:#c62828}.recall-message{margin-left:8px;padding:1px 6px;border:0;background:transparent;color:#d32f2f;font-size:.78rem;font-weight:700;cursor:pointer}.recalled-message{color:#8a8a8a;font-style:italic}


/* Press-and-hold voice recording: prevent native text selection and show live ripples. */
.hold-to-talk{position:relative;overflow:visible;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:none}
.hold-to-talk *{-webkit-user-select:none;user-select:none;pointer-events:none}
.hold-to-talk .record-icon,.hold-to-talk .record-label{position:relative;z-index:2}
.record-ripples{position:absolute;z-index:1;left:17px;top:50%;width:18px;height:18px;transform:translate(-50%,-50%);pointer-events:none}
.record-ripples i{position:absolute;inset:0;border:2px solid rgba(198,40,40,.72);border-radius:50%;opacity:0;transform:scale(.35)}
.hold-to-talk.recording .record-ripples i{animation:voiceRipple 1.35s ease-out infinite}
.hold-to-talk.recording .record-ripples i:nth-child(2){animation-delay:.45s}
.hold-to-talk.recording .record-ripples i:nth-child(3){animation-delay:.9s}
@keyframes voiceRipple{0%{opacity:.7;transform:scale(.35)}100%{opacity:0;transform:scale(3.1)}}
@media(prefers-reduced-motion:reduce){.hold-to-talk.recording .record-ripples i{animation:none;opacity:.55;transform:scale(1.4)}}

.voice-duration{display:block;margin:5px 0 2px;color:#53687b;font-size:.78rem;font-weight:700}


/* Compact chat voice-note cloud. */
.voice-bubble{display:inline-flex;align-items:center;gap:9px;min-width:132px;margin:7px 0 2px;padding:10px 13px;border:0;border-radius:18px 18px 18px 5px;background:linear-gradient(135deg,#e8f3ff,#d5ebff);color:#1468a8;box-shadow:inset 0 0 0 1px #b9daf5;cursor:pointer;vertical-align:middle}.message.mine .voice-bubble{border-radius:18px 18px 5px 18px;background:linear-gradient(135deg,#1676be,#0d5e9f);color:#fff;box-shadow:none}.voice-bubble:active{transform:scale(.98)}.voice-play{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:currentColor;color:#fff;font-size:10px;padding-left:1px}.message.mine .voice-play{background:#fff;color:#1468a8}.voice-waves{display:flex;align-items:center;gap:2px;height:20px;flex:1}.voice-waves i{display:block;width:3px;border-radius:3px;background:currentColor}.voice-waves i:nth-child(1){height:7px}.voice-waves i:nth-child(2){height:15px}.voice-waves i:nth-child(3){height:11px}.voice-waves i:nth-child(4){height:18px}.voice-bubble b{min-width:37px;font-size:13px;letter-spacing:.2px}.voice-bubble.playing .voice-play{font-size:0}.voice-bubble.playing .voice-play::after{content:'❚❚';font-size:8px}.voice-bubble.playing .voice-waves i{animation:voiceBars .7s ease-in-out infinite alternate}.voice-bubble.playing .voice-waves i:nth-child(2){animation-delay:.14s}.voice-bubble.playing .voice-waves i:nth-child(3){animation-delay:.28s}.voice-bubble.playing .voice-waves i:nth-child(4){animation-delay:.42s}@keyframes voiceBars{to{transform:scaleY(.35)}}@media(prefers-reduced-motion:reduce){.voice-bubble.playing .voice-waves i{animation:none}}

/* Mobile refresh is visible, while browser-level page zoom stays locked by viewport. */
#pull-refresh{position:fixed;z-index:1000;top:calc(env(safe-area-inset-top,0px) + 8px);left:50%;display:flex;align-items:center;justify-content:center;min-width:106px;min-height:34px;padding:0 14px;border-radius:18px;background:rgba(20,45,72,.94);color:#fff;font-size:13px;font-weight:700;box-shadow:0 5px 18px rgba(0,0,0,.2);pointer-events:none;opacity:0;transform:translate(-50%,calc(-48px + min(var(--pull-progress,0),1)*54px));transition:opacity .16s ease,transform .16s ease}#pull-refresh.ready{opacity:1;transform:translate(-50%,0)}#pull-refresh.refreshing{opacity:1;transform:translate(-50%,0)}#pull-refresh.refreshing:before{content:'↻';display:inline-block;margin-right:7px;animation:fm-spin .8s linear infinite}@keyframes fm-spin{to{transform:rotate(360deg)}}
.attachment-viewer{width:min(96vw,900px);height:min(92vh,900px);max-width:96vw;max-height:92vh;padding:50px 14px 16px;overflow:auto;border:0;border-radius:16px;background:#111;color:white;overscroll-behavior:contain}.attachment-viewer::backdrop{background:rgba(0,0,0,.76)}.attachment-viewer img{display:block;max-width:none;width:calc(min(88vw,820px)*var(--attachment-zoom,1));max-height:none;margin:0 auto;transform-origin:top center;touch-action:none}.attachment-viewer-close,.attachment-viewer-controls button{position:fixed;z-index:2;border:0;border-radius:50%;background:rgba(255,255,255,.92);color:#132d49;font-size:26px;line-height:38px;width:38px;height:38px;padding:0}.attachment-viewer-close{top:calc(env(safe-area-inset-top,0px) + 16px);right:calc(2vw + 10px)}.attachment-viewer-controls{position:fixed;z-index:2;top:calc(env(safe-area-inset-top,0px) + 16px);left:calc(2vw + 10px);display:flex;gap:8px}.attachment-viewer-controls button{position:static;font-size:23px}.attachment-viewer-controls button:disabled{opacity:.4}
@media (max-width:700px){html,body{max-width:100%;overflow-x:hidden}.attachment-viewer{width:100vw;height:100dvh;max-width:100vw;max-height:100dvh;border-radius:0;padding-top:62px}.attachment-viewer img{width:calc(92vw*var(--attachment-zoom,1))}}
