:root{font-family:Inter,system-ui,Segoe UI,Arial,sans-serif;color:#e7ecf6;background:#0d1422;font-size:14px}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer;border:1px solid #34435b;border-radius:9px;background:#23334b;color:#eef4ff;padding:10px 14px}button:hover{background:#304561}button.primary{background:#3979ed;border-color:#3979ed;color:white}button.danger{color:#ffb9b9}button:disabled{opacity:.5;cursor:not-allowed}input,select{background:#101a2b;border:1px solid #34435b;border-radius:8px;color:#edf4ff;padding:10px;width:100%;margin-top:6px}label{display:block;color:#afbed5;font-size:13px}h1{font-size:25px;letter-spacing:-.6px;margin:4px 0 12px}h2{font-size:17px;margin:0 0 16px}p{color:#9fb0c8}small{color:#8397b5}#shell{display:flex;min-height:100vh}.sidebar{width:245px;flex-shrink:0;background:#111c2d;border-right:1px solid #29364c;padding:26px 14px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:12px;padding:0 12px 28px}.brand strong{font-size:23px;display:block}.brand small{display:block}.brand-mark{background:#3979ed;color:white;border-radius:13px;font-weight:800;font-size:26px;width:45px;height:45px;display:grid;place-items:center}nav{display:grid;gap:5px}nav button{text-align:left;background:transparent;border:0;color:#aabbd1;padding:13px 15px}nav button.selected{background:#203c62;color:#fff}.side-footer{margin-top:auto;border-top:1px solid #29364c;padding:18px 8px 0;display:grid;gap:12px;color:#a9bbd5}main{flex:1;min-width:0;padding:35px 40px}header{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px}header small{letter-spacing:1.4px}.version,.pill{border:1px solid #3c506d;padding:5px 10px;border-radius:20px;color:#a8c0df}.panel{border:1px solid #2d3c53;border-radius:14px;background:#162235;padding:22px;margin-bottom:18px}.toolbar{display:flex;gap:10px;align-items:center;justify-content:space-between;margin-bottom:15px;flex-wrap:wrap}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(185px,1fr));gap:16px}.metric{font-size:32px;font-weight:700;margin-top:14px}.muted{color:#a0afc5}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left}th,td{padding:12px 10px;border-bottom:1px solid #2b3a50}th{font-size:12px;color:#9baeca;font-weight:600}td{color:#e0e8f5}td button{padding:6px 9px;margin-right:5px}form.fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:15px;align-items:end}.fields .wide{grid-column:1/-1}.error{color:#ff9e9e;margin-top:10px}#notice{margin-bottom:16px;color:#9fe1b9}#notice.error{color:#ff9e9e}.login{min-height:100vh;display:grid;place-items:center;padding:20px}.login-panel{width:min(100%,390px);display:grid;gap:16px}.login-panel .brand-mark{width:55px;height:55px}.login-panel p{margin:-12px 0 5px}.login-panel button{width:100%}.checkgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px}.checkgrid label{display:flex;align-items:center;gap:7px}.checkgrid input{width:auto;margin:0}#content .hint{color:#a5b4cb;margin-bottom:15px} @media(max-width:720px){#shell{display:block}.sidebar{width:100%;padding:10px}.brand{padding:5px}nav{display:flex;overflow:auto}nav button{white-space:nowrap}.side-footer{display:flex;justify-content:space-between;padding:8px}main{padding:22px 15px}}

/* Ensure authenticated and unauthenticated views remain mutually exclusive. */
[hidden] { display: none !important; }

/* Compact list-view tables: denser rows, readable actions, and clear separation. */
.table-wrap table{font-size:12.5px;line-height:1.25}
.table-wrap th,.table-wrap td{padding:6px 9px;vertical-align:middle}
.table-wrap th{font-size:11px;white-space:nowrap;letter-spacing:.02em}
.table-wrap td button{padding:4px 8px;margin:0 4px 0 0;border-radius:6px;font-size:12px;line-height:1.25}
.table-wrap tbody tr:hover{background:rgba(150,180,225,.065)}
.table-wrap td input,.table-wrap td select{padding:5px 7px;margin:0;font-size:12px}

/* v0.3 compact workspace */
main{padding:24px 30px;max-width:100%;}header{margin-bottom:18px}header h1{margin:3px 0 0}.panel{padding:16px;margin-bottom:14px}.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.kpi{border:1px solid #2d3c53;border-radius:10px;background:#162235;padding:15px 18px;cursor:pointer}.kpi:hover{border-color:#5373a1}.kpi-label{color:#aabbd1;font-size:12px}.kpi-value{font-size:28px;font-weight:700;margin-top:7px}.overview-bottom{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}.info-row{display:flex;justify-content:space-between;gap:20px;padding:10px 0;border-bottom:1px solid #2d3c53}.info-row strong{font-weight:500;overflow-wrap:anywhere;text-align:right}.list-toolbar{display:flex;justify-content:space-between;gap:12px;margin-bottom:12px;align-items:center}.list-search{max-width:330px;margin:0;padding:8px 10px}.list-card{border:1px solid #2d3c53;border-radius:10px;background:#162235;overflow:hidden}.data-table{font-size:12.5px}.data-table th{background:#1c2b41;padding:9px 11px;cursor:pointer}.data-table td{padding:8px 11px}.data-table tbody tr{cursor:pointer}.data-table tbody tr:focus{outline:2px solid #3979ed;outline-offset:-2px}.data-table tbody tr:hover{background:#253a54}.list-footer{display:flex;justify-content:space-between;align-items:center;padding:9px 12px;color:#aabbd1;font-size:12px}.pager{display:flex;gap:6px}.pager button{padding:5px 9px;font-size:12px}.status{display:inline-block;border-radius:6px;padding:3px 7px;font-size:11px}.status.good{background:#153c32;color:#9fe1b9}.status.quiet{background:#343044;color:#c4b8d8}.status.neutral{background:#2a3850;color:#c8d8ef}.detail-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:15px}.detail-head h2{margin:0}.detail-body{max-width:1000px}.detail-body>.info-row{max-width:750px}.detail-body .fields{margin:14px 0 20px}.detail-body .panel{margin-top:22px}.detail-body textarea{display:block;background:#101a2b;color:#edf4ff;border:1px solid #34435b;border-radius:8px;padding:10px;width:100%;min-height:100px;margin-top:6px;font:inherit}.detail-body .fields button[type=submit]{justify-self:start}.payload{background:#101a2b;border:1px solid #34435b;padding:14px;border-radius:8px;overflow:auto}.empty{text-align:center;color:#a0afc5;padding:24px!important}button.subtle{background:transparent}.hint{font-size:12px}@media(max-width:900px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.overview-bottom{grid-template-columns:1fr}}@media(max-width:520px){.kpis{grid-template-columns:1fr 1fr}main{padding:16px}.list-search{max-width:200px}}

/* v0.3.1: retain hidden-state protection. */
[hidden]{display:none!important}

/* v0.5 ticket workspace */
.ticket-top{display:flex;flex-direction:column;gap:12px;margin-bottom:14px}
.ticket-breadcrumb{display:flex;align-items:center;gap:8px;font-size:12px}
.ticket-title-row{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.ticket-title-row h2{font-size:22px;line-height:1.25;margin:0}
.ticket-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:10px;margin-bottom:18px}
.ticket-summary-item{background:var(--panel,#172338);border:1px solid #30425e;border-radius:9px;padding:10px 12px;display:flex;flex-direction:column;gap:5px;min-width:0}
.ticket-summary-item strong{font-size:13px;overflow-wrap:anywhere}
.ticket-thread{max-width:none!important}
.ticket-entry{padding:14px 16px;border:1px solid #30425e;border-radius:10px;margin:10px 0;background:#101b2d}
.ticket-entry.internal-note{border-color:#866c38;background:#292419}
.ticket-entry-meta{display:flex;gap:12px;justify-content:space-between;flex-wrap:wrap;margin-bottom:10px;font-size:13px}
.ticket-message{white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.55}
.quoted-history{margin-top:10px;border-top:1px solid #30425e;padding-top:8px}
.quoted-history summary{cursor:pointer;color:#91bfff;font-size:12px}
.quoted-history .ticket-message{padding-top:10px}
.ticket-composer textarea{min-height:130px;resize:vertical}

.workspace-warning{border-left:3px solid #c08c35;padding:8px 12px;background:rgba(192,140,53,.10);font-size:13px}

.mapping-row{display:grid;grid-template-columns:minmax(120px,1fr) minmax(180px,1fr) minmax(100px,.6fr);align-items:center;gap:12px;border-bottom:1px solid #30425e;padding:12px 0}.mapping-row label{margin:0}.mapping-row select{width:100%}@media(max-width:700px){.mapping-row{grid-template-columns:1fr}}

/* v0.6.3: Mapping editor must be one vertical form, not auto-fit form fields. */
.detail-body.mapping-workspace{max-width:none;width:100%}
.mapping-workspace form.mapping-form.fields{display:block!important;width:100%;margin:14px 0 20px}
.mapping-workspace .mapping-form>.hint{margin:0 0 12px}
.mapping-workspace .mapping-row{display:grid;grid-template-columns:minmax(180px,1.3fr) minmax(200px,1fr) minmax(130px,.65fr);align-items:center;gap:20px;padding:12px 8px;min-width:0}
.mapping-workspace .mapping-row>strong{min-width:0;overflow-wrap:anywhere}
.mapping-workspace .mapping-row>label{min-width:0}
.mapping-workspace .mapping-row select{width:100%;margin-top:6px}
.mapping-workspace .mapping-outbound{display:flex;align-items:center;gap:10px;white-space:nowrap}
.mapping-workspace .mapping-outbound input{width:16px;height:16px;flex:none;margin:0}
.mapping-workspace .mapping-form>button[type=submit]{margin-top:18px}
@media(max-width:700px){
 .mapping-workspace .mapping-row{grid-template-columns:1fr;gap:8px}
 .mapping-workspace .mapping-outbound{padding:5px 0}
}

.mapping-workspace .mapping-row{grid-template-columns:minmax(180px,1.2fr) minmax(200px,1fr) minmax(195px,.8fr)}
.mapping-workspace .mapping-outbound{white-space:normal}

/* v0.7 account workspace */
.account-workspace{max-width:none!important;width:100%}
.account-header{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(300px,1fr);gap:14px}
.account-header .panel{margin:0 0 14px!important}
.account-info-row{display:grid;grid-template-columns:155px minmax(0,1fr);gap:12px;padding:7px 0;border-bottom:1px solid #2d3c53;font-size:13px}
.account-info-row strong{overflow-wrap:anywhere;font-weight:500}
.account-state{display:flex;justify-content:space-between;align-items:center;gap:12px}
.account-finance-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:18px}
.account-finance-metric{border:1px solid #30425e;border-radius:9px;padding:12px;display:flex;flex-direction:column;gap:5px}
.account-finance-metric strong{font-size:24px;font-variant-numeric:tabular-nums}
.account-finance-metric span{font-size:12px}
.service-category{border:1px solid #30425e;border-radius:9px;margin:8px 0;overflow:hidden}
.service-category summary{padding:12px 14px;cursor:pointer;display:flex;justify-content:space-between;gap:12px;align-items:center}
.service-category[open] summary{border-bottom:1px solid #30425e}
.service-category .table-wrap{margin:0 8px 8px}
.category-admin-row,.category-rule-row{display:grid!important;grid-template-columns:120px minmax(180px,1fr) 90px 100px auto!important;gap:12px;align-items:end;margin:10px 0;padding:10px;border-bottom:1px solid #30425e}
.category-rule-row{grid-template-columns:150px minmax(130px,1fr) minmax(160px,1fr) auto!important}
.category-rule-form{display:block!important}
@media(max-width:950px){.account-header{grid-template-columns:1fr}.category-admin-row,.category-rule-row{grid-template-columns:1fr 1fr!important}}
@media(max-width:560px){.account-info-row{grid-template-columns:1fr;gap:3px}.account-finance-grid{grid-template-columns:1fr}.category-admin-row,.category-rule-row{grid-template-columns:1fr!important}}

.product-catalogue-form.fields{display:block!important}
.product-catalogue-toggle{display:flex;gap:12px;align-items:center;margin:14px 0}
.product-catalogue-toggle input{width:18px;height:18px;margin:0}
.product-policy-head,.product-policy-row{display:grid;grid-template-columns:minmax(220px,2fr) 75px minmax(170px,1fr) 75px;gap:14px;align-items:center;padding:9px 12px;border-bottom:1px solid #30425e}
.product-policy-head{color:#a9bbd6;font-size:12px}
.product-policy-row span{overflow-wrap:anywhere}
.product-policy-row input[type=checkbox]{width:17px;height:17px;margin:0}
.product-policy-row select,.product-policy-row input[type=number]{width:100%;min-width:0}
.product-catalogue-form button[type=submit]{margin-top:16px}
@media(max-width:700px){.product-policy-head{display:none}.product-policy-row{grid-template-columns:1fr 60px;gap:8px}.product-policy-row>span{grid-column:1/-1}}

/* v0.7.8: compact in-thread reply composer */
.ticket-compose-details{margin-bottom:18px;border-bottom:1px solid var(--border, #ddd);padding-bottom:12px}
.ticket-compose-details>summary{cursor:pointer;font-weight:600;padding:10px 0}
.ticket-compose-details .ticket-composer{padding:10px 0}

/* Ticket action panel matches the native Otis form controls. */
.ticket-composer{background:#162235;border:1px solid #34435b;border-radius:10px;padding:16px;margin-bottom:18px}
.ticket-composer h3{margin:0 0 14px;font-size:15px}
.ticket-composer .fields{margin:0;display:flex;flex-direction:column;gap:12px}
.ticket-compose-controls{display:grid;grid-template-columns: minmax(0,1fr) minmax(0,1fr);gap:12px}
.ticket-compose-controls label,.ticket-composer label{display:block;color:#c8d8ef;font-size:13px}
.ticket-compose-controls select,.ticket-composer textarea{display:block;box-sizing:border-box;width:100%;background:#101a2b;color:#edf4ff;border:1px solid #34435b;border-radius:8px;padding:10px;font:inherit;margin-top:6px}
.ticket-composer textarea{min-height:150px;resize:vertical;line-height:1.5}
.ticket-composer textarea:focus,.ticket-compose-controls select:focus{outline:2px solid #3979ed;outline-offset:1px}
.ticket-composer .hint{margin:0}.ticket-composer button[type=submit]{align-self:flex-start}
@media(max-width:600px){.ticket-compose-controls{grid-template-columns:1fr}}

/* v0.7.10: full-width autosizing ticket editor with inline actions */
.ticket-composer form.fields{display:flex;flex-direction:column;align-items:stretch;gap:12px}
.ticket-composer .ticket-message-field{display:block;width:100%;min-width:0}
.ticket-composer .ticket-message-field textarea{display:block;width:100%;min-width:0;box-sizing:border-box;resize:none;overflow-y:hidden;line-height:1.5;min-height:0;margin-top:6px}
.ticket-composer .ticket-compose-controls{display:grid;grid-template-columns:minmax(150px,1fr) minmax(150px,1fr) auto;gap:12px;align-items:end;width:100%}
.ticket-composer .ticket-compose-controls>label,.ticket-composer .ticket-status-control{min-width:0}
.ticket-composer .ticket-compose-submit{display:flex;align-items:end}
.ticket-composer .ticket-compose-submit button{white-space:nowrap;min-height:42px}
.ticket-composer .ticket-compose-controls select{width:100%}
@media(max-width:650px){.ticket-composer .ticket-compose-controls{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.ticket-composer .ticket-compose-submit{grid-column:1/-1}.ticket-composer .ticket-compose-submit button{width:100%}}
@media(max-width:420px){.ticket-composer .ticket-compose-controls{grid-template-columns:minmax(0,1fr)}.ticket-composer .ticket-compose-submit{grid-column:auto}}

/* v0.7.18: category display modes */
.service-category-icon{display:inline-flex;align-items:center;justify-content:center;margin-right:8px;font-size:19px;vertical-align:middle}
.service-category-cards{display:grid;gap:8px;padding:12px 4px}
.service-category-card{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;padding:12px;background:#162235;border:1px solid #34435b;border-radius:8px}
.service-category-card-main{display:flex;flex:1 1 240px;align-items:center;flex-wrap:wrap;gap:8px 12px}
.service-category-card small{flex:1 1 100%;font-size:12px}
/* Ticket composer: two explicit post-save destinations. */
.ticket-composer .ticket-compose-submit{gap:8px;flex-wrap:wrap}
.ticket-composer .ticket-compose-submit button{flex:0 0 auto}
@media(max-width:650px){.ticket-composer .ticket-compose-submit button{flex:1 1 150px}}

/* WHMCS ticket attachment viewer */
.ticket-attachments{margin-top:12px;padding-top:10px;border-top:1px solid var(--border,#394454)}
.ticket-attachment{margin:8px 0;display:flex;flex-wrap:wrap;align-items:flex-start;gap:8px}
.ticket-attachment-preview{display:block;flex-basis:100%;max-width:min(100%,680px);max-height:420px;border-radius:8px;object-fit:contain;background:#121820}
a.ticket-attachment-preview,iframe.ticket-attachment-preview{height:360px}

/* Compact ticket attachment gallery */
.ticket-attachment-grid{display:flex;flex-wrap:wrap;gap:12px;margin-top:8px;align-items:flex-start}
.ticket-attachment-card{width:172px;max-width:100%;min-width:0;display:flex;flex-direction:column;align-items:center;gap:5px;padding:9px;background:var(--panel,#172234);border:1px solid var(--border,#394454);border-radius:9px}
.ticket-attachment-media{height:100px;width:100%;display:flex;align-items:center;justify-content:center;overflow:hidden}
.ticket-attachment-image-button{border:0;background:transparent;padding:0;cursor:zoom-in;width:100%;height:100%;display:flex;align-items:center;justify-content:center}
.ticket-attachment-thumb{max-width:100%;max-height:96px;object-fit:contain;border-radius:5px}
.ticket-attachment-audio{width:100%;height:42px}
.ticket-attachment-filename{font-size:11px;line-height:1.35;text-align:center;overflow-wrap:anywhere;max-width:100%}
.ticket-attachment-download{font-size:10px!important;padding:2px 5px!important;min-height:0!important;background:transparent!important;border:0!important;text-decoration:underline;cursor:pointer;opacity:.8}
.ticket-attachment-icon{height:76px;width:80px;border-radius:7px;border:1px solid #52617a;background:#24354e;color:#fff;font-weight:700;font-size:17px;cursor:pointer}
.ticket-attachment-icon-pdf{color:#ffb5b5;border-color:#995354}
.ticket-attachment-loading{font-size:11px;color:var(--muted,#9daac0);text-align:center}
.attachment-modal-backdrop{position:fixed;inset:0;z-index:10000;background:rgba(0,0,0,.82);display:flex;align-items:center;justify-content:center;padding:24px}
.attachment-modal{width:min(1100px,100%);max-height:95vh;display:flex;flex-direction:column;background:#172234;border:1px solid #45516b;border-radius:10px;overflow:hidden}
.attachment-modal-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;font-size:13px;overflow-wrap:anywhere}
.attachment-modal-content{display:block;width:100%;height:min(78vh,850px);object-fit:contain;background:#10151d;border:0}
@media(max-width:540px){.ticket-attachment-card{width:calc(50% - 6px)}.attachment-modal-backdrop{padding:8px}}

.bulk-ticket-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:12px 0}.bulk-ticket-toolbar label{display:flex;align-items:center;gap:5px}.bulk-merge-panel{padding:16px;border:1px solid var(--border,#777);border-radius:8px;margin:12px 0}.bulk-merge-panel select{width:100%;max-width:650px;margin:10px 0}

/* Bulk ticket merge dialog and full-cell selection */
.bulk-merge-backdrop{position:fixed;inset:0;z-index:11000;background:rgba(0,0,0,.72);display:flex;align-items:center;justify-content:center;padding:18px;overflow-y:auto}
.bulk-merge-backdrop .bulk-merge-panel{background:var(--panel,#101827);border:1px solid var(--border,#45516b);border-radius:12px;padding:24px;width:min(680px,100%);max-height:calc(100vh - 36px);overflow:auto;box-shadow:0 18px 60px rgba(0,0,0,.5);margin:auto}
.bulk-merge-backdrop .bulk-merge-panel select{max-width:none}
.bulk-merge-backdrop .bulk-merge-panel .list-toolbar{justify-content:flex-end;gap:12px}
.ticket-select-cell{cursor:pointer;text-align:center;min-width:48px;user-select:none}
.ticket-select-cell:hover{background:rgba(110,160,255,.12)}
.ticket-select-cell input{cursor:pointer}

.connex-product-list{max-height:220px;overflow-y:auto;border:1px solid #666;padding:8px;margin:6px 0 12px}.connex-product-option{display:flex;align-items:center;gap:8px;padding:4px 0}.connex-product-option input{width:auto}

/* v0.7.33: compact VoIP balance metric with click menu */
.voip-balance-tile{position:relative;padding:0;gap:0}
.voip-balance-toggle{width:100%;height:100%;border:0;background:transparent;text-align:left;display:flex;flex-direction:column;align-items:flex-start;gap:5px;padding:12px;border-radius:9px}
.voip-balance-toggle:hover:not(:disabled){background:#253b56}
.voip-balance-toggle strong{font-size:24px}
.voip-balance-toggle small{color:#aabbd1}
.voip-balance-menu{position:absolute;top:calc(100% + 5px);left:0;min-width:190px;z-index:30;background:#19283e;border:1px solid #405674;border-radius:9px;padding:6px;box-shadow:0 10px 28px #0008}
.voip-balance-menu[hidden]{display:none}
.voip-menu-action{display:block;width:100%;text-align:left;border:0;background:transparent;color:#e7ecf6;text-decoration:none;padding:9px 11px;border-radius:6px;font-size:13px}
.voip-menu-action:hover{background:#304561}
.voip-menu-action:disabled{opacity:.45;cursor:not-allowed}

/* v0.7.35 service presentation modes */
.service-indicator{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;padding:12px 14px;border:1px solid #30425e;border-radius:9px;margin:8px 0;background:#162235}
.service-indicator-heading,.service-indicator-line,.service-indicator-statuses{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.service-indicator-statuses{justify-content:flex-end}
.service-indicator-line small{font-size:12px}
.service-heading-status{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.service-instance-list{display:grid;gap:8px;padding:10px}
.service-instance{border:1px solid #34435b;border-radius:8px;background:#162235;overflow:hidden}
.service-instance summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;cursor:pointer}
.service-instance[open] summary{border-bottom:1px solid #34435b}
.service-instance-body{padding:12px;display:grid;gap:8px}
.service-instance-body p{margin:0}

/* v0.7.37: stable service heading alignment across every rendering mode */
.service-category>summary{display:flex!important;align-items:center;justify-content:space-between;gap:12px;list-style:none;text-align:left}
.service-category>summary::-webkit-details-marker{display:none}
.service-summary-left,.service-indicator-heading{display:inline-flex;align-items:center;justify-content:flex-start;gap:8px;min-width:0;text-align:left}
.service-summary-left{flex:1 1 auto}
.service-summary-left strong,.service-indicator-heading strong{white-space:normal}
.service-summary-left .service-category-icon,.service-indicator-heading .service-category-icon{flex:0 0 24px;margin:0}
.service-summary-right{display:inline-flex;align-items:center;justify-content:flex-end;gap:14px;flex:0 0 auto;white-space:nowrap}
.service-category>summary::after{content:'▸';font-size:13px;color:#9daac0;flex:0 0 12px;text-align:center}
.service-category[open]>summary::after{content:'▾'}
.service-indicator{flex-wrap:nowrap}
.service-indicator-heading{flex:1 1 auto}
.service-indicator-statuses{flex:0 0 auto}
@media(max-width:540px){.service-summary-right{gap:7px}.service-indicator{gap:6px}.service-category>summary{gap:6px}}

/* Services master-detail workspace */
.service-split-workspace{display:grid;grid-template-columns:minmax(170px,20%) minmax(0,1fr);min-height:300px;border:1px solid #30425e;border-radius:10px;overflow:hidden;margin-top:12px}
.service-split-nav{background:#111d2f;border-right:1px solid #30425e;padding:10px 7px;min-width:0;overflow-wrap:anywhere;display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;gap:0}
.service-nav-group{margin-bottom:9px;flex:0 0 auto}.service-nav-items{padding-left:10px;display:grid;grid-auto-rows:max-content;align-content:start;gap:3px}
.service-split-nav button{display:block;width:100%;text-align:left;white-space:normal;overflow-wrap:anywhere;border:0;border-radius:6px;padding:8px;background:transparent;color:inherit;cursor:pointer}
.service-split-nav button:hover,.service-split-nav button.selected{background:#2a3d58}
.service-nav-category{font-weight:700}.service-nav-item{font-size:12px;opacity:.9}
.service-split-detail{padding:18px;min-width:0}.service-detail-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px}.service-detail-header h3{margin:0;overflow-wrap:anywhere}
.service-detail-actions{display:flex;align-items:center;gap:8px}.service-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.service-detail-field{background:#162235;border:1px solid #30425e;border-radius:7px;padding:12px;min-width:0;overflow-wrap:anywhere}.service-detail-field small{display:block;color:#a6b5c8;margin-bottom:5px}.service-detail-field strong{font-weight:600}
.service-detail-related{margin-top:18px}.service-detail-related-row,.service-overview-row,.service-view-config-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;padding:9px;border-bottom:1px solid #30425e}
@media(max-width:680px){.service-split-workspace{grid-template-columns:minmax(115px,34%) minmax(0,1fr)}.service-split-detail{padding:10px}.service-detail-grid{grid-template-columns:1fr}}

/* Navigation is flat except for logical dialer instance entries; no expanding subtrees. */
.service-nav-items{padding-left:12px}

/* Dialer logical instance server inventory */
.dialer-server-table{width:100%;overflow-x:auto}.dialer-server-row{display:grid;grid-template-columns:minmax(85px,.7fr) minmax(90px,.8fr) minmax(170px,2fr) minmax(130px,1.2fr) minmax(90px,.8fr);align-items:center;gap:12px;min-width:650px;padding:11px 10px;border-bottom:1px solid #30425e}.dialer-server-head{font-size:12px;font-weight:600;color:#9fb2cf}.dialer-server-row>span{overflow-wrap:anywhere}

/* v0.7.60: keep navigation groups at their intrinsic height even when details are long. */
.service-split-nav{display:block;align-content:start;justify-content:initial}
.service-split-nav>.service-nav-group{display:block;flex:none;height:auto;min-height:0;margin:0 0 9px}
.service-split-nav .service-nav-items{display:block;height:auto;min-height:0}
.service-split-nav .service-nav-items>button{margin:3px 0}

/* Dialer instance tabs */
.dialer-tab-host{margin-top:16px;min-width:0}.dialer-tabs{display:flex;flex-wrap:wrap;gap:6px;border-bottom:1px solid #30425e;padding-bottom:10px;margin-bottom:18px}.dialer-tabs button{white-space:nowrap}.dialer-tabs button.selected{background:#274f83;color:#fff}.dialer-tab-content{min-width:0}.dialer-tab-content .table-wrap{overflow-x:auto}

/* v0.7.76: compact VICIdial instance workspace controls and spacing. */
.dialer-tab-host{margin-top:8px}
.dialer-tabs{gap:3px;padding-bottom:5px;margin-bottom:9px}
.dialer-tabs button{padding:4px 9px;border-radius:5px;font-size:12px;line-height:1.3;min-height:25px}
.dialer-tab-content h4{margin:8px 0;font-size:13px}
.dialer-tab-content p{margin:6px 0}
.dialer-tab-content button{padding:4px 8px;border-radius:5px;font-size:12px;line-height:1.3;min-height:25px}
.dialer-tab-content .service-detail-grid{gap:6px}
.dialer-tab-content .service-detail-field{padding:7px 9px;border-radius:5px}
.dialer-tab-content .service-detail-field small{margin-bottom:2px}
.dialer-tab-content .service-detail-related{margin-top:9px}
.dialer-tab-content .dialer-server-row{padding:6px 8px;gap:8px}
.dialer-tab-content .account-info-row{padding:5px 0}
.dialer-tab-content .table-wrap th,.dialer-tab-content .table-wrap td{padding:5px 7px}

/* Compact VICIdial live presence */
.dialer-presence{display:inline-block;padding:2px 6px;border-radius:4px;font-size:11px;font-weight:600;white-space:nowrap}
.dialer-presence.online{background:#14532d;color:#dcfce7}
.dialer-presence.offline{background:#374151;color:#e5e7eb}
.dialer-presence.unknown{background:#78350f;color:#fef3c7}

/* Compact campaign list controls */
.dialer-campaign-controls{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:4px 0 8px}.dialer-campaign-toggle{display:inline-flex;align-items:center;gap:5px;font-size:12px;white-space:nowrap;cursor:pointer}.dialer-campaign-toggle input{margin:0}.dialer-campaign-controls .hint{margin:0}

/* Compact services history filter */
.compact-checkbox-label{display:inline-flex;align-items:center;gap:6px;font-size:12px;cursor:pointer;white-space:nowrap}
.compact-checkbox-label input[type=checkbox]{width:14px;height:14px;margin:0;cursor:pointer}

/* v0.7.87 compact ticket enhancements */
.ticket-quick-filters{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:6px 0}
.ticket-quick-filters input,.ticket-quick-filters select{width:180px;max-width:100%;padding:6px 9px}
.ticket-info-compact{border:1px solid var(--border,#374151);border-radius:7px;padding:6px 10px;margin:7px 0;font-size:12px}
.ticket-info-tabs{display:flex;gap:12px;border-bottom:1px solid var(--border,#374151);margin-bottom:5px}
.ticket-info-tabs button{background:transparent;border:0;border-radius:0;padding:3px 2px;font-size:12px;opacity:.7}
.ticket-info-tabs button.active{opacity:1;font-weight:700;border-bottom:2px solid currentColor}
.ticket-info-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}
.ticket-info-line{display:flex;gap:6px;line-height:19px;min-width:0}
.ticket-info-line>span:first-child{flex:0 0 85px}
.ticket-info-line>span:last-child{overflow-wrap:anywhere}
.ticket-inline-link{background:none;border:0;padding:0 4px 0 0;color:var(--accent,#60a5fa);text-decoration:underline;font-size:inherit;cursor:pointer}
.ticket-editable{cursor:pointer}.ticket-editable:hover{text-decoration:underline}
.ticket-subject-input{font-size:1.3rem;max-width:100%;width:500px}
.ticket-status-control{position:relative}.ticket-status-picker{position:absolute;right:0;top:100%;z-index:10}
.ticket-history-line{display:grid;grid-template-columns:145px 140px 1fr;gap:6px;padding:4px 0;border-bottom:1px solid var(--border,#374151)}
@media(max-width:650px){.ticket-info-grid{grid-template-columns:1fr}.ticket-history-line{grid-template-columns:1fr}}

.ticket-client-search{width:100%;box-sizing:border-box;margin:6px 0;padding:8px}
.ticket-client-results{max-height:260px;overflow-y:auto;display:flex;flex-direction:column;gap:3px;margin:6px 0}
.ticket-client-result{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:8px 10px;text-align:left;border:1px solid var(--border,#374151);border-radius:5px;background:transparent;cursor:pointer;font-size:12px}
.ticket-client-result:hover,.ticket-client-result.selected{border-color:var(--accent,#60a5fa);background:rgba(96,165,250,.1)}
.ticket-client-result-title{font-weight:600}
.ticket-client-actions{display:flex;gap:8px;margin-top:10px}

.ticket-cc-chips{display:flex;flex-wrap:wrap;gap:5px;margin:6px 0}
.ticket-cc-chip{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--border,#374151);border-radius:12px;padding:2px 7px;font-size:12px}
.ticket-cc-chip button{background:none;border:0;padding:0 2px;cursor:pointer;font-size:16px}

/* Client account: Services and Invoices share one tabbed panel. */
.account-commercial-tabs{display:flex;gap:6px;border-bottom:1px solid var(--border,#d5d9e0);margin:0 0 12px;padding-bottom:6px}
.account-commercial-tabs button{min-width:90px}
.account-commercial-tabs .account-tab-active{font-weight:700;border-color:var(--accent,#5577ad);box-shadow:inset 0 -2px 0 var(--accent,#5577ad)}
.account-commercial-content[hidden]{display:none!important}

/* v0.7.108: denser panels and compact commercial tabs */
.panel{padding:13px 16px;margin-bottom:10px}
.detail-body .panel{margin-top:14px}
.account-header{gap:10px}
.account-header .panel{margin-bottom:10px!important}
.account-workspace .account-commercial-tabs{gap:4px;margin-bottom:9px;padding-bottom:5px}
.account-workspace .account-commercial-tabs button{min-width:0;width:auto;flex:none;padding:5px 11px;font-size:12px;line-height:1.25;border-radius:6px}
.account-workspace .panel>h2{margin-bottom:11px}
@media(max-width:720px){.panel{padding:11px 12px}}

/* v0.7.109: effective account status badge */
.account-status-badge{display:inline-flex;align-items:center;justify-content:center;border-radius:7px;padding:4px 10px;font-size:12px;font-weight:650;line-height:1.3}
.account-status-active{background:#153c32;color:#9fe1b9;border:1px solid #2c7056}
.account-status-suspended{background:#552126;color:#ffb2b6;border:1px solid #a8444c}
.account-status-other{background:#2a3850;color:#c8d8ef;border:1px solid #435676}

/* v0.7.110: overdue invoice indicator */
.account-status-past-due{background:#573b16;color:#ffd48a;border:1px solid #a87a2d}

/* v0.7.116: smaller typography in account status/finance panel */
.account-workspace .account-finance .account-finance-metric strong{font-size:19px;line-height:1.2}
.account-workspace .account-finance .account-finance-metric small{font-size:11px}
.account-workspace .account-finance .account-finance-metric span{font-size:11px}
.account-workspace .account-finance .account-state h2{font-size:15px}

.pbx-test-results{white-space:pre-wrap;overflow-wrap:anywhere;max-height:400px;overflow:auto;font-size:12px;padding:12px;background:var(--surface-2,#171c24);border-radius:7px}

/* v0.7.121 PBX live extension states */
.pbx-state-badge{display:inline-flex;align-items:center;white-space:nowrap;padding:3px 9px;border-radius:6px;font-size:11px;font-weight:650;background:#454c56;color:#e1e5e9}
.pbx-state-online{background:#174b32;color:#a3eac1}
.pbx-state-talking{background:#75252b;color:#ffd1d1}
.pbx-state-dnd{background:#754a13;color:#ffdd9e}
.pbx-state-ringing{background:#842329;color:#fff;animation:pbx-ring-flash .5s steps(2,start) infinite}
.pbx-state-hold{background:#842329;color:#fff;animation:pbx-hold-flash 1.8s steps(2,start) infinite}
@keyframes pbx-ring-flash{50%{background:#e93c46;color:#fff}}
@keyframes pbx-hold-flash{50%{background:#e93c46;color:#fff}}
@media(prefers-reduced-motion:reduce){.pbx-state-ringing,.pbx-state-hold{animation:none}}

/* v0.7.123: extension drill-down */
.pbx-extension-clickable{cursor:pointer}
.pbx-extension-clickable:hover{background:rgba(110,150,190,.09)}
.pbx-extension-modal{position:fixed;inset:0;z-index:10000;background:rgba(0,0,0,.65);display:flex;align-items:center;justify-content:center;padding:20px}
.pbx-extension-modal-panel{width:min(1120px,96vw);max-height:90vh;overflow:auto;background:var(--panel,#19232e);color:var(--text,#e9edf4);border:1px solid var(--border,#3b4654);border-radius:12px;padding:16px}
.pbx-extension-modal-heading{display:flex;align-items:center;justify-content:space-between}
.pbx-extension-modal-content{padding-top:12px;overflow-x:auto}

/* v0.7.126 unified ticket creation modal */
.otis-create-backdrop{position:fixed;inset:0;z-index:11000;background:rgba(0,0,0,.72);display:flex;justify-content:center;align-items:center;padding:16px}
.otis-create-modal{width:min(980px,96vw);max-height:94vh;overflow-y:auto;background:var(--panel,#1c2632);color:var(--text,#e8edf3);border:1px solid var(--border,#46515f);border-radius:12px;padding:18px}
.otis-create-header,.otis-create-actions{display:flex;align-items:center;justify-content:space-between;gap:12px}
.otis-create-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 14px}
.otis-create-form label{display:flex;flex-direction:column;gap:4px;margin-bottom:9px}
.otis-create-form input,.otis-create-form select,.otis-create-form textarea{width:100%;min-width:0}
.otis-create-form textarea{resize:vertical}
.otis-create-actions{justify-content:flex-end;margin-top:14px}
@media(max-width:700px){.otis-create-grid{grid-template-columns:1fr}}

/* v0.7.127 ticket modal layout and typeahead */
.otis-create-column{min-width:0}
.otis-create-suggestions{max-height:170px;overflow-y:auto;border:1px solid var(--border,#46515f);border-radius:6px;margin:-5px 0 10px;background:var(--panel,#1c2632)}
.otis-create-suggestion{display:block;width:100%;text-align:left;padding:8px 10px;border:0;border-bottom:1px solid var(--border,#46515f);background:transparent;color:inherit;cursor:pointer}
.otis-create-suggestion:hover,.otis-create-suggestion:focus{background:rgba(125,165,205,.15)}
.otis-create-check{display:flex!important;flex-direction:row!important;align-items:center;gap:8px}
.otis-create-check input{width:auto!important}

/* v0.7.129: compact button baseline; preserve semantic colours and icon-specific controls */
button{padding:5px 10px;border-radius:6px;font-size:12px;line-height:1.3;min-height:27px}
button:focus-visible{outline:2px solid #8cb5ff;outline-offset:2px}
nav button{padding:9px 12px;text-align:left}
.login-panel button{width:100%}
.service-split-nav button{width:100%;text-align:left;white-space:normal}
.otis-create-suggestion{padding:7px 10px}
.ticket-cc-chip button{padding:0 2px;min-height:0}
.ticket-attachment-image-button{padding:0;min-height:0}
.ticket-composer .ticket-compose-submit button{min-height:27px}

/* Ticket buttons are neutral, including dynamically generated actions. */
.ticket-composer button.primary,.ticket-thread button.primary,.ticket-create-modal button.primary{background:#23334b;border-color:#34435b;color:#eef4ff}

/* v0.7.133 sidebar Setup submenu */
#nav .nav-group-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;}
#nav .nav-chevron{font-size:18px;transition:transform .15s ease;}
#nav .nav-group-toggle[aria-expanded="true"] .nav-chevron{transform:rotate(90deg);}
#nav .nav-submenu{display:grid;gap:3px;margin-left:12px;padding-left:9px;border-left:1px solid #34435b;}
#nav .nav-submenu[hidden]{display:none;}
#nav .nav-submenu button{font-size:12px;padding:7px 10px;}
@media(max-width:720px){#nav .nav-submenu{display:flex;align-items:center;flex-shrink:0;margin-left:0;padding-left:6px;}#nav .nav-submenu[hidden]{display:none;}}

/* v0.7.146 — JMS Voice read-only call diagnostics */
.voice-call-backdrop{position:fixed;inset:0;z-index:2000;background:rgba(3,8,17,.8);display:flex;align-items:center;justify-content:center;padding:16px}
.voice-call-modal{width:min(1500px,98vw);height:min(94vh,1100px);background:#152238;border:1px solid #3a5070;border-radius:12px;display:flex;flex-direction:column;min-height:0;box-shadow:0 18px 80px #0009}
.voice-call-head{padding:16px 20px;display:flex;justify-content:space-between;align-items:flex-start;gap:15px;border-bottom:1px solid #33435b}
.voice-call-head h3{margin:0 0 6px;font-size:18px}
.voice-call-id{display:flex;align-items:center;gap:8px;overflow-wrap:anywhere;font-size:12px}
.voice-call-id button{padding:3px 8px;font-size:11px}
.voice-call-summary{padding:12px 20px 0}
.voice-call-tabs{margin:8px 20px 0;flex-shrink:0;display:flex;gap:6px;flex-wrap:wrap}
.voice-call-body{padding:18px 20px 28px;overflow:auto;flex:1;min-height:0}
.voice-call-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px;margin-bottom:14px}
.voice-call-field{border:1px solid #30425e;border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:6px;min-width:0}
.voice-call-field strong{overflow-wrap:anywhere;font-size:13px}
.voice-call-json{background:#0c1625;border:1px solid #30425e;border-radius:8px;padding:15px;white-space:pre-wrap;overflow-wrap:anywhere;overflow:auto;max-height:65vh;font:12px/1.5 ui-monospace,Consolas,monospace}
.voice-call-log-line{padding:8px 10px;border-bottom:1px solid #30425e;font:12px/1.5 ui-monospace,Consolas,monospace;overflow-wrap:anywhere}
.voice-trace-entry{border:1px solid #30425e;border-radius:8px;margin:8px 0;padding:10px}
.voice-trace-entry summary{cursor:pointer}
@media(max-width:700px){.voice-call-modal{width:100%;height:96vh}.voice-call-backdrop{padding:6px}.voice-call-fields{grid-template-columns:1fr 1fr}}

/* v0.7.153: ladder styling must live in app.css (the stylesheet actually loaded). */
.voice-sip-ladder{overflow-x:auto;max-width:100%;border:1px solid #30425e;border-radius:8px;padding:12px;margin:12px 0;background:#101c30;color:#e8f0fc}
.voice-sip-heading{fill:#f1f6ff;font-size:13px;font-weight:600}
.voice-sip-ip{fill:#b4c6df;font-size:11px}
.voice-sip-lifeline{stroke:#627f9e;stroke-width:1.3;stroke-dasharray:5 5}
.voice-sip-arrow,.voice-sip-arrowhead{stroke:#75b8f5;stroke-width:2;fill:none}
.voice-sip-method{fill:#f1f6ff;font-size:12px;font-weight:600;pointer-events:none}
.voice-sip-time{fill:#9fb5d2;font-size:11px;pointer-events:none}
.voice-sip-event{cursor:pointer;outline:none}
.voice-sip-event:hover .voice-sip-arrow,.voice-sip-event:hover .voice-sip-arrowhead,.voice-sip-event:focus .voice-sip-arrow,.voice-sip-event:focus .voice-sip-arrowhead{stroke:#ffd67e;stroke-width:3}
.voice-sip-event:focus .voice-sip-method,.voice-sip-event:hover .voice-sip-method{fill:#ffd67e}

/* v0.7.154: independent SIP message viewer above the persistent Call Details modal. */
.voice-sip-message-backdrop{position:fixed;inset:0;z-index:10020;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(3,10,22,.78)}
.voice-sip-message-modal{width:min(100%,980px);max-height:min(88vh,960px);display:flex;flex-direction:column;min-height:0;overflow:hidden;border:1px solid #415575;border-radius:12px;background:#17243a;color:#e8f0fc;box-shadow:0 20px 80px rgba(0,0,0,.6)}
.voice-sip-message-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px 20px;border-bottom:1px solid #344761}
.voice-sip-message-head h3{margin:0 0 6px;font-size:17px}
.voice-sip-message-actions{display:flex;gap:8px;flex-shrink:0}
.voice-sip-message-content{flex:1;min-height:0;overflow:auto;margin:0;padding:20px;white-space:pre-wrap;overflow-wrap:anywhere;color:#e8f0fc;background:#111d30;font-size:12px;line-height:1.55}
@media(max-width:700px){.voice-sip-message-backdrop{padding:8px}.voice-sip-message-modal{max-height:94vh}.voice-sip-message-head{flex-wrap:wrap;padding:12px}.voice-sip-message-content{padding:12px}}

/* v0.7.157 RTCP call quality report */
.voice-quality-section{margin:0 0 24px}.voice-quality-section h4{font-size:16px;margin:0 0 12px;color:#e9f1fc}.voice-quality-heading{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:12px}.voice-quality-assessment{border:1px solid #56718d;border-radius:20px;padding:5px 12px;text-transform:capitalize;color:#dbe9fc}.voice-quality-assessment[data-status="excellent"],.voice-quality-assessment[data-status="good"]{border-color:#3b8b74;color:#9ce7c5}.voice-quality-assessment[data-status="poor"],.voice-quality-assessment[data-status="critical"],.voice-quality-assessment[data-status="degraded"]{border-color:#b65e61;color:#ffb8b8}.voice-quality-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(185px,1fr));gap:10px}.voice-quality-metric{border:1px solid #344a68;background:#122036;border-radius:8px;padding:12px;display:flex;flex-direction:column;gap:6px}.voice-quality-metric small{color:#a6bad4}.voice-quality-metric strong{font-size:20px;color:#eef5ff}.voice-quality-metric .muted{font-size:12px}.voice-quality-note{font-size:12px;color:#b4c4d8;margin:12px 0}.voice-quality-leg{border:1px solid #344a68;border-radius:9px;padding:14px;margin-bottom:12px}.voice-quality-leg h5,.voice-quality-chart h5{font-size:13px;margin:0 0 8px;color:#e4efff;overflow-wrap:anywhere}.voice-quality-leg p{margin:0 0 12px;font-size:12px}.voice-quality-chart{border:1px solid #344a68;border-radius:9px;padding:12px;margin:10px 0}.voice-quality-chart svg{width:100%;height:auto;max-height:190px;display:block}.voice-quality-axis{stroke:#7085a1;stroke-width:1}.voice-quality-axis-label{fill:#afc0d8;font-size:12px}.voice-quality-trend{fill:none;stroke:#69b5fa;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.voice-quality-chart .muted{font-size:12px}.voice-quality-raw{margin:18px 0}.voice-quality-raw summary{cursor:pointer;color:#cfe1f9;padding:10px 0}

.voice-call-search{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.voice-call-search-input{flex:1;min-width:240px;max-width:520px;padding:9px 12px;border:1px solid #3a5070;border-radius:7px;background:#101c30;color:#edf3ff;font:inherit}

/* v0.7.166: compact, two-line RTP endpoint identification */
.voice-quality-path{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:12px}
.voice-quality-endpoint{display:flex;flex-direction:column;gap:3px;min-width:180px;flex:1}
.voice-quality-endpoint strong{font-size:14px;color:#e4efff;font-weight:650;overflow-wrap:anywhere}
.voice-quality-endpoint small{font-size:11px;color:#a6bad4;overflow-wrap:anywhere}
.voice-quality-path-arrow{color:#8da7c8;font-size:20px;flex:none}

/* WHMCS reply/note attachments */
.ticket-compose-attachments{padding:10px;border:1px dashed #526783;border-radius:8px}
.ticket-compose-attachments.drag-over{border-color:#7fb2ff;background:#203652}
.ticket-compose-attachments input[type=file]{display:block;margin-top:8px;max-width:100%}
.ticket-compose-file-list{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.ticket-compose-file{display:flex;align-items:center;justify-content:space-between;gap:10px;overflow-wrap:anywhere}
.ticket-compose-file button{flex-shrink:0}

/* v0.7.179 — Unified customer directory */
.directory-heading,.directory-row,.directory-row-main,.directory-row-side,.directory-actions,.directory-controls,.directory-linked{display:flex;align-items:center;gap:12px}
.directory-heading{justify-content:space-between;margin:12px 0 18px}.directory-heading h3{margin:0 0 4px}.directory-heading p{margin:0}
.directory-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:12px 0 20px}
.directory-stat{padding:14px 18px;border:1px solid var(--border,#36404c);border-radius:10px;display:flex;flex-direction:column;gap:5px;background:var(--panel-bg,transparent)}
.directory-stat strong{font-size:24px}.directory-stat span{font-size:12px;opacity:.72}
.directory-search{width:100%;box-sizing:border-box;padding:10px 12px;margin:12px 0;border:1px solid var(--border,#45505c);border-radius:8px;background:var(--input-bg,transparent);color:inherit}
.directory-content{display:flex;flex-direction:column;gap:8px}.directory-row{flex-wrap:wrap;justify-content:space-between;padding:14px;border:1px solid var(--border,#36404c);border-radius:10px;min-width:0}
.directory-row-main{min-width:0;flex:1}.directory-row-info{min-width:0}.directory-row-info strong{display:block}.directory-row-info p{margin:4px 0 0;overflow-wrap:anywhere;font-size:12px}
.directory-avatar,.directory-provider{width:40px;height:40px;border-radius:10px;background:var(--hover-bg,#344050);display:flex;align-items:center;justify-content:center;flex:none;font-weight:700}.directory-provider{font-size:11px}
.directory-pill,.directory-chip{border:1px solid var(--border,#45505c);padding:4px 9px;border-radius:20px;font-size:12px;white-space:nowrap}.directory-linked,.directory-controls,.directory-suggestions{width:100%;flex-wrap:wrap}.directory-suggestions{display:flex;align-items:center;gap:8px;padding:10px;border-radius:8px;background:var(--hover-bg,#26313c)}
@media(max-width:720px){.directory-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.directory-heading{flex-wrap:wrap}}

/* v0.7.182: local-first user table and details */
.directory-filter{display:flex;align-items:center;gap:8px;margin:8px 0 12px;font-size:13px}
.directory-table-wrap{width:100%;overflow-x:auto;border:1px solid var(--border,#36404c);border-radius:10px}
.directory-table{border-collapse:collapse;min-width:1250px;width:100%;font-size:12px}
.directory-table th,.directory-table td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--border,#36404c);vertical-align:middle;white-space:nowrap}
.directory-table th{font-weight:600;background:var(--hover-bg,#26313c);position:sticky;top:0}
.directory-table td button{margin-right:5px}
.directory-table select{max-width:145px;font-size:12px;padding:5px;background:var(--input-bg,transparent);color:inherit;border:1px solid var(--border,#45505c);border-radius:5px}
.directory-text-link{border:0;background:none;color:inherit;text-decoration:underline;cursor:pointer;font-weight:600;padding:0}
.directory-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.directory-detail-field{display:flex;flex-direction:column;gap:5px;font-size:12px}
.directory-detail-field input{padding:8px;border-radius:6px;background:var(--input-bg,transparent);border:1px solid var(--border,#45505c);color:inherit}
.directory-detail-service{padding:12px;border:1px solid var(--border,#45505c);border-radius:8px;margin:8px 0}
.directory-detail-service p{margin:5px 0}
@media(max-width:650px){.directory-detail-grid{grid-template-columns:1fr}}

/* v0.7.184: user access matrix and account management panels */
.directory-table td:nth-child(n+4){text-align:center}
.directory-table td:first-child,.directory-table td:nth-child(2),.directory-table td:nth-child(3),.directory-table td:last-child{text-align:left}
.directory-service-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}
.directory-service-actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.directory-service-account{padding:12px 0;border-top:1px solid var(--border,#36404c);margin-top:10px}
.directory-service-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:10px;margin:12px 0}
.directory-service-fields>div{display:flex;flex-direction:column;gap:4px}
.directory-service-fields small{opacity:.7}
.directory-link-results{max-height:55vh;overflow:auto;margin-top:12px}
.directory-link-result{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--border,#36404c)}
.directory-link-result p{margin:4px 0}

/* v0.7.185 directory service status and exclusion selector */
.directory-state{font-size:18px;font-weight:700;white-space:nowrap}
.directory-state-active{color:#2ba86a}
.directory-state-disabled{color:#e05a5a}
.directory-state-mixed{color:#d8a345}
.directory-state-excluded{color:var(--muted,#929ba7)}
.directory-state-unknown{color:var(--muted,#929ba7)}
.directory-exclusion-control{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:12px 0;font-size:13px}
.directory-exclusion-control select{padding:8px;min-width:230px;max-width:100%;border-radius:6px;background:var(--input-bg,transparent);color:inherit;border:1px solid var(--border,#45505c)}

/* Persistent debug error notifications */
.otis-toast-stack{position:fixed;top:18px;right:18px;z-index:99999;display:flex;flex-direction:column;gap:10px;width:min(510px,calc(100vw - 30px));max-height:calc(100vh - 36px);overflow:auto;pointer-events:none}
.otis-error-toast{pointer-events:auto;background:#351e28;border:1px solid #e17b87;border-left:5px solid #f07480;color:#fff1f2;border-radius:12px;padding:13px 15px;box-shadow:0 10px 38px #0009;overflow-wrap:anywhere}
.otis-toast-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}
.otis-toast-heading strong{font-size:13px;line-height:1.5}
.otis-toast-dismiss{flex-shrink:0;padding:5px 9px;font-size:12px;background:#56303b;color:white;border:1px solid #b56b79}
.otis-error-toast details{margin-top:10px;border-top:1px solid #80525c;padding-top:8px}
.otis-error-toast summary{cursor:pointer;font-size:12px}
.otis-error-toast pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:240px;overflow:auto;font-size:11px;color:#fbdde1}

/* Global contact workspace */
.global-contact-detail{display:flex;flex-direction:column;gap:14px}
.global-contact-detail .panel{margin-bottom:0}
.contact-detail-summary{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;align-items:stretch}
.contact-detail-summary .panel{min-width:0}
.contact-detail-summary .info-row{align-items:center;gap:12px}
.contact-detail-summary .info-row strong{text-align:left}
.contact-detail-summary a,.contact-services-table a{color:#91bcff;text-decoration:none}
.contact-detail-summary a:hover,.contact-services-table a:hover{text-decoration:underline}
.contact-services-table td{padding:12px 10px;vertical-align:middle}
.contact-services-table th{padding:10px;background:#1b2a40}
.contact-service-title{font-weight:650;font-size:13px}
.contact-service-instance{font-size:12px;color:#a8bad2;margin-top:4px;overflow-wrap:anywhere}
.contact-tickets-panel .list-toolbar{gap:12px;flex-wrap:wrap}
.contact-tickets-panel .ticket-tabs{display:flex;gap:5px}
.contact-tickets-panel .ticket-tabs button.selected{background:#284c7b;border-color:#5482c2;color:#fff}
@media(max-width:900px){.contact-detail-summary{grid-template-columns:1fr}}

.entity-delete-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:9999;display:flex;align-items:center;justify-content:center;padding:20px}
.entity-delete-dialog{background:var(--surface,#202832);color:var(--text,#fff);border:1px solid var(--border,#52606c);border-radius:12px;padding:24px;max-width:480px;width:100%;box-shadow:0 18px 55px rgba(0,0,0,.4)}
.entity-delete-dialog h3{margin:0 0 12px}
.entity-delete-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:24px}
