.login-shell{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;padding-top:max(24px,var(--safe-top));padding-left:max(24px,var(--safe-left));padding-right:max(24px,var(--safe-right));padding-bottom:max(24px,var(--safe-bottom));background:linear-gradient(135deg,#eff6ff,#f0fdf4)}.login-shell--technician{background:linear-gradient(165deg,var(--bg) 0%,#0c1929 45%,#111827 100%)}.login-shell__intro{text-align:center;margin-bottom:48px}.login-shell__tagline{margin-top:8px;color:#6b7280;font-size:16px}.login-shell--technician .login-shell__tagline{color:var(--muted)}.login-shell__footer{margin-top:40px;font-size:12px;color:#9ca3af}.login-shell--technician .login-shell__footer{color:var(--muted)}.login-card{background:#fff;border-radius:16px;padding:36px 32px;width:100%;max-width:400px;box-shadow:0 4px 24px #00000014}.login-shell--technician .login-card{background:var(--surface);border:1px solid var(--border);box-shadow:0 12px 40px #00000073}.login-card__head{text-align:center;margin-bottom:28px}.login-card__role{margin-top:6px;font-size:13px;font-weight:600}.login-google-btn{width:100%;padding:12px 16px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;color:#1f2937;font-weight:600;font-size:14px;display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:20px;box-shadow:0 1px 2px #0000000f;cursor:pointer;font-family:inherit;transition:opacity .15s,border-color .15s}.login-shell--technician .login-google-btn{background:var(--bg);border-color:var(--border);color:var(--text);box-shadow:none}.login-google-btn:disabled{opacity:.45;cursor:not-allowed}.login-divider{display:flex;align-items:center;gap:10px;margin-bottom:20px}.login-divider__line{flex:1;height:1px;background:#e2e8f0}.login-shell--technician .login-divider__line{background:var(--border)}.login-divider__text{font-size:12px;color:#9ca3af}.login-shell--technician .login-divider__text{color:var(--muted)}.login-label{font-size:12px;font-weight:600;color:#374151;display:block;margin-bottom:4px}.login-shell--technician .login-label{color:var(--text)}.login-consent{display:flex;gap:10px;align-items:flex-start;cursor:pointer;padding:10px 12px;border-radius:8px}.login-consent--owner{background:#f0fdf4;border:1px solid #bbf7d0}.login-consent--tech{background:#3b82f614;border:1px solid var(--border)}.login-consent__text{font-size:12px;color:#374151;line-height:1.5}.login-shell--technician .login-consent__text{color:var(--muted)}.login-error{background:#fef2f2;border:1px solid #fca5a5;border-radius:6px;padding:8px 12px;color:#b91c1c;font-size:13px}.login-shell--technician .login-error{background:#ef44441f;border-color:#ef444459;color:#fca5a5}.login-muted{color:#6b7280}.login-shell--technician .login-muted{color:var(--muted)}.login-text{color:#374151}.login-shell--technician .login-text{color:var(--text)}.login-link-muted{background:none;border:none;color:#9ca3af;cursor:pointer;font-size:12px;font-family:inherit}.login-shell--technician .login-link-muted{color:var(--muted)}.login-link-muted--sm{font-size:13px}.login-role-card{background:#fff;border:2px solid #e2e8f0;border-radius:16px;padding:32px 28px;cursor:pointer;text-align:left;width:260px;transition:border-color .15s,box-shadow .15s;box-shadow:0 1px 3px #0000000f;font-family:inherit}.login-role-card--tech{background:linear-gradient(160deg,#1a2332,#0f1419);border-color:#2d3a4d;color:var(--text)}.login-role-card--tech .login-role-card__title{color:var(--text)}.login-role-card--tech .login-role-card__desc{color:var(--muted)}.login-role-card__icon{font-size:36px;margin-bottom:12px}.login-role-card__title{font-weight:700;font-size:17px;color:#111827;margin-bottom:8px}.login-role-card__desc{margin:0;font-size:13px;color:#6b7280;line-height:1.5}.login-role-card__cta{margin-top:20px;font-size:13px;font-weight:600}.login-role-cards{display:flex;gap:20px;flex-wrap:wrap;justify-content:center;max-width:920px}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}:root{--bg: #0f1419;--surface: #1a2332;--border: #2d3a4d;--text: #e6edf3;--muted: #8b9cb3;--accent: #3b82f6;--success: #22c55e;--warn: #eab308;--danger: #ef4444;font-family:Segoe UI,system-ui,sans-serif;line-height:1.5;color:var(--text);background:var(--bg);--touch-min: 44px}[data-theme=light]{--bg: #f8fafc;--surface: #ffffff;--border: #e2e8f0;--text: #0f172a;--muted: #64748b;--accent: #2563eb;--success: #16a34a;--warn: #ca8a04;--danger: #dc2626;color:var(--text);background:var(--bg)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;min-height:100vh;min-height:100dvh}#root{min-height:100vh;min-height:100dvh}button{font:inherit;cursor:pointer;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--text);padding:.5rem 1rem;min-height:var(--touch-min);min-width:var(--touch-min)}@media (min-width: 768px){button{min-height:0;min-width:0}}button:hover{background:#243044}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover{filter:brightness(1.1)}input,select,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:.5rem .75rem;width:100%;min-height:var(--touch-min)}@media (max-width: 767px){input,select,textarea{font-size:16px}}@media (min-width: 768px){input,select,textarea{min-height:0}}input::placeholder,textarea::placeholder{color:var(--muted)}input[type=checkbox],input[type=radio]{-moz-appearance:auto;appearance:auto;-webkit-appearance:auto;width:auto;min-height:0;padding:0;margin:0;border:none;border-radius:0;background:none;accent-color:var(--accent);flex:0 0 auto}label{display:block;font-size:.875rem;color:var(--muted);margin-bottom:.25rem}select{cursor:pointer}.prop-switcher{margin-bottom:4px}.prop-switcher__row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.prop-switcher__pill{border:1px solid #e2e8f0;background:#fff;color:#374151;border-radius:999px;padding:6px 14px;font-size:13px;font-weight:500;cursor:pointer;min-height:0}.prop-switcher__pill--active{background:#eff6ff;border-color:#93c5fd;color:#1d4ed8;font-weight:600}.prop-switcher__add{border:1px dashed #93c5fd;background:transparent;color:#2563eb;border-radius:999px;padding:6px 14px;font-size:13px;font-weight:600;cursor:pointer;min-height:0}.prop-switcher__manage{margin-top:8px;background:none;border:none;padding:0;font-size:12px;color:#6b7280;cursor:pointer;min-height:0;text-decoration:underline}.prop-portfolio-card{text-align:left;width:100%;padding:16px;border:1px solid #e2e8f0;border-radius:12px;background:#fff;cursor:pointer;transition:border-color .15s}.prop-portfolio-card:hover{border-color:#2563eb}.prop-portfolio-card__name{font-weight:700;font-size:15px;color:#111827}.prop-portfolio-card__addr{font-size:12px;color:#6b7280;margin-top:4px}.prop-portfolio-card__stats{display:flex;flex-wrap:wrap;gap:6px 10px;margin-top:10px;font-size:12px;color:#374151}.prop-portfolio-card__warn{color:#dc2626;font-weight:600}.prop-portfolio-card__warranty{color:#b45309;font-weight:600}.portfolio-attention{margin-top:20px}.portfolio-attention__title{margin:0 0 10px;font-size:15px;font-weight:700;color:#111827}.portfolio-attention__list{list-style:none;margin:0;padding:0;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden;background:#fff}.portfolio-attention__item{display:flex;align-items:center;gap:10px;padding:10px 14px;border-top:1px solid #f1f5f9;font-size:13px;color:#374151}.portfolio-attention__item:first-child{border-top:none}.portfolio-attention__dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.portfolio-attention__item--overdue .portfolio-attention__dot{background:#ef4444}.portfolio-attention__item--warranty .portfolio-attention__dot{background:#f59e0b}.portfolio-attention__main{flex:1;min-width:0}.portfolio-attention__where{color:#6b7280}.portfolio-attention__detail{flex-shrink:0;font-size:12px;color:#6b7280;white-space:nowrap}.portfolio-attention__more{margin:8px 0 0;font-size:12px;color:#6b7280}.prop-tech-link{font-size:13px;font-weight:600;color:#2563eb;text-decoration:none;padding:8px 14px;border:1px solid #93c5fd;border-radius:8px;background:#eff6ff}.prop-inline-link{background:none;border:none;padding:0;color:#2563eb;cursor:pointer;font-weight:600;font-size:13px;min-height:0}.prop-diy-badge{font-size:11px;background:#f0fdf4;color:#059669;border-radius:4px;padding:2px 6px}.prop-manage-row{display:flex;gap:12px;align-items:flex-start;padding:12px;border:1px solid var(--border);border-radius:8px;background:var(--bg)}@media (pointer: coarse){input,select,textarea{font-size:16px!important}}:root{--bp-sm: 480px;--bp-md: 768px;--bp-lg: 1024px;--bp-xl: 1280px;--touch-min: 44px;--spacing-touch: .75rem;--safe-top: var(--safe-area-inset-top, env(safe-area-inset-top, 0px));--safe-right: var(--safe-area-inset-right, env(safe-area-inset-right, 0px));--safe-bottom: var(--safe-area-inset-bottom, env(safe-area-inset-bottom, 0px));--safe-left: var(--safe-area-inset-left, env(safe-area-inset-left, 0px));--container-max: 1200px;--container-padding: 1rem}@media (min-width: 480px){:root{--container-padding: 1.25rem}}@media (min-width: 768px){:root{--container-padding: 1.5rem}}.tech-welcome-banner{margin:0;padding:.5rem var(--container-padding);padding-left:max(var(--container-padding),var(--safe-left));padding-right:max(var(--container-padding),var(--safe-right));font-size:.875rem;color:var(--muted);background:var(--surface, var(--bg));border-bottom:1px solid var(--border)}.tech-welcome-banner strong{color:var(--text);font-weight:600}.tech-welcome-banner__email{font-size:.8125rem}.lay-shell{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}.lay-header{flex-shrink:0;padding:var(--spacing-touch) var(--container-padding);padding-top:max(var(--spacing-touch),var(--safe-top));padding-left:max(var(--container-padding),var(--safe-left));padding-right:max(var(--container-padding),var(--safe-right));border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:.75rem}@media (min-width: 768px){.lay-header{flex-direction:row;align-items:center;justify-content:space-between}}.lay-header__top{display:flex;align-items:center;justify-content:flex-start;gap:.75rem;width:100%}@media (min-width: 768px){.lay-header__top{width:auto;flex:0 0 auto}}.lay-header__brand{margin:0;font-size:clamp(1.1rem,4vw,1.25rem);font-weight:600}.header-menu-btn{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--touch-min);min-width:var(--touch-min);height:var(--touch-min);padding:0;border:1px solid var(--border);border-radius:8px;background:var(--surface, var(--bg));color:var(--text);cursor:pointer}.header-menu-btn__icon{display:block}.lay-header__menu--mobile{display:inline-flex}@media (min-width: 768px){.lay-header__menu--mobile{display:none}}.equiptic-logo{flex-shrink:0}.lay-header__actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:36px;min-width:36px;height:36px;padding:0;font-size:16px;line-height:1;border-radius:8px;cursor:pointer}@media (min-width: 480px){.lay-header__actions{gap:.75rem}}.lay-main{flex:1;width:100%;max-width:var(--container-max);margin:0 auto;padding:var(--container-padding);padding-bottom:max(var(--container-padding),var(--safe-bottom));overflow-x:hidden}.lay-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;padding:var(--container-padding);padding-left:max(var(--container-padding),var(--safe-left));padding-right:max(var(--container-padding),var(--safe-right));padding-bottom:max(var(--container-padding),var(--safe-bottom));display:flex;align-items:center;justify-content:center;overflow:auto}.resp-show-md{display:none}@media (min-width: 768px){.resp-show-md{display:block}}.resp-hide-md{display:block}@media (min-width: 768px){.resp-hide-md{display:none}}.resp-stack{display:flex;flex-direction:column;gap:.75rem}@media (min-width: 768px){.resp-stack{flex-direction:row;align-items:center}}.resp-grid-2{display:grid;gap:.75rem;grid-template-columns:1fr}@media (min-width: 480px){.resp-grid-2{grid-template-columns:repeat(2,1fr)}}.resp-grid-3{display:grid;gap:.75rem;grid-template-columns:1fr}@media (min-width: 480px){.resp-grid-3{grid-template-columns:repeat(2,1fr)}}@media (min-width: 768px){.resp-grid-3{grid-template-columns:repeat(3,1fr)}}.form-stack{display:flex;flex-direction:column;gap:1rem}.form-row-2{display:grid;gap:.75rem;grid-template-columns:1fr}@media (min-width: 480px){.form-row-2{grid-template-columns:1fr 1fr}}.form-row-inline{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.form-row-inline input{flex:1;min-width:120px}.mobile-menu.lay-overlay{align-items:flex-start;justify-content:flex-start;padding:0}.mobile-menu__backdrop{position:absolute;top:0;right:0;bottom:0;left:0;border:none;background:#0003;min-height:0;min-width:0;border-radius:0;padding:0}.mobile-menu__panel{position:fixed;z-index:101;top:calc(max(var(--safe-top),var(--spacing-touch)) + var(--touch-min) + .5rem);left:max(var(--container-padding),var(--safe-left));width:max-content;min-width:11.5rem;max-width:min(18rem,calc(100vw - max(var(--container-padding),var(--safe-left)) - 1rem));max-height:min(70dvh,calc(100dvh - 5rem));margin:0;background:var(--surface);border-radius:12px;border:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden;box-shadow:0 8px 24px #00000024}.mobile-menu__body{display:flex;flex-direction:column;gap:.125rem;padding:.375rem;overflow-y:auto;-webkit-overflow-scrolling:touch}.mobile-menu__body a,.mobile-menu__body button{width:100%;text-align:left;justify-content:flex-start;white-space:nowrap;padding:.625rem .875rem;min-height:var(--touch-min);border:none;background:transparent;border-radius:8px}.mobile-menu__body a:hover,.mobile-menu__body button:hover{background:color-mix(in srgb,var(--border) 35%,transparent)}.lay-header__actions--desktop{display:none}.lay-header__actions--mobile{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;width:100%}@media (min-width: 768px){.lay-header__actions--desktop{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.lay-header__actions--mobile{display:none}}html{overflow-x:hidden}body,#root{overflow-x:hidden;max-width:100%}.lay-shell,.portal-shell{max-width:100%;overflow-x:hidden}.portal-main,.lay-main,.modal-body,.overlay-panel__body{overflow-wrap:anywhere;word-break:break-word}img,video,svg,canvas{max-width:100%;height:auto}pre{max-width:100%;overflow-x:auto;white-space:pre-wrap;word-break:break-word}.dash{display:flex;flex-direction:column;gap:1.25rem}@media (min-width: 768px){.dash{gap:1.5rem}}.dash-tip{padding:1rem 1.25rem;background:var(--surface);border-radius:12px;border:1px solid var(--border);font-size:.9rem;color:var(--muted)}.dash-stats{display:flex;flex-wrap:wrap;gap:1rem}.dash-stat-label{color:var(--muted);font-size:.85rem}.dash-stat-value{font-size:clamp(1.25rem,4vw,1.5rem);font-weight:700}.dash-slots{display:grid;gap:1rem}.dash-slot{background:var(--surface);border-radius:12px;border:1px solid var(--border);overflow:hidden}.dash-slot__head{padding:.75rem 1rem;border-bottom:1px solid var(--border);font-weight:600;font-size:.95rem}.dash-slot__body{padding:.5rem}.dash-unassigned{background:var(--surface);border-radius:12px;border:1px solid var(--border);padding:1rem}.dash-unassigned h3{margin:0 0 .75rem;font-size:1rem}.job-card{display:flex;flex-direction:column;gap:.75rem;padding:.75rem;border-radius:8px;background:var(--bg);border:1px solid var(--border);margin-bottom:.5rem}@media (min-width: 480px){.job-card{flex-direction:row;align-items:flex-start}}.job-card__main{flex:1;min-width:0}.job-card__title{font-weight:600;margin-bottom:.25rem}.job-card__address{font-size:.85rem;color:var(--muted)}.job-card__actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.5rem}.job-card__actions select{min-width:0;width:100%}@media (min-width: 360px){.job-card__actions select{width:auto;min-width:100px}}.job-card__accept{width:100%;display:flex;flex-direction:column;gap:.5rem}.job-card__accept-fields{display:flex;flex-wrap:wrap;gap:.5rem}.job-card__accept-fields label{display:flex;flex-direction:column;gap:2px;font-size:.72rem;color:var(--muted);flex:1 1 120px}.job-card__accept-fields input,.job-card__accept-fields select{width:100%;min-width:0}.job-card__accept-actions{display:flex;gap:.5rem}.job-card__actions-row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.job-card__badge{font-size:.8rem;padding:.2rem .5rem;border-radius:6px}.job-card__toolbar{display:flex;gap:.35rem;flex-shrink:0}.job-card__toolbar button{min-width:var(--touch-min);min-height:var(--touch-min)}@media (min-width: 768px){.job-card__toolbar button{min-width:0;min-height:0}}.overlay-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:100;padding:var(--container-padding);padding-left:max(var(--container-padding),var(--safe-left));padding-right:max(var(--container-padding),var(--safe-right));padding-top:max(var(--container-padding),var(--safe-top));padding-bottom:max(var(--container-padding),var(--safe-bottom));display:flex;align-items:center;justify-content:center;overflow:hidden;-webkit-overflow-scrolling:touch}.overlay-panel{background:var(--surface);border-radius:12px;border:1px solid var(--border);width:100%;max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - 2 * var(--container-padding));overflow:hidden;display:flex;flex-direction:column}@media (min-width: 480px){.overlay-panel{max-width:420px;max-height:90vh;max-height:90dvh}}.overlay-panel--wide{max-width:420px}@media (min-width: 480px){.overlay-panel--wide{max-width:480px}}.overlay-panel__header{flex-shrink:0;padding:1rem 1.25rem;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;gap:.75rem}.overlay-panel__title{margin:0;font-size:clamp(1rem,3vw,1.1rem)}.overlay-panel__body{flex:1;overflow-y:auto;min-height:0;padding:1.25rem;display:flex;flex-direction:column}.overlay-panel__footer{flex-shrink:0;padding:1rem 1.25rem;border-top:1px solid var(--border);display:flex;gap:.75rem;justify-content:flex-end;flex-wrap:wrap}.overlay-panel__close{min-width:var(--touch-min);min-height:var(--touch-min);padding:0;display:inline-flex;align-items:center;justify-content:center}@media (min-width: 768px){.overlay-panel__close{min-width:0;min-height:0}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;z-index:200;padding:var(--container-padding);padding-left:max(var(--container-padding),var(--safe-left));padding-right:max(var(--container-padding),var(--safe-right));padding-top:max(var(--container-padding),var(--safe-top));padding-bottom:max(var(--container-padding),var(--safe-bottom));display:flex;align-items:center;justify-content:center;overflow:hidden;-webkit-overflow-scrolling:touch}.modal{background:var(--surface);border:1px solid var(--border);border-radius:12px;width:100%;max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - 2 * var(--container-padding));display:flex;flex-direction:column;overflow:hidden}@media (min-width: 480px){.modal{max-height:92dvh}}.modal-header{flex-shrink:0;padding:1rem 1.25rem;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;gap:.75rem}.modal-header h2{margin:0;font-size:clamp(1rem,3vw,1.1rem);color:var(--text)}.modal-body{flex:1;overflow-y:auto;padding:1.25rem;-webkit-overflow-scrolling:touch;min-height:0}.modal-footer{flex-shrink:0;padding:.75rem 1.25rem 1.25rem;border-top:1px solid var(--border)}.modal--passport{height:min(75dvh,680px)}.modal--passport .modal-body--passport{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden}@media (max-width: 639px){.modal-backdrop:has(.modal--scroll-form){align-items:flex-end;justify-content:center;padding:0;padding-bottom:env(safe-area-inset-bottom,0)}.modal-backdrop .modal--scroll-form{width:100%;max-width:100%;max-height:min(92dvh,calc(100dvh - env(safe-area-inset-top,0px)));height:min(92dvh,calc(100dvh - env(safe-area-inset-top,0px)));border-radius:16px 16px 0 0;border-bottom:none;margin:0}.modal-backdrop .modal--scroll-form .modal-body{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch}.modal-backdrop .modal--scroll-form .modal-footer{flex-shrink:0;padding-bottom:max(.75rem,env(safe-area-inset-bottom,0px))}}.modal-body__loading{display:flex;align-items:center;justify-content:center;min-height:100%;color:var(--muted);font-size:14px}.modal-tabs{display:flex;flex-shrink:0;overflow-x:auto;border-bottom:1px solid var(--border);-webkit-overflow-scrolling:touch}.modal-tabs__btn{border:none;border-bottom:2px solid transparent;background:none;border-radius:0;padding:10px 14px;font-size:13px;white-space:nowrap;font-weight:400;color:var(--muted);cursor:pointer;min-height:0;flex-shrink:0;font-family:inherit}.modal-tabs__btn--active{border-bottom-color:var(--accent);font-weight:600;color:var(--accent)}.modal-close{min-width:var(--touch-min);min-height:var(--touch-min);padding:0;display:inline-flex;align-items:center;justify-content:center;background:none;border:none;color:var(--muted);font-size:1rem;cursor:pointer}@media (min-width: 768px){.modal-close{min-width:0;min-height:0}}.form-grid-2{display:grid;gap:.75rem;grid-template-columns:1fr}@media (min-width: 480px){.form-grid-2{grid-template-columns:1fr 1fr}}.stat-row{display:grid;gap:.75rem;grid-template-columns:repeat(2,1fr)}@media (min-width: 600px){.stat-row{grid-template-columns:repeat(4,1fr)}}.diagnose-dropzone{border:2px dashed var(--border);border-radius:8px;padding:16px;text-align:center;cursor:pointer;background:var(--bg);width:100%;box-sizing:border-box;min-height:120px;max-height:240px;display:flex;align-items:center;justify-content:center;overflow:hidden}.diagnose-dropzone--has-image{background:#000;padding:8px}.diagnose-dropzone__img{display:block;max-height:220px;max-width:100%;width:auto;height:auto;object-fit:contain;border-radius:6px}.diagnose-preview-compact{display:flex;align-items:center;gap:12px;padding:10px 12px;background:var(--bg);border:1px solid var(--border);border-radius:8px}.diagnose-preview-compact__img{width:52px;height:52px;object-fit:cover;border-radius:6px;flex-shrink:0;display:block}.diagnose-preview-compact__label{flex:1;min-width:0;font-size:13px;color:var(--muted)}.diagnose-native-preview{width:100%;max-height:240px;display:flex;align-items:center;justify-content:center;overflow:hidden;border-radius:8px;background:#000}.diagnose-native-preview__img{display:block;max-height:220px;max-width:100%;width:auto;height:auto;object-fit:contain;border-radius:8px}.book-page{min-height:100vh;min-height:100dvh;padding:var(--container-padding);padding-left:max(var(--container-padding),var(--safe-left));padding-right:max(var(--container-padding),var(--safe-right));display:flex;align-items:center;justify-content:center}.book-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.5rem;max-width:420px;width:100%}.book-card--success{border-color:var(--success)}.book-card--error{border-color:var(--danger)}.book-card h1{margin:0 0 .5rem;font-size:1.25rem}.book-sub,.book-muted{color:var(--muted);font-size:.9rem;margin:0 0 1rem}.book-slots{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.25rem}.book-slot{display:inline-flex;align-items:center;gap:.35rem;padding:.5rem .75rem;border:1px solid var(--border);border-radius:8px;cursor:pointer;background:var(--bg)}.book-slot input{width:auto;margin:0}.book-slot--full{opacity:.6;cursor:not-allowed}.book-slot small{color:var(--muted);font-size:.8rem;margin-left:.25rem}.book-privacy-notice{display:flex;gap:10px;align-items:flex-start;margin:16px 0 0;font-size:12px;line-height:1.55;color:var(--muted)}.book-privacy-notice input{margin-top:3px;flex-shrink:0;width:auto}.book-privacy-notice a{color:var(--accent)}.book-actions{display:flex;align-items:center;gap:.75rem;margin-top:.5rem}.book-card a{color:var(--accent);font-size:.9rem}.book-card a:hover{text-decoration:underline}.book-card--wide{max-width:640px}.book-back{display:inline-block;background:none;border:none;padding:0;margin:0 0 12px;color:var(--accent);font-size:.85rem;cursor:pointer;min-height:0;text-decoration:none}.book-back:hover{text-decoration:underline}.book-tech-section{margin-bottom:24px}.book-tech-section__title{margin:0 0 4px;font-size:1rem;font-weight:700}.book-tech-grid{display:flex;flex-direction:column;gap:10px;margin-top:12px}.book-tech-card{text-align:left;width:100%;padding:14px 16px;border:1px solid var(--border);border-radius:10px;background:var(--bg);cursor:pointer;transition:border-color .15s}.book-tech-card:hover{border-color:var(--accent)}.book-tech-card__name{font-weight:700;font-size:.95rem;color:var(--text)}.book-tech-card__area{font-size:.85rem;color:var(--muted);margin-top:4px}.book-tech-card__cta{font-size:.8rem;color:var(--accent);margin-top:8px;font-weight:600}.book-empty{text-align:center;padding:24px 12px;color:var(--muted);font-size:.9rem}.book-empty code{font-size:.8rem;background:var(--bg);padding:2px 6px;border-radius:4px}.book-empty a{display:inline-block;margin-top:16px}.book-find-header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:24px}.book-find-signup{font-size:.85rem;font-weight:600;color:var(--accent);text-decoration:none;white-space:nowrap;padding-top:4px}.book-find-signup:hover{text-decoration:underline}.book-search{margin-bottom:24px}.book-search__label{display:block;font-size:.85rem;font-weight:600;margin-bottom:8px;color:var(--text)}.book-search__input{width:100%;font-size:1rem;padding:12px 14px;border-radius:10px;border:1px solid var(--border)}.book-search__meta{margin:8px 0 0;font-size:.82rem;color:var(--muted)}.book-search__clear{margin-top:12px;background:none;border:none;padding:0;color:var(--accent);font-size:.9rem;font-weight:600;cursor:pointer;min-height:0}.book-search__clear:hover{text-decoration:underline}.book-tech-card__zips{font-size:.75rem;color:var(--muted);margin-top:4px}.book-empty--error{color:var(--danger);background:#ef44440f;border:1px solid rgba(239,68,68,.2);border-radius:8px;padding:12px}.book-tech-card--external{display:block;text-decoration:none;color:inherit}.book-tech-card--external:hover{text-decoration:none}.book-google-attribution{margin:12px 0 0;font-size:.75rem;color:var(--muted)}.book-google-attribution a{color:var(--muted);text-decoration:underline}@media print{.lay-header,.lay-header *,.dash-tip,.job-card__toolbar,button,.no-print{display:none!important}.lay-shell{min-height:auto}.lay-main{max-width:none;padding:0}.dash-slot,.dash-unassigned,.job-card{break-inside:avoid;border:1px solid #333;box-shadow:none;background:#fff;color:#111}.job-card__title,.job-card__address{color:#111}.job-card__address{color:#444}body,#root{background:#fff}a[href]:after{content:none}}.portal-shell{min-height:100vh;min-height:100dvh;background:#f8fafc;display:flex;flex-direction:column}.portal-shell .portal-main{flex:1 1 auto;min-height:0}.portal-header{position:sticky;top:0;z-index:40;background:#fff;border-bottom:1px solid #e2e8f0;padding:max(12px,var(--safe-top)) max(var(--container-padding),var(--safe-left)) 12px max(var(--container-padding),var(--safe-right))}.portal-header__inner{max-width:900px;margin:0 auto;width:100%;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px 16px}.portal-header__brand{font-weight:800;font-size:clamp(1.1rem,4vw,1.25rem);color:#1e40af}.portal-header__sub{font-size:11px;color:#6b7280;margin-top:2px}.portal-header__link{font-size:13px;color:#2563eb;text-decoration:none;font-weight:500;min-height:var(--touch-min);display:inline-flex;align-items:center}.portal-main{max-width:900px;margin:0 auto;padding:var(--container-padding);padding-left:max(var(--container-padding),var(--safe-left));padding-right:max(var(--container-padding),var(--safe-right));padding-bottom:max(24px,var(--safe-bottom));display:flex;flex-direction:column;gap:20px;width:100%;box-sizing:border-box}.portal-main>*{min-width:0;width:100%}.portal-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:16px 18px}.portal-card--empty{text-align:center;padding:32px 20px;color:#6b7280}.portal-section-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:14px;gap:12px;flex-wrap:wrap}.portal-section-title{margin:0;font-size:clamp(1rem,3vw,1.125rem);font-weight:700}.portal-section-sub{margin:4px 0 0;font-size:13px;color:#6b7280}.portal-equipment-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr));gap:12px}.portal-equipment-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;overflow:hidden}.portal-equipment-card__img{width:100%;height:110px;object-fit:cover}.portal-equipment-card__body{padding:12px 14px}.portal-equipment-card__actions{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}.portal-equipment-card__actions button,.portal-equipment-card__actions a{flex:1 1 calc(50% - 6px);font-size:12px;padding:8px 6px;min-height:var(--touch-min)}.portal-btn-ai{flex:1 1 100%!important;background:#faf5ff!important;border:1px solid #d8b4fe!important;color:#7c3aed!important}.svc-tech-results{margin-top:6px;border:1px solid #e2e8f0;border-radius:8px;overflow:hidden;background:#fff}.svc-tech-hint{padding:8px 12px;font-size:12px;color:#6b7280}.svc-tech-result{display:block;width:100%;text-align:left;padding:9px 12px;border:none;border-top:1px solid #f1f5f9;background:#fff;font-size:13px;color:#374151;cursor:pointer;min-height:0}.svc-tech-result:first-child{border-top:none}.svc-tech-result:hover{background:#f8fafc}.svc-tech-result__loc{color:#6b7280}.svc-tech-selected{font-size:12px;color:#15803d;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:8px;padding:8px 10px}.svc-tech-change{margin-left:8px;background:none;border:none;padding:0;font-size:12px;color:#2563eb;text-decoration:underline;cursor:pointer}.svc-tech-emaillink{align-self:flex-start;background:none;border:none;padding:0;font-size:12px;color:var(--accent, #2563eb);cursor:pointer}.passport-sec{border:1px solid var(--border);border-radius:8px;overflow:hidden}.passport-sec__head{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 14px;background:var(--bg);border:none;font-weight:600;font-size:13px;color:var(--text);cursor:pointer;min-height:0;text-align:left}.passport-sec--open .passport-sec__head{border-bottom:1px solid var(--border)}.passport-sec__caret{display:inline-block;font-size:10px;color:var(--muted);transition:transform .15s ease;flex-shrink:0}.passport-sec__caret--open{transform:rotate(90deg)}.eq-photos__toggle{display:flex;align-items:center;gap:8px;background:none;border:none;padding:0;min-height:0;cursor:pointer;color:var(--text);font:inherit}.eq-photos{border:1px solid var(--border);border-radius:8px;padding:12px 14px}.eq-photos__head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}.eq-photos__head strong{font-size:13px}.eq-photos__head button{min-height:0;font-size:12px;padding:6px 10px}.eq-photos__empty{font-size:12px;color:var(--muted)}.eq-photos__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:8px}.eq-photos__item{position:relative}.eq-photos__thumb{width:100%;aspect-ratio:1 / 1;padding:0;border:1px solid var(--border);border-radius:8px;overflow:hidden;min-height:0;cursor:pointer;background:var(--bg)}.eq-photos__thumb img{width:100%;height:100%;object-fit:cover;display:block}.eq-photos__label{display:block;margin-top:4px;font-size:11px;color:var(--muted);text-align:center;line-height:1.3}.eq-photos__remove{position:absolute;top:4px;right:4px;width:24px;height:24px;min-height:0;min-width:0;padding:0;border-radius:999px;background:#0009;color:#fff;border:none;font-size:12px;line-height:1}.eq-photos__lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:#000000d9;display:flex;align-items:center;justify-content:center;padding:24px}.eq-photos__lightbox img{max-width:100%;max-height:100%;border-radius:8px}.portal-eq-groups{display:flex;flex-direction:column;gap:12px}.portal-eq-group{border:1px solid #e2e8f0;border-radius:10px;overflow:hidden;background:#fff;border-left-width:4px}.portal-eq-group--equipment{border-color:#a7f3d0;border-left-color:#10b981}.portal-eq-group--equipment .portal-eq-group__head{background:#ecfdf5;color:#065f46}.portal-eq-group--equipment .portal-eq-group__count{color:#047857;background:#d1fae5}.portal-eq-group--equipment .portal-eq-group__body{border-top-color:#a7f3d0}.portal-eq-group--property-violet{border-color:#ddd6fe;border-left-color:#8b5cf6}.portal-eq-group--property-violet .portal-eq-group__head{background:#f5f3ff;color:#5b21b6}.portal-eq-group--property-violet .portal-eq-group__count{color:#6d28d9;background:#ede9fe}.portal-eq-group--property-violet .portal-eq-group__body{border-top-color:#ddd6fe}.portal-eq-group--property-teal{border-color:#99f6e4;border-left-color:#14b8a6}.portal-eq-group--property-teal .portal-eq-group__head{background:#f0fdfa;color:#115e59}.portal-eq-group--property-teal .portal-eq-group__count{color:#0f766e;background:#ccfbf1}.portal-eq-group--property-teal .portal-eq-group__body{border-top-color:#99f6e4}.portal-eq-group--unassigned{border-color:#e2e8f0;border-left-color:#94a3b8}.portal-eq-group--unassigned .portal-eq-group__head{background:#f8fafc;color:#475569}.portal-eq-group--unassigned .portal-eq-group__count{color:#64748b;background:#e2e8f0}.portal-eq-group--unassigned .portal-eq-group__body{border-top-color:#e2e8f0}.portal-eq-group__head{width:100%;display:flex;align-items:center;gap:8px;padding:12px 14px;border:none;font-size:14px;font-weight:700;cursor:pointer;min-height:0;text-align:left}.portal-eq-group__title{flex:1;min-width:0}.portal-eq-group__count{font-size:12px;font-weight:600;border-radius:999px;padding:2px 8px;flex-shrink:0}.portal-eq-group__warn{font-size:11px;font-weight:600;color:#b91c1c;background:#fee2e2;border-radius:999px;padding:2px 8px;flex-shrink:0}.portal-eq-group__caret{margin-left:auto;font-size:12px;color:inherit;opacity:.65;transition:transform .15s;flex-shrink:0}.portal-eq-group__caret--open{transform:rotate(90deg)}.portal-eq-group__body{border-top:1px solid #eef2f7}.portal-eq-group--collapsed .portal-eq-group__body{padding:8px 14px 10px}.portal-eq-group__summary{margin:0;font-size:12px;color:#9ca3af;line-height:1.45}.portal-eq-row{width:100%;display:flex;align-items:center;gap:10px;padding:10px 14px;border:none;border-top:1px solid #f1f5f9;background:#fff;cursor:pointer;min-height:0;text-align:left}.portal-eq-row:first-of-type{border-top:none}.portal-eq-row:hover{background:#f8fafc}.portal-eq-row__name{font-size:13px;font-weight:600;color:#0f172a}.portal-eq-row__loc{font-size:12px;color:#6b7280}.portal-eq-row__overdue{margin-left:auto;font-size:11px;font-weight:600;color:#dc2626;background:#fef2f2;border-radius:999px;padding:2px 8px}.portal-eq-row__caret{margin-left:auto;color:#9ca3af;font-size:14px}.portal-eq-row__overdue+.portal-eq-row__caret{margin-left:8px}.portal-eq-unit{border-top:1px solid #f1f5f9}.portal-eq-unit--overdue{border-left:3px solid #ef4444;margin-left:-1px}.portal-eq-unit__summary{margin:0;padding:8px 14px 10px 28px;font-size:12px;color:#9ca3af;line-height:1.45}.portal-eq-unit--collapsed .portal-eq-unit__body{padding:0}.portal-eq-row--unit{padding-left:28px;cursor:default}.portal-eq-row--unit:hover{background:#fff}.portal-eq-row__toggle{flex:1;display:flex;align-items:center;gap:10px;padding:0;border:none;background:none;cursor:pointer;min-height:0;text-align:left}.portal-eq-row__toggle:hover{opacity:.85}.portal-eq-row__toggle .portal-eq-group__caret{margin-left:0;margin-right:0}.portal-eq-row__meta{font-size:11px;font-weight:600;color:#6b7280;background:#f1f5f9;border-radius:999px;padding:2px 8px}.portal-eq-row__open{margin-left:auto;font-size:12px;font-weight:600;color:#2563eb;background:none;border:none;cursor:pointer;padding:4px 8px;min-height:0;flex-shrink:0}.portal-eq-row__open:hover{text-decoration:underline}.portal-eq-unit__body{padding:0 14px 10px 42px;background:#fafbfc}.portal-eq-unit__empty{font-size:12px;color:#9ca3af;padding:8px 0}.portal-task-row{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;margin-bottom:6px;background:#fff;border:1px solid #e2e8f0;border-radius:8px}.portal-task-row--overdue{border-color:#fca5a5;background:#fffbfb}.portal-task-row--soon{border-color:#fcd34d;background:#fffdf5}.portal-task-row--later{border-color:#93c5fd;background:#f8fbff}.portal-task-row__main{flex:1;min-width:0}.portal-task-row__name{font-size:13px;font-weight:600;color:#0f172a}.portal-task-row__desc{font-size:12px;color:#6b7280;margin-top:2px;line-height:1.4}.portal-task-row__desc-wrap .maintenance-task-desc__text{color:#6b7280}.maintenance-task-desc__text{margin:0;font-size:12px;line-height:1.55;color:var(--muted);white-space:pre-wrap;word-break:break-word}.maintenance-task-desc__toggle{margin-top:4px;padding:0;border:none;background:none;font-size:11px;font-weight:600;color:var(--accent, #2563eb);cursor:pointer}.maintenance-task-modal__description{min-height:5rem;resize:vertical}.maintenance-task-modal__diy-check{display:flex;flex-direction:column;gap:4px;padding-top:1.25rem;font-size:13px}.maintenance-task-modal__diy-hint{font-size:11px;color:var(--muted);line-height:1.4}.passport-task-row__content{flex:1;min-width:0;width:100%}.passport-task-row__head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:4px}.passport-task-row__title-line{display:flex;flex-wrap:wrap;gap:6px;align-items:center;flex:1;min-width:0}.passport-task-row__name{font-weight:600;font-size:13px;color:var(--text)}.passport-task-row__priority{font-size:11px;font-weight:600;background:#ffffff0f;border-radius:4px;padding:1px 6px;text-transform:capitalize}.passport-task-row__diy-badge{font-size:11px;color:var(--success);background:#22c55e1f;border-radius:4px;padding:1px 6px}.passport-task-row__critical-badge{font-size:11px;color:#f97316;background:#f973161f;border-radius:4px;padding:1px 6px}.passport-task-row__actions{flex-shrink:0}.passport-task-row__edit-only{font-size:12px;flex-shrink:0}.maintenance-task-diy{margin-top:10px;padding:10px 12px;border:1px solid rgba(34,197,94,.35);border-radius:8px;background:#22c55e0f}.maintenance-task-diy__head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.maintenance-task-diy__label{font-size:12px;font-weight:700;color:#15803d;text-transform:uppercase;letter-spacing:.04em}.maintenance-task-diy__toggle{font-size:11px;padding:0;border:none;background:none;color:var(--accent, #2563eb);cursor:pointer}.maintenance-task-diy__empty p{margin:0 0 10px;font-size:12px;line-height:1.5;color:var(--muted)}.maintenance-task-diy__cta{width:100%;font-size:13px}.maintenance-task-diy__cta--inline{width:auto;max-width:100%;margin-top:8px;font-size:12px;padding:6px 12px;box-sizing:border-box}@media (max-width: 639px){.maintenance-task-diy__cta--inline{width:100%}}.maintenance-task-diy__link{margin-top:8px;padding:0;border:none;background:none;font-size:12px;color:var(--accent, #2563eb);cursor:pointer}.maintenance-task-diy__pro-note{margin:10px 0 0;font-size:12px;line-height:1.5;color:var(--muted)}.maintenance-task-diy__steps-section{margin-top:10px}.diy-guide--compact{margin:0;padding:0;border:none;background:transparent}.diy-guide--compact .diy-guide__header h3{font-size:14px}.portal-task-row__meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px;font-size:11px;color:#6b7280;min-width:0;max-width:100%}.portal-task-row__actions{flex-shrink:0}.task-action-btns{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:6px;flex-shrink:0}.task-action-btn{display:inline-flex;align-items:center;justify-content:center;gap:4px;font-size:11px;font-weight:600;padding:4px 10px;min-height:0;border-radius:6px;cursor:pointer;white-space:nowrap;font-family:inherit;line-height:1}.task-action-btn--done{background:#ecfdf5;border:1px solid #6ee7b7;color:#047857}.task-action-btn--skip{background:#f8fafc;border:1px solid #cbd5e1;color:#64748b}.task-action-btn--edit{background:#eff6ff;border:1px solid #93c5fd;color:#2563eb}.task-action-btn--delete{background:#fef2f2;border:1px solid #fecaca;color:#b91c1c}.task-action-btn__icon{flex-shrink:0;display:none}.passport-task-row{display:flex;flex-direction:column;align-items:stretch;gap:0;border:1px solid var(--border);border-radius:8px;padding:10px 14px;margin-bottom:8px;background:var(--surface)}.passport-task-row--overdue{border-color:var(--danger);background:#ef444414}.task-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin-top:4px}.task-meta__last{display:inline-flex;align-items:baseline;gap:5px;font-size:11px;color:var(--muted, #9ca3af)}.task-meta__last .task-meta__date{font-weight:500;color:var(--muted, #9ca3af)}.task-meta__due{display:inline-flex;align-items:baseline;gap:5px;font-size:12px;font-weight:600;color:var(--accent, #2563eb)}.task-meta__due .task-meta__label{font-weight:500;font-size:11px;opacity:.9}.task-meta__due .task-meta__date{font-weight:700}.task-meta__due--overdue{color:var(--danger, #dc2626)}.task-meta__due--none{font-size:11px;font-weight:500;color:var(--muted, #9ca3af)}.task-meta__cadence{font-size:10px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:#64748b;background:#64748b24;border:1px solid rgba(100,116,139,.22);border-radius:4px;padding:2px 7px;line-height:1.3}.passport-task-row .task-meta__cadence{color:var(--muted, #94a3b8);background:#ffffff0f;border-color:#ffffff1a}@media (max-width: 639px){.task-action-btn{width:36px;height:36px;min-width:36px;padding:0;border-radius:8px}.task-action-btn__label{display:none}.task-action-btn__icon{display:block}.portal-task-row{flex-direction:column;align-items:stretch}.portal-task-row__actions.task-action-btns{width:100%;justify-content:flex-end}.passport-task-row__head{flex-wrap:wrap}.passport-task-row__actions.task-action-btns{width:100%;justify-content:flex-end}.portfolio-attention__item{flex-wrap:wrap}.portfolio-attention__detail{white-space:normal;width:100%;text-align:left}}@media (min-width: 640px){.task-action-btn__icon{display:none}}.portal-task-row__equip{background:none;border:none;padding:0;font:inherit;color:#2563eb;cursor:pointer;text-align:left;max-width:100%;overflow-wrap:anywhere;word-break:break-word;min-width:0}.portal-task-row__equip:hover{text-decoration:underline}.portal-eq-row--flat{cursor:default;align-items:flex-start;gap:12px}.portal-eq-row--flat:hover{background:#fff}.portal-eq-row__main{flex:1;min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}.portal-eq-row--flat .portal-eq-row__name{word-break:break-word;overflow-wrap:anywhere}.portal-eq-row--flat .portal-eq-row__overdue{margin-left:0}.portal-eq-row__actions{display:flex;align-items:center;gap:8px;flex-shrink:0;padding-top:1px}.portal-panel{margin-bottom:20px}.portal-panel__title{margin:0 0 12px;padding-left:12px;border-left:4px solid #e2e8f0;font-size:16px;font-weight:700;color:#0f172a}.portal-panel--maintenance{min-width:0;max-width:100%;overflow-x:hidden}.portal-panel--maintenance .portal-panel__title{border-left-color:#f59e0b}.portal-panel--equipment .portal-panel__title{border-left-color:#10b981}.portal-panel--shared-in .portal-panel__title{border-left-color:#3b82f6}.portal-panel--shared-out .portal-panel__title{border-left-color:#14b8a6}.portal-task-groups{display:flex;flex-direction:column;gap:12px;width:100%;min-width:0;max-width:100%;overflow-x:hidden}.portal-task-group{border:1px solid #e2e8f0;border-radius:10px;overflow:hidden;background:#fff;border-left-width:4px;min-width:0;max-width:100%}.portal-task-group--past-due{border-color:#fecaca;border-left-color:#ef4444}.portal-task-group--past-due .portal-task-group__head{background:#fef2f2;color:#991b1b}.portal-task-group--past-due .portal-task-group__count{color:#b91c1c;background:#fee2e2}.portal-task-group--past-due .portal-task-group__body{border-top-color:#fecaca}.portal-task-group--this-week{border-color:#fde68a;border-left-color:#f59e0b}.portal-task-group--this-week .portal-task-group__head{background:#fffbeb;color:#92400e}.portal-task-group--this-week .portal-task-group__count{color:#b45309;background:#fef3c7}.portal-task-group--this-week .portal-task-group__body{border-top-color:#fde68a}.portal-task-group--later{border-color:#bfdbfe;border-left-color:#3b82f6}.portal-task-group--later .portal-task-group__head{background:#eff6ff;color:#1e40af}.portal-task-group--later .portal-task-group__count{color:#1d4ed8;background:#dbeafe}.portal-task-group--later .portal-task-group__body{border-top-color:#bfdbfe}.portal-task-group--completed{border-color:#bbf7d0;border-left-color:#22c55e}.portal-task-group--completed .portal-task-group__head{background:#f0fdf4;color:#166534}.portal-task-group--completed .portal-task-group__count{color:#15803d;background:#dcfce7}.portal-task-group--completed .portal-task-group__body{border-top-color:#bbf7d0}.portal-task-row--completed{opacity:.92}.passport-task-row--completed{border-color:#22c55e40;background:#22c55e0f}.task-history__action{font-size:12px;font-weight:600;color:#15803d}.task-history__dates{display:flex;flex-wrap:wrap;gap:4px;font-size:12px;color:var(--muted);margin-top:4px}.task-history__notes{font-size:12px;color:var(--text);margin-top:6px;line-height:1.45;white-space:pre-wrap}.task-history__by{font-size:11px;color:var(--muted);margin-top:4px}.portal-task-group__head{width:100%;display:flex;align-items:center;gap:8px;padding:12px 14px;background:#f8fafc;border:none;font-size:14px;font-weight:700;color:#0f172a;cursor:pointer;min-height:0;text-align:left}.portal-task-group__head .portal-eq-group__caret{margin-left:auto;flex-shrink:0}.portal-task-group__title{flex:1;min-width:0}.portal-task-group__count{font-size:12px;font-weight:600;color:#6b7280;background:#e2e8f0;border-radius:999px;padding:2px 8px;flex-shrink:0}.portal-task-group__body{padding:10px 14px 12px;border-top:1px solid #eef2f7;min-width:0;max-width:100%;overflow-x:hidden}.portal-task-group--collapsed .portal-task-group__body{padding-top:8px;padding-bottom:10px}.portal-task-group__summary{margin:0;font-size:12px;color:#9ca3af;line-height:1.45}.portal-alert{background:#fef2f2;border:1px solid #fca5a5;border-radius:10px;padding:14px 16px}.portal-alert__title{font-weight:700;color:#b91c1c;margin-bottom:6px}.modal--thin{max-width:min(540px,100%)}.modal-hint{margin:0;font-size:13px;color:var(--muted);line-height:1.5}.suggest-loading{padding:18px 0;font-size:13px;color:var(--muted);text-align:center}.suggest-selectall{align-self:flex-start;background:none;border:none;padding:0;font-size:12px;font-weight:600;color:var(--accent, #2563eb);cursor:pointer}.suggest-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.suggest-item{border:1px solid var(--border);border-radius:10px;background:var(--surface, #fff);transition:border-color .15s ease,background .15s ease}.suggest-item--on{border-color:var(--accent, #2563eb);background:color-mix(in srgb,var(--accent, #2563eb) 6%,transparent)}.suggest-item__main{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;cursor:pointer}.suggest-item__main input[type=checkbox]{margin-top:2px;flex-shrink:0}.suggest-item__text{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1;max-width:100%}.suggest-item__name{font-size:13px;font-weight:600;color:var(--text, #111);display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-width:0;max-width:100%}.suggest-badge{font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:1px 6px;border-radius:999px;background:color-mix(in srgb,var(--accent, #2563eb) 14%,transparent);color:var(--accent, #2563eb)}.suggest-badge--critical{background:color-mix(in srgb,#f97316 16%,transparent);color:#ea580c}.suggest-badge--manual{background:color-mix(in srgb,#16a34a 16%,transparent);color:#15803d}.suggest-badge--ai{background:color-mix(in srgb,#7c3aed 14%,transparent);color:#7c3aed}.suggest-badge-link{text-decoration:none}.suggest-item__toggle-critical{display:inline-block;margin-top:4px;padding:0;border:none;background:none;font-size:11px;font-weight:500;color:var(--accent, #2563eb);cursor:pointer;text-align:left}.suggest-item__toggle-critical:hover{text-decoration:underline}.suggest-item__desc{font-size:12px;color:var(--muted);line-height:1.45;overflow-wrap:anywhere;word-break:break-word;max-width:100%}.suggest-item__meta{font-size:11px;color:var(--muted);font-weight:500}.form-fieldset{border:1px solid var(--border);border-radius:8px;padding:12px 14px;margin:0}.form-fieldset legend{font-size:11px;font-weight:600;color:var(--accent);text-transform:uppercase;letter-spacing:.5px;padding:0 4px}.field-label{font-size:12px;font-weight:500;display:block;margin-bottom:4px;color:var(--muted)}.field-input,.field-textarea{width:100%;box-sizing:border-box;font-size:13px}.field-textarea{resize:vertical}.form-field-full{margin-top:10px}.form-error{background:#ef44441a;border:1px solid rgba(239,68,68,.4);border-radius:6px;padding:10px;color:var(--danger);font-size:13px}.scan-reject-banner{background:#fef2f2;border:1px solid #fca5a5;border-radius:8px;padding:12px 14px;color:#991b1b;font-size:13px;line-height:1.5}.scan-reject-banner strong{display:block;margin-bottom:4px;font-size:14px}.scan-reject-banner p{margin:0 0 8px}.modal-actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}.modal-actions button{min-height:var(--touch-min)}.catalog-picker{display:flex;flex-direction:column;gap:8px}.catalog-picker__label{font-size:12px;font-weight:600;color:var(--text)}.catalog-picker__filters{display:flex;flex-direction:column;gap:8px}@media (min-width: 480px){.catalog-picker__filters{flex-direction:row}.catalog-picker__select{flex:0 0 140px}}.catalog-picker__search,.catalog-picker__select{flex:1;font-size:13px;min-height:var(--touch-min)}.catalog-picker__suggestions{list-style:none;margin:0;padding:0;border:1px solid var(--border);border-radius:8px;max-height:200px;overflow-y:auto}.catalog-picker__option{width:100%;text-align:left;padding:10px 12px;border:none;border-bottom:1px solid var(--border);border-radius:0;background:var(--bg);cursor:pointer;min-height:var(--touch-min)}.catalog-picker__option:last-child{border-bottom:none}.catalog-picker__option-main{display:block;font-size:13px;font-weight:600;color:var(--text)}.catalog-picker__option-sub{display:block;font-size:11px;color:var(--muted);margin-top:2px}.catalog-picker__quick{display:flex;flex-direction:column;gap:6px;font-size:12px}.catalog-picker__brand-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.catalog-picker__brand-name{font-weight:600;min-width:72px;color:var(--muted)}.catalog-picker__model-chips{display:flex;flex-wrap:wrap;gap:4px}.catalog-picker__chip{font-size:11px;padding:4px 8px;min-height:0;background:var(--bg);border:1px solid var(--border);border-radius:999px}.catalog-warranty-link{font-size:13px;color:#2563eb;font-weight:500}.diy-suggestions{display:flex;flex-wrap:wrap;gap:6px}.diy-suggestion-chip{font-size:12px;padding:6px 10px;min-height:0;border-radius:999px;background:var(--bg);border:1px solid var(--border)}.diy-guide{border-top:1px solid var(--border);padding-top:16px;font-size:13px;line-height:1.55}.diy-guide__header h3{margin:0 0 6px;font-size:16px}.diy-guide__badge{font-size:12px;font-weight:600}.diy-guide__warn{background:#fef3c7;border:1px solid #fcd34d;border-radius:8px;padding:10px 12px;margin:12px 0}.diy-disclaimer{background:#fff7ed;border:1px solid #fed7aa;border-radius:8px;padding:9px 12px;margin:10px 0;font-size:12px;line-height:1.5;color:#9a3412}.diy-ack{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:14px 16px;display:flex;flex-direction:column;gap:10px}.diy-ack__text{margin:0;font-size:13px;line-height:1.6;color:#374151}.diy-ack .primary{align-self:flex-start}.modal-hint--muted{font-size:12px;color:#6b7280}.warranty-scan{display:flex;flex-direction:column;gap:6px;padding:12px;background:#f8fafc;border:1px dashed #cbd5e1;border-radius:10px}.warranty-scan__btn{display:inline-block;align-self:flex-start;background:#2563eb;color:#fff;font-size:13px;font-weight:600;padding:8px 14px;border-radius:8px;cursor:pointer}.warranty-scan__btn--busy{opacity:.7;cursor:progress}.warranty-scan__hint{font-size:12px;color:#6b7280;line-height:1.45}.warranty-scan__note{font-size:12px;color:#15803d;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:6px;padding:6px 8px;line-height:1.45}.warranty-scan__error{font-size:12px;color:#b91c1c;background:#fef2f2;border:1px solid #fecaca;border-radius:6px;padding:6px 8px;line-height:1.45}.svc-requests{border:1px solid #e5e7eb;border-radius:12px;background:#fff;padding:12px 14px}.svc-requests__title{margin:0 0 8px;font-size:14px;font-weight:700;color:#111827}.svc-requests__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.svc-requests__item{display:flex;align-items:center;gap:8px;font-size:13px;color:#374151}.svc-requests__dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.svc-requests__dot--amber{background:#f59e0b}.svc-requests__dot--green{background:#16a34a}.svc-requests__dot--gray{background:#9ca3af}.svc-requests__main{flex:1;min-width:0}.svc-requests__when{color:#6b7280}.svc-requests__status{flex-shrink:0;font-size:11px;font-weight:600;padding:2px 8px;border-radius:999px}.svc-requests__status--amber{background:#fffbeb;color:#b45309}.svc-requests__status--green{background:#f0fdf4;color:#15803d}.svc-requests__status--gray{background:#f3f4f6;color:#6b7280}.seasonal-card{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:12px}.seasonal-card__emoji{font-size:24px;flex-shrink:0;line-height:1.2}.seasonal-card__body{flex:1;min-width:0}.seasonal-card__title{font-size:14px;color:#1e3a8a}.seasonal-card__blurb{font-size:13px;color:#1d4ed8;margin-top:2px;line-height:1.5}.seasonal-card__count{font-size:12px;color:#2563eb;margin-top:6px}.seasonal-card__actions{display:flex;align-items:center;gap:10px;margin-top:10px;flex-wrap:wrap}.seasonal-card__dismiss{background:none;border:none;color:#64748b;font-size:13px;cursor:pointer;padding:0}.seasonal-card__dismiss:hover:not(:disabled){color:#475569}.seasonal-card__close{background:none;border:none;cursor:pointer;color:#9ca3af;font-size:18px;padding:0;flex-shrink:0;line-height:1}.diy-guide__warn ul,.diy-guide__meta ul{margin:6px 0 0;padding-left:18px}.diy-guide__meta{margin:12px 0}.diy-guide__steps{margin:12px 0;padding-left:20px}.diy-guide__steps li{margin-bottom:10px}.diy-guide__tip{display:block;margin-top:4px;font-size:12px;color:var(--muted)}.diy-guide__pro{margin:12px 0 0;padding:10px 12px;background:var(--bg);border-radius:8px;font-size:12px}.diy-guide__actions{margin:10px 0 4px}.diy-guide__saved{background:#f0fdf4;border:1px solid #86efac;color:#059669;font-weight:600}.diy-guide__parts{margin:12px 0;padding:10px 12px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px}.diy-guide__parts-note{margin:4px 0 8px;font-size:11px;color:var(--muted)}.diy-guide__part-num,.diy-guide__part-spec{font-family:ui-monospace,monospace;font-size:11px}.diy-guide__pro-actions{display:flex;flex-direction:column;gap:8px;margin-top:10px}.diy-guide__my-techs{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:12px}.diy-guide__tech-link{font-size:12px;font-weight:600;color:#2563eb;text-decoration:none}.diy-guide__saved-list{display:flex;flex-direction:column;gap:8px;margin-top:12px}.diy-guide__saved-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;background:var(--bg);border:1px solid var(--border);border-radius:8px;font-size:12px}.diy-guide__saved-item button{min-height:0;font-size:11px}.modal--service{max-width:640px;max-height:min(92dvh,calc(100dvh - var(--safe-top) - var(--safe-bottom) - 2 * var(--container-padding)))}@media (max-width: 639px){.modal-backdrop:has(.modal--service){align-items:flex-end;padding-left:0;padding-right:0;padding-bottom:0}.modal--service{max-width:100%;width:100%;max-height:calc(100dvh - var(--safe-top));height:min(92dvh,calc(100dvh - var(--safe-top)));border-radius:16px 16px 0 0;border-bottom:none}.modal--service .modal-body{padding-bottom:.75rem}.modal--service .modal-footer{padding-bottom:max(.75rem,var(--safe-bottom))}}.modal-body--service{min-height:0}.service-feedback-footer{display:flex;flex-direction:column;gap:10px}.service-feedback-footer strong{font-size:13px}.service-feedback-footer .modal-hint{margin:0}.service-feedback-footer .service-feedback__actions{width:100%}.modal-header__sub{margin:4px 0 0;font-size:13px;font-weight:400;color:var(--muted)}.service-issue-input{resize:vertical;min-height:96px;line-height:1.5}.service-root-cause{padding:12px 14px;background:var(--bg);border:1px solid var(--border);border-radius:8px;font-size:13px;line-height:1.5}.service-root-cause p{margin:6px 0 0;color:var(--text)}.service-root-cause ul{margin:6px 0 0;padding-left:18px;color:var(--muted);font-size:13px}.service-emergency p{margin:6px 0 0;font-size:13px}.service-feedback{margin-top:8px;padding-top:16px;border-top:1px solid var(--border)}.service-feedback__actions{display:flex;flex-wrap:wrap;gap:8px}.service-feedback__actions button{flex:1 1 auto;min-height:var(--touch-min);font-size:13px}.service-feedback__pro{border-color:var(--accent)!important;color:var(--accent)!important}.service-back-link{margin-top:12px;background:none;border:none;padding:0;color:var(--muted);font-size:13px;cursor:pointer;text-decoration:underline}.service-find-pro .book-directory--compact{margin-top:8px}.portal-eq-row__service{background:#faf5ff;border:1px solid #d8b4fe;color:#7c3aed;border-radius:6px;padding:4px 10px;font-size:12px;font-weight:600;cursor:pointer;min-height:0;flex-shrink:0;white-space:nowrap}.portal-eq-row__service:hover{background:#f3e8ff}.portal-eq-row--flat .portal-eq-row__open{flex-shrink:0;margin-left:0;white-space:nowrap}.portal-layers{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.portal-layers__tab{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:999px;border:1px solid var(--border);background:var(--surface);font-size:13px;font-weight:600;color:var(--muted);cursor:pointer;min-height:var(--touch-min)}.portal-layers__tab--active{border-color:var(--accent);color:var(--accent);background:#faf5ff}.portal-layers__tab--my-homes.portal-layers__tab--active{border-color:#8b5cf6;color:#6d28d9;background:#f5f3ff}.portal-layers__tab--shared-in.portal-layers__tab--active{border-color:#3b82f6;color:#1d4ed8;background:#eff6ff}.portal-layers__tab--shared-out.portal-layers__tab--active{border-color:#14b8a6;color:#0f766e;background:#f0fdfa}.portal-layers__count{font-size:11px;font-weight:700;background:var(--bg);border-radius:10px;padding:1px 7px}.portal-shared-props{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.portal-shared-prop{display:flex;align-items:center;gap:8px;border:1px solid var(--border);border-left-width:4px;border-radius:8px;overflow:hidden;background:var(--surface)}.portal-shared-prop--co-owner{border-left-color:#8b5cf6}.portal-shared-prop--household{border-left-color:#3b82f6}.portal-shared-prop--guest{border-left-color:#94a3b8}.portal-shared-prop--active{border-color:var(--accent)}.portal-shared-prop--co-owner.portal-shared-prop--active{border-color:#8b5cf6;background:#faf5ff}.portal-shared-prop--household.portal-shared-prop--active{border-color:#3b82f6;background:#eff6ff}.portal-shared-prop--guest.portal-shared-prop--active{border-color:#64748b;background:#f8fafc}.portal-shared-prop__select{flex:1;text-align:left;padding:10px 14px;background:none;border:none;cursor:pointer;min-height:0}.portal-shared-prop__select strong{display:block;font-size:14px;color:var(--text)}.portal-shared-prop__select span{font-size:12px;color:var(--muted)}.portal-shared-prop__leave{margin-right:10px;font-size:12px;color:var(--muted);background:none;border:none;cursor:pointer;text-decoration:underline;min-height:0}.portal-shared-banner{margin:0 0 12px;padding:8px 12px;background:var(--bg);border-radius:8px;font-size:13px;color:var(--muted)}.portal-outbound-list{display:flex;flex-direction:column;gap:10px}.portal-outbound-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border:1px solid #99f6e4;border-left:4px solid #14b8a6;border-radius:8px;background:#f0fdfa}.portal-outbound-row__meta{font-size:12px;color:var(--muted);margin-top:2px}.modal--household{max-width:520px}.household-member-list{list-style:none;margin:8px 0 0;padding:0}.household-member-list__item{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;margin-bottom:8px}.household-member-list__name{font-size:13px;font-weight:600}.household-member-list__meta{font-size:12px;color:var(--muted)}.household-member-list__revoke{font-size:12px;color:#dc2626;background:none;border:none;cursor:pointer;min-height:0}.household-role-grid{display:flex;flex-direction:column;gap:8px}.household-role-card{display:block;padding:10px 12px;border:1px solid var(--border);border-radius:8px;cursor:pointer}.household-role-card--active{border-color:var(--accent);background:#faf5ff}.household-role-card input{margin-right:8px}.household-role-card__title{display:block;font-size:13px;font-weight:600}.household-role-card__hint{display:block;font-size:12px;color:var(--muted);margin-top:2px}.household-equipment-pick{list-style:none;margin:0;padding:0;font-size:13px}.household-equipment-pick li{padding:4px 0}.account-modal{gap:14px}.account-profile{display:flex;align-items:center;gap:14px;padding:14px;border-radius:12px;background:var(--surface-alt, rgba(0, 0, 0, .04));border:1px solid var(--border)}.account-profile__avatar{flex-shrink:0;width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;letter-spacing:.02em;color:var(--text);background:var(--surface, #fff);border:2px solid var(--border)}.account-profile__meta{min-width:0;flex:1}.account-profile__name{margin:0;font-size:16px;font-weight:700;color:var(--text);line-height:1.3;word-break:break-word}.account-profile__email{margin:2px 0 0;font-size:13px;color:var(--muted);word-break:break-all}.account-profile__chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.account-chip{display:inline-block;font-size:11px;font-weight:600;padding:3px 8px;border-radius:999px;background:#2563eb1f;color:#2563eb}.account-chip--muted{background:var(--surface, #f3f4f6);color:var(--muted);font-weight:500}.account-banner{margin:0;padding:10px 12px;border-radius:8px;font-size:13px;line-height:1.45}.account-banner--success{background:#f0fdf4;border:1px solid #86efac;color:#059669}.account-banner--error{background:#fef2f2;border:1px solid #fecaca;color:#dc2626}.account-banner--warn{background:#fffbeb;border:1px solid #fde68a;color:#b45309}.account-card{padding:14px;border-radius:12px;border:1px solid var(--border);background:var(--surface, #fff);display:flex;flex-direction:column;gap:12px}.account-card--danger{border-color:#ef444459;background:#ef44440a}.account-card__title{margin:0;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.account-card__note{margin:0;font-size:13px;color:var(--muted);line-height:1.5}.account-card__action{align-self:flex-start;font-size:14px;font-weight:600;padding:8px 0;border:none;background:none;color:#2563eb;cursor:pointer;font-family:inherit}.account-card__action:hover{text-decoration:underline}.account-toggle{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;cursor:pointer}.account-toggle__text{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.account-toggle__title{font-size:14px;font-weight:600;color:var(--text);line-height:1.35}.account-toggle__desc{font-size:12px;color:var(--muted);line-height:1.45}.account-toggle__input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.account-toggle__track{flex-shrink:0;position:relative;width:44px;height:26px;border-radius:999px;background:var(--border, #d1d5db);transition:background .15s ease;margin-top:2px}.account-toggle__track:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0003;transition:transform .15s ease}.account-toggle__input:checked+.account-toggle__track{background:#2563eb}.account-toggle__input:checked+.account-toggle__track:after{transform:translate(18px)}.account-toggle__input:disabled+.account-toggle__track{opacity:.5}.account-password-form{margin-top:4px}.account-password-form__actions,.account-delete-confirm__actions{display:flex;flex-wrap:wrap;gap:8px}.account-legal{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;padding:4px 0 8px;font-size:13px}.account-legal a{color:var(--muted);text-decoration:none}.account-legal a:hover{color:#2563eb;text-decoration:underline}.account-modal__footer{justify-content:stretch!important;padding-top:0}.account-signout-btn{width:100%;padding:10px 16px;font-size:14px;font-weight:600;border-radius:8px;border:1px solid var(--border);background:var(--surface, #fff);color:var(--text);cursor:pointer;font-family:inherit}.account-signout-btn:hover{background:var(--surface-alt, rgba(0, 0, 0, .04))}.account-section{padding-bottom:4px;border-bottom:1px solid var(--border)}.account-row{display:flex;flex-direction:column;gap:2px;margin-bottom:12px}.account-value{font-size:14px;color:var(--text);word-break:break-all}.account-section-title{margin:0;font-size:14px;font-weight:700}.account-hint{margin:0;font-size:13px;color:var(--muted);line-height:1.5}.account-hint--warn{color:#b45309}.account-success{background:#f0fdf4;border:1px solid #86efac;border-radius:6px;padding:10px;color:#059669;font-size:13px}.account-section--danger{border-bottom:none;padding-top:8px}.account-danger-btn{background:#ef44441f;border:1px solid rgba(239,68,68,.45);color:var(--danger);font-weight:600;border-radius:8px;padding:8px 14px;cursor:pointer;font-family:inherit;font-size:13px}.account-danger-btn:hover:not(:disabled){background:#ef444433}.account-danger-btn:disabled{opacity:.5;cursor:not-allowed}.portal-header{gap:8px 16px}.portal-header__actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.admin-shell.portal-shell{min-height:100dvh;max-height:100dvh;display:flex;flex-direction:column;overflow:hidden}.admin-shell .site-header{flex-shrink:0}.admin-shell .portal-main{flex:1 1 auto;min-height:0;max-width:1040px;gap:24px;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.admin-page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:20px 22px;background:linear-gradient(135deg,#0f172a,#1e3a8a);border-radius:14px;color:#fff}.admin-page-head__title{margin:0;font-size:clamp(1.15rem,3vw,1.35rem);font-weight:800;letter-spacing:-.02em}.admin-page-head__meta{margin:6px 0 0;font-size:13px;color:#ffffffb8;line-height:1.5}.admin-page-head__actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.admin-page-head__link{font-size:13px;font-weight:600;color:#ffffffe6;text-decoration:none;padding:8px 12px;border-radius:8px;background:#ffffff1a;border:1px solid rgba(255,255,255,.15)}.admin-page-head__link:hover{background:#ffffff29}.admin-page-head__btn{font-size:13px;font-weight:600;padding:8px 14px;border-radius:8px;border:1px solid rgba(255,255,255,.2);background:#ffffff1f;color:#fff;cursor:pointer;min-height:var(--touch-min)}.admin-page-head__btn:hover:not(:disabled){background:#fff3}.admin-page-head__btn:disabled{opacity:.55;cursor:not-allowed}.admin-page-head__btn--ghost{background:transparent}.admin-panel{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:18px 20px}.admin-panel__title{margin:0 0 14px;padding-left:12px;border-left:4px solid #2563eb;font-size:15px;font-weight:700;color:#0f172a}.admin-panel--health .admin-panel__title{border-left-color:#10b981}.admin-panel--actions .admin-panel__title{border-left-color:#f59e0b}.admin-stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}.admin-stat{border:1px solid #e2e8f0;border-radius:10px;padding:14px 16px;background:#f8fafc}.admin-stat--highlight{border-color:#93c5fd;background:#eff6ff}.admin-stat--ok{border-color:#86efac;background:#f0fdf4}.admin-stat--bad{border-color:#fca5a5;background:#fef2f2}.admin-stat__label{font-size:12px;font-weight:600;color:#64748b;margin-bottom:6px;line-height:1.35}.admin-stat__value{font-size:clamp(1.35rem,4vw,1.6rem);font-weight:800;line-height:1.1;color:#0f172a;letter-spacing:-.02em}.admin-stat__sub{margin-top:6px;font-size:11px;color:#64748b;line-height:1.4}.admin-stat__status{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:#0f172a}.admin-stat__dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.admin-stat__dot--ok{background:#10b981}.admin-stat__dot--bad{background:#dc2626}.admin-role-row{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:10px}.admin-role-chip{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border-radius:999px;border:1px solid #e2e8f0;background:#fff;font-size:13px;color:#334155}.admin-role-chip strong{font-size:15px;color:#0f172a}.admin-actions-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}.admin-action-card{border:1px solid #e2e8f0;border-radius:10px;padding:16px;background:#f8fafc}.admin-action-card__title{margin:0 0 12px;font-size:14px;font-weight:700;color:#0f172a}.admin-action-card__hint{margin:0 0 12px;font-size:12px;color:#64748b;line-height:1.5}.admin-form-row{display:flex;gap:8px;flex-wrap:wrap}.admin-form-row input[type=email],.admin-form-row input[type=text],.admin-form-row input[type=number],.admin-action-card textarea{flex:1 1 160px;min-width:0;padding:10px 12px;font-size:13px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;color:#0f172a;font-family:inherit}.admin-action-card textarea{width:100%;box-sizing:border-box;resize:vertical;margin-top:8px}.admin-field-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin-top:12px}.admin-field label{display:block;font-size:11px;font-weight:600;color:#64748b;margin-bottom:4px}.admin-field input{width:100%;box-sizing:border-box;padding:8px 10px;font-size:13px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;color:#0f172a}.admin-user-meta{margin-top:14px;padding:10px 12px;background:#fff;border:1px solid #e2e8f0;border-radius:8px;font-size:13px;color:#475569;line-height:1.5}.admin-checks{display:flex;flex-wrap:wrap;gap:14px 20px;margin:14px 0;font-size:13px;color:#334155}.admin-checks label{display:inline-flex;align-items:center;gap:8px;cursor:pointer}.admin-btn{font-size:13px;font-weight:600;padding:10px 16px;border-radius:8px;border:1px solid #cbd5e1;background:#fff;color:#0f172a;cursor:pointer;min-height:var(--touch-min);font-family:inherit}.admin-btn:hover:not(:disabled){background:#f1f5f9}.admin-btn:disabled{opacity:.55;cursor:not-allowed}.admin-btn--primary{background:#2563eb;border-color:#2563eb;color:#fff}.admin-btn--primary:hover:not(:disabled){background:#1d4ed8}.admin-btn--danger{background:#fef2f2;border-color:#fca5a5;color:#b91c1c}.admin-btn--danger:hover:not(:disabled){background:#fee2e2}.admin-btn--ghost{background:transparent;border-color:#cbd5e1;color:#64748b}.admin-btn--sm{padding:6px 10px;font-size:12px;min-height:0}.admin-msg{margin-top:10px;font-size:12px;line-height:1.45}.admin-msg--ok{color:#059669;font-weight:600}.admin-msg--err{color:#dc2626}.admin-alert{padding:12px 14px;border-radius:10px;font-size:13px;line-height:1.5}.admin-alert--err{background:#fef2f2;border:1px solid #fca5a5;color:#991b1b}.admin-loading{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}.admin-loading__cell{height:88px;border-radius:10px;background:linear-gradient(90deg,#f1f5f9 25%,#e2e8f0,#f1f5f9 75%);background-size:200% 100%;animation:admin-shimmer 1.2s ease-in-out infinite}@keyframes admin-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.admin-group{border:1px solid #e2e8f0;border-radius:12px;background:#fff;overflow:hidden;flex-shrink:0}.admin-group__summary{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:16px 18px;cursor:pointer;list-style:none;-webkit-user-select:none;user-select:none}.admin-group__summary::-webkit-details-marker{display:none}.admin-group__summary:after{content:"▸";color:#64748b;font-size:14px;transition:transform .15s ease;flex-shrink:0}.admin-group[open] .admin-group__summary:after{transform:rotate(90deg)}.admin-group__title{font-size:15px;font-weight:700;color:#0f172a}.admin-group__hint{font-size:12px;color:#64748b;margin-left:auto;margin-right:8px}.admin-group__body{padding:0 18px 18px;display:flex;flex-direction:column;gap:16px}.admin-group--health{border-left:4px solid #10b981}.admin-group--users{border-left:4px solid #8b5cf6}.admin-group--actions{border-left:4px solid #f59e0b}.admin-subsection-title{margin:4px 0 0;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#64748b}.admin-user-table-wrap{overflow-x:auto;border:1px solid #e2e8f0;border-radius:10px;background:#fff}.admin-user-table{width:100%;border-collapse:collapse;font-size:13px}.admin-user-table th,.admin-user-table td{padding:10px 12px;text-align:left;border-bottom:1px solid #f1f5f9}.admin-user-table th{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#64748b;background:#f8fafc}.admin-user-table tr:last-child td{border-bottom:none}.admin-user-table__row{cursor:pointer}.admin-user-table__row:hover{background:#f8fafc}.admin-user-table__row--active{background:#eff6ff}.admin-user-table__email{font-weight:600;color:#0f172a}.admin-user-table__muted{color:#64748b;font-size:12px}.admin-info-box{margin:0;padding:12px 14px;border-radius:8px;background:#fffbeb;border:1px solid #fde68a;font-size:12px;color:#92400e;line-height:1.55}.admin-info-box ul{margin:8px 0 0;padding-left:18px}.admin-info-box li{margin-bottom:4px}.admin-reach{display:flex;gap:8px;align-items:baseline;margin-top:12px;padding:10px 12px;border-radius:8px;background:#eff6ff;border:1px solid #bfdbfe;font-size:13px;color:#1e3a8a;line-height:1.5}.admin-reach--empty{background:#f8fafc;border-color:#e2e8f0;color:#64748b}.admin-reach__icon{flex-shrink:0}.admin-reach__refresh{background:none;border:none;padding:0;color:#2563eb;font:inherit;text-decoration:underline;cursor:pointer}.admin-reach__refresh:hover{color:#1d4ed8}.admin-filter-row{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}.admin-filter-row label{display:flex;flex-direction:column;gap:4px;font-size:11px;font-weight:600;color:#64748b}.admin-filter-row input,.admin-filter-row select{padding:8px 10px;font-size:13px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;color:#0f172a;font-family:inherit}.admin-empty{padding:16px;text-align:center;font-size:13px;color:#64748b}html.native-app .login-shell{justify-content:flex-start;padding-top:max(12px,var(--safe-top))}html.native-app .login-shell__intro{margin-bottom:28px}html.native-app .login-shell__footer{display:none}html.native-app .login-role-cards{gap:12px}html.native-app .login-card{padding:24px 20px;box-shadow:none;border:1px solid #e2e8f0}html.native-app .site-header__inner{min-height:48px;padding:6px 0}html.native-app .lay-header__top{justify-content:space-between}html.native-app .lay-header__top-start{display:flex;align-items:center;gap:.75rem;min-width:0}.user-avatar-btn{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--touch-min, 36px);min-width:var(--touch-min, 36px);height:var(--touch-min, 36px);padding:0;border:1px solid var(--border, #e5e7eb);border-radius:50%;background:var(--surface, #fff);color:var(--text, #374151);cursor:pointer;font-family:inherit}.user-avatar-btn:hover{border-color:#2563eb;color:#2563eb}.user-avatar-btn--active{border-color:#2563eb;box-shadow:0 0 0 2px #2563eb40}.user-avatar-btn__initials{font-size:12px;font-weight:700;line-height:1;letter-spacing:.02em}html.native-app .site-header .user-avatar-btn{border-color:#e5e7eb;background:#fff;color:#374151}html.native-app .site-header .user-avatar-btn--active{border-color:#2563eb;color:#2563eb}html.native-app .site-footer{display:none}html.native-app .portal-main{gap:16px;padding-top:12px}html.native-app .portal-shell{min-height:100dvh;max-height:100dvh;overflow:hidden;width:100%;max-width:100%}html.native-app .portal-shell .portal-main{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch}html.native-app .modal-backdrop{align-items:flex-end;justify-content:center;padding:0;overflow:hidden}html.native-app .modal-backdrop .modal{width:100%;max-width:100%;max-height:calc(100dvh - var(--safe-top));height:auto;border-radius:16px 16px 0 0;border-bottom:none;margin:0}html.native-app .modal-backdrop .modal--form,html.native-app .modal-backdrop .modal--scroll-form,html.native-app .modal-backdrop .modal--service,html.native-app .modal-backdrop .modal--household{height:min(calc(100dvh - var(--safe-top)),92dvh);max-height:calc(100dvh - var(--safe-top))}html.native-app .modal-backdrop .modal-body--service{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch}html.native-app .modal-backdrop .modal--thin{max-width:100%}html.native-app .modal-backdrop .modal--passport{height:min(calc(100dvh - var(--safe-top)),94dvh);max-height:calc(100dvh - var(--safe-top))}html.native-app .modal-backdrop .modal-header{padding-top:max(1rem,calc(var(--safe-top) * .25))}html.native-app .modal-backdrop .modal-body{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:1rem}html.native-app .modal-backdrop .modal-footer{flex-shrink:0;padding-bottom:max(.75rem,var(--safe-bottom))}html.native-app .overlay-backdrop{align-items:flex-end;justify-content:center;padding:0;overflow:hidden}html.native-app .overlay-backdrop .overlay-panel{width:100%;max-width:100%;max-height:calc(100dvh - var(--safe-top));height:auto;border-radius:16px 16px 0 0;border-bottom:none;margin:0;overflow:hidden}html.native-app .overlay-backdrop .overlay-panel__body{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch}html.native-app .overlay-backdrop .overlay-panel__footer{flex-shrink:0;padding-bottom:max(.75rem,var(--safe-bottom))}html.native-app .account-modal{gap:12px}html.native-app .account-profile{padding:12px}html.native-app .account-profile__avatar{width:48px;height:48px;font-size:16px}html.native-app .account-card{padding:12px;gap:10px}html.native-app .account-toggle__desc{font-size:11px}html.native-app .account-section{padding-bottom:8px}html.native-app .account-hint{font-size:12px;line-height:1.45}html.native-app .account-row{margin-bottom:8px}
