:root {
    --navy-950: #071522;
    --navy-900: #0b1b2a;
    --navy-850: #102437;
    --navy-800: #163047;
    --blue: #1769d2;
    --blue-dark: #0d57ba;
    --blue-soft: #eaf2ff;
    --surface: #ffffff;
    --canvas: #f3f6f9;
    --border: #dfe6ed;
    --border-soft: #e9eef3;
    --text: #17202f;
    --muted: #718096;
    --green: #159a58;
    --green-soft: #e8f7ef;
    --orange: #f08a24;
    --orange-soft: #fff2e4;
    --red: #e83b45;
    --red-soft: #ffeaec;
    --shadow: 0 12px 32px rgba(25, 44, 65, .08);
    --radius: 12px;
    font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    color: var(--text);
}

* { box-sizing: border-box; }
html, body { min-height: 100%; margin: 0; }
body { background: var(--canvas); font-size: 14px; }
button, input { font: inherit; }
button { cursor: pointer; }
svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.svg-sprite { position: absolute; width: 0; height: 0; overflow: hidden; }
.is-hidden { display: none !important; }
.mobile-only, .mobile-page-title, .mobile-nav, .auth-mobile-brand { display: none !important; }

.brand-mark { position: relative; width: 31px; height: 31px; flex: 0 0 31px; transform: rotate(-8deg); }
.brand-mark span { position: absolute; display: block; width: 9px; height: 9px; border: 3px solid currentColor; border-radius: 50%; }
.brand-mark span:nth-child(1) { left: 0; bottom: 1px; }
.brand-mark span:nth-child(2) { left: 10px; top: 4px; }
.brand-mark span:nth-child(3) { right: 0; bottom: 6px; }
.brand-mark::before, .brand-mark::after { content: ""; position: absolute; height: 3px; background: currentColor; border-radius: 4px; transform-origin: left center; }
.brand-mark::before { width: 16px; left: 6px; bottom: 9px; transform: rotate(-47deg); }
.brand-mark::after { width: 13px; left: 17px; top: 10px; transform: rotate(49deg); }
.brand-mark--large { width: 48px; height: 48px; transform: scale(1.45) rotate(-8deg); }

