:root{--app-bg:#f4f7fb;--app-card:#fff;--app-blue:#1473e6;--app-blue-dark:#0d4c95;--app-green:#1daf61;--app-yellow:#ffd21c;--app-red:#e64040;--app-orange:#f39b20;--app-text:#10233f;--app-muted:#6e7e91;--app-line:#dfe7f0;--app-shadow:0 10px 30px rgba(20,42,76,.08)}
.mobile-app{min-height:100vh;background:var(--app-bg);color:var(--app-text);padding-bottom:94px}.mobile-app *{box-sizing:border-box}.app-topbar{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.94);backdrop-filter:blur(18px);border-bottom:1px solid var(--app-line);padding-top:env(safe-area-inset-top)}.app-topbar-inner{width:min(1120px,calc(100% - 32px));height:72px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:16px}.app-brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--app-text)}.app-brand img{flex:0 0 auto}.app-brand span{display:grid;line-height:1.08}.app-brand strong{font-size:1.02rem}.app-brand small{font-size:.68rem;color:var(--app-muted);margin-top:3px}.app-top-actions{display:flex;align-items:center;gap:8px}.app-install{border:1px solid var(--app-line);background:#fff;border-radius:4px;padding:9px 11px;font:inherit;font-size:.72rem;font-weight:800;color:var(--app-blue-dark)}.app-icon-button{border:1px solid var(--app-line);background:#fff;width:40px;height:40px;border-radius:4px;font-size:1.2rem;color:var(--app-blue-dark);cursor:pointer}.app-content{width:min(1040px,calc(100% - 32px));margin:0 auto;padding:30px 0 42px}.app-content.narrow{width:min(720px,calc(100% - 32px))}.app-welcome p,.screen-title p,.admin-welcome p,.admin-ticket-head p{margin:0 0 4px;color:var(--app-blue);text-transform:uppercase;letter-spacing:.09em;font-size:.68rem;font-weight:900}.app-welcome h1,.screen-title h1,.admin-welcome h1,.admin-ticket-head h1{margin:0;color:var(--app-text)}.app-welcome h1{font-size:clamp(1.8rem,5vw,2.8rem)}.screen-title{margin:12px 0 24px}.screen-title.compact{margin-top:4px}.screen-title h1{font-size:clamp(2rem,6vw,3rem)}.screen-title span{display:block;color:var(--app-muted);max-width:560px;margin-top:7px;line-height:1.5}.app-alert{padding:13px 15px;border-radius:4px;margin:0 0 16px;font-size:.86rem;font-weight:700}.app-alert.success{background:var(--app-green);border:1px solid var(--app-green);color:#fff}.app-alert.error{background:var(--app-red);border:1px solid var(--app-red);color:#fff}.capacity-card{margin-top:20px;background:linear-gradient(145deg,#0c4a91,#1473e6);color:#fff;border-radius:4px;padding:24px;box-shadow:0 18px 46px rgba(20,115,230,.24)}.capacity-head{display:flex;justify-content:space-between;align-items:center;gap:18px}.capacity-head>div:first-child{display:grid}.capacity-head small{font-size:.76rem;color:#d9ecff}.capacity-head strong{font-size:2.45rem;line-height:1;margin-top:8px}.capacity-head span{font-size:.82rem;color:#e7f2ff;margin-top:5px}.capacity-ring{--progress:0%;width:94px;height:94px;border-radius:50%;display:grid;place-items:center;align-content:center;background:#0d57a9;border:7px solid rgba(255,255,255,.18);box-shadow:inset 0 0 0 1px rgba(255,255,255,.12)}.capacity-ring b{font-size:1.18rem}.capacity-ring small{font-size:.58rem;color:#fff}.capacity-progress{display:block;width:100%;height:8px;border:0;border-radius:999px;overflow:hidden;margin-top:21px;background:rgba(255,255,255,.2);appearance:none}.capacity-progress::-webkit-progress-bar{background:rgba(255,255,255,.2);border-radius:999px}.capacity-progress::-webkit-progress-value{background:var(--app-yellow);border-radius:999px}.capacity-progress::-moz-progress-bar{background:var(--app-yellow);border-radius:999px}.capacity-foot{display:flex;justify-content:space-between;font-size:.64rem;color:#dbeaff;margin-top:7px}.report-problem-card{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;background:#fff;margin-top:16px;border:1px solid var(--app-line);border-radius:4px;padding:18px;text-decoration:none;color:var(--app-text);box-shadow:var(--app-shadow)}.report-problem-card:hover{border-color:#b7d3f5}.report-plus{position:relative;width:48px;height:48px;border-radius:4px;display:grid;place-items:center;background:var(--app-yellow);color:#152b46;font-size:0;font-weight:600}.report-plus::before{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:18px;height:18px;background:linear-gradient(currentColor,currentColor) center/100% 3px no-repeat,linear-gradient(currentColor,currentColor) center/3px 100% no-repeat}.report-problem-card>span:nth-child(2){display:grid;gap:3px}.report-problem-card strong{font-size:1rem}.report-problem-card small{font-size:.72rem;color:var(--app-muted)}.report-problem-card>b{font-size:1.8rem;color:var(--app-blue)}.quick-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:16px}.quick-stats article{background:#fff;border:1px solid var(--app-line);border-radius:4px;padding:17px;display:grid;box-shadow:var(--app-shadow)}.quick-stats span{font-size:.68rem;color:var(--app-muted)}.quick-stats strong{font-size:1.6rem;margin:4px 0}.quick-stats small{font-size:.65rem;color:var(--app-muted)}.app-section{margin-top:28px}.app-section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.app-section-head h2{font-size:1.1rem;margin:0}.app-section-head a{font-size:.75rem;font-weight:800;color:var(--app-blue);text-decoration:none}.request-cards{display:grid;gap:10px}.request-cards.large{gap:12px}.request-card{display:flex;align-items:center;justify-content:space-between;gap:15px;background:#fff;border:1px solid var(--app-line);border-radius:4px;padding:15px 16px;text-decoration:none;color:var(--app-text);box-shadow:0 5px 15px rgba(20,42,76,.04)}.request-card-main{min-width:0;display:grid;gap:4px}.request-card-main strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.9rem}.request-card-main>small{color:var(--app-blue-dark);font-weight:900;font-size:.64rem}.request-card-main span{font-size:.65rem;color:var(--app-muted)}.request-card-side{display:flex;align-items:center;gap:8px}.status-pill{display:inline-flex;align-items:center;white-space:nowrap;padding:6px 9px;border-radius:999px;font-size:.62rem;font-weight:900;background:var(--app-blue-dark);color:#fff}.status-new{background:var(--app-yellow);color:var(--app-text)}.status-accepted{background:var(--app-blue);color:#fff}.status-scheduled{background:var(--app-blue-dark);color:#fff}.status-in_progress{background:var(--app-orange);color:#10233f}.status-completed{background:var(--app-green);color:#fff}.status-cancelled{background:var(--app-muted);color:#fff}.priority-dot{width:9px;height:9px;border-radius:50%;background:#92a0b2}.priority-high{background:var(--app-orange)}.priority-urgent{background:var(--app-red)}.empty-state{background:#fff;border:1px dashed #cfd9e5;border-radius:4px;padding:30px;text-align:center;color:var(--app-muted)}.empty-state>span{width:42px;height:42px;border-radius:50%;background:var(--app-green);color:#fff;display:grid;place-items:center;margin:0 auto 10px;font-weight:900}.empty-state strong{display:block;color:var(--app-text)}.empty-state p{font-size:.78rem;margin:6px auto 0;max-width:360px}.app-back{display:inline-flex;margin:2px 0 18px;color:var(--app-blue);font-size:.8rem;font-weight:800;text-decoration:none}.app-form{display:grid;gap:15px}.app-form>label{display:grid;gap:7px;font-size:.75rem;font-weight:900;color:#42556d}.app-form input,.app-form textarea,.app-form select{width:100%;border:1px solid var(--app-line);background:#fff;border-radius:4px;padding:14px 14px;color:var(--app-text);font:inherit;outline:none}.app-form textarea{resize:vertical}.app-form input:focus,.app-form textarea:focus,.app-form select:focus{border-color:var(--app-blue);box-shadow:0 0 0 4px rgba(20,115,230,.09)}.priority-picker{border:0;padding:0;margin:0;display:grid;gap:9px}.priority-picker legend{font-size:.75rem;font-weight:900;color:#42556d;margin-bottom:5px}.priority-picker label{position:relative}.priority-picker input{position:absolute;opacity:0;pointer-events:none}.priority-picker span{display:grid;background:#fff;border:1px solid var(--app-line);border-radius:4px;padding:13px 14px;cursor:pointer}.priority-picker small{color:var(--app-muted);font-weight:500;font-size:.69rem;margin-top:2px}.priority-picker input:checked+span{border-color:var(--app-blue);box-shadow:0 0 0 3px rgba(20,115,230,.18);background:var(--app-blue);color:#fff}.photo-upload{position:relative;text-align:center;background:#fff;border:1px dashed #aec5df!important;border-radius:4px;padding:22px!important;cursor:pointer}.photo-upload input{position:absolute;inset:0;opacity:0;cursor:pointer}.photo-upload .photo-icon{font-size:1.7rem;color:var(--app-blue)}.photo-upload strong{font-size:.9rem;color:var(--app-text)}.photo-upload small{font-size:.68rem;color:var(--app-muted)}.photo-preview{display:flex;gap:8px;overflow:auto}.photo-preview img{width:70px;height:70px;object-fit:cover;border-radius:4px;border:1px solid var(--app-line)}.app-primary-button{border:0;border-radius:4px;background:var(--app-yellow);color:#132844;padding:15px 18px;font:inherit;font-weight:900;display:flex;align-items:center;justify-content:center;gap:12px;cursor:pointer;box-shadow:0 8px 20px rgba(255,210,28,.25)}.request-detail-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:14px}.request-detail-hero p{margin:0;color:var(--app-blue);font-size:.7rem;font-weight:900}.request-detail-hero h1{font-size:clamp(1.7rem,6vw,2.5rem);margin:4px 0 0}.detail-card{background:#fff;border:1px solid var(--app-line);border-radius:4px;padding:20px;margin-bottom:13px;box-shadow:var(--app-shadow)}.detail-card h2{font-size:1rem;margin:0 0 13px}.detail-card>p{font-size:.84rem;line-height:1.6;color:#43566e}.detail-card dl{display:grid;gap:10px;margin:16px 0 0}.detail-card dl>div{display:flex;justify-content:space-between;gap:20px;border-top:1px solid #edf1f6;padding-top:9px}.detail-card dt{font-size:.68rem;color:var(--app-muted)}.detail-card dd{margin:0;font-size:.72rem;font-weight:800;text-align:right}.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.photo-grid img{width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:4px}.resolved-card{border:2px solid var(--app-green);background:#fff}.resolved-card strong,.resolved-card small{display:block;margin-top:10px}.timeline{display:grid;gap:0}.timeline>div{display:grid;grid-template-columns:18px 1fr;gap:10px;position:relative}.timeline>div>span{width:10px;height:10px;background:var(--app-blue);border-radius:50%;margin-top:5px;position:relative}.timeline>div:not(:last-child)>span:after{content:"";position:absolute;width:2px;top:10px;bottom:-46px;left:4px;background:#dce6f1}.timeline article{padding-bottom:18px;display:grid;gap:2px}.timeline strong{font-size:.76rem}.timeline small{font-size:.62rem;color:var(--app-muted)}.timeline p{font-size:.7rem;color:#53667d;margin:4px 0 0}.app-bottom-nav{position:fixed;z-index:40;left:0;right:0;bottom:0;display:flex;justify-content:center;background:rgba(255,255,255,.96);backdrop-filter:blur(18px);border-top:1px solid var(--app-line);padding:7px max(10px,env(safe-area-inset-right)) calc(7px + env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left))}.app-bottom-nav a{flex:1;max-width:160px;display:grid;place-items:center;gap:2px;text-decoration:none;color:#738196;padding:5px;border-radius:4px}.app-bottom-nav a>span{font-size:1.15rem;line-height:1}.app-bottom-nav small{font-size:.57rem;font-weight:800}.app-bottom-nav a.active{color:var(--app-blue)}.app-bottom-nav a.primary>span{width:38px;height:38px;margin-top:-22px;border-radius:4px;background:var(--app-yellow);display:grid;place-items:center;color:#112945;font-size:1.7rem;box-shadow:0 8px 18px rgba(255,210,28,.35)}.app-bottom-nav a.primary small{margin-top:1px}
@media(min-width:760px){.mobile-app{padding-bottom:35px}.app-bottom-nav{position:sticky;bottom:20px;width:max-content;min-width:420px;margin:0 auto 20px;border:1px solid var(--app-line);border-radius:4px;box-shadow:var(--app-shadow);padding:7px}.app-bottom-nav a.primary>span{margin-top:0;width:auto;height:auto;background:transparent;box-shadow:none;font-size:1.15rem}.app-bottom-nav a.primary{background:var(--app-yellow);color:var(--app-text)}.quick-stats{grid-template-columns:repeat(2,minmax(0,240px))}}
@media(max-width:520px){.app-topbar-inner,.app-content{width:calc(100% - 24px)}.app-content{padding-top:20px}.app-content.narrow{width:calc(100% - 24px)}.app-brand small{display:none}.capacity-card{padding:20px}.capacity-ring{width:82px;height:82px}.request-card{padding:14px}.request-card-side{align-items:flex-end;flex-direction:column}.photo-grid{grid-template-columns:repeat(2,1fr)}}

/* Fast request UX */
.fast-request-form{gap:13px}.fast-request-form textarea{font-size:1rem;line-height:1.45;min-height:118px}.compact-priority{grid-template-columns:repeat(3,1fr);gap:7px}.compact-priority legend{grid-column:1/-1}.compact-priority span{padding:11px 8px;text-align:center}.compact-priority b{font-size:.72rem}.request-more{background:#fff;border:1px solid var(--app-line);border-radius:4px;padding:0 14px}.request-more summary{cursor:pointer;padding:13px 0;font-size:.74rem;font-weight:900;color:#53667d}.request-more[open]{padding-bottom:14px}.request-more label{display:grid;gap:7px;font-size:.75rem;font-weight:900;color:#42556d}.request-more input{width:100%;border:1px solid var(--app-line);border-radius:4px;padding:12px;font:inherit}
@media(max-width:520px){.compact-priority{grid-template-columns:repeat(3,1fr)}.compact-priority span{min-height:48px;display:grid;place-items:center}.fast-request-form .app-primary-button{position:sticky;bottom:78px;z-index:20}}

/* Audit hardening / accessibility */
.app-install{border:1px solid var(--app-line);background:#fff;color:var(--app-text);border-radius:4px;padding:9px 12px;font:inherit;font-size:.72rem;font-weight:850;cursor:pointer}
.priority-picker input:focus-visible+span{outline:3px solid rgba(20,115,230,.38);outline-offset:2px}
.photo-upload:focus-within{outline:3px solid rgba(20,115,230,.38);outline-offset:2px}
.app-bottom-nav small{font-size:.68rem}.detail-card dt{font-size:.72rem}.detail-card dd{font-size:.76rem}.priority-picker small,.photo-upload small{font-size:.72rem}
.field-error{display:block;color:#a51d27;font-size:.72rem;margin-top:5px}.inline-check{display:flex!important;grid-template-columns:auto 1fr!important;align-items:center;gap:9px!important}.inline-check input{width:auto!important}
.pagination{display:flex;justify-content:center;align-items:center;gap:14px;margin:24px 0}.pagination a,.pagination span{min-width:42px;min-height:42px;display:grid;place-items:center;border:1px solid var(--app-line);background:#fff;border-radius:4px;text-decoration:none;font-weight:850}.pagination a[aria-disabled="true"]{opacity:.4;pointer-events:none}.tech-detail-link{margin:10px 0 0}.technician-actions-card{position:sticky;bottom:76px;z-index:10}
@media(max-width:520px){.app-install{display:inline-flex!important;padding:8px 10px;font-size:.68rem}.app-top-actions{gap:6px}.app-icon-button{min-width:42px;min-height:42px}}
.app-install[hidden]{display:none!important}
@media(max-width:520px){.app-install:not([hidden]){display:inline-flex!important}.app-form input[type="date"],.app-form input[type="datetime-local"],.app-form select,.app-form textarea{font-size:16px}}


/* Header controls: keep logout as a compact icon button on every device */
.app-top-actions form.app-logout-form{margin:0;padding:0;display:flex;align-items:center}
.app-icon-button.app-logout-button{appearance:none;-webkit-appearance:none;display:grid;place-items:center;flex:0 0 42px;width:42px;height:42px;min-width:42px;min-height:42px;padding:0;margin:0;border:1px solid var(--app-line);border-radius:4px;background:#fff;color:var(--app-blue-dark);box-shadow:none;font-size:0;line-height:1;cursor:pointer}
.app-icon-button.app-logout-button svg{display:block;width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.app-icon-button.app-logout-button:hover{border-color:var(--app-blue);color:var(--app-blue);background:#fff}
.app-icon-button.app-logout-button:focus-visible{outline:3px solid rgba(20,115,230,.2);outline-offset:2px}

/* Unified application shell — client, technician and admin screens */
:root{
  --app-shell-width:1120px;
  --app-radius-lg:20px;
  --app-radius-md:14px;
  --app-card-pad:20px;
  --app-control-height:48px;
}

/* One horizontal grid on every application screen. */
.app-topbar-inner,
.app-content,
.app-content.narrow{
  width:min(var(--app-shell-width),calc(100% - 32px));
}
.app-content,
.app-content.narrow{
  padding:28px 0 42px;
}

/* Keep all page headings on the same rhythm and scale. */
.app-welcome,
.screen-title,
.request-detail-hero,
.admin-welcome,
.admin-ticket-head{
  margin-top:0;
}
.screen-title,
.screen-title.compact{
  margin:0 0 22px;
}
.app-welcome h1,
.screen-title h1,
.request-detail-hero h1,
.admin-welcome h1,
.admin-ticket-head h1{
  font-size:clamp(1.9rem,4vw,2.6rem);
  line-height:1.05;
}
.screen-title span{
  max-width:720px;
}
.app-back{
  margin:0 0 18px;
}

/* Shared card geometry. */
.capacity-card,
.report-problem-card,
.quick-stats article,
.request-card,
.detail-card,
.empty-state{
  border-radius:var(--app-radius-lg);
}
.report-problem-card,
.quick-stats article,
.request-card,
.detail-card{
  padding:var(--app-card-pad);
}
.app-section{
  margin-top:26px;
}
.request-cards,
.request-cards.large{
  gap:12px;
}

/* Forms use the same application width instead of a separate narrow canvas. */
.app-form{
  width:100%;
  gap:16px;
}
.app-form input,
.app-form select,
.app-form textarea,
.request-more input{
  border-radius:var(--app-radius-md);
  padding:13px 14px;
  min-height:var(--app-control-height);
}
.app-form textarea{
  min-height:132px;
}
.photo-upload,
.request-more,
.priority-picker span{
  border-radius:var(--app-radius-md);
}
.photo-upload{
  min-height:150px;
  display:grid;
  place-content:center;
  gap:5px;
}
.compact-priority{
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
}
.compact-priority span{
  min-height:var(--app-control-height);
  place-items:center;
  text-align:center;
}
.app-primary-button,
.app-secondary-button{
  min-height:var(--app-control-height);
  border-radius:var(--app-radius-md);
}

/* Detail pages should feel like the same product as lists/dashboard. */
.request-detail-hero{
  margin-bottom:18px;
}
.detail-card{
  margin-bottom:14px;
}

/* Desktop app navigation keeps the same visual treatment on every route. */
@media(min-width:760px){
  .app-bottom-nav{
    min-width:440px;
  }
}

@media(max-width:520px){
  .app-topbar-inner,
  .app-content,
  .app-content.narrow{
    width:calc(100% - 24px);
  }
  .app-content,
  .app-content.narrow{
    padding-top:20px;
  }
  .screen-title,
  .screen-title.compact{
    margin-bottom:18px;
  }
  .capacity-card,
  .report-problem-card,
  .quick-stats article,
  .request-card,
  .detail-card{
    padding:16px;
  }
}


/* Portal overview — compact two-column desktop layout */
.portal-overview-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(320px,.95fr);gap:16px;margin-top:20px;align-items:stretch}
.portal-overview-grid .capacity-card,.portal-overview-grid .report-problem-card{margin-top:0;min-height:230px}
.capacity-card-compact{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:26px;padding:24px 28px;background:#fff;color:var(--app-text);border:1px solid var(--app-line);box-shadow:var(--app-shadow)}
.capacity-card-copy{display:grid;align-content:center}.capacity-card-copy>small{font-size:.78rem;color:var(--app-blue);font-weight:850}.capacity-card-copy>strong{font-size:2.4rem;line-height:1;margin:10px 0 5px;color:var(--app-text)}.capacity-card-copy>span{font-size:.78rem;color:var(--app-muted)}
.capacity-mini-stats{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.capacity-mini-stats>span{display:flex;gap:7px;align-items:center;background:var(--app-bg);border-radius:4px;padding:8px 10px;font-size:.7rem;color:var(--app-muted)}.capacity-mini-stats b{color:var(--app-text);font-size:.78rem}
.capacity-donut{--used-percent:0%;width:150px;height:150px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--app-blue) 0 var(--used-percent),#e3ebf4 var(--used-percent) 100%);position:relative;box-shadow:inset 0 0 0 1px rgba(15,47,95,.03)}
.capacity-donut:after{content:"";position:absolute;width:112px;height:112px;border-radius:50%;background:#fff;box-shadow:0 0 0 1px rgba(15,47,95,.04)}
.capacity-donut>span{position:relative;z-index:1;display:grid;text-align:center;line-height:1.05}.capacity-donut b{font-size:1.55rem;color:var(--app-text)}.capacity-donut small{font-size:.64rem;color:var(--app-muted);margin-top:4px}
.report-problem-card-featured{grid-template-columns:auto 1fr auto;align-content:center;background:linear-gradient(145deg,#0c4a91,#1473e6);color:#fff;border-color:transparent;padding:26px 28px;box-shadow:0 18px 46px rgba(20,115,230,.2)}
.report-problem-card-featured:hover{border-color:transparent;transform:translateY(-1px)}.report-problem-card-featured .report-plus{width:58px;height:58px;border-radius:4px}.report-problem-card-featured strong{font-size:1.18rem;color:#fff}.report-problem-card-featured small{max-width:380px;color:#e4f0ff;font-size:.76rem;line-height:1.45}.report-problem-card-featured>b{color:#fff}

/* New request — problem description and photo upload share one row on larger screens */
.request-primary-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(300px,.65fr);gap:16px;align-items:stretch}.request-description-field,.request-photo-field{min-width:0}.request-description-field{display:grid!important;grid-template-rows:auto 1fr auto}.request-description-field textarea{height:100%;min-height:180px}.request-photo-field{display:grid;grid-template-rows:1fr auto;gap:8px}.request-photo-field .photo-upload{height:100%;min-height:180px}.request-photo-field .photo-preview:empty{display:none}

/* Shared logout control — recognizable icon plus label */
.app-icon-button.app-logout-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:auto;min-width:0;height:42px;min-height:42px;padding:0 13px;font-size:.76rem;font-weight:850;line-height:1;color:var(--app-blue-dark);white-space:nowrap}
.app-icon-button.app-logout-button svg{flex:0 0 18px;width:18px;height:18px}.app-icon-button.app-logout-button span{display:inline-block}

@media(max-width:760px){
  .portal-overview-grid{grid-template-columns:1fr}.portal-overview-grid .capacity-card,.portal-overview-grid .report-problem-card{min-height:0}.capacity-card-compact{grid-template-columns:1fr auto;gap:16px;padding:20px}.capacity-donut{width:112px;height:112px}.capacity-donut:after{width:82px;height:82px}.capacity-donut b{font-size:1.22rem}.report-problem-card-featured{padding:20px}
  .request-primary-grid{grid-template-columns:1fr}.request-description-field textarea,.request-photo-field .photo-upload{min-height:150px}
}
@media(max-width:520px){
  .capacity-card-compact{grid-template-columns:1fr auto}.capacity-card-copy>strong{font-size:2rem}.capacity-mini-stats{display:none}.capacity-donut{width:96px;height:96px}.capacity-donut:after{width:70px;height:70px}.capacity-donut b{font-size:1.05rem}.capacity-donut small{font-size:.58rem}.report-problem-card-featured{grid-template-columns:auto 1fr auto}.report-problem-card-featured .report-plus{width:48px;height:48px}.report-problem-card-featured strong{font-size:1rem}
  .app-icon-button.app-logout-button{padding:0 10px;font-size:.7rem;gap:6px}.app-icon-button.app-logout-button svg{width:17px;height:17px}
}


/* Patch 15 — precise alignment, compact actions and overflow-safe controls */
.request-primary-grid{
  grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);
  gap:16px;
  align-items:start;
}
.request-description-field,
.request-photo-field{
  min-width:0;
  align-self:start;
}
.request-description-field{
  display:grid!important;
  grid-template-rows:auto 180px auto;
  gap:7px;
}
.request-description-field textarea{
  width:100%;
  height:180px;
  min-height:180px;
  max-height:180px;
  margin:0;
}
.request-photo-field{
  display:grid;
  grid-template-rows:auto 180px auto auto;
  gap:7px;
}
.request-field-label{
  display:block;
  min-height:18px;
  font-size:.75rem;
  line-height:18px;
  font-weight:900;
  color:#42556d;
}
.request-photo-field .photo-upload{
  width:100%;
  height:180px;
  min-height:180px;
  margin:0;
  padding:20px!important;
  display:grid;
  place-content:center;
  gap:5px;
}
.request-description-field>.field-error,
.request-photo-field>.field-error{
  margin:0;
}
.request-photo-field .photo-preview:empty{display:none}

/* Do not turn desktop actions into unnecessarily full-width bars. */
.fast-request-form>.app-primary-button{
  width:auto;
  min-width:230px;
  max-width:100%;
  justify-self:start;
}

/* No label may ever escape its button or navigation item. */
.app-primary-button,
.app-secondary-button,
.app-icon-button,
.app-install,
.app-bottom-nav a,
.app-bottom-nav small{
  min-width:0;
  max-width:100%;
}
.app-primary-button,
.app-secondary-button,
.app-icon-button,
.app-install{
  white-space:normal;
  overflow-wrap:anywhere;
  word-break:normal;
  text-align:center;
  line-height:1.2;
}
.app-primary-button>span,
.app-secondary-button>span{
  flex:0 0 auto;
}
.app-bottom-nav a{
  overflow:hidden;
}
.app-bottom-nav small{
  display:block;
  width:100%;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  text-align:center;
}

@media(max-width:760px){
  .request-primary-grid{grid-template-columns:1fr}
  .request-description-field{grid-template-rows:auto 150px auto}
  .request-description-field textarea{height:150px;min-height:150px;max-height:none}
  .request-photo-field{grid-template-rows:auto 150px auto auto}
  .request-photo-field .photo-upload{height:150px;min-height:150px}
  .fast-request-form>.app-primary-button{width:100%;min-width:0;justify-self:stretch}
}


/* Patch 16 — deterministic field alignment and logout sizing */
.request-primary-grid{
  display:grid;
  grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr);
  gap:16px;
  align-items:start;
}
.request-field{
  min-width:0;
  display:grid;
  grid-template-rows:22px 180px auto;
  row-gap:7px;
  align-self:start;
}
.request-field-label{
  display:flex;
  align-items:flex-end;
  height:22px;
  min-height:22px;
  margin:0;
  padding:0 2px;
  font-size:.75rem;
  line-height:1;
  font-weight:900;
  color:#42556d;
}
.request-description-field textarea,
.request-photo-field .photo-upload{
  box-sizing:border-box;
  width:100%;
  height:180px;
  min-height:180px;
  max-height:180px;
  margin:0;
}
.request-description-field textarea{
  resize:none;
}
.request-photo-field .photo-upload{
  padding:20px!important;
  display:grid;
  place-content:center;
  gap:5px;
}
.request-field>.field-error{
  margin:0;
}
.request-photo-field .photo-preview:empty{
  display:none;
}

.app-top-actions form.app-logout-form{
  display:block;
  flex:0 0 auto;
  width:auto;
  margin:0;
  padding:0;
}
.app-logout-button{
  appearance:none;
  -webkit-appearance:none;
  box-sizing:border-box;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  width:auto;
  min-width:108px;
  max-width:none;
  height:42px;
  min-height:42px;
  margin:0;
  padding:0 14px;
  border:1px solid var(--app-line);
  border-radius:4px;
  background:#fff;
  color:var(--app-blue-dark);
  font:inherit;
  font-size:.76rem;
  font-weight:850;
  line-height:1;
  white-space:nowrap;
  cursor:pointer;
}
.app-logout-button svg{
  display:block;
  flex:0 0 18px;
  width:18px;
  height:18px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.9;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.app-logout-button span{
  display:block;
  flex:0 0 auto;
  white-space:nowrap;
}
.app-logout-button:hover{
  border-color:var(--app-blue);
  color:var(--app-blue);
}
.app-logout-button:focus-visible{
  outline:3px solid rgba(20,115,230,.2);
  outline-offset:2px;
}

@media(max-width:760px){
  .request-primary-grid{grid-template-columns:1fr}
  .request-field{grid-template-rows:22px 150px auto}
  .request-description-field textarea,
  .request-photo-field .photo-upload{
    height:150px;
    min-height:150px;
    max-height:150px;
  }
}
@media(max-width:520px){
  .app-logout-button{
    min-width:101px;
    height:40px;
    min-height:40px;
    padding:0 12px;
    gap:7px;
    font-size:.72rem;
  }
  .app-logout-button svg{width:17px;height:17px;flex-basis:17px}
}

/* Patch 17 — readable request controls and one-line app navigation */
.request-field-label,
.priority-picker legend,
.request-more summary,
.request-more label{
  font-size:.88rem;
  line-height:1.25;
}
.request-field-label{
  font-weight:850;
}
.compact-priority span{
  min-height:52px;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:12px 14px;
}
.compact-priority b{
  font-size:.86rem;
  line-height:1.2;
}
.request-more{
  padding:0 16px;
}
.request-more summary{
  padding:16px 0;
  font-weight:850;
}
.request-more[open]{
  padding-bottom:16px;
}
.request-more label{
  gap:9px;
  font-weight:850;
}
.request-more input{
  min-height:52px;
  padding:13px 14px;
  font-size:.95rem;
}
.photo-upload strong{
  font-size:1rem;
}
.photo-upload small{
  font-size:.78rem;
}

/* Bottom navigation: icon + label always sit on one line. */
.app-bottom-nav a{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  min-height:48px;
  padding:9px 12px;
  overflow:visible;
  white-space:nowrap;
}
.app-bottom-nav a>span{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex:0 0 auto;
  width:auto;
  height:auto;
  margin:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
  font-size:1.05rem;
  line-height:1;
}
.app-bottom-nav small{
  display:inline-block;
  width:auto;
  overflow:visible;
  text-overflow:clip;
  white-space:nowrap;
  text-align:left;
  font-size:.78rem;
  line-height:1.1;
  font-weight:850;
  margin:0;
}
.app-bottom-nav a.primary{
  background:var(--app-yellow);
  color:var(--app-text);
}
.app-bottom-nav a.primary>span{
  width:auto;
  height:auto;
  margin:0;
  background:transparent;
  box-shadow:none;
  font-size:1.08rem;
}
.app-bottom-nav a.primary small{
  margin:0;
}
.app-bottom-nav a.active:not(.primary){
  background:#eef6ff;
  color:var(--app-blue);
}

@media(min-width:760px){
  .app-bottom-nav{
    width:min(620px,calc(100% - 32px));
    min-width:0;
  }
  .app-bottom-nav a{
    max-width:none;
  }
}

@media(max-width:520px){
  .request-field-label,
  .priority-picker legend,
  .request-more summary,
  .request-more label{
    font-size:.84rem;
  }
  .compact-priority b{
    font-size:.82rem;
  }
  .app-bottom-nav{
    gap:4px;
  }
  .app-bottom-nav a{
    gap:5px;
    min-width:0;
    padding:8px 7px;
  }
  .app-bottom-nav a>span,
  .app-bottom-nav a.primary>span{
    font-size:1rem;
  }
  .app-bottom-nav small{
    font-size:.7rem;
  }
}


/* Familiar native-color emoji icons across client/admin/technician UI */
.app-emoji{font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif!important;font-weight:400!important;font-style:normal;line-height:1}
.photo-upload .photo-icon.app-emoji{font-size:1.8rem;color:inherit!important;filter:none}
.app-bottom-nav .app-nav-emoji{font-size:1.2rem;line-height:1;filter:none}
.app-bottom-nav a.primary>.app-nav-emoji{font-size:1.35rem}
.app-logout-emoji{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;font-size:1.15rem;line-height:1}
.app-logout-button .app-logout-emoji+span{display:inline-block}
@media(max-width:620px){.app-bottom-nav .app-nav-emoji{font-size:1.15rem}.app-bottom-nav a.primary>.app-nav-emoji{font-size:1.3rem}.app-logout-emoji{font-size:1.05rem}}


/* Client overview polish — full-width quick stats and cleaner section heading */
.portal-quick-stats{width:100%;grid-template-columns:minmax(0,1.05fr) minmax(320px,.95fr);gap:16px;align-items:stretch}
.portal-quick-stats article{min-width:0;min-height:112px;padding:18px 24px;align-content:center;justify-content:start}
.portal-quick-stats span{font-size:.74rem;font-weight:800;letter-spacing:.01em}
.portal-quick-stats strong{font-size:1.9rem;line-height:1.05;margin:7px 0 2px}
.portal-quick-stats small{font-size:.74rem;margin-top:0}
@media(max-width:760px){.portal-quick-stats{grid-template-columns:1fr}.portal-quick-stats article{min-height:0;padding:17px 20px}}

/* Client notifications */
.app-notification-button{position:relative;display:grid;place-items:center;flex:0 0 42px;width:42px;height:42px;border:1px solid var(--app-line);border-radius:4px;background:#fff;color:var(--app-blue-dark);text-decoration:none}.app-notification-button:hover{border-color:var(--app-blue);color:var(--app-blue)}.app-notification-button:focus-visible{outline:3px solid rgba(20,115,230,.2);outline-offset:2px}.app-notification-button svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.app-notification-badge{position:absolute;right:-6px;top:-6px;min-width:20px;height:20px;padding:0 5px;border-radius:999px;background:#e64040;color:#fff;border:2px solid #fff;font-size:.62rem;font-weight:950;line-height:16px;text-align:center;box-shadow:0 3px 10px rgba(230,64,64,.3)}.notification-list{display:grid;gap:12px}.notification-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:13px;align-items:center;background:#fff;border:1px solid var(--app-line);border-radius:4px;padding:18px 20px;color:var(--app-text);text-decoration:none;box-shadow:var(--app-shadow)}.notification-card:hover{border-color:#b7d3f5}.notification-card.is-unread{border-color:#b9d7fb;background:#fbfdff}.notification-status-dot{width:10px;height:10px;border-radius:50%;background:#c8d3df}.notification-card.is-unread .notification-status-dot{background:var(--app-blue);box-shadow:0 0 0 5px rgba(20,115,230,.1)}.notification-copy{display:grid;gap:5px;min-width:0}.notification-copy strong{font-size:.9rem;color:var(--app-text)}.notification-copy>span{font-size:.78rem;color:#4f6278;line-height:1.45}.notification-copy small{font-size:.65rem;color:var(--app-muted)}.notification-card>b{font-size:1.55rem;color:var(--app-blue);font-weight:700}@media(max-width:520px){.app-notification-button{width:40px;height:40px;flex-basis:40px}.notification-card{padding:16px;gap:11px}.notification-copy strong{font-size:.86rem}.notification-copy>span{font-size:.75rem}}

.booking-picker{display:grid;gap:16px;margin:20px 0}.booking-slots{border:0;padding:0;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:12px}.booking-slots legend{font-weight:700;margin-bottom:10px}.booking-slots label{position:relative;cursor:pointer}.booking-slots input{position:absolute;opacity:0;width:1px;height:1px}.booking-slots span{display:flex;flex-direction:column;gap:8px;padding:18px;border:2px solid #dbe5ef;border-radius:4px;background:#fff}.booking-slots input:checked+span{border-color:#0967c6;background:#edf6ff}.booking-slots input:focus-visible+span{outline:3px solid #0967c6;outline-offset:3px}.booking-slots input:disabled+span{opacity:.55;background:#edf0f4;cursor:not-allowed}.booking-slots small{font-size:14px}.finish-dialog{width:min(540px,calc(100% - 24px));max-height:calc(100dvh - 32px);overflow:auto;border:1px solid #dbe5ef;border-radius:4px;padding:24px;color:#102744;box-sizing:border-box}.finish-dialog::backdrop{background:rgb(10 30 55 / .55)}.finish-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:24px}.finish-dialog-head p{font-size:12px;font-weight:800;color:#0967c6}.finish-dialog-head h2{margin:4px 0;font-size:28px}.finish-dialog-head button{border:0;border-radius:4px;background:#edf6ff;font-size:28px;width:44px;height:44px;color:#0967c6;cursor:pointer}.finish-dialog .app-form{display:grid;gap:20px}.finish-dialog small{font-size:14px;font-weight:400}.finish-dialog .app-primary-button{white-space:normal}

.request-state-filters{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 22px}.request-state-filters a{display:flex;align-items:center;gap:8px;min-height:44px;padding:10px 14px;border:1px solid var(--app-line);border-radius:4px;background:#fff;color:#526379;text-decoration:none;font-size:14px;font-weight:800}.request-state-filters a.is-active{background:#edf5ff;border-color:#bfd6ee;color:#245684}.request-state-filters b{display:grid;place-items:center;min-width:22px;padding:1px 5px;border-radius:4px;background:rgba(100,130,170,.13);font-size:12px}.request-state-filters a.is-active b{background:#dceafb;color:#245684}.request-state-filters a:focus-visible{outline:3px solid #1473e6;outline-offset:3px}.request-card-main .request-plan-summary{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:8px}.request-card-main .request-plan-summary span{font-size:14px;line-height:1.5;color:#42556d;white-space:normal}.request-cards .request-card-main{flex:1;min-width:0}@media(max-width:520px){.request-state-filters a{padding:9px 10px;font-size:13px}.request-card-main .request-plan-summary{display:grid;gap:3px}}

[data-booking-message]:empty{display:none}

/* Shared form typography, including fields nested inside grids and dialogs. */
.mobile-app{--form-label-size:15px;--form-label-weight:600;--form-input-size:16px;--form-input-weight:400}
.mobile-app form label,
.mobile-app form legend,
.mobile-app .request-field-label{
 font-family:inherit;font-size:var(--form-label-size);font-weight:var(--form-label-weight);line-height:1.5;letter-spacing:normal;color:#42556d;
}
.mobile-app .app-form label:not(:has(input[type="checkbox"],input[type="radio"],input[type="file"])){display:grid;gap:8px}
.mobile-app form input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"]),
.mobile-app form textarea,
.mobile-app form select{
 font-family:inherit;font-size:var(--form-input-size);font-weight:var(--form-input-weight);line-height:1.5;letter-spacing:normal;color:var(--app-text);
}
.mobile-app form input::placeholder,.mobile-app form textarea::placeholder{font-family:inherit;font-size:var(--form-input-size);font-weight:400;color:#7b8796;opacity:1}
.mobile-app form .field-error{font-size:13px;font-weight:500;line-height:1.5}

.photo-source-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.mobile-app .photo-source-options .photo-upload{min-height:140px;padding:18px 10px!important;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px}.mobile-app .photo-source-options .photo-upload strong{font-size:15px;font-weight:600;line-height:1.4}.photo-source-options .photo-icon{font-size:28px}

/* Consistent date affordance; retain the native date picker and keyboard entry. */
.mobile-app .booking-date-control{position:relative;display:block;min-width:0}
.mobile-app .booking-date-control input[type="date"]{position:relative;display:block;width:100%;min-width:0;min-height:52px;appearance:none;-webkit-appearance:none;padding-right:64px;background-color:#fff}
.mobile-app .booking-date-icon{position:absolute;right:12px;top:50%;transform:translateY(-50%);width:34px;height:34px;display:grid;place-items:center;border-radius:4px;background:#edf5ff;color:#0967c6;pointer-events:none}
.mobile-app .booking-date-icon svg{width:20px;height:20px}
.mobile-app .booking-date-control input::-webkit-calendar-picker-indicator{position:absolute;right:8px;top:0;width:44px;height:100%;margin:0;padding:0;opacity:0;cursor:pointer}
.mobile-app .booking-date-control:focus-within .booking-date-icon{background:#dcecff}

/* Shared affordance for dropdowns, dates and months in every application role. */
.mobile-app select:not([multiple]):not([size]),
.mobile-app select[size="1"]:not([multiple]),
.mobile-app input:is([type="date"],[type="month"],[type="week"],[type="time"],[type="datetime-local"]){
 appearance:none;-webkit-appearance:none;padding-right:64px;
 background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='34' height='34' viewBox='0 0 34 34'%3E%3Crect width='34' height='34' rx='10' fill='%23edf5ff'/%3E%3Cpath d='m12 14.5 5 5 5-5' fill='none' stroke='%230967c6' stroke-width='1.667' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
 background-repeat:no-repeat;background-position:right 12px center;background-size:34px 34px;
}
.mobile-app input:is([type="date"],[type="month"],[type="week"],[type="time"],[type="datetime-local"]){position:relative;min-width:0;min-height:52px}
.mobile-app input:is([type="date"],[type="month"],[type="week"],[type="time"],[type="datetime-local"])::-webkit-calendar-picker-indicator{position:absolute;right:8px;top:0;width:44px;height:100%;margin:0;padding:0;opacity:0;cursor:pointer}
.mobile-app .booking-date-icon{display:none}
@media(forced-colors:active){
 .mobile-app select:not([multiple]):not([size]),.mobile-app select[size="1"]:not([multiple]),.mobile-app input:is([type="date"],[type="month"],[type="week"],[type="time"],[type="datetime-local"]){appearance:auto;-webkit-appearance:auto;background-image:none;padding-right:14px}
 .mobile-app input:is([type="date"],[type="month"],[type="week"],[type="time"],[type="datetime-local"])::-webkit-calendar-picker-indicator{position:static;width:auto;height:auto;opacity:1}
}

/* Equal-width request filters across the entire content area. */
.mobile-app .request-state-filters{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);width:100%}
.mobile-app .request-state-filters a{min-width:0;justify-content:center;text-align:center;white-space:normal;overflow-wrap:anywhere}
.mobile-app .request-state-filters a>span{min-width:0}
.mobile-app .request-state-filters b{flex-shrink:0}
@media(max-width:380px){.mobile-app .request-state-filters a{padding:9px 6px;gap:5px;font-size:12px}}

/* Request status tiles: intact labels, responsive rows, no mid-word wrapping. */
.mobile-app .request-status-tabs a{overflow-wrap:normal;word-break:normal}
.mobile-app .request-status-tabs a>span{white-space:nowrap}
@media(max-width:760px){
 .mobile-app .request-status-tabs{grid-auto-flow:row;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
 .mobile-app .request-status-tabs a{flex-direction:column;justify-content:center;gap:8px;padding:12px 8px;min-height:78px;font-size:14px;line-height:1.3}
 .mobile-app .request-status-tabs a:last-child:nth-child(odd){grid-column:1/-1}
 .mobile-app .request-status-tabs b{min-width:28px;font-size:13px}
}

/* Three request states share one row; additional cancellation stays separate. */
@media(max-width:760px){
 .mobile-app .request-status-tabs{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
 .mobile-app .request-status-tabs a:last-child:nth-child(odd){grid-column:auto}
 .mobile-app .request-status-tabs a{padding:12px 5px;font-size:13px}
 .mobile-app .request-status-tabs a>span{white-space:normal;word-break:normal;overflow-wrap:normal}
}

/* SVG presentation attributes work with the strict Content Security Policy. */
.capacity-donut{background:none;box-shadow:none}
.capacity-donut:after{display:none}
.capacity-usage-svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}
.capacity-usage-svg circle{fill:none;stroke-width:14}
.capacity-ring-track{stroke:#e3ebf4}
.capacity-ring-used{stroke:var(--app-blue)}
.capacity-mini-stats{display:flex;flex-wrap:wrap}


.detail-card dl>.request-technician-contact{align-items:flex-start}
.request-technician-contact dt{flex-shrink:0}
.request-technician-contact dd{display:grid;gap:8px;min-width:0;overflow-wrap:anywhere}
.request-technician-contact a{justify-self:end;max-width:100%;min-width:0;padding:3px 0;color:var(--app-blue-dark);text-decoration:underline;text-underline-offset:3px}

.capacity-donut.capacity-ok .capacity-ring-used {
    stroke: var(--app-blue);
}

.capacity-donut.capacity-low .capacity-ring-used {
    stroke: #f59e0b;
}

.capacity-donut.capacity-empty .capacity-ring-used {
    stroke: #dc2626;
}



/* Compact support links belong to the shared sticky client header. */
.client-direct-contact{border-top:1px solid #edf2f7;background:#f7faff}
.client-direct-links{width:calc(100% - 24px);max-width:1400px;margin:0 auto;padding:5px 0;display:flex;align-items:center;justify-content:flex-start;flex-wrap:wrap;gap:2px 20px}
.client-direct-links a{display:inline-flex;align-items:center;gap:6px;padding:2px 0;color:var(--app-blue-dark);font-size:12px;font-weight:500;line-height:18px;text-decoration:none;white-space:nowrap}
.client-direct-links a:hover{text-decoration:underline;text-underline-offset:3px}
.client-direct-links a:focus-visible{outline:2px solid var(--app-blue);outline-offset:2px;border-radius:3px}
.client-direct-icon{display:flex;flex:0 0 13px;color:var(--app-blue)}
.client-direct-icon svg{width:13px;height:13px}
@media(min-width:1100px){.client-direct-links{width:calc(100% - 64px)}.client-direct-links a{font-size:13px}}

/* Notification delivery state is visible in the shared header on every screen. */
.app-notification-button .notification-bell-off{display:none}
.app-notification-button[data-notification-mode="on"]{color:var(--app-blue)}
.app-notification-button[data-notification-mode="muted"]{color:var(--app-orange)}
.app-notification-button[data-notification-mode="off"]{color:var(--app-red)}
.app-notification-button:is([data-notification-mode="muted"],[data-notification-mode="off"]) .notification-bell-on{display:none}
.app-notification-button:is([data-notification-mode="muted"],[data-notification-mode="off"]) .notification-bell-off{display:inline}
.app-notification-button:is([data-notification-mode="muted"],[data-notification-mode="off"]):hover{border-color:currentColor}

.client-app .booking-slots input:checked:not(:disabled)+span{border-color:var(--app-green);background:#fff}.client-app .booking-slots input:focus-visible+span{outline-color:var(--app-green)}
.finish-dialog .finish-extra-hours{border:1px solid var(--app-line);border-radius:4px;background:#fff;overflow:hidden}
.finish-dialog .finish-extra-hours>summary{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;cursor:pointer;list-style:none;color:var(--app-text);font-weight:600}
.finish-dialog .finish-extra-hours>summary::-webkit-details-marker{display:none}
.finish-dialog .finish-extra-hours>summary::marker{content:""}
.finish-dialog .finish-extra-hours>summary:focus-visible{outline:2px solid var(--app-blue-dark);outline-offset:-3px;border-radius:4px}
.finish-dialog .finish-extra-toggle{position:relative;flex:0 0 30px;width:30px;height:30px;border-radius:4px;background:var(--app-yellow);color:var(--app-text)}
.finish-dialog .finish-extra-toggle::before,.finish-dialog .finish-extra-toggle::after{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:currentColor;border-radius:1px}
.finish-dialog .finish-extra-toggle::before{width:12px;height:2px}
.finish-dialog .finish-extra-toggle::after{width:2px;height:12px}
.finish-dialog .finish-extra-hours[open] .finish-extra-toggle::after{display:none}
.finish-dialog .finish-extra-hours[open]>summary{border-bottom:1px solid var(--app-line)}
.finish-dialog .finish-extra-fields{padding:16px}

/* Program scope is shared by onboarding and subscription screens. */
.program-options{display:grid;gap:16px;margin:20px 0}
.program-option{border:1px solid #0d4c95;border-radius:4px;padding:18px;background:#fff}
.program-option h3{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 12px;font-size:18px;color:#0b2748}
.program-option h3 span{font-size:15px;font-weight:400}
.program-option p{margin:8px 0;font-size:15px;line-height:1.55}
.program-option .subscription-benefits{margin:12px 0;font-size:15px}
.program-capacity-note{margin-bottom:24px;font-size:15px;line-height:1.6}