.app-loading { min-height: 100vh; display: grid; place-content: center; justify-items: center; gap: 18px; color: var(--navy-900); background: #fff; }
.app-loading p { margin: 0; font-size: 19px; font-weight: 750; letter-spacing: -.4px; }
.loading-bar { width: 120px; height: 3px; overflow: hidden; border-radius: 5px; background: #e7edf3; }
.loading-bar span { display: block; width: 45%; height: 100%; background: var(--blue); animation: load 1s ease-in-out infinite alternate; }
@keyframes load { from { transform: translateX(-20%); } to { transform: translateX(145%); } }

/* Authentication */
.auth-view { min-height: 100vh; display: grid; grid-template-columns: minmax(420px, .95fr) minmax(520px, 1.05fr); background: #fff; }
.auth-visual { position: relative; overflow: hidden; min-height: 100vh; padding: 42px 56px; color: #fff; background: radial-gradient(circle at 75% 75%, rgba(30, 113, 205, .3), transparent 35%), linear-gradient(145deg, #071522 5%, #0a2238 58%, #0e3151); }
.auth-visual::after { content: ""; position: absolute; inset: 0; opacity: .08; background-image: linear-gradient(rgba(255,255,255,.2) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.2) 1px, transparent 1px); background-size: 44px 44px; mask-image: linear-gradient(to bottom, transparent, #000); }
.auth-brand, .auth-mobile-brand, .sidebar-brand { display: flex; align-items: center; gap: 12px; color: #fff; }
.auth-brand strong, .auth-mobile-brand strong, .sidebar-brand strong { display: block; font-size: 17px; letter-spacing: -.35px; }
.auth-brand small, .auth-mobile-brand small, .sidebar-brand small { display: block; margin-top: 1px; font-size: 10px; opacity: .74; }
.auth-message { position: relative; z-index: 2; max-width: 570px; margin-top: 19vh; }
.eyebrow { display: block; color: #4c9dff; font-size: 11px; font-weight: 750; letter-spacing: 1.5px; }
.auth-message h1 { margin: 20px 0 22px; font-size: clamp(42px, 4.6vw, 66px); line-height: 1.06; letter-spacing: -3px; }
.auth-message h1 em { color: #54a6ff; font-style: normal; }
.auth-message p { max-width: 520px; margin: 0; color: #b6c7d6; font-size: 17px; line-height: 1.7; }
.auth-visual-footer { position: absolute; z-index: 2; bottom: 34px; left: 56px; margin: 0; color: #8298aa; font-size: 11px; letter-spacing: .4px; }
.network-visual { position: absolute; z-index: 1; right: -30px; bottom: 35px; width: 50%; height: 36%; opacity: .55; }
.network-line { position: absolute; height: 1px; background: linear-gradient(90deg, transparent, #50a8ff, transparent); transform-origin: left; }
.line-a { width: 280px; left: 10px; top: 30%; transform: rotate(25deg); }.line-b { width: 230px; left: 26%; top: 67%; transform: rotate(-34deg); }.line-c { width: 170px; left: 18%; top: 42%; transform: rotate(71deg); }
.network-visual .node { position: absolute; width: 9px; height: 9px; border: 2px solid #71b8ff; border-radius: 50%; box-shadow: 0 0 18px #398fe9; }.node-a { left: 8%; top: 29%; }.node-b { left: 45%; top: 55%; }.node-c { left: 72%; top: 29%; }.node-d { left: 35%; top: 79%; }
.auth-form-panel { display: grid; place-content: center; position: relative; min-height: 100vh; padding: 45px; background: radial-gradient(circle at 50% 45%, #fff, #f8fafc); }
.login-card { width: min(100%, 430px); text-align: center; }
.login-icon, .modal-icon { display: grid; width: 54px; height: 54px; margin: 0 auto 22px; place-items: center; color: var(--blue); background: var(--blue-soft); border-radius: 15px; }
.login-icon svg, .modal-icon svg { width: 26px; height: 26px; }
.login-card h2, .modal-card h2 { margin: 0 0 10px; font-size: 30px; letter-spacing: -1px; }
.login-card > p { margin: 0 0 30px; color: var(--muted); line-height: 1.55; }
.field { display: block; margin: 0 0 17px; text-align: left; }
.field > span:first-child { display: block; margin-bottom: 8px; font-size: 12px; font-weight: 700; color: #344154; }
.field-control { display: flex; height: 50px; align-items: center; gap: 11px; padding: 0 14px; border: 1px solid #d8e0e8; border-radius: 9px; background: #fff; transition: .2s; }
.field-control:focus-within { border-color: var(--blue); box-shadow: 0 0 0 3px rgba(23, 105, 210, .11); }
.field-control svg { width: 18px; color: #8a98a8; }
.field-control input { width: 100%; height: 100%; outline: 0; border: 0; color: var(--text); background: transparent; }
.field-control input::placeholder { color: #a6b0bc; }
.primary-button { display: flex; width: 100%; min-height: 50px; margin-top: 24px; align-items: center; justify-content: center; gap: 12px; border: 0; border-radius: 9px; color: #fff; background: linear-gradient(135deg, var(--blue), var(--blue-dark)); font-weight: 750; box-shadow: 0 8px 18px rgba(23, 105, 210, .22); transition: .2s; }
.primary-button:hover { transform: translateY(-1px); box-shadow: 0 11px 24px rgba(23, 105, 210, .28); }
.primary-button:disabled { opacity: .65; cursor: wait; transform: none; }
.secure-note { display: flex; align-items: center; justify-content: center; gap: 6px; margin-top: 20px !important; color: #93a0ae !important; font-size: 11px; }.secure-note svg { width: 14px; }
.auth-copyright { position: absolute; bottom: 24px; left: 0; right: 0; text-align: center; color: #a0abb7; font-size: 11px; }
.form-alert { margin: 0 0 18px; padding: 11px 13px; border: 1px solid #ffd0d4; border-radius: 8px; color: #b32632; background: #fff0f1; font-size: 12px; line-height: 1.45; text-align: left; }

/* Application shell */
.app-shell { min-height: 100vh; }
.sidebar { position: fixed; z-index: 20; inset: 0 auto 0 0; display: flex; width: 242px; flex-direction: column; padding: 22px 13px 14px; color: #d9e5ee; background: linear-gradient(180deg, #0a1a28, #0b2031 60%, #091722); box-shadow: 8px 0 24px rgba(6, 20, 32, .08); }
.sidebar-brand { height: 42px; padding: 0 10px; margin-bottom: 22px; }
.main-nav { display: grid; gap: 4px; overflow-y: auto; padding: 2px 0; scrollbar-width: none; }
.nav-item { display: flex; min-height: 42px; align-items: center; gap: 12px; padding: 0 12px; border: 0; border-radius: 8px; color: #d3dee7; background: transparent; text-align: left; font-size: 13px; transition: .18s; }
.nav-item svg { width: 18px; height: 18px; color: #b9c7d2; }
.nav-item:hover { color: #fff; background: rgba(255,255,255,.055); }
.nav-item.is-active { color: #fff; background: #203b52; box-shadow: inset 3px 0 #4d9eff; }.nav-item.is-active svg { color: #fff; }
.nav-badge { margin-left: auto; padding: 2px 7px; border-radius: 10px; color: #fff; background: var(--red); font-size: 10px; }
.sidebar-user { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 10px; margin-top: auto; padding: 15px 7px 2px; border-top: 1px solid rgba(255,255,255,.08); }
.sidebar-user strong { display: block; overflow: hidden; max-width: 120px; color: #fff; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }.sidebar-user small { display: block; margin-top: 2px; color: #91a4b3; font-size: 9px; }
.avatar { display: inline-grid; width: 36px; height: 36px; place-items: center; border-radius: 50%; color: #fff; background: linear-gradient(145deg, #3e759e, #1b4768); font-size: 11px; font-weight: 750; }
.avatar--small { width: 30px; height: 30px; color: #4c6073; background: #e4eaf0; }
.workspace { min-height: 100vh; margin-left: 242px; }
.topbar { position: sticky; z-index: 12; top: 0; display: flex; height: 78px; align-items: center; justify-content: space-between; padding: 0 30px; border-bottom: 1px solid var(--border-soft); background: rgba(255,255,255,.94); backdrop-filter: blur(12px); }
.topbar-title h1 { margin: 2px 0 0; font-size: 25px; letter-spacing: -.8px; }.breadcrumb { color: #8b98a7; font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .7px; }
.topbar-actions { display: flex; align-items: center; gap: 10px; }
.notification-shell { position: relative; }.notification-badge { position: absolute; min-width: 17px; height: 17px; top: -6px; right: -6px; padding: 0 4px; border: 2px solid #fff; border-radius: 10px; color: #fff; background: var(--red); font-size: 8px; font-weight: 800; line-height: 13px; text-align: center; }.notification-panel { position: absolute; z-index: 40; width: min(380px, calc(100vw - 30px)); max-height: min(520px, calc(100vh - 95px)); top: calc(100% + 11px); right: 0; overflow: hidden; border: 1px solid var(--border); border-radius: 12px; background: #fff; box-shadow: 0 18px 50px rgba(22,35,51,.2); }.notification-panel header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 15px; border-bottom: 1px solid var(--border-soft); }.notification-panel header strong, .notification-panel header small { display: block; }.notification-panel header strong { font-size: 12px; }.notification-panel header small { margin-top: 3px; color: var(--muted); font-size: 9px; }.notification-panel .text-button { font-size: 9px; }.notification-list { max-height: 425px; overflow-y: auto; }.notification-item { display: grid; width: 100%; grid-template-columns: 9px minmax(0, 1fr); gap: 10px; padding: 13px 15px; border: 0; border-bottom: 1px solid var(--border-soft); color: var(--ink); background: #fff; text-align: left; }.notification-item:hover { background: #f7f9fc; }.notification-item.is-unread { background: #f2f7fe; }.notification-item-dot { width: 8px; height: 8px; margin-top: 4px; border-radius: 50%; background: #bdc7d1; }.notification-item.is-unread .notification-item-dot { background: var(--blue); }.notification-item strong, .notification-item span, .notification-item small { display: block; }.notification-item strong { font-size: 10px; }.notification-item span { margin-top: 4px; color: #536476; font-size: 9px; line-height: 1.45; }.notification-item small { margin-top: 5px; color: #8a97a5; font-size: 8px; }.notification-empty { padding: 35px 15px; color: var(--muted); font-size: 10px; text-align: center; }
.project-selector, .map-filter { display: flex; height: 39px; align-items: center; gap: 11px; padding: 0 14px; border: 1px solid var(--border); border-radius: 8px; color: #2e3a48; background: #fff; font-size: 12px; }.project-selector { width: min(260px, 24vw); text-overflow: ellipsis; }
.status-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--green); box-shadow: 0 0 0 3px var(--green-soft); }
.icon-button { position: relative; display: inline-grid; width: 39px; height: 39px; padding: 0; place-items: center; border: 1px solid var(--border); border-radius: 8px; color: #455467; background: #fff; }.icon-button svg { width: 18px; }.icon-button--dark { width: 31px; height: 31px; border: 0; color: #9dafbd; background: rgba(255,255,255,.05); }
.has-indicator i { position: absolute; width: 7px; height: 7px; top: 7px; right: 7px; border: 2px solid #fff; border-radius: 50%; background: var(--red); }
.profile-button { display: flex; height: 40px; align-items: center; gap: 8px; padding: 0 7px; border: 0; color: #334153; background: transparent; font-size: 11px; font-weight: 650; }
.dashboard-content { padding: 22px 30px 32px; }
.kpi-grid { display: grid; grid-template-columns: repeat(6, minmax(130px, 1fr)); gap: 12px; }
.kpi-card { display: flex; min-height: 111px; align-items: flex-start; justify-content: space-between; padding: 18px 16px; border: 1px solid var(--border); border-radius: var(--radius); background: #fff; box-shadow: 0 2px 7px rgba(30,50,70,.025); }
.kpi-card span { display: block; color: #4c596a; font-size: 11px; font-weight: 650; }.kpi-card strong { display: block; margin: 7px 0 5px; font-size: 28px; line-height: 1; letter-spacing: -1px; }.kpi-card small { color: #8793a2; font-size: 9px; }
.kpi-card--button { font: inherit; text-align: left; cursor: pointer; transition: border-color .18s, transform .18s, box-shadow .18s; }.kpi-card--button:hover { border-color: #b9d1ed; box-shadow: 0 7px 20px rgba(30,80,130,.1); transform: translateY(-1px); }
.kpi-icon { display: grid; width: 36px; height: 36px; place-items: center; border-radius: 50%; }.kpi-icon svg { width: 18px; }.kpi-icon--red, .kpi-icon--rose { color: var(--red); background: var(--red-soft); }.kpi-icon--green { color: var(--green); background: var(--green-soft); }.kpi-icon--orange { color: var(--orange); background: var(--orange-soft); }.kpi-icon--blue { color: var(--blue); background: var(--blue-soft); }
.dashboard-grid { display: grid; grid-template-columns: minmax(390px, .85fr) minmax(480px, 1.15fr); gap: 14px; margin-top: 15px; }
.panel { overflow: hidden; min-height: 430px; border: 1px solid var(--border); border-radius: var(--radius); background: #fff; box-shadow: var(--shadow); }
.panel-header { display: flex; height: 68px; align-items: center; justify-content: space-between; padding: 0 17px; border-bottom: 1px solid var(--border-soft); }.panel-header h2 { margin: 0; font-size: 14px; }.panel-header p { margin: 4px 0 0; color: #8b98a8; font-size: 9px; }
.text-button { border: 0; color: var(--blue); background: transparent; font-size: 10px; font-weight: 700; }.map-filter { height: 34px; font-size: 10px; }
.fault-list { min-height: 350px; }.panel-loading { display: grid; gap: 13px; padding: 20px; }.panel-loading span { height: 58px; border-radius: 8px; background: linear-gradient(90deg,#f2f5f7,#e8edf1,#f2f5f7); background-size: 220% 100%; animation: shimmer 1.2s infinite; }
@keyframes shimmer { to { background-position: -220% 0; } }
.empty-state { display: grid; min-height: 350px; place-content: center; justify-items: center; padding: 25px; text-align: center; }.empty-state > span, .map-empty > span { display: grid; width: 48px; height: 48px; margin-bottom: 13px; place-items: center; border-radius: 50%; color: var(--blue); background: var(--blue-soft); }.empty-state strong, .map-empty strong { font-size: 13px; }.empty-state small, .map-empty small { max-width: 240px; margin-top: 6px; color: #8b98a8; font-size: 10px; line-height: 1.5; }
.fault-map { position: relative; overflow: hidden; min-height: 361px; background: #e9eef0; }.google-map-canvas { position: absolute !important; z-index: 1; inset: 0; width: 100%; height: 100%; }.point-map, .project-points-map, .asset-list-map, .asset-detail-map, .job-location-map { position: relative; overflow: hidden; }
.map-water { position: absolute; left: -8%; bottom: -40%; width: 60%; height: 70%; border-radius: 42% 58% 0 0; background: linear-gradient(150deg, #b9d8e9, #91c4df); transform: rotate(8deg); }.map-water::after { content: ""; position: absolute; inset: 8px 0 0; border-top: 1px solid rgba(255,255,255,.7); }
.map-roads i { position: absolute; display: block; height: 7px; border: 1px solid #d7dddf; background: rgba(255,255,255,.75); transform-origin: left; }.map-roads i:nth-child(1){width:75%;left:8%;top:25%;transform:rotate(12deg)}.map-roads i:nth-child(2){width:70%;left:35%;top:8%;transform:rotate(68deg)}.map-roads i:nth-child(3){width:60%;left:28%;top:75%;transform:rotate(-38deg)}.map-roads i:nth-child(4){width:55%;left:5%;top:52%;transform:rotate(-15deg)}.map-roads i:nth-child(5){width:45%;right:-8%;top:50%;transform:rotate(115deg)}
.map-label { position: absolute; z-index: 2; top: 46%; left: 57%; color: #51616d; font-size: 16px; font-weight: 750; }.map-empty { position: absolute; z-index: 4; inset: 0; display: grid; place-content: center; justify-items: center; text-align: center; background: rgba(244,247,248,.64); backdrop-filter: blur(1px); }
.map-controls { position: absolute; z-index: 5; top: 12px; left: 12px; display: grid; overflow: hidden; border: 1px solid #d4dce2; border-radius: 6px; box-shadow: 0 2px 6px rgba(20,40,60,.1); }.map-controls button { width: 28px; height: 28px; border: 0; background: #fff; color: #45525e; }.map-controls button + button { border-top: 1px solid #e2e7eb; }
.map-marker { position: absolute; z-index: 3; display: grid; width: 28px; height: 28px; place-items: center; border: 3px solid #fff; border-radius: 50% 50% 50% 0; color: #fff; background: var(--red); box-shadow: 0 3px 8px rgba(30,50,60,.22); transform: rotate(-45deg); font-size: 9px; font-weight: 800; }.map-marker span { transform: rotate(45deg); }
.fault-map .gm-style, .operational-fault-map .gm-style, .point-map .gm-style, .project-points-map .gm-style, .asset-list-map .gm-style, .asset-detail-map .gm-style, .job-location-map .gm-style { font-family: inherit; }
.fault-map-marker { display: grid; width: 34px; height: 34px; place-items: center; border: 3px solid #fff; border-radius: 50% 50% 50% 0; color: #fff; background: var(--blue); box-shadow: 0 4px 12px rgba(20,40,60,.3); transform: rotate(-45deg); font-size: 11px; font-weight: 850; }
.fault-map-marker b { transform: rotate(45deg); }
.fault-map-marker--low { background: var(--green); }.fault-map-marker--medium { background: var(--orange); }.fault-map-marker--high, .fault-map-marker--critical { background: var(--red); }.fault-map-marker--critical { box-shadow: 0 0 0 5px rgba(226,58,68,.18), 0 4px 12px rgba(20,40,60,.3); }
.fault-map-popup { display: grid; min-width: 230px; gap: 5px; }.fault-map-popup > strong { padding: 4px 5px 7px; font-size: 12px; }.fault-map-popup button { display: grid; gap: 3px; padding: 8px; border: 0; border-radius: 7px; color: #263547; background: #f3f6f8; text-align: left; cursor: pointer; }.fault-map-popup button:hover { background: var(--blue-soft); }.fault-map-popup b { font-size: 11px; }.fault-map-popup small { color: var(--muted); font-size: 9px; }
.fault-map .map-empty { z-index: 500; }
.toast { position: fixed; z-index: 100; right: 25px; bottom: 25px; display: flex; align-items: center; gap: 9px; max-width: 360px; padding: 13px 17px; border-radius: 9px; color: #fff; background: #183047; box-shadow: 0 12px 32px rgba(0,0,0,.2); font-size: 12px; }.toast svg { width: 17px; color: #69d99d; }

/* Forced password modal */
.modal-backdrop { position: fixed; z-index: 90; inset: 0; display: grid; overflow-y: auto; place-items: center; padding: 25px; background: rgba(4, 16, 27, .72); backdrop-filter: blur(6px); }
.modal-card { width: min(100%, 470px); padding: 34px; border-radius: 16px; background: #fff; box-shadow: 0 28px 70px rgba(0,0,0,.26); }.modal-card .modal-icon { margin-bottom: 16px; }.modal-card .eyebrow { text-align: center; }.modal-card h2 { margin-top: 8px; text-align: center; }.modal-card > p { margin: 0 0 25px; color: var(--muted); text-align: center; line-height: 1.5; }.password-rules { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; margin: 4px 0 0; padding: 0; list-style: none; color: #758395; font-size: 10px; }.password-rules li::before { content: "✓"; margin-right: 5px; color: var(--green); font-weight: 800; }

@media (max-width: 1180px) {
    .sidebar { width: 218px; }.workspace { margin-left: 218px; }.dashboard-content { padding-inline: 20px; }.topbar { padding-inline: 20px; }.kpi-grid { grid-template-columns: repeat(3, 1fr); }.dashboard-grid { grid-template-columns: 1fr; }.panel { min-height: 390px; }.auth-view { grid-template-columns: .9fr 1.1fr; }.auth-visual { padding-inline: 40px; }
}

@media (max-width: 840px) {
    .desktop-only { display: none !important; }.mobile-only, .mobile-page-title, .mobile-nav, .auth-mobile-brand { display: flex !important; }
    .auth-view { display: block; min-height: 100vh; }.auth-visual { display: none; }.auth-form-panel { min-height: 100vh; padding: 30px 22px 80px; place-content: center; }.auth-mobile-brand { position: absolute; top: 28px; left: 25px; color: var(--navy-900); }.auth-mobile-brand small { color: #718096; }.login-card { margin-top: 45px; }.auth-copyright { bottom: 18px; }
    .sidebar { width: min(82vw, 290px); transform: translateX(-105%); transition: transform .25s ease; }.sidebar.is-open { transform: translateX(0); }.workspace { margin-left: 0; padding-bottom: 70px; }
    .topbar { height: 62px; padding: 0 15px; }.topbar-title { display: flex; align-items: center; gap: 9px; }.topbar-title > div { display: none; }.topbar-actions { margin-left: auto; }.project-selector { max-width: 135px; padding-inline: 10px; }.project-selector span:nth-child(2) { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.profile-button #top-user-name, .profile-button > span:last-child { display: none; }
    .dashboard-content { padding: 17px 14px 24px; }.mobile-page-title { display: block; margin: 2px 0 15px; }.mobile-page-title span { color: #8492a2; font-size: 9px; font-weight: 750; text-transform: uppercase; letter-spacing: .6px; }.mobile-page-title h1 { margin: 3px 0 0; font-size: 23px; }
    .kpi-grid { display: flex; overflow-x: auto; gap: 10px; padding-bottom: 5px; scroll-snap-type: x mandatory; scrollbar-width: none; }.kpi-card { min-width: 174px; min-height: 103px; scroll-snap-align: start; }.dashboard-grid { grid-template-columns: 1fr; margin-top: 11px; }.panel { min-height: 365px; }.fault-map { min-height: 320px; }
    .mobile-nav { position: fixed; z-index: 30; right: 0; bottom: 0; left: 0; height: calc(62px + env(safe-area-inset-bottom)); padding: 5px 8px env(safe-area-inset-bottom); align-items: center; justify-content: space-around; border-top: 1px solid var(--border); background: rgba(255,255,255,.97); backdrop-filter: blur(10px); }.mobile-nav button { display: grid; gap: 2px; justify-items: center; border: 0; color: #738194; background: transparent; font-size: 9px; }.mobile-nav svg { width: 20px; height: 20px; }.mobile-nav button.is-active { color: var(--blue); font-weight: 750; }
    .modal-card { padding: 28px 22px; }.password-rules { grid-template-columns: 1fr; }.toast { right: 14px; bottom: 77px; left: 14px; max-width: none; }
}

@media (max-width: 480px) {
    .login-card h2 { font-size: 27px; }.login-icon { margin-bottom: 17px; }.topbar .has-indicator { display: none; }.project-selector { max-width: 122px; }.panel-header { padding-inline: 14px; }.map-filter { max-width: 115px; overflow: hidden; white-space: nowrap; }.auth-form-panel { padding-inline: 20px; }
}

@media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; transition-duration: .01ms !important; } }

/* Fault management modules */
.fault-row { display: grid; width: 100%; grid-template-columns: 1fr auto; gap: 5px 12px; padding: 15px 17px; border: 0; border-bottom: 1px solid var(--border-soft); color: var(--text); background: #fff; text-align: left; transition: .18s; }
.fault-row:hover { background: #f7faff; }.fault-row strong { overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }.fault-row small { color: var(--muted); font-size: 10px; }.fault-row .status-pill { grid-row: 1 / 3; grid-column: 2; align-self: center; }
.module-view { padding: 25px 30px 35px; }.module-heading, .detail-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 22px; margin-bottom: 20px; }.module-heading h1, .detail-heading h1 { margin: 4px 0 5px; font-size: 27px; letter-spacing: -.8px; }.module-heading p, .detail-heading p { margin: 0; color: var(--muted); font-size: 11px; }
.action-button, .secondary-button, .danger-button, .back-button { display: inline-flex; min-height: 40px; align-items: center; justify-content: center; gap: 7px; padding: 0 16px; border-radius: 8px; font-size: 11px; font-weight: 750; transition: .18s; }.action-button { border: 1px solid var(--blue); color: #fff; background: var(--blue); box-shadow: 0 5px 13px rgba(23,105,210,.18); }.action-button:hover { background: var(--blue-dark); }.secondary-button { border: 1px solid var(--border); color: #39495b; background: #fff; }.danger-button { border: 1px solid #d94b59; color: #fff; background: #d94b59; }.danger-button:hover { background: #bd3543; }.back-button { min-height: 32px; margin: -4px 0 12px; padding: 0; border: 0; color: var(--blue); background: transparent; }
.data-panel { min-height: 300px; }.table-toolbar { display: flex; min-height: 66px; align-items: center; gap: 11px; padding: 12px 16px; border-bottom: 1px solid var(--border-soft); }.search-control { display: flex; width: min(390px, 100%); height: 40px; align-items: center; gap: 9px; padding: 0 12px; border: 1px solid var(--border); border-radius: 8px; background: #fff; }.search-control svg { width: 16px; color: #8492a2; }.search-control input { width: 100%; border: 0; outline: 0; color: var(--text); background: transparent; font-size: 11px; }.compact-select, .field select, .field textarea { border: 1px solid #d8e0e8; border-radius: 8px; color: var(--text); background: #fff; font: inherit; outline: 0; }.compact-select { height: 40px; padding: 0 32px 0 12px; font-size: 11px; }.field select { width: 100%; min-height: 48px; padding: 0 12px; }.field textarea { width: 100%; padding: 12px; resize: vertical; line-height: 1.5; }.field select:focus, .field textarea:focus, .compact-select:focus { border-color: var(--blue); box-shadow: 0 0 0 3px rgba(23,105,210,.11); }.result-count { margin-left: auto; color: var(--muted); font-size: 10px; }
.responsive-table { overflow-x: auto; }.responsive-table table { width: 100%; border-collapse: collapse; }.responsive-table th { padding: 12px 14px; color: #788697; background: #f8fafb; text-align: left; font-size: 9px; text-transform: uppercase; letter-spacing: .45px; white-space: nowrap; }.responsive-table td { padding: 14px; border-top: 1px solid var(--border-soft); color: #425164; font-size: 11px; vertical-align: middle; }.responsive-table tbody tr { cursor: pointer; transition: .15s; }.responsive-table tbody tr:hover { background: #f7faff; }.table-primary { display: block; max-width: 280px; overflow: hidden; color: #233244; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }.table-secondary { display: block; margin-top: 4px; color: #8a97a6; font-size: 9px; }.table-empty { display: grid; min-height: 260px; place-content: center; justify-items: center; padding: 24px; color: var(--muted); text-align: center; }.table-empty svg { width: 34px; height: 34px; margin-bottom: 13px; color: var(--blue); }.table-empty strong { color: var(--text); font-size: 13px; }.table-empty small { max-width: 300px; margin-top: 6px; font-size: 10px; line-height: 1.5; }
.table-pagination { display: flex; min-height: 58px; align-items: center; justify-content: flex-end; gap: 12px; padding: 10px 15px; border-top: 1px solid var(--border-soft); }.table-pagination span { min-width: 110px; color: var(--muted); font-size: 9px; text-align: center; }.table-pagination button { min-height: 34px; padding: 0 11px; font-size: 9px; }.table-pagination button:disabled { opacity: .45; cursor: default; }
.detail-tabs button:disabled { opacity: .45; cursor: not-allowed; }
.status-pill { display: inline-flex; min-height: 24px; align-items: center; padding: 0 9px; border-radius: 20px; color: #526174; background: #edf1f5; font-size: 9px; font-style: normal; font-weight: 750; white-space: nowrap; }.status-pill--red { color: #b72835; background: #fdebed; }.status-pill--orange { color: #ad6814; background: #fff2df; }.status-pill--green { color: #197144; background: #e4f7ed; }.status-pill--blue { color: #175fae; background: #e7f1fd; }.status-pill--purple { color: #6c46a2; background: #f0eafb; }
.ticket-number { display: block; color: var(--blue); font-size: 11px; font-weight: 800; }.detail-actions { display: flex; align-items: center; gap: 9px; }.workflow-timeline { display: flex; overflow-x: auto; margin-bottom: 16px; padding: 18px; border: 1px solid var(--border); border-radius: var(--radius); background: #fff; }.workflow-step { position: relative; display: grid; min-width: 110px; flex: 1; justify-items: center; gap: 7px; color: #8895a4; font-size: 9px; text-align: center; }.workflow-step::before { content: ""; position: absolute; z-index: 0; top: 9px; left: -50%; width: 100%; height: 2px; background: #e2e7ec; }.workflow-step:first-child::before { display: none; }.workflow-step i { position: relative; z-index: 1; display: grid; width: 20px; height: 20px; place-items: center; border: 3px solid #fff; border-radius: 50%; background: #dce3e9; box-shadow: 0 0 0 1px #dce3e9; }.workflow-step.is-done i, .workflow-step.is-current i { background: var(--blue); box-shadow: 0 0 0 1px var(--blue); }.workflow-step.is-done::before, .workflow-step.is-current::before { background: var(--blue); }.workflow-step.is-current { color: var(--blue); font-weight: 750; }
.detail-tabs { display: flex; overflow-x: auto; margin-bottom: 15px; border-bottom: 1px solid var(--border); }.detail-tabs button { min-height: 42px; padding: 0 17px; border: 0; border-bottom: 2px solid transparent; color: #788697; background: transparent; font-size: 10px; }.detail-tabs button.is-active { border-color: var(--blue); color: var(--blue); font-weight: 750; }.detail-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }.detail-card { min-height: 220px; }.detail-card > header { padding: 16px 17px; border-bottom: 1px solid var(--border-soft); }.detail-card h2 { margin: 0; font-size: 12px; }.info-list { display: grid; grid-template-columns: 1fr 1fr; margin: 0; padding: 8px 17px 18px; }.info-list div { padding: 11px 0; border-bottom: 1px solid var(--border-soft); }.info-list div:nth-last-child(-n+2) { border-bottom: 0; }.info-list dt { color: #8996a5; font-size: 9px; }.info-list dd { margin: 4px 0 0; color: #334356; font-size: 10px; font-weight: 650; overflow-wrap: anywhere; }.work-orders-card { min-height: 150px; margin-top: 14px; }.work-order-list { padding: 0 17px; }.work-order-item { display: grid; grid-template-columns: 1fr auto auto; align-items: center; gap: 12px; padding: 14px 0; border-bottom: 1px solid var(--border-soft); }.work-order-item:last-child { border: 0; }.work-order-item strong { display: block; font-size: 11px; }.work-order-item small { display: block; margin-top: 4px; color: var(--muted); font-size: 9px; }.inline-empty { padding: 25px 0; color: var(--muted); text-align: center; font-size: 10px; }
.modal-card--wide { width: min(100%, 720px); }.modal-header, .modal-footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; }.modal-header { margin-bottom: 22px; }.modal-header h2 { margin: 5px 0 0; text-align: left; }.modal-close { width: 34px; height: 34px; border: 0; border-radius: 50%; color: #657487; background: #f1f4f7; font-size: 22px; }.modal-footer { justify-content: flex-end; margin-top: 23px; padding-top: 17px; border-top: 1px solid var(--border-soft); }.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }.form-grid > *, .field { min-width: 0; }.field--full { grid-column: 1 / -1; }

@media (max-width: 1180px) { .module-view { padding-inline: 20px; }.detail-grid { grid-template-columns: 1fr 1fr; }.detail-card:last-child { grid-column: 1 / -1; } }
@media (max-width: 840px) { .module-view { padding: 18px 14px 25px; }.module-heading, .detail-heading { align-items: stretch; flex-direction: column; }.module-heading .action-button { align-self: flex-start; }.detail-actions { flex-wrap: wrap; }.table-toolbar { align-items: stretch; flex-direction: column; }.search-control { width: 100%; }.result-count { margin-left: 0; }.detail-grid { grid-template-columns: 1fr; }.detail-card:last-child { grid-column: auto; }.modal-backdrop { padding: 12px; place-items: start center; }.modal-card { margin: 12px 0; }.work-order-item { grid-template-columns: 1fr auto; }.work-order-item .secondary-button { grid-column: 1 / -1; }.responsive-table table { min-width: 760px; } }
@media (max-width: 480px) { .form-grid { grid-template-columns: 1fr; }.field--full { grid-column: auto; }.modal-card { padding: 24px 18px; }.detail-actions .action-button, .detail-actions .secondary-button { flex: 1; }.info-list { grid-template-columns: 1fr; }.info-list div:nth-last-child(2) { border-bottom: 1px solid var(--border-soft); } }
.work-order-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 7px; }.work-order-actions .secondary-button { min-height: 32px; padding-inline: 10px; }
.modal-note { margin: 16px 0 0 !important; padding: 11px 13px; border-radius: 8px; color: #637286 !important; background: #f3f6f9; font-size: 10px; line-height: 1.5; text-align: left !important; }.credential-box { display: flex; align-items: center; gap: 10px; padding: 13px; border: 1px dashed #a9bad0; border-radius: 9px; background: #f5f8fb; }.credential-box code { flex: 1; overflow-wrap: anywhere; color: #183b61; font-size: 13px; font-weight: 750; }.credential-warning { margin: 14px 0 0; border-color: #f2d5a8; color: #8a5a14; background: #fff7e8; }
.jobs-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }.job-card { padding: 18px; border: 1px solid var(--border); border-radius: var(--radius); background: #fff; box-shadow: var(--shadow); }.job-card-header, .job-card-footer, .job-section-heading, .visit-item { display: flex; align-items: center; justify-content: space-between; gap: 12px; }.job-card h2 { margin: 12px 0 5px; font-size: 15px; }.job-card p { margin: 0; color: var(--muted); font-size: 10px; }.job-card dl { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 17px 0; }.job-card dt { color: var(--muted); font-size: 9px; }.job-card dd { margin: 3px 0 0; font-size: 10px; font-weight: 700; }.job-summary { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; padding: 14px; border-radius: 9px; background: #f5f7fa; }.job-summary span { color: var(--muted); font-size: 9px; }.job-summary strong { display: block; margin-top: 4px; font-size: 10px; }.job-section-heading { margin: 22px 0 10px; }.job-section-heading h3 { margin: 0; font-size: 12px; }.job-visits { border-top: 1px solid var(--border-soft); }.visit-item { padding: 13px 0; border-bottom: 1px solid var(--border-soft); }.visit-item strong { display: block; font-size: 10px; }.visit-item small { display: block; margin-top: 3px; color: var(--muted); font-size: 9px; }
.job-filter-tabs { display: flex; width: fit-content; margin-bottom: 14px; padding: 4px; border: 1px solid var(--border); border-radius: 10px; background: #fff; }.job-filter-tabs button { min-height: 34px; padding: 0 15px; border: 0; border-radius: 7px; color: var(--muted); background: transparent; font-size: 10px; font-weight: 700; }.job-filter-tabs button.is-active { color: var(--blue); background: var(--blue-soft); }
.job-card-location { margin-top: 5px !important; overflow: hidden; color: #52677d !important; text-overflow: ellipsis; white-space: nowrap; }.job-detail-card { width: min(100%, 900px); }.job-brief { display: grid; gap: 12px; margin-top: 13px; }.job-brief-overview, .job-instructions, .job-brief-details, .job-location, .job-brief-history { border: 1px solid var(--border-soft); border-radius: 9px; background: #fff; }.job-brief-overview { padding: 15px; }.job-brief-heading, .job-brief-pills, .job-location > div:first-child { display: flex; align-items: center; justify-content: space-between; gap: 10px; }.job-brief-heading span { color: var(--blue); font-size: 8px; font-weight: 800; letter-spacing: .4px; }.job-brief-heading h3 { margin: 4px 0 0; font-size: 14px; }.job-brief-pills { justify-content: flex-end; }.job-brief-overview > p, .job-instructions p { margin: 11px 0 0; color: #4c5e72; font-size: 10px; line-height: 1.6; white-space: pre-wrap; }.job-instructions { padding: 13px 15px; border-color: #c9ddf6; background: #f1f7fe; }.job-instructions strong { color: #2165aa; font-size: 10px; }.job-brief-grid { display: grid; grid-template-columns: minmax(0, .9fr) minmax(300px, 1.1fr); gap: 12px; }.job-brief-details { display: grid; grid-template-columns: 1fr 1fr; margin: 0; padding: 8px 14px; }.job-brief-details div { min-width: 0; padding: 9px 4px; border-bottom: 1px solid var(--border-soft); }.job-brief-details dt { color: var(--muted); font-size: 8px; }.job-brief-details dd { margin: 4px 0 0; overflow-wrap: anywhere; color: #33475c; font-size: 9px; font-weight: 650; }.job-location { overflow: hidden; }.job-location > div:first-child { min-height: 48px; padding: 8px 12px; }.job-location > div:first-child strong { font-size: 10px; }.job-navigation { min-height: 32px; padding-inline: 10px; font-size: 9px; text-decoration: none; }.job-location-map { z-index: 1; min-height: 210px; background: #edf1f4; }.job-location-empty { display: grid; min-height: 160px; place-items: center; padding: 18px; color: var(--muted); font-size: 9px; text-align: center; }.job-brief-history { padding: 13px 15px; }.job-brief-history > strong { font-size: 10px; }.job-brief-history > div { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 18px; margin-top: 10px; }.job-brief-history > div > div { display: grid; grid-template-columns: 8px 1fr; gap: 8px; }.job-brief-history i { width: 7px; height: 7px; margin-top: 3px; border-radius: 50%; background: var(--blue); }.job-brief-history p { margin: 0; }.job-brief-history b, .job-brief-history small { display: block; }.job-brief-history b { color: #35495f; font-size: 9px; }.job-brief-history small { margin-top: 3px; color: var(--muted); font-size: 8px; line-height: 1.4; }
.job-card--returned { border-color: #e8a8ae; box-shadow: 0 0 0 2px rgba(201,57,69,.06); }.job-review-feedback, .job-review-pending { padding: 12px 14px; border-radius: 9px; font-size: 10px; line-height: 1.5; }.job-review-feedback { border: 1px solid #efc1c5; color: #852d36; background: #fff1f2; }.job-review-feedback strong, .job-review-feedback p { display: block; margin: 0; }.job-review-feedback p { margin-top: 5px; white-space: pre-wrap; }.job-review-pending { border: 1px solid #f0d5aa; color: #8a5b16; background: #fff7e8; font-weight: 700; }
@media (max-width: 840px) { .jobs-grid { grid-template-columns: 1fr; }.job-filter-tabs { width: 100%; overflow-x: auto; }.job-filter-tabs button { flex: 1 0 auto; }.job-summary { grid-template-columns: 1fr 1fr; }.job-brief-grid { grid-template-columns: 1fr; }.job-brief-history > div { grid-template-columns: 1fr; }.table-pagination { justify-content: space-between; }.table-pagination span { min-width: auto; } }
@media (max-width: 480px) { .job-brief-heading { align-items: flex-start; flex-direction: column; }.job-brief-pills { justify-content: flex-start; }.job-brief-details { grid-template-columns: 1fr; }.job-location-map { min-height: 190px; } }

/* Fault location map picker */
.field .select2-container { width: 100% !important; font-size: 11px; }.field .select2-container .select2-selection--single { height: 48px; border: 1px solid #d8e0e8; border-radius: 8px; outline: 0; }.field .select2-container .select2-selection--single .select2-selection__rendered { padding: 0 40px 0 12px; color: var(--text); line-height: 46px; }.field .select2-container .select2-selection--single .select2-selection__placeholder { color: #8b98a6; }.field .select2-container .select2-selection--single .select2-selection__arrow { top: 10px; right: 8px; }.field .select2-container--open .select2-selection--single, .field .select2-container--focus .select2-selection--single { border-color: var(--blue); box-shadow: 0 0 0 3px rgba(23,105,210,.11); }.select2-dropdown { overflow: hidden; border: 1px solid #cfd9e3; border-radius: 8px; box-shadow: 0 10px 28px rgba(25,42,62,.16); font-size: 11px; }.select2-search--dropdown { padding: 9px; }.select2-search--dropdown .select2-search__field { height: 40px; padding: 0 11px; border: 1px solid #d8e0e8 !important; border-radius: 7px; outline: 0; }.select2-results__option { padding: 10px 12px; line-height: 1.35; }.select2-container--default .select2-results__option--highlighted.select2-results__option--selectable { background: var(--blue); }.select2-container--default .select2-results__option--selected { color: #175fae; background: #eaf3fd; }.select2-container--default .select2-selection--single .select2-selection__clear { height: 46px; margin-right: 26px; color: #8492a2; }
.point-picker { display: flex; width: 100%; min-height: 48px; align-items: center; gap: 10px; padding: 0 12px; border: 1px solid #d8e0e8; border-radius: 8px; color: #46576a; background: #fff; text-align: left; transition: .18s; }.point-picker:hover:not(:disabled) { border-color: var(--blue); box-shadow: 0 0 0 3px rgba(23,105,210,.09); }.point-picker:disabled { cursor: not-allowed; color: #99a5b2; background: #f4f6f8; }.point-picker svg { width: 17px; height: 17px; flex: 0 0 auto; color: var(--blue); }.point-picker span { min-width: 0; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.point-picker b { color: var(--blue); font-size: 10px; white-space: nowrap; }
.map-picker-card { width: min(1120px, 100%); padding: 26px; }.point-mode-tabs { display: flex; gap: 5px; margin-bottom: 14px; padding: 4px; border-radius: 9px; background: #eef2f6; }.point-mode-tabs button { min-height: 36px; flex: 1; padding: 0 13px; border: 0; border-radius: 7px; color: #667587; background: transparent; font-size: 10px; font-weight: 700; }.point-mode-tabs button.is-active { color: var(--blue); background: #fff; box-shadow: 0 2px 8px rgba(29,47,67,.09); }
.map-picker-layout { display: grid; min-height: 500px; grid-template-columns: minmax(0, 1.8fr) minmax(280px, .8fr); overflow: hidden; border: 1px solid var(--border); border-radius: 10px; }.point-map { z-index: 1; min-height: 500px; background: #e8edf2; }.point-picker-sidebar { min-width: 0; padding: 14px; border-left: 1px solid var(--border); background: #fff; }.point-search { width: 100%; }.point-result-count { padding: 11px 2px 9px; color: var(--muted); font-size: 9px; }.point-results { max-height: 420px; overflow-y: auto; border-top: 1px solid var(--border-soft); }.point-result { display: block; width: 100%; padding: 12px 9px; border: 0; border-bottom: 1px solid var(--border-soft); color: var(--text); background: #fff; text-align: left; transition: .15s; }.point-result:hover { background: #f5f8fc; }.point-result.is-selected { box-shadow: inset 3px 0 var(--blue); color: var(--blue); background: #eef6ff; }.point-result strong, .point-result small { display: block; }.point-result strong { font-size: 10px; line-height: 1.45; }.point-result small { margin-top: 4px; color: var(--muted); font-size: 9px; }
.free-point-hint { margin: 0 0 15px; padding: 11px 12px; border-radius: 8px; color: #42617e; background: #edf5fd; font-size: 10px; line-height: 1.5; }.point-picker-sidebar .field { display: block; margin-bottom: 14px; }.coordinate-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }.coordinate-grid .field { margin-bottom: 0; }.map-picker-footer { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; }.map-picker-footer > span { overflow: hidden; color: #667587; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 840px) { .map-picker-card { padding: 20px 16px; }.map-picker-layout { grid-template-columns: 1fr; }.point-map { min-height: 350px; }.point-picker-sidebar { border-top: 1px solid var(--border); border-left: 0; }.point-results { max-height: 290px; }.map-picker-footer { grid-template-columns: 1fr 1fr; }.map-picker-footer > span { grid-column: 1 / -1; white-space: normal; }.map-picker-footer .secondary-button, .map-picker-footer .action-button { width: 100%; } }
@media (max-width: 480px) { .point-map { min-height: 310px; }.coordinate-grid { grid-template-columns: 1fr; }.point-picker b { display: none; } }

/* Visit photo evidence */
.visit-block { border-bottom: 1px solid var(--border-soft); }.visit-block:last-child { border-bottom: 0; }.visit-block .visit-item { border-bottom: 0; }.visit-actions { display: flex; align-items: center; justify-content: flex-end; gap: 7px; }.visit-actions .secondary-button { min-height: 32px; padding-inline: 10px; }.visit-photo-gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(92px, 1fr)); gap: 8px; padding: 0 0 13px; }.visit-photo-gallery a { position: relative; overflow: hidden; min-height: 82px; border-radius: 8px; background: #edf1f5; }.visit-photo-gallery img { display: block; width: 100%; height: 92px; object-fit: cover; }.visit-photo-gallery span { position: absolute; right: 5px; bottom: 5px; padding: 3px 6px; border-radius: 10px; color: #fff; background: rgba(19,34,52,.78); font-size: 8px; font-weight: 750; }
.visit-report { display: grid; gap: 8px; margin: 0 0 13px; padding: 12px; border-radius: 8px; background: #f7f9fc; }.visit-report div { display: grid; gap: 3px; }.visit-report dt { color: var(--muted); font-size: 9px; font-weight: 700; }.visit-report dd { margin: 0; color: var(--ink); font-size: 10px; white-space: pre-wrap; }
.visit-comments { display: grid; gap: 7px; margin: 0 0 13px; }.visit-comments article { padding: 10px 12px; border-left: 3px solid #8ebaf0; border-radius: 0 8px 8px 0; background: #f3f8fe; }.visit-comments small { color: #56708d; font-size: 8px; font-weight: 750; }.visit-comments p { margin: 5px 0 0; color: var(--ink); font-size: 10px; line-height: 1.5; white-space: pre-wrap; }
.photo-source-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 9px; margin-top: 18px; padding: 14px; border-radius: 9px; background: #f4f7fa; }.photo-source-actions > span { flex: 1 1 230px; color: var(--muted); font-size: 9px; line-height: 1.45; }.photo-source-button { cursor: pointer; }.photo-compression-status { margin: 13px 0 9px; color: #4e6073; font-size: 10px; font-weight: 700; }.photo-preview-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 10px; max-height: 330px; overflow-y: auto; }.photo-preview-card { position: relative; overflow: hidden; border: 1px solid var(--border); border-radius: 9px; background: #fff; }.photo-preview-card img { display: block; width: 100%; height: 118px; object-fit: cover; }.photo-preview-card small { display: block; padding: 8px; color: var(--muted); font-size: 8px; line-height: 1.4; }.photo-preview-card button { position: absolute; top: 6px; right: 6px; display: grid; width: 25px; height: 25px; place-items: center; border: 0; border-radius: 50%; color: #fff; background: rgba(28,40,54,.8); font-size: 18px; }
.photo-preview-card textarea { display: block; width: calc(100% - 16px); min-height: 52px; margin: 0 8px 9px; padding: 8px; resize: vertical; border: 1px solid var(--border); border-radius: 7px; color: var(--ink); background: #fff; font: inherit; font-size: 9px; }
@media (max-width: 600px) { .visit-item { align-items: flex-start; }.visit-actions { align-items: flex-end; flex-direction: column; }.photo-source-actions .photo-source-button { flex: 1; }.photo-preview-grid { grid-template-columns: 1fr 1fr; }.photo-preview-card img { height: 105px; } }
@media (max-width: 600px) { .notification-panel { position: fixed; width: calc(100vw - 20px); max-height: calc(100vh - 82px); top: 70px; right: 10px; }.notification-list { max-height: calc(100vh - 160px); } }

/* Calendar, projects and operational reports */
.calendar-actions, .calendar-header { display: flex; align-items: center; gap: 8px; }.calendar-panel { overflow: hidden; }.calendar-header { justify-content: space-between; padding: 17px 19px; border-bottom: 1px solid var(--border-soft); }.calendar-header h2 { margin: 0; font-size: 15px; text-transform: capitalize; }.calendar-header span { color: var(--muted); font-size: 10px; }.calendar-weekdays, .calendar-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }.calendar-weekdays { padding: 10px 0; color: var(--muted); background: #f7f9fb; font-size: 9px; font-weight: 750; text-align: center; }.calendar-day { min-height: 125px; padding: 8px; overflow: hidden; border-top: 1px solid var(--border-soft); border-right: 1px solid var(--border-soft); background: #fff; }.calendar-day:nth-child(7n) { border-right: 0; }.calendar-day.is-outside { background: #f8fafc; }.calendar-day > strong { display: grid; width: 24px; height: 24px; place-items: center; margin-bottom: 5px; color: #546579; font-size: 10px; }.calendar-day.is-today > strong { border-radius: 50%; color: #fff; background: var(--blue); }.calendar-event { display: block; width: 100%; margin-top: 4px; padding: 6px; overflow: hidden; border: 0; border-left: 3px solid #5c9ee8; border-radius: 4px; color: #31516f; background: #edf5fe; font-size: 8px; font-weight: 700; text-align: left; text-overflow: ellipsis; white-space: nowrap; }.calendar-event--red { border-left-color: #cf5360; color: #85353d; background: #fff0f1; }.calendar-event--orange { border-left-color: #df9433; color: #81591f; background: #fff7e9; }.calendar-event--green { border-left-color: #43a875; color: #27704c; background: #ecf9f2; }
.readonly-badge { padding: 7px 10px; border: 1px solid #b9d2ef; border-radius: 15px; color: #2469ae; background: #edf6ff; font-size: 8px; font-weight: 850; letter-spacing: .8px; }.project-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; padding: 16px; }.project-card { min-width: 0; padding: 17px; border: 1px solid var(--border); border-radius: 10px; color: var(--ink); background: #fff; text-align: left; transition: .16s; }.project-card:hover { border-color: #9ec4ef; box-shadow: 0 6px 20px rgba(28,61,97,.09); transform: translateY(-1px); }.project-card span, .project-card strong, .project-card small, .project-card b { display: block; }.project-card span { overflow: hidden; color: var(--blue); font-size: 8px; font-weight: 800; text-overflow: ellipsis; white-space: nowrap; }.project-card strong { margin-top: 8px; font-size: 12px; line-height: 1.4; }.project-card small { margin-top: 8px; color: var(--muted); font-size: 9px; }.project-card b { margin-top: 15px; color: var(--blue); font-size: 9px; }
.report-filters { display: flex; align-items: end; gap: 10px; margin-bottom: 15px; padding: 13px 15px; border: 1px solid var(--border); border-radius: var(--radius); background: #fff; }.report-filters label { display: grid; gap: 5px; color: var(--muted); font-size: 9px; font-weight: 700; }.report-filters input { min-height: 38px; padding: 0 10px; border: 1px solid var(--border); border-radius: 7px; color: var(--ink); background: #fff; font: inherit; }.report-kpis { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 10px; margin-bottom: 14px; }.report-kpi { padding: 15px; }.report-kpi span { display: block; min-height: 25px; color: var(--muted); font-size: 8px; }.report-kpi strong { display: block; margin-top: 5px; color: #253b52; font-size: 18px; }.report-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }.report-card { padding-bottom: 14px; }.report-card header { padding: 15px 17px; border-bottom: 1px solid var(--border-soft); }.report-card h2 { margin: 0; font-size: 11px; }.report-bars { display: grid; gap: 11px; padding: 15px 17px 5px; }.report-bars > div > div { display: flex; justify-content: space-between; gap: 10px; margin-bottom: 5px; color: #536578; font-size: 9px; }.report-bars i { display: block; height: 6px; overflow: hidden; border-radius: 4px; background: #edf1f5; }.report-bars i b { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #2479da, #64a8ef); }
@media (max-width: 1180px) { .project-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }.report-kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 840px) { .calendar-weekdays { display: none; }.calendar-grid { display: grid; grid-template-columns: 1fr; }.calendar-day, .calendar-day:nth-child(7n) { min-height: auto; padding: 12px; border-right: 0; }.calendar-day.is-outside { display: none; }.calendar-day > strong { display: inline-grid; margin-right: 6px; vertical-align: top; }.calendar-event { display: inline-block; width: calc(100% - 40px); margin: 2px 0 4px; padding: 9px; vertical-align: top; }.project-cards, .report-grid { grid-template-columns: 1fr; }.report-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 480px) { .calendar-actions { width: 100%; }.calendar-actions button { flex: 1; }.report-filters { align-items: stretch; flex-direction: column; }.report-filters .action-button { width: 100%; }.project-cards { padding: 11px; } }
.profile-grid { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(280px, .6fr); gap: 14px; }.profile-card, .profile-security { padding: 20px; }.profile-identity { display: flex; align-items: center; gap: 14px; padding-bottom: 17px; border-bottom: 1px solid var(--border-soft); }.profile-identity .avatar { width: 54px; height: 54px; font-size: 16px; }.profile-identity h2 { margin: 0; font-size: 16px; }.profile-identity p, .profile-security p { margin: 5px 0 0; color: var(--muted); font-size: 10px; line-height: 1.6; }.profile-card .info-list { padding-inline: 0; }.profile-security h2 { margin: 16px 0 0; font-size: 13px; }.profile-security .action-button { margin-top: 20px; }
@media (max-width: 840px) { .profile-grid { grid-template-columns: 1fr; } }

/* Read-only project operations */
.project-detail-layout { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(330px, .65fr); gap: 14px; align-items: start; }.project-points-panel { min-width: 0; overflow: hidden; }.project-points-panel .responsive-table table { min-width: 760px; }.project-fault-button { min-height: 30px; padding-inline: 9px; white-space: nowrap; }.project-map-panel { position: sticky; top: 84px; overflow: hidden; }.project-points-map { z-index: 1; min-height: 560px; background: #edf1f4; }.project-points-map .map-empty { min-height: 560px; }
@media (max-width: 1180px) { .project-detail-layout { grid-template-columns: 1fr; }.project-map-panel { position: static; }.project-points-map, .project-points-map .map-empty { min-height: 380px; } }
@media (max-width: 600px) { .project-points-map, .project-points-map .map-empty { min-height: 300px; }.report-filters .secondary-button { width: 100%; } }

/* User administration and system status */
.user-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; min-width: 190px; }.user-actions .secondary-button, .user-actions .danger-button { min-height: 30px; padding-inline: 9px; font-size: 8px; }.user-actions small { color: var(--muted); font-size: 9px; }.system-status-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 13px; margin-bottom: 14px; }.system-status-card { padding: 18px; }.system-status-card span, .system-status-card small { display: block; color: var(--muted); font-size: 9px; }.system-status-card strong { display: block; margin: 10px 0 6px; font-size: 17px; }.system-ok { color: #197144 !important; }.system-error { color: #bd3541 !important; }.system-detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }.system-detail-grid .detail-card { min-height: 0; }
@media (max-width: 840px) { .system-status-grid, .system-detail-grid { grid-template-columns: 1fr; }.user-actions { min-width: 170px; } }

/* Operational dashboard and advanced filters */
.operations-strip { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 11px; margin-top: 13px; }.operation-card { display: grid; grid-template-columns: 1fr auto; gap: 3px 12px; padding: 14px 16px; border: 1px solid var(--border); border-radius: 10px; color: var(--ink); background: #fff; text-align: left; box-shadow: var(--shadow); }.operation-card:hover { border-color: #a9c9ed; background: #f9fcff; }.operation-card span { color: #5b6d80; font-size: 9px; font-weight: 750; }.operation-card strong { grid-row: 1 / 3; grid-column: 2; align-self: center; color: #223d59; font-size: 22px; }.operation-card small { color: var(--blue); font-size: 8px; }.dashboard-insights { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 13px; margin-top: 15px; }.dashboard-insights .panel { min-height: 230px; }.dashboard-insights .report-bars { max-height: 250px; overflow-y: auto; }.table-toolbar .compact-select { max-width: 190px; }
@media (max-width: 1280px) { .dashboard-insights { grid-template-columns: repeat(2, minmax(0, 1fr)); }.table-toolbar { flex-wrap: wrap; }.table-toolbar .result-count { margin-left: 0; } }
@media (max-width: 840px) { .operations-strip { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; }.operation-card { min-width: 220px; scroll-snap-align: start; }.dashboard-insights { grid-template-columns: 1fr; }.dashboard-insights .panel { min-height: 0; }.table-toolbar .compact-select { width: 100%; max-width: none; } }

/* Fault activity and internal notes */
.fault-history-card { margin-top: 14px; }.fault-activity { position: relative; padding: 6px 18px 16px; }.fault-activity-item { display: grid; grid-template-columns: 18px minmax(0, 1fr); gap: 10px; padding: 13px 0; border-bottom: 1px solid var(--border-soft); }.fault-activity-item:last-child { border-bottom: 0; }.fault-activity-item > i { width: 10px; height: 10px; margin: 3px 0 0 3px; border: 3px solid #e2effd; border-radius: 50%; background: var(--blue); box-shadow: 0 0 0 1px #8db9ec; }.fault-activity-item--comment > i { border-color: #fff0d8; background: #df9433; box-shadow: 0 0 0 1px #e4b56f; }.fault-activity-item > div > div { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }.fault-activity-item strong { color: #33485e; font-size: 10px; }.fault-activity-item small { color: var(--muted); font-size: 8px; white-space: nowrap; }.fault-activity-item p { margin: 7px 0 0; color: #43566b; font-size: 10px; line-height: 1.55; white-space: pre-wrap; overflow-wrap: anywhere; }
@media (max-width: 600px) { .fault-history-card .panel-header { align-items: stretch; flex-direction: column; }.fault-history-card .panel-header button { width: 100%; }.fault-activity-item > div > div { align-items: flex-start; flex-direction: column; gap: 3px; }.fault-activity-item small { white-space: normal; } }

/* Installed assets and maintenance history */
.asset-list-layout { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(330px, .45fr); gap: 14px; align-items: start; }.asset-list-panel { min-width: 0; overflow: hidden; }.asset-list-panel .responsive-table table { min-width: 940px; }.asset-map-panel { position: sticky; top: 84px; overflow: hidden; }.asset-list-map { z-index: 1; min-height: 570px; background: #edf1f4; }.asset-list-map .map-empty { min-height: 570px; }.asset-summary-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; margin-bottom: 14px; }.asset-summary-card { padding: 17px; }.asset-summary-card span { display: block; color: var(--muted); font-size: 9px; }.asset-summary-card strong { display: block; margin-top: 8px; color: #28425d; font-size: 21px; }.asset-detail-layout { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(330px, .8fr); gap: 14px; align-items: stretch; }.asset-detail-layout .detail-card { min-height: 340px; }.asset-detail-map-panel { overflow: hidden; }.asset-detail-map { z-index: 1; min-height: 340px; background: #edf1f4; }.asset-detail-map .map-empty { min-height: 340px; }.asset-history-panel { margin-top: 14px; overflow: hidden; }.asset-history-panel .responsive-table table { min-width: 980px; }.asset-work-history { display: grid; padding: 0 17px; }.asset-work-item { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 14px; width: 100%; padding: 15px 0; border: 0; border-bottom: 1px solid var(--border-soft); color: var(--ink); background: transparent; text-align: left; }.asset-work-item:last-child { border-bottom: 0; }.asset-work-item:hover strong { color: var(--blue); }.asset-work-item strong, .asset-work-item small { display: block; }.asset-work-item strong { font-size: 10px; }.asset-work-item small { margin-top: 5px; color: var(--muted); font-size: 9px; line-height: 1.45; }.project-point-actions { display: flex; align-items: center; gap: 6px; white-space: nowrap; }
@media (max-width: 1180px) { .asset-list-layout, .asset-detail-layout { grid-template-columns: 1fr; }.asset-map-panel { position: static; }.asset-list-map, .asset-list-map .map-empty { min-height: 380px; }.asset-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) { .asset-list-map, .asset-list-map .map-empty, .asset-detail-map, .asset-detail-map .map-empty { min-height: 300px; }.asset-summary-grid { grid-template-columns: 1fr 1fr; }.asset-work-item { align-items: flex-start; grid-template-columns: 1fr; }.project-point-actions { align-items: stretch; flex-direction: column; } }

.asset-replacement-panel { margin-top: 14px; overflow: hidden; }.asset-replacement-history { display: grid; gap: 12px; padding: 15px; background: #f7f9fb; }.asset-replacement-card { overflow: hidden; border: 1px solid var(--border); border-left: 4px solid #7192b4; border-radius: 10px; background: #fff; }.asset-replacement-card--in_progress { border-left-color: var(--blue); }.asset-replacement-card--completed { border-left-color: var(--green); }.asset-replacement-card--cancelled { border-left-color: var(--red); opacity: .82; }.asset-replacement-card > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 14px 15px; border-bottom: 1px solid var(--border-soft); }.asset-replacement-card header strong,.asset-replacement-card header small { display: block; }.asset-replacement-card header strong { color: #2d4359; font-size: 11px; }.asset-replacement-card header small { margin-top: 4px; color: var(--muted); font-size: 8px; }.asset-replacement-meta { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); gap: 1px; background: var(--border-soft); }.asset-replacement-meta > span { min-width: 0; padding: 10px 12px; background: #fff; }.asset-replacement-meta small,.asset-replacement-meta strong { display: block; }.asset-replacement-meta small { color: var(--muted); font-size: 7px; }.asset-replacement-meta strong { overflow: hidden; margin-top: 4px; color: #40566c; font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }.asset-replacement-events { display: grid; gap: 5px; padding: 11px 14px; color: #687b8e; background: #f8fafc; font-size: 8px; }.asset-replacement-events span::before { content: '•'; margin-right: 7px; color: var(--blue); }.asset-replacement-card > footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 14px; }.asset-replacement-card footer > p { margin: 0; color: #536a80; font-size: 8px; line-height: 1.5; }.asset-replacement-actions { display: flex; gap: 7px; margin-left: auto; }.asset-replacement-actions button { min-height: 31px; padding-inline: 10px; font-size: 8px; }
@media (max-width: 1050px) { .asset-summary-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }.asset-replacement-meta { grid-template-columns: repeat(3,minmax(0,1fr)); } }
@media (max-width: 650px) { .asset-replacement-meta { grid-template-columns: repeat(2,minmax(0,1fr)); }.asset-replacement-card > footer { align-items: stretch; flex-direction: column; }.asset-replacement-actions { width: 100%; margin: 0; }.asset-replacement-actions button { flex: 1; } }

/* RMA operations */
.rma-kpis { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); gap: 11px; margin-bottom: 15px; }.rma-kpi { padding: 15px 16px; border: 1px solid var(--border-soft); border-top: 3px solid var(--blue); border-radius: 10px; background: #fff; }.rma-kpi--orange { border-top-color: #df9433; }.rma-kpi span,.rma-kpi strong { display: block; }.rma-kpi span { color: var(--muted); font-size: 8px; font-weight: 750; }.rma-kpi strong { margin-top: 6px; color: #2d4359; font-size: 21px; }.rma-panel { min-width: 0; overflow: hidden; }.rma-panel .table-toolbar .search-control { min-width: 290px; flex: 1; }.rma-panel .table-toolbar .compact-select { min-width: 190px; }.rma-panel table { min-width: 1180px; }.rma-panel td:last-child { min-width: 145px; }.rma-row-actions { display: flex; flex-wrap: wrap; gap: 5px; }.rma-row-actions button { min-height: 29px; padding-inline: 8px; font-size: 7px; }
@media (max-width: 1050px) { .rma-kpis { grid-template-columns: repeat(3,minmax(0,1fr)); } }
@media (max-width: 650px) { .rma-kpis { grid-template-columns: repeat(2,minmax(0,1fr)); }.rma-panel .table-toolbar { align-items: stretch; flex-direction: column; }.rma-panel .table-toolbar .search-control,.rma-panel .table-toolbar .compact-select { width: 100%; min-width: 0; } }

/* Dispatcher Control Center */
.dispatch-workload { display: flex; align-items: stretch; gap: 10px; margin-bottom: 14px; overflow-x: auto; scrollbar-width: thin; }.dispatch-workload-title { display: grid; align-content: center; min-width: 145px; padding: 12px 15px; border-radius: 10px; color: #fff; background: #142b42; }.dispatch-workload-title strong, .dispatch-workload-title small { display: block; }.dispatch-workload-title strong { font-size: 11px; }.dispatch-workload-title small { margin-top: 4px; color: #aebfd0; font-size: 8px; }.workload-card { display: flex; min-width: 190px; align-items: center; gap: 10px; padding: 11px 13px; border: 1px solid var(--border); border-radius: 10px; background: #fff; box-shadow: var(--shadow); }.workload-card--busy { border-color: #e3b674; background: #fffaf2; }.workload-card strong, .workload-card small { display: block; }.workload-card strong { overflow: hidden; max-width: 125px; color: #31475d; font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }.workload-card small { margin-top: 4px; color: var(--muted); font-size: 8px; }.dispatch-workload-empty { min-width: 190px; padding: 20px; color: var(--muted); background: #fff; border: 1px dashed var(--border); border-radius: 10px; }.dispatch-panel { min-width: 0; overflow: hidden; }.dispatch-panel .table-toolbar { flex-wrap: wrap; }.dispatch-updated { color: var(--muted); font-size: 8px; white-space: nowrap; }.dispatch-board { display: grid; grid-auto-columns: minmax(270px, 1fr); grid-auto-flow: column; gap: 12px; padding: 14px; overflow-x: auto; background: #f3f6f9; scroll-snap-type: x proximity; }.dispatch-lane { min-height: 510px; overflow: hidden; border: 1px solid #dce4ec; border-radius: 11px; background: #f9fbfd; scroll-snap-align: start; }.dispatch-lane > header { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 13px 14px; border-top: 3px solid #7895b1; border-bottom: 1px solid #dfe6ed; background: #fff; }.dispatch-lane--unassigned > header, .dispatch-lane--returned > header { border-top-color: #cf5360; }.dispatch-lane--in_progress > header { border-top-color: #2479da; }.dispatch-lane--pending_review > header { border-top-color: #df9433; }.dispatch-lane--completed > header { border-top-color: #43a875; }.dispatch-lane header strong, .dispatch-lane header small { display: block; }.dispatch-lane header strong { color: #31475e; font-size: 10px; }.dispatch-lane header small { margin-top: 3px; color: var(--muted); font-size: 8px; }.dispatch-lane header b { display: grid; min-width: 23px; height: 23px; place-items: center; border-radius: 12px; color: #486078; background: #edf2f7; font-size: 9px; }.dispatch-lane-list { display: grid; align-content: start; gap: 9px; padding: 10px; }.dispatch-lane-empty { padding: 30px 12px; border: 1px dashed #ced8e2; border-radius: 8px; color: #8492a1; font-size: 9px; text-align: center; }.dispatch-card { padding: 12px; border: 1px solid #dbe3eb; border-left: 3px solid #9badbf; border-radius: 9px; background: #fff; box-shadow: 0 3px 10px rgba(30,55,81,.05); cursor: pointer; }.dispatch-card:hover, .dispatch-card:focus { border-color: #9fc2e9; outline: 0; box-shadow: 0 5px 15px rgba(30,75,120,.1); }.dispatch-card--red { border-left-color: #cf5360; }.dispatch-card--orange { border-left-color: #df9433; }.dispatch-card--green { border-left-color: #43a875; }.dispatch-card > div:first-child { display: flex; align-items: center; justify-content: space-between; gap: 8px; }.dispatch-card h3 { margin: 10px 0 5px; color: #263c52; font-size: 11px; line-height: 1.4; }.dispatch-card > p { margin: 0 0 5px; color: #4d6074; font-size: 9px; line-height: 1.4; }.dispatch-card > small { display: block; overflow: hidden; color: var(--muted); font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }.dispatch-card dl { display: grid; gap: 5px; margin: 11px 0 0; padding: 9px; border-radius: 7px; background: #f5f8fb; }.dispatch-card dl div { display: flex; justify-content: space-between; gap: 7px; }.dispatch-card dt, .dispatch-card dd { font-size: 8px; }.dispatch-card dt { color: var(--muted); }.dispatch-card dd { overflow: hidden; margin: 0; color: #3d5268; font-weight: 700; text-align: right; text-overflow: ellipsis; white-space: nowrap; }.dispatch-return-note { padding: 8px; border-radius: 6px; color: #873e46 !important; background: #fff0f1; }.dispatch-card footer { display: flex; align-items: center; flex-wrap: wrap; gap: 5px; margin-top: 10px; }.dispatch-card footer .secondary-button { min-height: 29px; padding: 0 8px; font-size: 8px; }.dispatch-card footer .text-button { margin-left: auto; font-size: 8px; }
@media (min-width: 1500px) { .dispatch-board { grid-auto-columns: minmax(285px, calc((100vw - 310px) / 4)); } }
@media (max-width: 840px) { .dispatch-workload { margin-inline: -2px; }.dispatch-workload-title { min-width: 135px; }.dispatch-board { margin: 0; grid-auto-columns: minmax(285px, 86vw); padding: 11px; }.dispatch-lane { min-height: 430px; } }

/* Fault evidence and documents */
.fault-create-evidence { padding: 13px; border: 1px dashed #cbd8e5; border-radius: 9px; background: #f8fbfe; }.fault-create-evidence > small { display: inline-block; margin-left: 9px; color: var(--muted); font-size: 8px; }.fault-pending-files { display: grid; gap: 7px; max-height: 245px; overflow-y: auto; }.fault-pending-file { display: grid; grid-template-columns: 58px minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 8px; border: 1px solid var(--border); border-radius: 8px; background: #fff; }.fault-pending-file > img, .fault-pending-file > .fault-document-icon { width: 58px; height: 48px; border-radius: 6px; object-fit: cover; }.fault-document-icon { display: grid; place-items: center; color: #b33b48; background: #fff0f1; font-size: 10px; font-weight: 850; letter-spacing: .5px; }.fault-pending-file strong, .fault-pending-file small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.fault-pending-file strong { color: #344a60; font-size: 9px; }.fault-pending-file small { margin-top: 3px; color: var(--muted); font-size: 8px; }.fault-pending-file input { width: 100%; height: 30px; margin-top: 6px; padding: 0 8px; border: 1px solid var(--border); border-radius: 6px; color: var(--ink); background: #fff; font: inherit; font-size: 8px; }.fault-pending-file > button { width: 25px; height: 25px; border: 0; border-radius: 50%; color: #fff; background: #536679; font-size: 17px; }.fault-attachments-card { min-height: 0; margin-top: 14px; }.fault-attachment-gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 11px; padding: 15px; }.fault-attachment-card { display: grid; min-width: 0; overflow: hidden; border: 1px solid var(--border); border-radius: 9px; color: var(--ink); background: #fff; text-decoration: none; transition: .16s; }.fault-attachment-card:hover { border-color: #9fc2e9; box-shadow: 0 5px 15px rgba(30,75,120,.1); transform: translateY(-1px); }.fault-attachment-card > img, .fault-attachment-card > .fault-document-icon { width: 100%; height: 145px; border-radius: 0; object-fit: cover; }.fault-attachment-card > div:last-child { padding: 10px 11px; }.fault-attachment-card strong, .fault-attachment-card small { display: block; }.fault-attachment-card strong { overflow: hidden; color: #33495f; font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }.fault-attachment-card small { margin-top: 5px; color: var(--muted); font-size: 8px; line-height: 1.45; }.fault-attachments-card .table-empty { min-height: 210px; }
@media (max-width: 600px) { .fault-create-evidence > small { display: block; margin: 8px 0 0; }.fault-create-evidence .photo-source-button { width: 100%; }.fault-attachment-gallery { grid-template-columns: 1fr 1fr; padding: 11px; }.fault-attachment-card > img, .fault-attachment-card > .fault-document-icon { height: 115px; }.fault-pending-file { grid-template-columns: 48px minmax(0, 1fr) auto; }.fault-pending-file > img, .fault-pending-file > .fault-document-icon { width: 48px; height: 44px; } }
@media (max-width: 390px) { .fault-attachment-gallery { grid-template-columns: 1fr; } }

/* Printable field-service report */
.service-report-backdrop { align-items: start; padding-block: 22px; }.service-report-card { width: min(100%, 940px); padding: 0; overflow: hidden; border-radius: 12px; }.service-report-actions { position: sticky; z-index: 2; top: 0; display: flex; align-items: center; gap: 9px; padding: 13px 18px; border-bottom: 1px solid var(--border); background: rgba(255,255,255,.96); backdrop-filter: blur(10px); }.service-report-actions > div { margin-right: auto; }.service-report-actions strong, .service-report-actions small { display: block; }.service-report-actions strong { color: #273d53; font-size: 11px; }.service-report-actions small { margin-top: 3px; color: var(--muted); font-size: 8px; }.service-report-card > .form-alert { margin: 14px 18px 0; }.service-report-sheet { width: 100%; padding: 42px 48px 30px; color: #23384d; background: #fff; }.service-report-header, .service-report-title { display: flex; align-items: flex-start; justify-content: space-between; gap: 25px; }.service-report-header { padding-bottom: 24px; border-bottom: 3px solid #1769d2; }.service-report-brand strong, .service-report-brand small, .service-report-identity span, .service-report-identity small { display: block; }.service-report-brand strong { color: #102a43; font-size: 23px; letter-spacing: -.7px; }.service-report-brand small { margin-top: 4px; color: #718197; font-size: 8px; text-transform: uppercase; letter-spacing: .5px; }.service-report-identity { text-align: right; }.service-report-identity span { color: #1769d2; font-size: 8px; font-weight: 800; letter-spacing: .8px; }.service-report-identity h1 { margin: 4px 0; color: #102a43; font-size: 28px; }.service-report-identity small { color: #7c8998; font-size: 8px; }.service-report-title { align-items: center; padding: 24px 0 18px; }.service-report-title span:first-child { color: #1769d2; font-size: 8px; font-weight: 800; letter-spacing: .7px; }.service-report-title h2 { margin: 5px 0 0; color: #243b53; font-size: 19px; }.service-report-status { flex: none; }.service-report-details { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 0 0 22px; border: 1px solid #dce4ec; border-radius: 8px; background: #fbfcfe; }.service-report-details > div { min-width: 0; padding: 12px 14px; border-right: 1px solid #e5ebf0; border-bottom: 1px solid #e5ebf0; }.service-report-details > div:nth-child(3n) { border-right: 0; }.service-report-details dt, .service-report-details dd { margin: 0; }.service-report-details dt { color: #718197; font-size: 7px; font-weight: 750; text-transform: uppercase; letter-spacing: .45px; }.service-report-details dd { margin-top: 5px; color: #2f455b; font-size: 9px; font-weight: 700; overflow-wrap: anywhere; }.service-report-text { margin: 0 0 17px; }.service-report-text h3, .service-report-comments h3, .service-report-evidence h3 { margin: 0 0 7px; color: #52677c; font-size: 8px; text-transform: uppercase; letter-spacing: .55px; }.service-report-text p { margin: 0; color: #344b61; font-size: 9px; line-height: 1.65; white-space: pre-wrap; }.service-report-visits { margin-top: 27px; }.service-report-visits > h2, .service-report-review h2 { margin: 0 0 13px; padding-bottom: 8px; border-bottom: 1px solid #dce4ec; color: #203b55; font-size: 13px; }.service-report-visit { margin: 0 0 15px; padding: 16px; border: 1px solid #dce4ec; border-radius: 8px; break-inside: avoid; }.service-report-visit > header { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }.service-report-visit > header span:first-child { color: #1769d2; font-size: 7px; font-weight: 800; letter-spacing: .6px; }.service-report-visit > header h3 { margin: 3px 0 0; font-size: 11px; }.service-report-visit-meta { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 0 0 14px; }.service-report-visit-meta div { padding: 8px 10px; border-radius: 6px; background: #f4f7fa; }.service-report-visit-meta dt, .service-report-visit-meta dd { margin: 0; font-size: 8px; }.service-report-visit-meta dt { color: #7a8998; }.service-report-visit-meta dd { margin-top: 3px; color: #354a60; font-weight: 700; }.service-report-comments { margin-top: 15px; }.service-report-comments > div { padding: 9px 11px; border-left: 3px solid #91b8e3; background: #f5f9fd; }.service-report-comments > div + div { margin-top: 6px; }.service-report-comments small { color: #718197; font-size: 7px; }.service-report-comments p { margin: 4px 0 0; color: #344b61; font-size: 8px; white-space: pre-wrap; }.service-report-evidence { margin-top: 15px; }.service-report-evidence > div { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }.service-report-evidence figure { margin: 0; overflow: hidden; border: 1px solid #dce4ec; border-radius: 6px; break-inside: avoid; }.service-report-evidence img { display: block; width: 100%; height: 135px; object-fit: cover; }.service-report-evidence figcaption { padding: 6px 8px; color: #50657a; font-size: 7px; }.service-report-review { margin-top: 25px; padding: 16px; border: 1px solid #dce4ec; border-left: 4px solid #9aaaba; border-radius: 8px; break-inside: avoid; }.service-report-review--approved { border-left-color: #43a875; background: #f7fcf9; }.service-report-review--pending { border-left-color: #df9433; background: #fffaf3; }.service-report-review--returned { border-left-color: #cf5360; background: #fff7f8; }.service-report-review strong, .service-report-review p, .service-report-review small { display: block; margin: 0; font-size: 8px; }.service-report-review p { margin-top: 7px; white-space: pre-wrap; }.service-report-review small { margin-top: 7px; color: #768697; }.service-report-empty { color: var(--muted); font-size: 9px; }.service-report-footer { display: flex; justify-content: space-between; gap: 20px; margin-top: 28px; padding-top: 10px; border-top: 1px solid #dce4ec; color: #8391a0; font-size: 7px; }
@media (max-width: 700px) { .service-report-backdrop { padding: 0; }.service-report-card { width: 100%; min-height: 100vh; margin: 0; border-radius: 0; }.service-report-actions { flex-wrap: wrap; }.service-report-actions > div { width: 100%; }.service-report-actions .action-button, .service-report-actions .secondary-button { flex: 1; }.service-report-sheet { padding: 28px 18px; }.service-report-header, .service-report-title { align-items: flex-start; flex-direction: column; }.service-report-identity { text-align: left; }.service-report-details { grid-template-columns: 1fr 1fr; }.service-report-details > div:nth-child(3n) { border-right: 1px solid #e5ebf0; }.service-report-details > div:nth-child(2n) { border-right: 0; }.service-report-evidence > div { grid-template-columns: 1fr 1fr; }.service-report-evidence img { height: 115px; } }
@media print { @page { size: A4 portrait; margin: 11mm; } body { overflow: visible !important; background: #fff !important; } body > *:not(#service-report-modal) { display: none !important; } #service-report-modal { position: static !important; display: block !important; overflow: visible !important; padding: 0 !important; background: #fff !important; backdrop-filter: none !important; } #service-report-modal.is-hidden { display: none !important; } .service-report-card { width: 100% !important; max-width: none !important; margin: 0 !important; padding: 0 !important; overflow: visible !important; border-radius: 0 !important; box-shadow: none !important; } .service-report-actions, #service-report-alert { display: none !important; } .service-report-sheet { padding: 0 !important; print-color-adjust: exact; -webkit-print-color-adjust: exact; } .service-report-evidence img { height: 38mm; } .service-report-header { padding-bottom: 7mm; }.service-report-title { padding: 6mm 0 5mm; }.service-report-visit { break-inside: avoid; }.service-report-footer { position: relative; } }

/* Unified operations search */
.global-search-trigger { display: flex; width: 215px; height: 39px; align-items: center; gap: 9px; padding: 0 9px 0 12px; border: 1px solid #d7e0e8; border-radius: 8px; color: #758394; background: #f8fafc; font-size: 10px; text-align: left; }.global-search-trigger:hover { border-color: #aac7e8; color: #3f5871; background: #fff; }.global-search-trigger svg { width: 16px; flex: none; }.global-search-trigger span { overflow: hidden; flex: 1; text-overflow: ellipsis; white-space: nowrap; }.global-search-trigger kbd, .global-search-placeholder kbd { border: 1px solid #d8e1e9; border-radius: 5px; color: #69798a; background: #fff; box-shadow: 0 1px 1px rgba(25,45,65,.08); font: inherit; font-size: 8px; }.global-search-trigger kbd { padding: 4px 6px; }.global-search-backdrop { align-items: start; padding-top: min(12vh, 105px); }.global-search-card { width: min(100%, 720px); max-height: min(78vh, 720px); padding: 0; overflow: hidden; }.global-search-header { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 17px 19px; border-bottom: 1px solid var(--border); }.global-search-header > svg { width: 21px; color: var(--blue); }.global-search-header input { width: 100%; height: 40px; outline: 0; border: 0; color: #23384d; background: transparent; font-size: 16px; }.global-search-header input::placeholder { color: #98a5b2; }.global-search-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 15px; padding: 16px 20px 11px; }.global-search-heading h2 { margin: 4px 0 0; color: #263d53; font-size: 17px; text-align: left; letter-spacing: -.3px; }.global-search-heading .eyebrow { font-size: 8px; }.global-search-heading > small { color: var(--muted); font-size: 8px; }.global-search-card > .form-alert { margin: 0 20px 10px; }.global-search-results { min-height: 210px; max-height: min(52vh, 470px); overflow-y: auto; padding: 0 12px 12px; }.global-search-placeholder { display: grid; min-height: 210px; place-items: center; align-content: center; gap: 8px; padding: 30px; color: #67798b; text-align: center; }.global-search-placeholder kbd { padding: 6px 9px; color: var(--blue); }.global-search-placeholder strong { color: #3e5368; font-size: 11px; }.global-search-placeholder small { max-width: 400px; color: #8492a1; font-size: 9px; line-height: 1.5; }.global-search-loading { display: flex; min-height: 210px; align-items: center; justify-content: center; color: #718096; font-size: 9px; }.global-search-loading i { width: 14px; height: 14px; border: 2px solid #c8d9ea; border-top-color: var(--blue); border-radius: 50%; animation: search-spin .7s linear infinite; }@keyframes search-spin { to { transform: rotate(360deg); } }.global-search-group + .global-search-group { margin-top: 8px; }.global-search-group > header { display: flex; align-items: center; justify-content: space-between; padding: 7px 8px; color: #718096; }.global-search-group > header strong { font-size: 8px; text-transform: uppercase; letter-spacing: .65px; }.global-search-group > header span { display: grid; min-width: 20px; height: 20px; place-items: center; border-radius: 10px; background: #edf2f7; font-size: 8px; }.global-search-result { display: grid; width: 100%; min-height: 61px; grid-template-columns: 35px minmax(0, 1fr) auto; align-items: center; gap: 11px; padding: 9px 10px; border: 1px solid transparent; border-radius: 8px; color: #283e54; background: transparent; text-align: left; }.global-search-result:hover, .global-search-result.is-active { border-color: #c8dcf3; background: #f1f7fe; }.global-search-result > i { display: grid; width: 34px; height: 34px; place-items: center; border-radius: 8px; color: #1769d2; background: #e7f1fd; font-size: 8px; font-style: normal; font-weight: 850; }.global-search-result > div { min-width: 0; }.global-search-result > div strong, .global-search-result > div small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.global-search-result > div strong { font-size: 10px; }.global-search-result > div small { margin-top: 4px; color: #718096; font-size: 8px; }.global-search-result > span:last-child { color: #63778b; font-size: 8px; white-space: nowrap; }.global-search-footer { display: flex; justify-content: flex-end; gap: 16px; padding: 10px 19px; border-top: 1px solid var(--border-soft); color: #8492a1; background: #fafbfd; font-size: 7px; }
@media (max-width: 1180px) { .global-search-trigger { width: 42px; padding: 0; justify-content: center; }.global-search-trigger span, .global-search-trigger kbd { display: none; } }
@media (max-width: 840px) { .global-search-backdrop { padding: 0; }.global-search-card { width: 100%; max-height: 100vh; min-height: 100vh; margin: 0; border-radius: 0; }.global-search-heading { align-items: flex-start; flex-direction: column; gap: 5px; }.global-search-results { max-height: calc(100vh - 225px); }.global-search-footer { justify-content: center; }.global-search-trigger { width: 38px; height: 38px; }.topbar-actions { gap: 7px; } }
@media (max-width: 480px) { .global-search-header { padding: 13px 14px; }.global-search-header input { font-size: 14px; }.global-search-heading { padding-inline: 15px; }.global-search-results { padding-inline: 7px; }.global-search-result { grid-template-columns: 32px minmax(0, 1fr); }.global-search-result > span:last-child { display: none; }.global-search-footer span:first-child { display: none; }.topbar-actions .project-selector { display: none; } }

/* Reliability intelligence */
.reliability-toolbar { display: flex; align-items: end; gap: 10px; margin-bottom: 14px; padding: 13px 15px; border: 1px solid var(--border); border-radius: var(--radius); background: #fff; }.reliability-toolbar label { display: grid; gap: 5px; color: var(--muted); font-size: 9px; font-weight: 700; }.reliability-toolbar select { min-width: 190px; min-height: 38px; padding: 0 10px; border: 1px solid var(--border); border-radius: 7px; color: var(--ink); background: #fff; font: inherit; }.reliability-toolbar > span { margin: 0 auto 10px 0; color: #718096; font-size: 9px; }.reliability-kpis { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; margin-bottom: 14px; }.reliability-kpi { position: relative; min-height: 130px; overflow: hidden; padding: 16px; border-top: 3px solid #2479da; }.reliability-kpi--orange { border-top-color: #df9433; }.reliability-kpi--red { border-top-color: #cf5360; }.reliability-kpi--green { border-top-color: #43a875; }.reliability-kpi > span, .reliability-kpi > strong, .reliability-kpi > small { display: block; }.reliability-kpi > span { min-height: 23px; color: #6f8091; font-size: 8px; }.reliability-kpi > strong { margin-top: 5px; color: #253b52; font-size: 20px; }.reliability-kpi > small { margin-top: 6px; color: #8492a1; font-size: 7px; line-height: 1.4; }.reliability-insights { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(320px, .65fr); gap: 14px; margin-bottom: 14px; }.reliability-insights > .panel { min-height: 320px; }.reliability-trend-card { min-width: 0; overflow: hidden; }.reliability-trend-card .panel-header > span { color: #66798c; font-size: 8px; font-weight: 700; }.reliability-trend { display: flex; min-height: 245px; align-items: end; gap: 7px; padding: 22px 17px 14px; overflow-x: auto; }.reliability-trend > .inline-empty { align-self: center; width: 100%; }.reliability-trend-item { display: grid; min-width: 34px; height: 205px; grid-template-rows: 18px minmax(0, 1fr) 25px; flex: 1 0 34px; align-items: end; text-align: center; }.reliability-trend-item > strong { color: #50657a; font-size: 8px; }.reliability-trend-item > div { position: relative; display: flex; height: 155px; align-items: end; justify-content: center; border-bottom: 1px solid #d9e2ea; }.reliability-trend-item > div > b { position: relative; display: block; width: min(24px, 70%); min-height: 8px; overflow: hidden; border-radius: 5px 5px 2px 2px; background: linear-gradient(180deg, #64a8ef, #2479da); }.reliability-trend-item > div > b > i { position: absolute; right: 0; bottom: 0; left: 0; min-height: 0; background: #cf5360; }.reliability-trend-item > small { overflow: hidden; padding-top: 7px; color: #7b8998; font-size: 7px; text-overflow: ellipsis; white-space: nowrap; }.reliability-hotspots-panel { min-width: 0; min-height: 330px; overflow: hidden; margin-bottom: 14px; }.reliability-hotspots-panel table { min-width: 1040px; }.reliability-hotspots-panel td .secondary-button { min-height: 31px; padding-inline: 9px; white-space: nowrap; }.reliability-hotspot-details { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }.reliability-hotspot-card { min-width: 0; min-height: 0; overflow: hidden; }.reliability-hotspot-card > header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 16px; border-bottom: 1px solid var(--border-soft); }.reliability-hotspot-card header strong, .reliability-hotspot-card header small { display: block; }.reliability-hotspot-card header strong { color: #31485e; font-size: 10px; }.reliability-hotspot-card header small { margin-top: 4px; color: #7b8998; font-size: 8px; }.reliability-hotspot-card > div { display: grid; padding: 0 14px 12px; }.reliability-hotspot-card > div > button { display: grid; width: 100%; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 11px 2px; border: 0; border-bottom: 1px solid var(--border-soft); color: #31485e; background: transparent; text-align: left; }.reliability-hotspot-card > div > button:hover strong { color: var(--blue); }.reliability-hotspot-card > div > button strong, .reliability-hotspot-card > div > button small { display: block; }.reliability-hotspot-card > div > button strong { overflow: hidden; font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }.reliability-hotspot-card > div > button small { margin-top: 4px; color: #8492a1; font-size: 7px; }.reliability-method { margin-top: 14px; padding: 13px 15px; border: 1px dashed #b9cadd; border-radius: 9px; color: #587086; background: #f7fafc; }.reliability-method strong { font-size: 9px; }.reliability-method p { display: inline; margin: 0 0 0 8px; font-size: 8px; line-height: 1.5; }
@media (max-width: 1180px) { .reliability-kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); }.reliability-insights { grid-template-columns: 1fr; } }
@media (max-width: 840px) { .reliability-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }.reliability-hotspot-details { grid-template-columns: 1fr; } }
@media (max-width: 600px) { .reliability-toolbar { align-items: stretch; flex-direction: column; }.reliability-toolbar label, .reliability-toolbar select, .reliability-toolbar .action-button { width: 100%; }.reliability-toolbar > span { margin: 0; }.reliability-trend { min-height: 220px; padding-inline: 12px; }.reliability-trend-item { height: 185px; }.reliability-trend-item > div { height: 135px; }.reliability-method p { display: block; margin: 6px 0 0; }.reliability-kpi { padding: 13px; } }

.fault-intake-context { overflow: hidden; border: 1px solid #d6e2ed; border-radius: 10px; background: #f7fafc; }.fault-intake-context.has-active { border-color: #edbd78; background: #fffaf2; }.fault-intake-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px; }.fault-intake-heading > div:first-child span, .fault-intake-heading > div:first-child strong { display: block; }.fault-intake-heading > div:first-child span { margin-bottom: 3px; color: #748599; font-size: 7px; font-weight: 850; letter-spacing: 1px; }.fault-intake-heading > div:first-child strong { color: #32485e; font-size: 10px; }.fault-intake-context.has-active .fault-intake-heading > div:first-child strong { color: #9b5b09; }.fault-intake-summary { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; }.fault-intake-summary span { padding: 4px 7px; border-radius: 999px; color: #52677c; background: #e7eef5; font-size: 7px; font-weight: 800; }.fault-intake-summary span.is-warning { color: #8e5100; background: #ffe1b5; }.fault-intake-candidates { display: grid; max-height: 205px; overflow-y: auto; border-top: 1px solid rgba(150,170,190,.2); }.fault-intake-candidate { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 10px 13px; border-bottom: 1px solid rgba(150,170,190,.18); background: rgba(255,255,255,.64); }.fault-intake-candidate:last-child { border-bottom: 0; }.fault-intake-candidate.is-active { box-shadow: inset 3px 0 #ed9b2f; }.fault-intake-candidate strong, .fault-intake-candidate small, .fault-intake-candidate div > span { display: block; }.fault-intake-candidate strong { overflow: hidden; color: #31465b; font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }.fault-intake-candidate small { margin-top: 3px; color: #687a8e; font-size: 8px; }.fault-intake-candidate div > span { margin-top: 4px; color: #2670bd; font-size: 7px; font-weight: 750; }.fault-intake-candidate .secondary-button { min-height: 30px; padding-inline: 10px; font-size: 8px; }.fault-duplicate-confirmation { display: flex; align-items: flex-start; gap: 10px; padding: 12px 14px; border-top: 1px solid #f0c98f; color: #62451d; background: #fff1dc; cursor: pointer; }.fault-duplicate-confirmation input { width: 17px; height: 17px; margin-top: 1px; accent-color: var(--blue); }.fault-duplicate-confirmation span, .fault-duplicate-confirmation strong, .fault-duplicate-confirmation small { display: block; }.fault-duplicate-confirmation strong { font-size: 9px; }.fault-duplicate-confirmation small { margin-top: 4px; font-size: 8px; line-height: 1.45; }
@media (max-width: 600px) { .fault-intake-heading { align-items: flex-start; flex-direction: column; }.fault-intake-summary { justify-content: flex-start; }.fault-intake-candidate { align-items: stretch; grid-template-columns: 1fr; }.fault-intake-candidate .secondary-button { width: 100%; }.fault-intake-candidates { max-height: 285px; } }

.contract-summary { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 12px; margin-bottom: 15px; }.contract-summary article { padding: 15px; border: 1px solid var(--border); border-radius: 10px; background: #fff; }.contract-summary span,.contract-summary strong { display: block; }.contract-summary span { color: var(--muted); font-size: 8px; font-weight: 750; }.contract-summary strong { margin-top: 6px; color: var(--text); font-size: 22px; }.contract-list { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 14px; }.contract-card { overflow: hidden; border: 1px solid var(--border); border-radius: 11px; background: #fff; box-shadow: var(--shadow); }.contract-card > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 16px; border-bottom: 1px solid var(--border-soft); }.contract-card header span:first-child,.contract-card header strong,.contract-card header small { display: block; }.contract-card header div > span { color: var(--blue); font-size: 8px; font-weight: 850; letter-spacing: .5px; }.contract-card header strong { margin-top: 4px; color: var(--text); font-size: 13px; }.contract-card header small { margin-top: 5px; color: var(--muted); font-size: 8px; }.contract-meta { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); }.contract-meta > div { padding: 12px 15px; border-right: 1px solid var(--border-soft); border-bottom: 1px solid var(--border-soft); }.contract-meta > div:nth-child(2n) { border-right: 0; }.contract-meta span,.contract-meta strong { display: block; }.contract-meta span { color: var(--muted); font-size: 7px; }.contract-meta strong { overflow: hidden; margin-top: 4px; color: #354a60; font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }.contract-rules { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; padding: 12px 15px; background: #f8fafc; }.contract-rules span { color: #52677c; font-size: 7px; }.modal-card--contract { width: min(100%,860px); }.contract-source-preview { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1px; overflow: hidden; border: 1px solid #cfe0ee; border-radius: 9px; background: #dce8f1; }.contract-source-preview > div { padding: 10px; background: #f5f9fc; }.contract-source-preview span,.contract-source-preview strong { display: block; }.contract-source-preview span { color: var(--muted); font-size: 7px; }.contract-source-preview strong { overflow: hidden; margin-top: 4px; color: #38516a; font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }.sla-rule-editor { margin-top: 18px; overflow: hidden; border: 1px solid var(--border); border-radius: 9px; }.sla-rule-editor > header { padding: 12px 14px; background: #f7fafc; }.sla-rule-editor header strong,.sla-rule-editor header small { display: block; }.sla-rule-editor header strong { color: #344b61; font-size: 10px; }.sla-rule-editor header small { margin-top: 3px; color: var(--muted); font-size: 8px; }.sla-rule-editor table { min-width: 650px; }.sla-rule-editor th,.sla-rule-editor td { padding: 8px 10px; }.sla-rule-editor input { width: 100%; min-width: 75px; height: 34px; padding: 0 8px; border: 1px solid var(--border); border-radius: 6px; color: var(--text); background: #fff; }
@media (max-width: 900px) { .contract-list { grid-template-columns: 1fr; }.contract-summary { grid-template-columns: repeat(2,minmax(0,1fr)); } }
@media (max-width: 600px) { .contract-source-preview { grid-template-columns: 1fr 1fr; }.contract-rules { grid-template-columns: 1fr; }.modal-card--contract { padding: 22px 16px; } }
.contract-actions { display: flex; justify-content: flex-end; padding: 10px 15px; border-top: 1px solid var(--border-soft); }.contract-actions button { min-height: 32px; }
.fault-sla-preview { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; padding: 10px 13px; border: 1px solid #b9d9c5; border-radius: 9px; color: #23593a; background: #f0faf4; }.fault-sla-preview.is-missing { border-color: #e8c78f; color: #85530b; background: #fff8ec; }.fault-sla-preview strong,.fault-sla-preview small { display: block; }.fault-sla-preview strong { font-size: 9px; }.fault-sla-preview small { font-size: 8px; }
.fault-sla-card { margin-top: 14px; }.sla-milestone-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 12px; padding: 16px; }.sla-milestone { overflow: hidden; border: 1px solid var(--border); border-top: 3px solid #9aa9b8; border-radius: 9px; background: #fff; }.sla-milestone--green { border-top-color: #39a866; }.sla-milestone--red { border-top-color: #d75764; }.sla-milestone--blue { border-top-color: var(--blue); }.sla-milestone > header { display: flex; align-items: center; gap: 9px; padding: 12px; border-bottom: 1px solid var(--border-soft); }.sla-milestone > header > i { display: grid; flex: 0 0 25px; height: 25px; place-items: center; border-radius: 50%; color: #fff; background: #73869a; font-size: 8px; font-style: normal; font-weight: 850; }.sla-milestone > header > div { display: flex; min-width: 0; flex: 1; align-items: center; justify-content: space-between; gap: 6px; }.sla-milestone strong { color: #34495e; font-size: 10px; }.sla-milestone dl { margin: 0; padding: 5px 12px 12px; }.sla-milestone dl div { padding-top: 8px; }.sla-milestone dt { color: var(--muted); font-size: 7px; }.sla-milestone dd { margin: 3px 0 0; color: #40556b; font-size: 8px; font-weight: 650; }
@media (max-width: 900px) { .sla-milestone-grid { grid-template-columns: repeat(2,minmax(0,1fr)); } } @media (max-width: 520px) { .fault-sla-card .panel-header { align-items: flex-start; flex-direction: column; }.sla-milestone-grid { grid-template-columns: 1fr; } }
@media (max-width: 600px) { .fault-sla-preview { align-items: flex-start; flex-direction: column; }.contract-actions { gap: 8px; }.contract-actions button { flex: 1; } }

/* Contract coverage gap */
.contract-coverage-panel { min-width: 0; overflow: hidden; margin-top: 16px; }.contract-coverage-toolbar { display: flex; align-items: center; gap: 10px; padding: 13px 15px; border-bottom: 1px solid var(--border-soft); }.contract-coverage-toolbar .search-control { min-width: 260px; flex: 1; }.contract-coverage-toolbar .compact-select { min-width: 180px; }.contract-coverage-kpis { display: grid; grid-template-columns: repeat(6,minmax(0,1fr)); gap: 1px; border-bottom: 1px solid var(--border-soft); background: var(--border-soft); }.contract-coverage-kpis article { padding: 13px 15px; background: #fff; }.contract-coverage-kpis span,.contract-coverage-kpis strong { display: block; }.contract-coverage-kpis span { color: var(--muted); font-size: 7px; }.contract-coverage-kpis strong { margin-top: 5px; color: #2d4359; font-size: 17px; }.contract-coverage-panel table { min-width: 1050px; }.contract-coverage-panel td .secondary-button { min-height: 30px; padding-inline: 9px; font-size: 8px; white-space: nowrap; }
@media (max-width: 1050px) { .contract-coverage-kpis { grid-template-columns: repeat(3,minmax(0,1fr)); } } @media (max-width: 650px) { .contract-coverage-toolbar { align-items: stretch; flex-direction: column; }.contract-coverage-toolbar .search-control,.contract-coverage-toolbar .compact-select,.contract-coverage-toolbar .secondary-button { width: 100%; min-width: 0; }.contract-coverage-kpis { grid-template-columns: repeat(2,minmax(0,1fr)); } }

.heading-actions { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; justify-content: flex-end; }
.modal-card--import { width: min(960px,calc(100vw - 32px)); }
.import-steps { display: grid; grid-template-columns: repeat(3,1fr); gap: 1px; margin: 0 0 16px; overflow: hidden; border: 1px solid var(--border-soft); border-radius: 9px; background: var(--border-soft); }
.import-steps span { display: flex; align-items: center; gap: 7px; padding: 10px 12px; background: #f8fafc; color: var(--muted); font-size: 9px; font-weight: 700; }
.import-steps b { display: grid; width: 20px; height: 20px; place-items: center; border-radius: 50%; background: #e7f0ff; color: var(--blue); }
.contract-import-upload { display: flex; align-items: center; gap: 10px; padding: 15px; border: 1px dashed #b9cbe0; border-radius: 10px; background: #f8fbff; }
.contract-import-upload > div { min-width: 180px; flex: 1; }.contract-import-upload strong,.contract-import-upload small { display: block; }.contract-import-upload small { margin-top: 4px; color: var(--muted); }
.contract-file-button { cursor: pointer; white-space: nowrap; }.contract-import-file-name { padding: 9px 2px 13px; color: var(--muted); font-size: 9px; }
.contract-import-summary { display: grid; grid-template-columns: repeat(3,1fr); gap: 9px; margin-bottom: 12px; }.contract-import-summary article { padding: 10px 12px; border: 1px solid var(--border-soft); border-radius: 9px; background: #fff; }.contract-import-summary span,.contract-import-summary strong { display: block; }.contract-import-summary span { color: var(--muted); font-size: 8px; }.contract-import-summary strong { margin-top: 4px; font-size: 17px; color: #2d4359; }
.contract-import-preview { max-height: 310px; margin-bottom: 12px; border: 1px solid var(--border-soft); border-radius: 9px; }.contract-import-preview table { min-width: 820px; }.contract-import-preview td:last-child { max-width: 270px; white-space: normal; }.import-row-errors { color: #b42318; font-size: 8px; line-height: 1.45; }.import-row-valid { color: #157347; font-size: 8px; font-weight: 700; }
@media (max-width: 700px) { .heading-actions { width: 100%; justify-content: stretch; }.heading-actions button { flex: 1; }.import-steps { grid-template-columns: 1fr; }.contract-import-upload { align-items: stretch; flex-direction: column; }.contract-import-upload .secondary-button,.contract-file-button { width: 100%; text-align: center; }.contract-import-summary { grid-template-columns: repeat(3,1fr); }.modal-card--import .modal-footer { flex-wrap: wrap; }.modal-card--import .modal-footer button { flex: 1 1 42%; } }

.contract-renewal-panel { min-width: 0; overflow: hidden; margin-top: 16px; }.contract-renewal-toolbar { display: flex; align-items: center; gap: 10px; padding: 13px 15px; border-bottom: 1px solid var(--border-soft); }.contract-renewal-toolbar .search-control { min-width: 260px; flex: 1; }.contract-renewal-toolbar .compact-select { min-width: 225px; }.contract-renewal-kpis { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); gap: 1px; border-bottom: 1px solid var(--border-soft); background: var(--border-soft); }.contract-renewal-kpis article { padding: 13px 15px; background: #fff; }.contract-renewal-kpis span,.contract-renewal-kpis strong { display: block; }.contract-renewal-kpis span { color: var(--muted); font-size: 7px; }.contract-renewal-kpis strong { margin-top: 5px; color: #2d4359; font-size: 17px; }.contract-renewal-panel table { min-width: 980px; }.contract-renewal-panel td .secondary-button { min-height: 30px; padding-inline: 9px; font-size: 8px; white-space: nowrap; }
@media (max-width: 900px) { .contract-renewal-kpis { grid-template-columns: repeat(3,minmax(0,1fr)); } } @media (max-width: 650px) { .contract-renewal-toolbar { align-items: stretch; flex-direction: column; }.contract-renewal-toolbar .search-control,.contract-renewal-toolbar .compact-select,.contract-renewal-toolbar .secondary-button { width: 100%; min-width: 0; }.contract-renewal-kpis { grid-template-columns: repeat(2,minmax(0,1fr)); } }

.parts-kpis { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); gap: 12px; margin-bottom: 16px; }.parts-kpis article { padding: 15px 17px; border: 1px solid var(--border-soft); border-radius: 10px; background: #fff; }.parts-kpis span,.parts-kpis strong { display: block; }.parts-kpis span { color: var(--muted); font-size: 8px; }.parts-kpis strong { margin-top: 5px; color: #2d4359; font-size: 20px; }.parts-panel table { min-width: 980px; }.parts-panel td:last-child { white-space: nowrap; }.parts-panel td .secondary-button { min-height: 30px; padding-inline: 9px; font-size: 8px; }.inventory-history-panel,.inventory-reservations-panel { margin-top: 16px; }.inventory-history-panel table { min-width: 900px; }.inventory-reservations-panel table { min-width: 820px; }.inventory-reservations-panel td:last-child { white-space: nowrap; }.inventory-reservations-panel .secondary-button,.inventory-reservations-panel .action-button { min-height: 30px; padding-inline: 9px; font-size: 8px; }.stock-quantity { color: #263b52; font-size: 14px; font-weight: 800; }.movement-positive { color: #157347; font-weight: 800; }.movement-negative { color: #b42318; font-weight: 800; }
@media (max-width: 650px) { .parts-kpis { grid-template-columns: repeat(2,minmax(0,1fr)); } }

/* SLA operations control center */
.sla-control-toolbar { display: flex; align-items: end; gap: 10px; margin-bottom: 14px; padding: 13px 15px; border: 1px solid var(--border); border-radius: var(--radius); background: #fff; }.sla-control-toolbar label { display: grid; gap: 5px; color: var(--muted); font-size: 8px; font-weight: 750; }.sla-control-toolbar select { min-width: 155px; min-height: 38px; padding: 0 10px; border: 1px solid var(--border); border-radius: 7px; color: var(--ink); background: #fff; font: inherit; }.sla-control-toolbar .action-button { margin-left: auto; }.sla-control-kpis { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); gap: 10px; margin-bottom: 14px; }.sla-control-kpi { padding: 15px; border-top: 3px solid var(--blue); }.sla-control-kpi--red { border-top-color: #cf5360; }.sla-control-kpi--orange { border-top-color: #df9433; }.sla-control-kpi--green { border-top-color: #43a875; }.sla-control-kpi span,.sla-control-kpi strong { display: block; }.sla-control-kpi span { color: var(--muted); font-size: 8px; }.sla-control-kpi strong { margin-top: 7px; color: #273e54; font-size: 21px; }.sla-control-panel { min-width: 0; overflow: hidden; }.sla-control-panel table { min-width: 1180px; }.sla-control-panel td .secondary-button { min-height: 30px; padding-inline: 10px; font-size: 8px; }.sla-control-row--breached { box-shadow: inset 3px 0 #cf5360; }.sla-control-row--at_risk { box-shadow: inset 3px 0 #df9433; }
@media (max-width: 1050px) { .sla-control-kpis { grid-template-columns: repeat(3,minmax(0,1fr)); } } @media (max-width: 700px) { .sla-control-toolbar { align-items: stretch; flex-direction: column; }.sla-control-toolbar label,.sla-control-toolbar select,.sla-control-toolbar .action-button { width: 100%; }.sla-control-toolbar .action-button { margin-left: 0; }.sla-control-kpis { grid-template-columns: repeat(2,minmax(0,1fr)); } }

/* Dedicated operational fault map */
.map-module-view { min-width: 0; }.operational-map-kpis { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 11px; margin-bottom: 14px; }.operational-map-kpi { padding: 14px 16px; border: 1px solid var(--border-soft); border-top: 3px solid var(--blue); border-radius: 10px; background: #fff; }.operational-map-kpi--red { border-top-color: #cf4653; }.operational-map-kpi--orange { border-top-color: #df9433; }.operational-map-kpi span,.operational-map-kpi strong { display: block; }.operational-map-kpi span { color: var(--muted); font-size: 8px; font-weight: 750; }.operational-map-kpi strong { margin-top: 5px; color: #293f55; font-size: 21px; }.operational-map-toolbar { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; padding: 12px 14px; border: 1px solid var(--border); border-radius: var(--radius); background: #fff; }.operational-map-toolbar .search-control { min-width: 280px; flex: 1; }.operational-map-toolbar .compact-select { min-width: 175px; }.operational-map-layout { display: grid; grid-template-columns: minmax(0,1.65fr) minmax(320px,.35fr); gap: 14px; align-items: stretch; }.operational-map-panel,.operational-map-list-panel { min-width: 0; min-height: 650px; overflow: hidden; }.operational-fault-map { position: relative; min-height: 650px; overflow: hidden; background: #e9eef0; }.operational-map-list-panel { display: flex; flex-direction: column; }.operational-map-list { overflow-y: auto; max-height: 588px; scrollbar-width: thin; }.operational-map-item { display: grid; width: 100%; gap: 7px; padding: 13px 14px; border: 0; border-bottom: 1px solid var(--border-soft); border-left: 3px solid #35a36f; color: var(--ink); background: #fff; text-align: left; cursor: pointer; }.operational-map-item:hover { background: #f7faff; }.operational-map-item--medium { border-left-color: #df9433; }.operational-map-item--high,.operational-map-item--critical { border-left-color: #cf4653; }.operational-map-item-head,.operational-map-item-meta { display: flex; min-width: 0; align-items: center; gap: 6px; }.operational-map-item-head { justify-content: space-between; }.operational-map-item-head strong { overflow: hidden; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }.operational-map-item > small { overflow: hidden; color: var(--muted); font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }.operational-map-item-meta { flex-wrap: wrap; }.operational-map-item-meta > small:first-child { min-width: 0; margin-right: auto; overflow: hidden; color: #52687e; font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }.operational-map-item .status-pill { padding: 3px 6px; font-size: 7px; }
@media (max-width: 1100px) { .operational-map-layout { grid-template-columns: 1fr; }.operational-map-panel,.operational-fault-map { min-height: 500px; }.operational-map-list-panel { min-height: 0; }.operational-map-list { max-height: 420px; } }
@media (max-width: 700px) { .operational-map-kpis { grid-template-columns: repeat(2,minmax(0,1fr)); }.operational-map-toolbar { align-items: stretch; flex-direction: column; }.operational-map-toolbar .search-control,.operational-map-toolbar .compact-select { width: 100%; min-width: 0; }.operational-map-panel,.operational-fault-map { min-height: 420px; } }
.voice-conversations-layout{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(340px,.75fr);gap:20px;align-items:start}.clickable-row{cursor:pointer}.clickable-row:hover{background:#f7faff}.voice-conversation-detail{position:sticky;top:92px;max-height:calc(100vh - 120px);overflow:auto;padding:22px}.voice-conversation-header{padding-bottom:16px;border-bottom:1px solid #e6edf5}.voice-conversation-header h2{margin:0 0 6px}.voice-conversation-header p{margin:0;color:#708097}.voice-transcript{display:flex;flex-direction:column;gap:12px;padding-top:18px}.voice-message{max-width:88%;padding:12px 14px;border-radius:14px;background:#f2f5f9}.voice-message--caller{align-self:flex-end;background:#e9f2ff}.voice-message--agent{align-self:flex-start}.voice-message strong{display:block;font-size:12px;color:#52647a;margin-bottom:5px}.voice-message p{white-space:pre-wrap;margin:0;line-height:1.45}.voice-message small{display:block;margin-top:7px;color:#8794a6;font-size:11px}@media(max-width:1050px){.voice-conversations-layout{grid-template-columns:1fr}.voice-conversation-detail{position:static;max-height:none}}
.voice-unresolved-topbar{display:inline-flex;align-items:center;gap:5px;min-height:34px;padding:0 11px;border:1px solid #edc27d;border-radius:999px;color:#7c4b08;background:#fff7e8;font:inherit;font-size:8px;font-weight:750;cursor:pointer;white-space:nowrap}.voice-unresolved-topbar>span{width:7px;height:7px;border-radius:50%;background:#e39125;box-shadow:0 0 0 4px #ffe8c1}.voice-unresolved-topbar:hover{background:#ffedcf}.voice-review-popup-list{display:grid;gap:8px;max-height:260px;overflow:auto;margin:14px 0}.voice-review-popup-list article{padding:11px 12px;border:1px solid #ecd7b3;border-radius:9px;background:#fffaf1}.voice-review-popup-list strong,.voice-review-popup-list small{display:block}.voice-review-popup-list strong{color:#674615;font-size:10px}.voice-review-popup-list small{margin-top:4px;color:#7d6a4d;font-size:8px}.voice-review-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:16px}.voice-review-summary>div{padding:11px 12px;border:1px solid var(--border-soft);border-radius:8px;background:#f8fafc}.voice-review-summary span,.voice-review-summary strong{display:block}.voice-review-summary span{color:var(--muted);font-size:7px}.voice-review-summary strong{margin-top:4px;color:#30475d;font-size:9px;line-height:1.4}.danger-button{min-height:38px;padding:0 14px;border:1px solid #dc7078;border-radius:7px;color:#a62e39;background:#fff4f5;font:inherit;font-size:9px;font-weight:750;cursor:pointer}.danger-button:hover{background:#ffe5e7}@media(max-width:1200px){.voice-unresolved-topbar{max-width:190px;overflow:hidden;text-overflow:ellipsis}.voice-unresolved-topbar>span{display:none}}@media(max-width:780px){.voice-unresolved-topbar{display:none}.voice-review-summary{grid-template-columns:1fr}}
