:root{--nav:#122536;--nav2:#18364a;--accent:#35a9b4;--accent2:#3d8fb6;--green:#2e9b78;--amber:#d59b42;--red:#bd5961;--bg:#f2f5f7;--card:#fff;--text:#162733;--muted:var(--c-ink-3);--border:#dfe6ea;--shadow:0 8px 25px rgba(16,38,54,.08);--radius:14px;font-family:Inter,Manrope,"Segoe UI",Arial,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-size:14px}.hidden{display:none!important}button,input,select,textarea{font:inherit}button{cursor:pointer}.app{min-height:100vh;display:grid;grid-template-columns:245px 1fr;grid-template-rows:78px 1fr}.sidebar{position:fixed;inset:0 auto 0 0;width:245px;background:linear-gradient(180deg,var(--nav),#0e202e);color:white;padding:18px 13px;z-index:30;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:11px;padding:4px 7px 22px}.brand strong,.brand span{display:block}.brand strong{font-size:16px}.brand span{font-size:11px;letter-spacing:2px;color:#8fc9d1;margin-top:2px}.brand-mark{width:50px;height:50px;border-radius:15px;background:linear-gradient(135deg,var(--accent),var(--accent2));display:grid;place-items:center;color:white;font-weight:800;font-size:20px;box-shadow:0 8px 18px #0003}.brand-mark.small{width:39px;height:39px;border-radius:11px;font-size:16px}.sidebar nav{display:flex;flex-direction:column;gap:4px;overflow:auto}.nav-section{font-size:var(--t-5);text-transform:uppercase;letter-spacing:1.4px;color:#7792a2;padding:17px 12px 6px}.nav-item{border:0;background:transparent;color:#c7d3da;display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:9px;text-align:left;width:100%;transition:.15s}.nav-item:hover,.nav-item.active{background:#ffffff13;color:#fff}.nav-item.active{box-shadow:inset 3px 0 var(--accent);background:#ffffff18}.nav-item .ico{width:22px;text-align:center;font-size:16px}.sidebar-bottom{margin-top:auto}.sidebar-bottom small{display:block;color:#64808f;padding:14px 12px 0}.topbar{position:fixed;left:245px;right:0;top:0;height:78px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 25px;z-index:20}.topbar h1{font-size:20px;margin:0}.topbar p{margin:4px 0 0;color:var(--muted);font-size:12px}.top-actions{margin-left:auto;display:flex;align-items:center;gap:12px}.user-chip{display:flex;align-items:center;gap:9px;border-left:1px solid var(--border);padding-left:14px}.user-chip>span{width:34px;height:34px;border-radius:50%;background:#dceef1;color:#177984;display:grid;place-items:center;font-weight:800}.user-chip strong,.user-chip small{display:block}.user-chip small{color:var(--muted);font-size:var(--t-5)}.icon-btn{display:none;border:0;background:none;font-size:23px}.content{grid-column:2;grid-row:2;padding:24px;min-width:0}.grid{display:grid;gap:16px}.kpis{grid-template-columns:repeat(5,minmax(0,1fr))}.kpi,.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.kpi{padding:17px;position:relative;overflow:hidden}.kpi:after{content:"";position:absolute;width:70px;height:70px;border-radius:50%;background:#35a9b410;right:-20px;top:-20px}.kpi label{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.5px}.kpi strong{display:block;font-size:25px;margin-top:8px}.kpi small{color:var(--muted)}.card{padding:18px}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px;gap:10px}.card-header h2{font-size:15px;margin:0}.two-col{grid-template-columns:1.35fr .85fr;margin-top:16px}.btn{border:1px solid var(--border);background:#fff;color:var(--text);border-radius:9px;padding:9px 13px;font-weight:650}.btn:hover{background:#f7f9fa}.btn.primary{background:var(--accent2);border-color:var(--accent2);color:white}.btn.danger{color:var(--red);border-color:#efc5c8}.btn.small{padding:6px 9px;font-size:12px}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:14px}.toolbar input,.toolbar select{max-width:260px}.spacer{flex:1}.table-wrap{overflow:auto;border:1px solid var(--border);border-radius:11px}table{width:100%;border-collapse:collapse;background:#fff}th,td{text-align:left;padding:11px 12px;border-bottom:1px solid #e9edef;white-space:nowrap}th{background:#f7f9fa;font-size:var(--t-5);text-transform:uppercase;letter-spacing:.55px;color:#66757d;position:sticky;top:0}tr:last-child td{border-bottom:0}tr.clickable:hover{background:#f4fafb;cursor:pointer}.pill{display:inline-flex;padding:4px 8px;border-radius:99px;font-size:11px;font-weight:700;background:#e9eff2}.pill.green{background:#ddf3eb;color:#227659}.pill.red{background:#f7e4e6;color:#9a3e46}.pill.amber{background:#f8ecd7;color:#95661e}.money{font-variant-numeric:tabular-nums;font-weight:700}.muted{color:var(--muted)}.kanban{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(260px,1fr);gap:12px;overflow-x:auto;padding-bottom:12px}.kanban-col{background:#e9eef1;border-radius:13px;padding:10px;min-height:520px}.kanban-head{display:flex;justify-content:space-between;align-items:center;padding:5px 4px 12px}.kanban-head strong{font-size:13px}.kanban-count{background:#fff;padding:3px 7px;border-radius:20px;color:var(--muted);font-size:11px}.deal-card{background:#fff;border:1px solid #dfe6e9;border-radius:11px;padding:12px;margin-bottom:9px;box-shadow:0 3px 10px #1730460a}.deal-card:hover{border-color:#9ec9cf}.deal-card h3{font-size:13px;margin:0 0 6px}.deal-card p{margin:0 0 9px;color:var(--muted);font-size:11px}.deal-meta{display:flex;justify-content:space-between;align-items:center;font-size:11px}.deal-card.dragging{opacity:.5}.drop-target{outline:2px dashed var(--accent)}form .form-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}label{display:block;font-size:11px;color:#53646e;font-weight:700}input,select,textarea{width:100%;border:1px solid #ccd7dd;border-radius:8px;padding:10px;margin-top:5px;background:#fff;color:var(--text)}textarea{min-height:85px;resize:vertical}.full{grid-column:1/-1}.form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:17px}.modal{position:fixed;inset:0;background:#10253699;z-index:100;display:grid;place-items:center;padding:18px}.modal-card{background:#fff;border-radius:16px;width:min(760px,100%);max-height:92vh;overflow:auto;padding:24px;position:relative;box-shadow:0 24px 80px #0005}.modal-close{position:absolute;right:14px;top:10px;border:0;background:none;font-size:25px;color:#75848c}.modal h2{margin:0 0 18px}.toast{position:fixed;right:20px;bottom:20px;background:#16364a;color:#fff;border-radius:10px;padding:12px 16px;z-index:150;transform:translateY(100px);opacity:0;transition:.25s}.toast.show{transform:none;opacity:1}.toast.error{background:#9a3f47}.login-screen{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 20% 10%,#28576e,#0f2230 55%);padding:20px}.login-card{width:min(390px,100%);background:#fff;border-radius:18px;padding:32px;box-shadow:0 25px 80px #0006}.login-card .brand-mark{margin:0 auto 18px}.login-card h1{text-align:center;margin:0}.login-card p{text-align:center;color:var(--muted);margin:7px 0 23px}.login-card label{margin-top:13px}.login-card .btn{width:100%;margin-top:20px}.error{color:var(--red);margin-top:10px;font-size:12px}.bar-row{display:grid;grid-template-columns:120px 1fr 90px;align-items:center;gap:10px;margin:11px 0}.bar{height:9px;background:#e9eef1;border-radius:20px;overflow:hidden}.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--accent2),var(--accent));border-radius:20px}.timeline{border-left:2px solid #dce5e9;margin-left:7px;padding-left:17px}.timeline-item{position:relative;padding-bottom:17px}.timeline-item:before{content:"";position:absolute;left:-23px;top:2px;width:10px;height:10px;background:var(--accent);border:3px solid #fff;border-radius:50%;box-shadow:0 0 0 1px #bfcdd3}.empty{text-align:center;padding:45px 15px;color:var(--muted)}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:15px}.tab{border:0;background:none;padding:10px 12px;color:var(--muted);font-weight:700;border-bottom:2px solid transparent}.tab.active{color:var(--accent2);border-color:var(--accent2)}
@media(max-width:1100px){.kpis{grid-template-columns:repeat(3,1fr)}.two-col{grid-template-columns:1fr}}
@media(max-width:760px){.app{display:block}.sidebar{transform:translateX(-100%);transition:.2s}.sidebar.open{transform:none}.topbar{left:0;height:67px;padding:0 13px}.icon-btn{display:block;margin-right:8px}.topbar p,.user-chip div,.top-actions .btn{display:none}.content{padding:82px 12px 18px}.kpis{grid-template-columns:1fr 1fr;gap:10px}.kpi{padding:13px}.kpi strong{font-size:20px}.card{padding:13px}form .form-grid{grid-template-columns:1fr}.full{grid-column:auto}.bar-row{grid-template-columns:90px 1fr 65px}.modal{padding:8px}.modal-card{padding:20px 14px}.topbar h1{font-size:17px}}
.section-title{font-weight:800;font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:#486274;margin:20px 0 10px;padding-top:12px;border-top:1px solid #e2e9ee}.section-title:first-of-type{margin-top:4px;border-top:0}.section-title.split{display:flex;align-items:center;justify-content:space-between;gap:12px}.contact-list{display:grid;gap:8px}.contact-card{display:flex;justify-content:space-between;align-items:center;padding:12px;border:1px solid #dfe7ec;border-radius:10px;background:#f8fafb}.contact-card small{display:block;margin-top:3px;color:#6d7d88}.deal-item{border:1px solid #dbe5eb;border-radius:12px;padding:12px;margin-bottom:10px;background:#f8fafb}.deal-item-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.form-grid.compact{grid-template-columns:repeat(4,minmax(120px,1fr))}.deal-totals{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:14px 0}.deal-totals>div{padding:14px;border-radius:10px;background:#eef4f6;border:1px solid #dbe6ea}.deal-totals small,.deal-totals strong{display:block}.deal-totals strong{font-size:18px;margin-top:4px}.quick-create-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}@media(max-width:800px){.form-grid.compact,.deal-totals,.quick-create-grid{grid-template-columns:1fr}.section-title.split{align-items:flex-start;flex-direction:column}}

.global-search{position:relative;width:min(420px,34vw)}.global-search input{margin:0;padding:9px 12px}.search-results{position:absolute;top:44px;left:0;right:0;background:var(--c-surface);color:var(--text);border:1px solid var(--border);border-radius:11px;box-shadow:0 18px 45px #1025362b;max-height:420px;overflow:auto;z-index:80}.search-result{display:block;width:100%;border:0;border-bottom:1px solid var(--c-line);background:var(--c-surface);text-align:left;padding:10px 12px}.search-result:hover{background:var(--c-surface-2)}.search-result strong,.search-result small{display:block}.search-result small{color:var(--muted);margin-top:3px}.search-type{font-size:var(--t-5);text-transform:uppercase;letter-spacing:.08em;color:var(--accent2);font-weight:800}.history-detail{white-space:normal;min-width:340px}.owner-transfer{display:flex;gap:7px;align-items:end}.owner-transfer select{margin-top:5px}@media(max-width:900px){.global-search{width:240px}}@media(max-width:760px){.global-search{position:fixed;left:12px;right:12px;top:70px;width:auto}.global-search input{background:#fff}.search-results{top:42px}.content{padding-top:126px}}
.credit-box{display:grid;grid-template-columns:110px 1fr;gap:16px;align-items:start;padding:14px;border:1px solid var(--border);border-radius:12px;background:#f8fafc;margin-bottom:18px}.credit-score{display:flex;align-items:center;justify-content:center;min-height:74px;border-radius:12px;font-size:22px;font-weight:800;background:#eef2f6}.credit-score.green{background:#e7f6ef;color:#187153}.credit-score.amber{background:#fff3d8;color:#92600b}.credit-score.red{background:#fdebec;color:#a13c45}.credit-box small{display:block;margin-top:5px}.credit-explanation{white-space:pre-wrap;font-family:inherit;font-size:12px;line-height:1.55;background:white;border:1px solid var(--border);border-radius:8px;padding:10px;margin:10px 0 0}
/* v1.07 dashboard og forecast */
.dashboard-section{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;margin:16px 0}.goal-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.goal-card{display:flex;align-items:center;gap:14px;border:1px solid var(--border);border-radius:13px;padding:14px;background:#fafcfd}.goal-card h3{font-size:12px;margin:0 0 5px}.goal-card>div:last-child>strong,.goal-card>div:last-child>small{display:block}.goal-card small{color:var(--muted)}.goal-ring{--p:0;width:78px;height:78px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--accent) calc(var(--p)*1%),#e6edf0 0);position:relative;flex:none}.goal-ring:after{content:"";position:absolute;inset:8px;background:#fff;border-radius:50%}.goal-ring>div{z-index:1;text-align:center}.goal-ring strong,.goal-ring small{display:block}.goal-ring strong{font-size:17px}.goal-ring small{font-size:var(--t-5)}.forecast-line{display:grid;grid-template-columns:repeat(6,minmax(110px,1fr)) 34px;gap:8px;align-items:end;padding:10px;margin-bottom:8px;border:1px solid var(--border);border-radius:11px;background:#f8fafb}.hour-line{grid-template-columns:1.3fr .7fr .8fr 1fr 1.5fr 34px}.forecast-line .grow{min-width:160px}.remove-forecast{height:38px;border:0;border-radius:8px;background:#f7e4e6;color:#9a3e46;font-size:20px}.capacity-row{display:flex;align-items:center;justify-content:space-between;padding:13px 0;border-bottom:1px solid var(--border)}.capacity-row:last-child{border-bottom:0}.capacity-row small{display:block;color:var(--muted);margin-top:4px}@media(max-width:1250px){.goal-grid{grid-template-columns:repeat(2,1fr)}.forecast-line,.hour-line{grid-template-columns:repeat(3,1fr) 34px}}@media(max-width:760px){.goal-grid{grid-template-columns:1fr}.forecast-line,.hour-line{grid-template-columns:1fr}.remove-forecast{width:100%}}
.clickable{cursor:pointer}.clickable:hover{background:rgba(39,117,194,.06)}
.audit-filters{display:grid;grid-template-columns:minmax(220px,2fr) repeat(4,minmax(130px,1fr)) auto auto;gap:10px;padding:14px 0;align-items:center}.audit-filters input,.audit-filters select{width:100%}.severity{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:800}.severity.info{background:#e7f6ec;color:#256c3b}.severity.warning{background:#fff2cc;color:#805b00}.severity.critical{background:#fee2e2;color:#a51818}.audit-critical{background:#fff9f9}.audit-critical td:first-child{box-shadow:inset 3px 0 0 rgba(217,45,32,.22)}.audit-warning td:first-child{box-shadow:inset 3px 0 0 rgba(214,158,0,.20)}
@media(max-width:980px){.audit-filters{grid-template-columns:1fr 1fr}.audit-filters input{grid-column:1/-1}}
@media(max-width:600px){.audit-filters{grid-template-columns:1fr}.audit-filters input{grid-column:auto}}

@media(max-width:760px){.top-actions{gap:7px}}

/* v1.10 tilbud */
.quote-item{position:relative;border:1px solid var(--line,#dce5ea);border-radius:12px;padding:14px 42px 14px 14px;margin-bottom:10px;background:#f9fbfc}.remove-quote-item{position:absolute;right:10px;top:10px;border:0;background:#eef2f4;border-radius:50%;width:26px;height:26px;cursor:pointer;font-size:18px}.quote-line-grid{grid-template-columns:2fr repeat(4,minmax(120px,1fr))}.row-actions{display:flex;gap:6px;flex-wrap:wrap}.quote-item textarea{min-height:70px}@media(max-width:1000px){.quote-line-grid{grid-template-columns:1fr 1fr}}@media(max-width:640px){.quote-line-grid{grid-template-columns:1fr}.row-actions{min-width:140px}}
/* v1.10.01 tilbudsejerskab, soft delete og logo */
.soft-deleted{opacity:.68;background:#fff5f5}.logo-admin{display:grid;grid-template-columns:240px 1fr;gap:18px;align-items:center;padding:14px;border:1px solid var(--border);border-radius:12px;background:#f8fafb}.logo-preview{height:110px;border:1px dashed #bdcbd3;border-radius:10px;background:#fff;display:grid;place-items:center;overflow:hidden;color:var(--muted)}.logo-preview img{max-width:90%;max-height:90%;object-fit:contain}.quote-filter{display:flex;align-items:center;gap:7px;font-size:12px}.quote-filter input{margin:0}@media(max-width:700px){.logo-admin{grid-template-columns:1fr}}

/* v1.11 tilbudsbygger */
.quote-resource{position:relative;border:1px solid #d7e2e8;border-radius:12px;padding:14px 42px 14px 14px;margin:10px 0;background:#f8fbfc}.remove-quote-resource{position:absolute;right:10px;top:10px;border:0;background:#fff;color:#a33;border-radius:50%;width:26px;height:26px;font-size:18px;cursor:pointer}.resource-line-grid{grid-template-columns:repeat(5,minmax(120px,1fr))}.quote-line-grid{grid-template-columns:repeat(5,minmax(130px,1fr))}@media(max-width:900px){.resource-line-grid,.quote-line-grid{grid-template-columns:1fr 1fr}}@media(max-width:560px){.resource-line-grid,.quote-line-grid{grid-template-columns:1fr}}

/* v1.12 budgetoverblik og valuta */
.money-input{display:grid;grid-template-columns:1fr auto;align-items:stretch}.money-input input{border-radius:9px 0 0 9px;margin:0}.money-input span{display:grid;place-items:center;min-width:58px;padding:0 10px;border:1px solid var(--border);border-left:0;border-radius:0 9px 9px 0;background:#edf3f5;color:#334d5d;font-weight:800}.budget-month-grid{display:grid;grid-template-columns:repeat(3,minmax(260px,1fr));gap:12px;margin-top:16px}.budget-month-card{border:1px solid var(--border);border-radius:13px;background:#fff;padding:15px;text-align:left;cursor:pointer;transition:.15s}.budget-month-card:hover{border-color:#15607f;box-shadow:0 8px 24px #10253616;transform:translateY(-1px)}.budget-month-head{display:flex;justify-content:space-between;gap:12px;align-items:center}.budget-month-head span{font-size:12px;color:var(--muted)}.budget-progress{height:10px;background:#e6edf0;border-radius:999px;overflow:hidden;margin:12px 0 5px}.budget-progress i{display:block;height:100%;background:linear-gradient(90deg,#15607f,#0f7a86);border-radius:999px}.budget-month-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}.budget-month-stats span{padding:9px;background:#f5f8f9;border-radius:9px}.budget-month-stats small,.budget-month-stats b{display:block}.budget-month-stats small{color:var(--muted);font-size:var(--t-5);margin-bottom:4px}.budget-month-stats b{font-size:12px}.budget-editor{margin-top:16px}@media(max-width:1100px){.budget-month-grid{grid-template-columns:1fr 1fr}}@media(max-width:700px){.budget-month-grid{grid-template-columns:1fr}.budget-month-stats{grid-template-columns:1fr}}

/* v1.13 servicekatalog og intelligente tilbud */
.service-choice-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(310px,1fr));gap:10px;margin:10px 0 18px}
.service-choice{display:grid;grid-template-columns:auto 1fr 150px;gap:10px;align-items:start;border:1px solid var(--border,#dbe4e9);border-radius:12px;padding:12px;background:#fff;cursor:pointer}
.service-choice.suggested{border-color:#0f7a86;box-shadow:0 0 0 2px rgba(15,122,134,.08)}
.service-choice input{width:auto;margin-top:4px}.service-choice strong{display:block;color:#10273d}.service-choice small{display:block;color:#55636c;margin-top:4px;line-height:1.4}.service-choice select{min-width:0}
.service-version{display:block;font-size:11px;color:#0f7a86;margin-top:6px}
.inline-upload{display:grid;grid-template-columns:1fr 180px auto;gap:10px;align-items:end;margin:14px 0}
.service-admin-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px}
.service-admin-card{border:1px solid #dbe4e9;border-radius:12px;padding:14px;background:#fff;display:flex;flex-direction:column;gap:8px}
.service-admin-card strong,.service-admin-card small{display:block;margin-top:6px}.service-admin-card p{color:#55636c;line-height:1.45;flex:1}
@media(max-width:760px){.service-choice{grid-template-columns:auto 1fr}.service-choice select{grid-column:2}.inline-upload{grid-template-columns:1fr}.service-choice-grid{grid-template-columns:1fr}}
/* v1.14 brugerprofiler */
.user-chip{border:0;background:transparent;color:inherit;text-align:left;cursor:pointer;border-left:1px solid var(--border);padding:3px 0 3px 14px}
.user-chip:hover{background:#f3f7f8;border-radius:10px}
.profile-summary{display:flex;align-items:center;gap:12px;padding:12px 0 18px}
.profile-summary strong,.profile-summary small{display:block}.profile-summary small{color:var(--muted);margin-top:4px}
.profile-avatar{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:#dceef1;color:#177984;font-size:18px;font-weight:800}
.check-label{display:flex;align-items:center;gap:8px;margin-top:20px}.check-label input{margin:0}

/* v1.15 – unified priced capacity lines */
.resource-info{display:flex;flex-direction:column;gap:4px;margin:14px 0;padding:12px 14px;border:1px solid #b8d5dc;border-radius:12px;background:#eef7f8;color:#24485a}.resource-info span{font-size:13px;color:#55636c}.checkbox-row{display:flex!important;align-items:center;gap:8px;min-height:42px}.checkbox-row input{width:auto!important;margin:0}.deal-item .form-grid.compact{grid-template-columns:repeat(4,minmax(145px,1fr))}@media(max-width:900px){.deal-item .form-grid.compact{grid-template-columns:1fr 1fr}}@media(max-width:560px){.deal-item .form-grid.compact{grid-template-columns:1fr}}

/* v1.16 tilbud, rettigheder og professionel modal */
.modal-card.modal-wide{width:min(1180px,96vw);max-height:94vh;padding:28px 30px}.modal-card.modal-quote-list{width:min(1040px,94vw);overflow:visible}.quote-builder-head,.quote-list-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;padding-right:42px;margin-bottom:20px}.quote-builder-head h2,.quote-list-head h2{margin:0 0 5px}.quote-builder-head p,.quote-list-head p{margin:0;color:var(--muted)}.modal-close{right:18px;top:15px;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;line-height:1;z-index:5}.modal-close:hover{background:#eef3f5;color:var(--text)}.sticky-actions{position:sticky;bottom:-28px;background:#fff;border-top:1px solid var(--border);padding:16px 0 8px;z-index:4}.internal-total{background:#f7f9fa!important}.internal-total em{display:block;font-size:var(--t-5);color:var(--muted);font-style:normal;margin-top:4px}.quote-list{display:grid;gap:12px;max-height:64vh;overflow:auto;padding-right:4px}.quote-list-card{border:1px solid var(--border);border-radius:12px;padding:14px 16px;display:grid;grid-template-columns:1.05fr 2fr 1fr auto;gap:16px;align-items:center;background:#fff}.quote-list-card.is-deleted{background:#fff7f7;border-color:#edcfd2}.quote-main{display:flex;flex-wrap:wrap;align-items:center;gap:7px}.quote-main strong{font-size:14px}.quote-main>span:not(.pill){font-size:11px;color:var(--muted)}.quote-meta{display:grid;grid-template-columns:repeat(4,minmax(90px,1fr));gap:10px}.quote-meta span,.quote-values span{font-size:12px}.quote-meta b,.quote-values b{display:block;color:var(--muted);font-size:var(--t-5);text-transform:uppercase;letter-spacing:.45px;margin-bottom:4px}.quote-values{display:grid;grid-template-columns:1fr;gap:8px}.quote-values span{font-weight:700}.quote-actions{display:flex;justify-content:flex-end;gap:6px;flex-wrap:wrap}.quote-overview-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:14px}.quote-overview-card{border:1px solid var(--border);border-radius:13px;padding:16px;background:#fff}.quote-overview-card.is-deleted{background:#fff7f7}.quote-overview-top{display:flex;justify-content:space-between;gap:10px}.quote-overview-top strong,.quote-overview-top small{display:block}.quote-overview-top small{color:var(--muted);margin-top:4px}.quote-overview-card h3{margin:17px 0 4px}.quote-overview-card p{margin:0 0 15px;color:var(--muted)}.quote-overview-values{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}.quote-overview-values span{background:#f2f6f7;border-radius:9px;padding:10px}.quote-overview-values small,.quote-overview-values b{display:block}.quote-overview-values small{color:var(--muted);margin-bottom:5px}.permissions-panel{border:1px solid var(--border);border-radius:11px;padding:15px;background:#f8fafb}.permissions-panel>strong{font-size:13px}.permissions-panel p{margin:5px 0 12px}.permissions-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 14px}.permission-check{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--border);border-radius:8px;padding:9px 10px;font-weight:600}.permission-check input{width:auto;margin:0}.empty-state{text-align:center;padding:42px 20px;border:1px dashed var(--border);border-radius:12px;color:var(--muted)}.empty-state strong{display:block;color:var(--text);font-size:15px;margin-bottom:6px}
@media(max-width:950px){.quote-list-card{grid-template-columns:1fr}.quote-meta{grid-template-columns:1fr 1fr}.quote-values{grid-template-columns:1fr 1fr}.quote-actions{justify-content:flex-start}.modal-card.modal-wide,.modal-card.modal-quote-list{width:98vw;padding:22px 16px}.permissions-grid{grid-template-columns:1fr}}

/* v1.17 professional quote editor */
.quote-builder-head{position:sticky;top:-24px;z-index:5;background:#fff;padding:6px 0 14px;border-bottom:1px solid var(--line,#d9e3e8);margin-bottom:14px}
.modal-wide .modal-card{width:min(1180px,96vw);max-height:94vh}
.quote-item,.quote-resource{background:#f8fbfc;border:1px solid #d5e1e7;border-radius:14px;padding:16px;margin-bottom:12px;position:relative}
.quote-line-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.quote-line-grid .full{grid-column:1/-1}
.sticky-actions{position:sticky;bottom:-24px;background:#fff;border-top:1px solid #d9e3e8;padding:14px 0 4px;z-index:4}
textarea[name=solution_text]{min-height:240px;line-height:1.5}
@media(max-width:900px){.quote-line-grid{grid-template-columns:1fr 1fr}.modal-wide .modal-card{width:100vw;max-height:100vh;border-radius:0}.sticky-actions{bottom:0}}

.required-mark{color:#b4232f;font-weight:800}.field-error{border-color:#b4232f!important;box-shadow:0 0 0 3px rgba(180,35,47,.12)!important}.just-saved{animation:savedPulse 2.2s ease}@keyframes savedPulse{0%,100%{background:transparent}20%,75%{background:#dff5f1}}.row-actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}.modal-card input,.modal-card textarea,.modal-card select{user-select:text;-webkit-user-select:text}.modal-card{touch-action:pan-y}.deal-item{scroll-margin-top:18px}

/* v1.17.08 – formularjusteringer */
#quoteSettingsForm [name="company_address"],
#quoteSettingsForm [name="company_name"],
#quoteSettingsForm [name="company_cvr"],
#quoteSettingsForm [name="company_zipcity"],
#quoteSettingsForm [name="company_phone"],
#quoteSettingsForm [name="company_email"]{text-align:left!important}
.field-error{border-color:#bd5961!important;box-shadow:0 0 0 3px rgba(189,89,97,.12)!important}
.just-saved{animation:dealSavedPulse 2.2s ease}
@keyframes dealSavedPulse{0%,100%{background:#fff}25%,70%{background:#e7f7f3}}


/* v1.18 – kategoriadministration */
.catalog-admin-list{display:grid;gap:8px}.catalog-admin-row{display:flex;align-items:center;gap:12px;width:100%;padding:12px;border:1px solid var(--line,#d9e2e8);border-radius:10px;background:#fff;text-align:left;cursor:pointer}.catalog-admin-row i{width:12px;height:42px;border-radius:8px}.catalog-admin-row span{display:grid;gap:4px}.catalog-admin-row small{color:#6d7d88}.permissions-panel{background:#f7fafb;border:1px solid #dce6eb;border-radius:12px;padding:14px}


/* v1.19.00 – professionel tilbudsredigering */
.quote-custom-section{border:1px solid var(--border);border-radius:12px;padding:14px;margin:10px 0;background:#f9fbfc}.quote-custom-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.quote-custom-section label+label{margin-top:10px}.quote-custom-section textarea{min-height:125px}


/* v1.20.00: formularmarkering og routingstabilitet */
html,body{overscroll-behavior-x:none;max-width:100%;}
body{overflow-x:hidden;}
#app,.content,.modal,.modal-card{overscroll-behavior-x:none;}
input,textarea,select,[contenteditable="true"]{-webkit-user-select:text;user-select:text;}
input,select,[contenteditable="true"]{touch-action:manipulation;}
textarea,.modal-card{touch-action:pan-y;}
@media (pointer:coarse){.sidebar,.content{touch-action:pan-y;}}

/* v1.22 existing solution import */
.solution-upload-grid{align-items:start}.info-box{background:#eef7f8;border:1px solid #c9e5e8;border-radius:10px;padding:12px;line-height:1.5}.workflow-list{margin:0;padding-left:22px;line-height:2}.table-subline{display:block;color:var(--muted);margin-top:4px}.solution-review-modal{width:min(1320px,98vw)!important}.solution-review-toolbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:18px 0}.solution-lines{display:grid;gap:13px}.solution-line-card{border:1px solid var(--border);border-radius:13px;padding:14px;background:#f9fbfc}.solution-line-head{display:flex;align-items:center;gap:12px;margin-bottom:9px}.solution-line-head small{color:var(--muted);margin-left:auto}.solution-line-head .check-label,.remember-map{display:flex;align-items:center;gap:8px}.solution-line-head input,.remember-map input{width:auto;margin:0}.original-line{background:#fff;border-left:3px solid var(--accent);padding:9px 11px;border-radius:6px;margin-bottom:12px;color:#41535e}.solution-line-grid{display:grid;grid-template-columns:1.1fr 1.1fr 1.7fr 1fr .75fr .8fr .9fr;gap:10px;align-items:end}.solution-line-grid .wide{grid-column:auto}.remember-map{grid-column:1/-1;background:#fff;border:1px solid var(--border);border-radius:8px;padding:9px}.source-price-note{margin-top:10px;color:var(--muted);font-size:12px}.copy-solution-box{display:grid;grid-template-columns:1fr minmax(240px,360px) auto;gap:12px;align-items:center;background:#edf5f7;border:1px solid #cbdfe4;border-radius:12px;padding:14px;margin-top:18px}.copy-solution-box strong,.copy-solution-box small{display:block}.copy-solution-box small{color:var(--muted);margin-top:4px}.legacy-import summary{cursor:pointer}.legacy-import h3{margin-top:0}
@media(max-width:1050px){.solution-line-grid{grid-template-columns:1fr 1fr 1fr}.copy-solution-box{grid-template-columns:1fr}.solution-line-grid .wide{grid-column:auto}}
@media(max-width:650px){.solution-line-grid{grid-template-columns:1fr}.solution-line-head{align-items:flex-start;flex-wrap:wrap}.solution-line-head small{width:100%;margin-left:0}}

.masked-filename{filter:blur(4px);user-select:none;transition:filter .15s}.masked-filename:hover{filter:blur(6px)}
th.sortable{cursor:pointer;user-select:none;white-space:nowrap}th.sortable:after{content:'↕';opacity:.35;font-size:.85em}th.sortable[data-dir="asc"]:after{content:'↑';opacity:1}th.sortable[data-dir="desc"]:after{content:'↓';opacity:1}

/* v1.23.2 – løbende gemning og stabil åbning af salgssager */
.deal-save-toolbar{position:sticky;top:-24px;z-index:12;margin:-24px -24px 18px;padding:14px 24px;background:rgba(255,255,255,.97);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:16px}
.deal-save-toolbar strong,.deal-save-toolbar small{display:block}.deal-save-toolbar small{color:var(--muted);margin-top:3px}.deal-save-toolbar .save-error{color:var(--red)}
@media(max-width:760px){.deal-save-toolbar{top:-20px;margin:-20px -14px 16px;padding:12px 14px}}
.budget-month-card{cursor:pointer}.budget-card-actions{margin-top:14px;justify-content:flex-end}.is-deleted{opacity:.68}

/* v1.23.07 */
.deal-item-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.deal-item-head .remove-item{color:#b4232e;background:#fff1f2;border:1px solid #fecdd3;border-radius:50%;width:32px;height:32px;font-size:22px;line-height:28px;display:grid;place-items:center}.deal-item-head .remove-item:hover{background:#ffe4e6}.quote-line-grid{grid-template-columns:1.1fr 1.15fr 1.6fr .8fr .9fr .9fr!important}
@media(max-width:1050px){.quote-line-grid{grid-template-columns:1fr 1fr!important}}


/* v1.24 kontraktfornyelser og konfetti */
.renewal-card .table-subline{display:block;margin-top:3px;color:#6b7b86;font-size:12px}.renewal-setting{display:flex;align-items:center;gap:8px;font-weight:700}.renewal-setting select,.renewal-status{width:auto;min-width:135px;padding:8px 30px 8px 10px}.confetti-layer{position:fixed;inset:0;z-index:10000;pointer-events:none;overflow:hidden}.confetti-layer>i{position:absolute;left:var(--x);top:-20px;width:9px;height:16px;border-radius:2px;background:hsl(var(--h) 75% 55%);transform:rotate(var(--r));animation:confettiFall var(--t) cubic-bezier(.2,.7,.3,1) var(--d) forwards}.win-celebration{position:absolute;left:50%;top:18%;transform:translate(-50%,-20px);min-width:340px;max-width:680px;padding:22px 30px;border-radius:18px;background:rgba(255,255,255,.97);box-shadow:0 20px 60px rgba(9,34,49,.28);text-align:center;animation:winPop .35s ease-out forwards}.win-celebration strong{display:block;font-size:24px;color:#102b3b}.win-celebration span,.win-celebration small{display:block;margin-top:6px;color:#526875}@keyframes confettiFall{to{transform:translateY(110vh) rotate(calc(var(--r) + 720deg));opacity:.95}}@keyframes winPop{to{transform:translate(-50%,0)}}@media(max-width:800px){.renewal-card table{min-width:900px}.win-celebration{min-width:0;width:calc(100% - 32px)}}@media(prefers-reduced-motion:reduce){.confetti-layer{display:none}}


/* v1.24.01 – create or select deal from an existing solution */
.solution-deal-actions{display:block!important;padding:18px!important}
.solution-deal-intro{display:flex;flex-direction:column;gap:4px;margin-bottom:14px}
.solution-deal-choice{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:16px;align-items:stretch}
.solution-deal-option{border:1px solid var(--line,#d7e2e8);border-radius:14px;padding:14px;background:#fff;display:flex;flex-direction:column;gap:10px;min-width:0}
.solution-deal-option .row-actions{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center}
.solution-deal-option select,.solution-deal-option input{width:100%;min-width:0}
.solution-deal-divider{display:flex;align-items:center;justify-content:center;color:#71808a;font-weight:700}
.solution-deal-divider span{background:#eef3f5;border-radius:999px;padding:6px 9px}
@media(max-width:900px){.solution-deal-choice{grid-template-columns:1fr}.solution-deal-divider{min-height:20px}.solution-deal-option .row-actions{grid-template-columns:1fr}.solution-deal-option .btn{width:100%}}


/* v1.26.02 – sikker mobiltilpasning og produktkopiering */
.product-select,#selectAllProducts{width:18px;height:18px;margin:0;accent-color:var(--accent2)}
.select-cell{width:42px;text-align:center}.product-actions{width:90px}.btn:disabled{opacity:.48;cursor:not-allowed}
@media(max-width:760px){
  body{font-size:14px}.sidebar{width:min(86vw,310px);box-shadow:18px 0 50px rgba(0,0,0,.28)}
  .topbar{height:64px}.content{padding:78px 10px calc(18px + env(safe-area-inset-bottom))}
  .top-actions{gap:6px}.user-chip{border-left:0;padding-left:0}.user-chip>span{width:36px;height:36px}
  .toolbar{align-items:stretch}.toolbar .btn,.toolbar input,.toolbar select{max-width:none;min-height:44px}
  .product-toolbar{display:grid;grid-template-columns:1fr 1fr}.product-toolbar #productSearch,.product-toolbar #productCount{grid-column:1/-1}.product-toolbar .spacer{display:none}
  .form-actions{position:sticky;bottom:-20px;z-index:6;background:#fff;border-top:1px solid var(--border);margin:18px -14px -20px;padding:12px 14px calc(12px + env(safe-area-inset-bottom))}.form-actions .btn{min-height:44px;flex:1}
  input,select,textarea{font-size:16px;min-height:44px}.modal{padding:0;place-items:stretch}.modal-card{width:100vw;max-width:none;height:100dvh;max-height:100dvh;border-radius:0;padding:20px 14px calc(20px + env(safe-area-inset-bottom))}.modal-close{position:sticky;float:right;top:0;background:#fff;border-radius:50%;z-index:9}
  .two-col,.quick-create-grid,.deal-totals{grid-template-columns:1fr!important}.card-header{align-items:flex-start;flex-wrap:wrap}.card-header .btn{width:100%}
  .kanban{grid-auto-columns:86vw;scroll-snap-type:x mandatory}.kanban-col{scroll-snap-align:start;min-height:420px}
  .table-wrap{max-width:100%;-webkit-overflow-scrolling:touch}.table-wrap table{min-width:720px}
  .product-table-wrap{border:0;overflow:visible}.product-table{min-width:0!important}.product-table thead{display:none}.product-table,.product-table tbody,.product-table tr,.product-table td{display:block;width:100%}.product-table tr{position:relative;margin-bottom:12px;padding:12px 12px 10px;border:1px solid var(--border);border-radius:12px;background:#fff;box-shadow:0 3px 12px rgba(16,38,54,.06)}.product-table td{border:0;padding:6px 4px 6px 42%;white-space:normal;min-height:30px}.product-table td:before{content:attr(data-label);position:absolute;left:16px;width:36%;color:var(--muted);font-size:var(--t-5);font-weight:800;text-transform:uppercase;letter-spacing:.35px}.product-table .select-cell{position:absolute;right:8px;top:8px;width:auto;padding:4px;z-index:2}.product-table .select-cell:before{display:none}.product-table .product-actions{padding-left:4px;margin-top:5px}.product-table .product-actions:before{display:none}.product-table .product-actions .btn{width:100%;min-height:42px}
  .row-actions{justify-content:stretch}.row-actions .btn{flex:1;min-height:42px}.deal-item{padding:12px 10px}
}
/* v2.20.353 – typed Inventory column sorting */
.inventory-sort{appearance:none;width:100%;display:flex;align-items:center;justify-content:space-between;gap:5px;border:0;background:transparent;color:inherit;font:inherit;font-weight:inherit;text-align:left;padding:5px 0;cursor:pointer}.inventory-sort span{color:#8aa0a0;font-size:11px}.inventory-sort.active,.inventory-sort:hover,.inventory-sort:focus-visible{color:var(--c-accent-ink)} /* v2.20.637 - accent (#0E7490) paa surface-3 er 4,35:1; accent-ink er 5,89 */.inventory-sort:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media(max-width:430px){.product-toolbar{grid-template-columns:1fr}.product-toolbar>*{grid-column:1!important}.kpis{grid-template-columns:1fr}.topbar h1{max-width:190px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}

/* v1.26.03 – stabilt interaktivt salgscockpit */
.cockpit-hero{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:26px 28px;border-radius:20px;background:linear-gradient(120deg,#0e2b3d,#15556b 58%,#1ca1af);color:#fff;box-shadow:0 16px 35px rgba(14,43,61,.18);margin-bottom:16px}.cockpit-hero .eyebrow{font-size:11px;font-weight:900;letter-spacing:1.7px;opacity:.75}.cockpit-hero h2{font-size:28px;margin:6px 0 4px}.cockpit-hero p{margin:0;opacity:.82}.cockpit-goal{min-width:220px;padding:16px 18px;border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.11);border-radius:15px}.cockpit-goal small,.cockpit-goal span{display:block;opacity:.78}.cockpit-goal strong{display:block;font-size:25px;margin:5px 0}.cockpit-kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;margin-bottom:16px}.cockpit-tile{position:relative;overflow:hidden;text-align:left;border:1px solid #dce7ec;background:#fff;border-radius:15px;padding:16px;min-height:112px;cursor:pointer;box-shadow:0 6px 18px rgba(21,48,64,.06);transition:.18s}.cockpit-tile:after{content:"";position:absolute;right:-24px;top:-28px;width:78px;height:78px;border-radius:50%;background:var(--tile);opacity:.12}.cockpit-tile:hover{transform:translateY(-3px);box-shadow:0 12px 26px rgba(21,48,64,.12)}.cockpit-tile small,.cockpit-tile span{display:block}.cockpit-tile small{text-transform:uppercase;letter-spacing:.55px;font-size:var(--t-5);font-weight:900;color:#607683}.cockpit-tile strong{display:block;font-size:23px;margin:8px 0 4px;color:#142b3a}.cockpit-tile span{font-size:12px;color:#71828c}.cockpit-tile.blue{--tile:#2587be}.cockpit-tile.teal{--tile:#14a3a8}.cockpit-tile.purple{--tile:#7b61d1}.cockpit-tile.green{--tile:#2aa66f}.cockpit-tile.orange{--tile:#ee8c32}.cockpit-tile.red{--tile:#d95757}.cockpit-tile{border-top:4px solid var(--tile)}.cockpit-grid{display:grid;gap:16px;margin-bottom:16px}.cockpit-grid-2{grid-template-columns:minmax(0,1.35fr) minmax(340px,.65fr)}.cockpit-card{min-width:0}.cockpit-bars{display:grid;gap:11px}.cockpit-bars button{display:grid;grid-template-columns:minmax(115px,.7fr) minmax(150px,1.7fr) auto;gap:12px;align-items:center;width:100%;border:0;background:none;padding:3px 0;cursor:pointer;text-align:left}.cockpit-bars i{height:10px;border-radius:999px;background:#e7eef1;overflow:hidden}.cockpit-bars b{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#3497c1,#20aaa8)}.cockpit-bars strong{font-size:12px}.donut-wrap{display:flex;align-items:center;justify-content:center;gap:32px;min-height:220px}.donut{width:160px;height:160px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(#3299c5 0 calc(var(--open)/var(--total)*100%),#2eaf77 0 calc((var(--open) + var(--won))/var(--total)*100%),#d75d64 0);position:relative}.donut:before{content:"";position:absolute;inset:24px;background:#fff;border-radius:50%}.donut>div{position:relative;text-align:center}.donut strong,.donut small{display:block}.donut strong{font-size:30px}.legend{display:grid;gap:10px}.legend button{display:grid;grid-template-columns:12px 1fr auto;gap:9px;align-items:center;border:0;background:none;cursor:pointer;text-align:left}.legend i{width:10px;height:10px;border-radius:50%}.l-open{background:#3299c5}.l-won{background:#2eaf77}.l-lost{background:#d75d64}.opportunity-list,.closed-list{display:grid;gap:8px}.opportunity,.closed-list button{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:12px;align-items:center;width:100%;padding:11px 12px;border:1px solid #e2eaee;border-radius:11px;background:#fff;text-align:left;cursor:pointer}.opportunity:hover,.closed-list button:hover{background:#f7fbfc;border-color:#acd4dd}.opportunity span strong,.opportunity span small,.closed-list span strong,.closed-list span small{display:block}.opportunity span small,.closed-list span small{color:#70818b;margin-top:3px}.opportunity em,.closed-list em{font-style:normal;font-size:11px;color:#71828c}.closed-list b{padding:4px 8px;border-radius:999px;font-size:var(--t-5)}.closed-list b.won{background:#e2f7ec;color:#147a4a}.closed-list b.lost{background:#fde8e9;color:#a92f38}.month-chart{height:220px;display:flex;align-items:flex-end;gap:14px;padding:20px 8px 4px}.month-chart>div{flex:1;display:grid;grid-template-rows:1fr auto;gap:8px;height:100%;text-align:center}.month-chart i{display:flex;align-items:flex-end;justify-content:center;gap:4px;border-bottom:1px solid #dae4e8}.month-chart b{width:15px;min-height:2px;border-radius:4px 4px 0 0}.month-chart .won{background:#23a86d}.month-chart .forecast{background:#6a86d9}.month-chart span{font-size:var(--t-5);color:#6c7d87}.timeline-item{padding:10px 0;border-bottom:1px solid #edf1f3}.timeline-item:last-child{border-bottom:0}
@media(max-width:1250px){.cockpit-kpis{grid-template-columns:repeat(3,1fr)}}
@media(max-width:900px){.cockpit-grid-2{grid-template-columns:1fr}.cockpit-hero{align-items:flex-start}.cockpit-kpis{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.cockpit-hero{display:block;padding:20px}.cockpit-goal{min-width:0;margin-top:16px}.cockpit-kpis{grid-template-columns:1fr}.cockpit-bars button{grid-template-columns:1fr auto}.cockpit-bars i{grid-column:1/-1}.donut-wrap{flex-direction:column}.opportunity,.closed-list button{grid-template-columns:1fr auto}.opportunity em,.closed-list em{grid-column:1/-1}}

/* v1.26.05 – Mine sager på salgscockpittet */
.my-deals-card{margin-bottom:16px}.my-deals-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.my-deal{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 14px;align-items:center;width:100%;padding:12px 14px;border:1px solid #e0e9ed;border-radius:12px;background:#fff;text-align:left;cursor:pointer;transition:.16s}.my-deal:hover{background:#f5fbfc;border-color:#9ed0da;transform:translateY(-1px)}.my-deal span strong,.my-deal span small{display:block}.my-deal span small{margin-top:4px;color:#70818b}.my-deal b{color:#173446}.my-deal em{grid-column:1/-1;font-style:normal;font-size:11px;color:#73858f}@media(max-width:800px){.my-deals-list{grid-template-columns:1fr}}

/* v1.26.07 – WIKI */
.wiki-hero{position:relative;overflow:hidden;border-radius:20px;padding:34px;background:linear-gradient(135deg,#102a3a 0%,#174d63 55%,#2598ad 100%);color:#fff;box-shadow:0 14px 34px rgba(15,42,58,.16);margin-bottom:18px}
.wiki-hero:after{content:"?";position:absolute;right:34px;top:-42px;font-size:210px;font-weight:800;line-height:1;color:rgba(255,255,255,.07)}
.wiki-hero>div{position:relative;z-index:1;max-width:900px}.wiki-kicker{text-transform:uppercase;letter-spacing:.13em;font-size:12px;font-weight:800;color:#aee8f0}.wiki-hero h1{font-size:34px;margin:6px 0}.wiki-hero p{margin:0 0 20px;color:#d9edf2;font-size:15px}.wiki-search{display:flex;align-items:center;gap:10px;background:#fff;border-radius:12px;padding:8px 9px 8px 15px;box-shadow:0 10px 28px rgba(0,0,0,.18)}.wiki-search span{color:#5d7480;font-size:23px}.wiki-search input{border:0;outline:0;box-shadow:none;flex:1;min-width:0;font-size:16px;padding:8px;color:#132b38}.wiki-search .btn{white-space:nowrap}.wiki-hero small{display:block;margin-top:10px;color:#d3e9ee}.wiki-layout{display:grid;grid-template-columns:230px minmax(0,1fr);gap:18px;align-items:start}.wiki-toc{position:sticky;top:14px;padding:14px}.wiki-toc strong{display:block;padding:6px 8px 10px}.wiki-toc button{display:block;width:100%;border:0;background:transparent;text-align:left;padding:10px;border-radius:8px;color:var(--text);cursor:pointer}.wiki-toc button:hover{background:#edf6f8;color:#137f98}.wiki-results{display:grid;gap:14px}.wiki-article{background:#fff;border:1px solid var(--border);border-radius:14px;overflow:hidden;box-shadow:0 6px 18px rgba(20,48,61,.05)}.wiki-article-head{padding:18px 22px 14px;border-bottom:1px solid #edf1f3}.wiki-article-head span{font-size:11px;text-transform:uppercase;letter-spacing:.09em;color:var(--c-accent-ink);font-weight:800}.wiki-article-head h2{margin:4px 0 0;font-size:20px}.wiki-article-body{padding:18px 22px;line-height:1.65;color:#334b57}.wiki-article-body p:first-child{margin-top:0}.wiki-article-body ol,.wiki-article-body ul{padding-left:22px}.wiki-article-body li{margin:5px 0}.wiki-article-body h4{margin:16px 0 4px;color:#183541}.wiki-tip,.wiki-warning{margin-top:14px;border-radius:10px;padding:12px 14px}.wiki-tip{background:#eaf8f4;border-left:4px solid #2c9c7a}.wiki-warning{background:#fff6df;border-left:4px solid #d59a22}
@media(max-width:760px){.wiki-hero{padding:24px 18px;border-radius:14px}.wiki-hero h1{font-size:27px}.wiki-hero:after{display:none}.wiki-search{flex-wrap:wrap}.wiki-search input{width:calc(100% - 40px)}.wiki-search .btn{width:100%}.wiki-layout{grid-template-columns:1fr}.wiki-toc{position:static;display:flex;gap:6px;overflow-x:auto;padding:10px}.wiki-toc strong{display:none}.wiki-toc button{width:auto;white-space:nowrap;background:#f3f7f8}.wiki-article-head,.wiki-article-body{padding-left:16px;padding-right:16px}}
/* v1.26.8 – rettighedsstyret cockpit */
.dashboard-tabs{display:flex;gap:6px;padding:6px;background:#e7edf1;border:1px solid var(--border);border-radius:12px;margin-bottom:12px;flex-wrap:wrap}.dashboard-tab{border:0;background:transparent;padding:9px 15px;border-radius:8px;color:var(--muted);font-weight:600}.dashboard-tab.active{background:#fff;color:var(--text);box-shadow:0 2px 8px rgba(16,38,54,.08)}.dashboard-toolbar{display:flex;gap:10px;margin-bottom:14px;justify-content:flex-end}.dashboard-toolbar label{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:12px}.dashboard-toolbar select{height:34px;border:1px solid var(--border);border-radius:8px;background:#fff;padding:0 9px}.dashboard-hero{background:linear-gradient(125deg,#122536,#1b5368);color:#fff;border-radius:15px;padding:20px 22px;display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;box-shadow:var(--shadow)}.dashboard-hero.management{background:linear-gradient(125deg,#18364a,#27677d)}.dashboard-hero.modular{background:linear-gradient(125deg,#26394a,#4777a8)}.dashboard-hero span{font-size:var(--t-5);letter-spacing:1.6px;color:#8fd3da;font-weight:700}.dashboard-hero h2{margin:5px 0 4px;font-size:22px}.dashboard-hero p{margin:0;color:#c7d8df}.dashboard-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}.dashboard-kpi{border:1px solid var(--border);background:#fff;border-radius:14px;text-align:left;padding:15px 16px;box-shadow:var(--shadow);transition:.15s}.dashboard-kpi:hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(16,38,54,.12)}.dashboard-kpi small,.dashboard-kpi span{display:block;color:var(--muted)}.dashboard-kpi strong{display:block;font-size:23px;margin:6px 0}.dashboard-kpi.teal{border-top:4px solid #35a9b4}.dashboard-kpi.blue{border-top:4px solid #3d8fb6}.dashboard-kpi.green{border-top:4px solid #2e9b78}.dashboard-kpi.red{border-top:4px solid #bd5961}.dashboard-kpi.purple{border-top:4px solid #8667ae}.dashboard-grid{display:grid;gap:14px;margin-bottom:14px}.dashboard-grid.two{grid-template-columns:1.2fr 1fr}.action-row,.deal-mini{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;border:0;border-bottom:1px solid var(--border);background:#fff;padding:11px 0;text-align:left}.action-row:last-child,.deal-mini:last-child{border-bottom:0}.action-row:hover,.deal-mini:hover{background:#f7fafb;margin:0 -10px;padding-left:10px;padding-right:10px}.action-row span,.deal-mini span{min-width:0}.action-row strong,.deal-mini strong{display:block}.action-row small,.deal-mini small{display:block;color:var(--muted);margin-top:3px}.action-row em{font-style:normal;font-size:11px;padding:4px 9px;border-radius:20px}.action-row.critical em{background:#fbecee;color:#96343d}.action-row.warning em{background:#fbf1e2;color:#8a6115}.goal-row{display:grid;grid-template-columns:1fr auto;gap:7px;margin-bottom:14px}.goal-row div strong,.goal-row div span{display:block}.goal-row div span{color:var(--muted);font-size:11px}.goal-row em{font-style:normal;font-weight:700}.goal-row>i{grid-column:1/-1;height:8px;background:#edf2f4;border-radius:5px;overflow:hidden}.goal-row>i b{display:block;height:100%;background:linear-gradient(90deg,#3d8fb6,#35a9b4);border-radius:5px}.funnel-row{display:grid;grid-template-columns:115px 1fr 105px;gap:10px;align-items:center;margin:8px 0}.funnel-row>i{height:20px;background:#edf2f4;border-radius:5px;overflow:hidden}.funnel-row>i b{display:block;height:100%;background:#3d8fb6}.funnel-row>strong{text-align:right;font-size:12px}.trend-chart{display:flex;align-items:flex-end;height:210px;gap:8px;padding-top:10px}.trend-chart>div{flex:1;text-align:center;height:100%;display:flex;flex-direction:column;justify-content:flex-end}.trend-chart i{display:flex;align-items:flex-end;justify-content:center;gap:2px;height:175px}.trend-chart b{width:9px;min-height:2px;border-radius:3px 3px 0 0}.trend-chart b.won{background:#2e9b78}.trend-chart b.forecast{background:#3d8fb6}.trend-chart span{font-size:var(--t-5);color:var(--muted);margin-top:5px}.chart-legend{display:flex;gap:15px;color:var(--muted);font-size:11px}.chart-legend i{display:inline-block;width:10px;height:10px;margin-right:5px;border-radius:2px}.chart-legend i.won{background:#2e9b78}.chart-legend i.forecast{background:#3d8fb6}.mix-row{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--border)}.mix-row:last-child{border-bottom:0}.capacity-summary{text-align:center;padding:24px}.capacity-summary strong{font-size:18px}.capacity-summary p{color:var(--muted)}.modular-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.dashboard-tile{background:#fff;border:1px solid var(--border);border-radius:14px;padding:15px;box-shadow:var(--shadow);min-height:150px}.dashboard-tile header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.dashboard-tile h3{margin:0;font-size:13px;color:var(--muted)}.dashboard-tile .tile-big{display:block;font-size:26px;margin-bottom:6px}.modular-grid.editing .dashboard-tile{border-style:dashed;cursor:grab}.tile-remove{border:1px solid var(--border);background:#fff;color:#bd5961;border-radius:50%;width:25px;height:25px}.tile-catalog{margin-top:14px}.tile-catalog .btn{margin:5px}.dashboard-tile .goal-row{margin-bottom:0}@media(max-width:1100px){.dashboard-kpis{grid-template-columns:repeat(2,1fr)}.dashboard-grid.two{grid-template-columns:1fr}.modular-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:700px){.dashboard-tabs{display:grid;grid-template-columns:1fr}.dashboard-toolbar{justify-content:stretch}.dashboard-toolbar label{flex:1;display:grid}.dashboard-toolbar select{width:100%}.dashboard-hero{align-items:flex-start;gap:15px;flex-direction:column}.dashboard-kpis,.modular-grid{grid-template-columns:1fr}.funnel-row{grid-template-columns:90px 1fr}.funnel-row>strong{grid-column:2;text-align:left}}


/* v1.26.09 – teknisk kapacitet og integrationer */
.technical-capacity-hero,.integration-intro{display:flex;align-items:center;justify-content:space-between;gap:24px;background:linear-gradient(135deg,#102b3d,#17475a);color:#fff;margin-bottom:16px}.technical-capacity-hero p{color:#c8d9e1;max-width:820px}
/* v2.20.637 - `.integration-intro` er ogsaa `.card`, og design B goer kort hvide.
   Siden v2.20.523 har overskriften «Integrationer» derfor staaet HVID PAA HVID
   (1,0:1) og afsnittet under den i #c8d9e1 paa hvid (1,45:1) - det tomme felt
   oeverst paa siden. Teksten foelger nu kortet. */
.integration-intro{background:var(--c-surface);color:var(--c-ink)}
.integration-intro h2{color:var(--c-ink)}
.integration-intro p{color:var(--c-ink-3);max-width:820px}.capacity-rule{min-width:150px;text-align:center;background:#ffffff14;border:1px solid #ffffff24;border-radius:12px;padding:16px}.capacity-rule strong{display:block;font-size:30px}.capacity-rule span{font-size:12px;color:#c8d9e1}.clickable{cursor:pointer}.clickable:hover{background:#f3f9fa}.integration-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:16px}.integration-card{display:flex;flex-direction:column;gap:16px}.integration-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.integration-head>div{display:flex;align-items:center;gap:12px}.integration-icon{width:48px;height:48px;border-radius:12px;background:#dff1f3;color:#177984;display:grid;place-items:center;font-weight:800}.integration-head h2{margin:0;font-size:17px}.integration-head p{margin:3px 0 0;color:var(--muted)}.integration-card dl{display:grid;grid-template-columns:110px 1fr;gap:9px 12px;margin:0}.integration-card dt{color:var(--muted)}.integration-card dd{margin:0}.integration-card .btn{align-self:flex-start}.integration-message{font-size:12px;color:var(--muted);min-height:16px}
@media(max-width:700px){.technical-capacity-hero,.integration-intro{align-items:flex-start;flex-direction:column}.capacity-rule{width:100%}.integration-grid{grid-template-columns:1fr}.integration-card dl{grid-template-columns:1fr}.integration-card dt{font-weight:600;margin-top:6px}}

/* v1.26.12 – fleksibel CRM-import */
.import-wizard-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.import-sheet{margin:12px 0;box-shadow:none}.import-sheet .card-header{align-items:flex-end;flex-wrap:wrap}.import-sheet .card-header label{min-width:180px}.import-sheet .import-mapping{margin-top:12px}.import-row-picker{margin-top:14px}.import-row-picker summary{cursor:pointer;font-weight:600}.info-box.success{border-color:#b7dfd0;background:#edf8f4}@media(max-width:760px){.import-sheet .card-header{align-items:stretch}.import-sheet .card-header label{min-width:100%;width:100%}.import-sheet .card-header select{width:100%}}


/* v1.26.14 – webCRM one-time migration */
.webcrm-migration-card{margin-top:16px}.webcrm-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.webcrm-head h2{margin:4px 0}.webcrm-head p{margin:0;color:var(--muted);max-width:850px}.webcrm-form{margin:18px 0 12px}.webcrm-form label{font-weight:600;font-size:12px}.webcrm-form input{display:block;width:100%;margin-top:6px;height:40px;border:1px solid var(--border);border-radius:9px;padding:0 12px}.webcrm-types{display:flex;gap:18px;flex-wrap:wrap;padding:12px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.webcrm-types label,.webcrm-commit label{display:flex;gap:7px;align-items:center}.webcrm-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:14px 0}.webcrm-summary>div{background:#f5f8fa;border:1px solid var(--border);border-radius:10px;padding:12px}.webcrm-summary strong{display:block;font-size:22px}.webcrm-summary span,.webcrm-summary small{display:block}.webcrm-summary small{color:var(--muted);margin-top:3px}.webcrm-commit{display:flex;justify-content:space-between;align-items:center;gap:12px;background:#e7f4f5;border:1px solid #bcdfe2;border-radius:10px;padding:12px;margin-top:12px}.btn.danger{color:#a63740;border-color:#efc7ca;background:#fff}.btn.danger:hover{background:#fff4f4}@media(max-width:800px){.webcrm-summary{grid-template-columns:repeat(2,1fr)}.webcrm-head,.webcrm-commit{align-items:stretch;flex-direction:column}}


/* v1.26.18: tvungen 2-faktor for administratorer */
.two-factor-setup{text-align:center;margin:10px 0 14px;padding:12px;border:1px solid var(--border);border-radius:12px;background:#f7fafb}
.two-factor-setup img{display:block;max-width:220px;width:100%;margin:0 auto 10px;border-radius:8px}
.two-factor-setup code{font-size:13px;word-break:break-all;user-select:all}
.recovery-codes{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:14px 0;padding:12px;border:1px solid var(--border);border-radius:12px;background:#f7fafb}
.recovery-codes code{padding:7px;border-radius:7px;background:#fff;border:1px solid var(--border);text-align:center;font-weight:700;user-select:all}
@media(max-width:520px){.recovery-codes{grid-template-columns:1fr}}

/* v1.26.19: compact contact list */
.contacts-card{padding:14px}.contacts-card .toolbar{margin-bottom:10px}.contacts-table th,.contacts-table td{padding:8px 10px}.contacts-table td{height:42px}.contacts-table .btn.small{padding:5px 8px}.contacts-table small{line-height:1.15}.contacts-table-wrap{border-radius:10px}


/* v1.27.00 rettighedsmatrix og Slettet */
.rights-matrix{padding:16px}.rights-head,.permission-group-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.permission-group{border-top:1px solid var(--border);padding-top:14px;margin-top:14px}.permission-group-head label{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px}.permission-check{display:flex!important;align-items:flex-start!important;gap:9px;padding:10px!important}.permission-check input{width:auto!important;margin-top:2px}.permission-check span{display:block}.permission-check b{display:block;font-size:12px}.permission-check small{display:block;color:var(--muted);font-weight:400;line-height:1.3;margin-top:2px}.rights-summary{margin-top:14px;padding:10px 12px;border-radius:9px;background:#eef5f7;display:flex;justify-content:space-between;gap:12px;font-size:12px}.rights-summary span{color:var(--muted)}
@media(max-width:760px){.rights-head,.permission-group-head,.rights-summary{align-items:flex-start;flex-direction:column}.permissions-grid{grid-template-columns:1fr!important}}


/* v1.27.02: kontaktpersoner samme kompakte rækkehøjde som kunder */
@media (min-width:761px){
  .contacts-card{padding:14px}
  .contacts-table th,.contacts-table td{padding:6px 10px!important;line-height:1.2!important;height:auto!important;min-height:0!important;vertical-align:middle}
  .contacts-table tr{height:auto!important;min-height:0!important}
  .contacts-table .btn.small{height:30px!important;min-height:30px!important;padding:4px 9px!important;line-height:1!important}
  .contacts-table small{margin-top:2px!important;line-height:1.1!important}
}

/* v1.27.3 – cockpit efter godkendt prototype */
.dashboard-updated{font-size:11px;color:var(--c-ink-3);margin-right:auto}.dashboard-toolbar{justify-content:flex-end}.dashboard-toolbar label{display:flex;align-items:center;gap:6px}.dashboard-kpi{min-height:112px;text-align:left}.dashboard-kpi .dash-spark{height:22px;margin-top:6px}.dash-spark{display:block;width:100%}.mb{margin-bottom:14px}.pill{font-size:11px;padding:3px 10px;border-radius:20px}.pill.red{background:#fbecee;color:#96343d}.action-row{grid-template-columns:auto minmax(0,1fr) auto auto}.action-row>em{font-style:normal;font-size:11px;padding:3px 9px;border-radius:20px;background:#eef2f4;color:#5b6b75}.action-row.critical>em{background:#fbecee;color:#96343d}.action-row.warning>em{background:#fbf1e2;color:#8a6115}.action-row>b{font-size:12px}.funnel-row{width:100%;border:0;background:transparent;cursor:pointer}.funnel-meta{margin:0 0 8px 114px;font-size:11px;color:var(--c-ink-3)}.proto-trend{display:grid;grid-template-columns:repeat(12,minmax(24px,1fr));gap:8px;height:270px;align-items:end}.proto-trend.compact{height:220px}.proto-trend>div{height:100%;display:grid;grid-template-rows:1fr auto;gap:6px;text-align:center}.proto-trend i{position:relative;display:flex;align-items:flex-end;justify-content:center;gap:3px;height:100%;border-bottom:1px solid #dfe6ea}.proto-trend b.won,.proto-trend b.forecast{width:8px;min-height:0;border-radius:4px 4px 0 0}.proto-trend b.won{background:#3d8fb6}.proto-trend b.forecast{background:#2e9b78}.proto-trend b.budget{position:absolute;left:0;right:0;height:0;border-top:2px dashed #8fa3ae}.proto-trend span{font-size:var(--t-5);color:var(--c-ink-3)}.chart-legend{display:flex;gap:16px;margin-top:10px;font-size:11px;color:var(--c-ink-3)}.chart-legend span{display:flex;align-items:center;gap:5px}.chart-legend i{width:10px;height:10px;border-radius:2px}.chart-legend i.won{background:#3d8fb6}.chart-legend i.forecast{background:#2e9b78}.chart-legend i.budget{height:0;border-top:2px dashed #8fa3ae;border-radius:0}.mix-bar{display:flex;height:25px;border-radius:7px;overflow:hidden;margin-bottom:12px}.mix-bar i{display:block}.mix-dot{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:7px}.mix-c0{background:#3d8fb6}.mix-c1{background:#d5763a}.mix-c2{background:#2e9b78}.mix-c3{background:#d59b42}.mix-c4{background:#a86ba3}.mix-c5{background:#35a9b4}.capacity-heat{display:grid;gap:5px}.heat-head,.heat-row{display:grid;grid-template-columns:1.5fr repeat(3,.75fr) .6fr;gap:8px;align-items:center;padding:9px 11px;border-radius:8px}.heat-head{font-size:var(--t-5);text-transform:uppercase;color:var(--c-ink-3);background:#f4f7f8}.heat-row{border:0;background:#fff;text-align:left}.heat-row:hover{background:#f7fafb}.heat-row em{font-style:normal;text-align:center;padding:5px;border-radius:7px;font-size:11px}.heat-row em.green{background:#e6f4ef;color:#1d6f56}.heat-row em.amber{background:#fbf1e2;color:#8a6115}.heat-row em.red{background:#fbecee;color:#96343d}
/* Kontaktpersoner skal have samme kompakte rækkehøjde som Kunder */
.contacts-table th,.contacts-table td{padding:7px 10px!important;height:38px!important;min-height:0!important;line-height:1.15!important;vertical-align:middle!important}.contacts-table tr{height:38px!important;min-height:0!important}.contacts-table .btn.small{height:28px!important;min-height:28px!important;padding:3px 8px!important}
@media(max-width:800px){.proto-trend{grid-template-columns:repeat(12,42px);overflow-x:auto}.heat-head,.heat-row{grid-template-columns:1.3fr .8fr .8fr .8fr}.heat-head span:last-child,.heat-row em{display:none}.dashboard-updated{display:none}.contacts-table tr,.contacts-table td{height:auto!important}}
/* v1.27.9 – interaktiv månedsgraf */
.trend-wrap{position:relative}.trend-month{border:0;background:transparent;padding:0;margin:0;height:100%;display:grid;grid-template-rows:1fr auto;gap:6px;text-align:center;min-width:0;color:inherit}.trend-month>i{position:relative;display:flex;align-items:flex-end;justify-content:center;gap:3px;height:100%;border-bottom:1px solid #dfe6ea}.trend-month:hover>i,.trend-month:focus-visible>i{background:#f2f8fa;box-shadow:inset 0 0 0 1px #b8dce1;border-radius:7px 7px 0 0}.trend-month:focus-visible{outline:2px solid #35a9b4;outline-offset:2px;border-radius:7px}.trend-month>span{font-size:var(--t-5);color:var(--c-ink-3)}.trend-tooltip{position:absolute;z-index:15;min-width:240px;background:#122536;color:#fff;border-radius:10px;padding:11px 13px;box-shadow:0 12px 30px rgba(12,30,42,.28);pointer-events:none;opacity:0;transform:translateY(5px);transition:opacity .12s,transform .12s}.trend-tooltip.show{opacity:1;transform:translateY(0)}.trend-tooltip strong{display:block;margin-bottom:7px;text-transform:capitalize}.trend-tooltip span{display:grid;grid-template-columns:10px 1fr auto;align-items:center;gap:7px;padding:3px 0;font-size:12px;color:#d9e5ea}.trend-tooltip span i{width:9px;height:9px;border-radius:2px}.trend-tooltip span i.won{background:#3d8fb6}.trend-tooltip span i.forecast{background:#2e9b78}.trend-tooltip span i.budget{height:0;border-top:2px dashed #c2cfd6;border-radius:0}.trend-tooltip span b{color:#fff;font-variant-numeric:tabular-nums}.trend-tooltip em{display:block;margin-top:7px;padding-top:7px;border-top:1px solid rgba(255,255,255,.16);font-size:11px;font-style:normal}.trend-tooltip em.positive{color:#8ee0bd}.trend-tooltip em.negative{color:#ffb1b6}.chart-legend small{margin-left:auto;color:var(--c-ink-3)}
@media(max-width:800px){.trend-tooltip{position:fixed;left:12px!important;right:12px;top:auto!important;bottom:14px;min-width:0}.chart-legend small{display:none}}

/* v1.27.13 – kontraktskabeloner uden vandret scroll */
.modal-card.modal-contract-templates{width:min(1040px,96vw)}
.contract-template-table-wrap{overflow-x:hidden;overflow-y:auto;max-height:58vh}
.contract-template-table{width:100%;min-width:0;table-layout:fixed}
.contract-template-table .ct-type{width:9%}
.contract-template-table .ct-title{width:31%}
.contract-template-table .ct-version{width:10%}
.contract-template-table .ct-file{width:29%}
.contract-template-table .ct-status{width:11%}
.contract-template-table .ct-action{width:10%}
.contract-template-table th,.contract-template-table td{white-space:normal;overflow-wrap:anywhere;word-break:break-word;vertical-align:middle}
.contract-template-table td:nth-child(3),.contract-template-table td:nth-child(5),.contract-template-table td:nth-child(6){white-space:nowrap}
.contract-template-file{font-size:12px;color:#425762}
@media(max-width:760px){
  .modal-card.modal-contract-templates{width:100vw}
  .contract-template-table-wrap{border:0;overflow:visible;max-height:none}
  .contract-template-table,.contract-template-table tbody,.contract-template-table tr,.contract-template-table td{display:block;width:100%}
  .contract-template-table colgroup,.contract-template-table thead{display:none}
  .contract-template-table tr{margin-bottom:10px;padding:10px 12px;border:1px solid var(--border);border-radius:11px;background:#fff}
  .contract-template-table td{position:relative;border:0;padding:5px 4px 5px 36%;min-height:28px;white-space:normal!important}
  .contract-template-table td:before{content:attr(data-label);position:absolute;left:4px;width:30%;color:var(--muted);font-size:var(--t-5);font-weight:800;text-transform:uppercase}
}
.contract-package-status{display:flex;justify-content:space-between;gap:18px;padding:12px 14px;border:1px solid var(--border);border-radius:12px;margin:12px 0;background:#f7fafc}.contract-package-status.is-complete{background:#eefaf5;border-color:#bfe7d5}.contract-package-status.is-incomplete{background:#fff8e8;border-color:#ead49a}.contract-template-tools{display:flex;gap:12px;align-items:end;flex-wrap:wrap;margin:14px 0}.contract-template-tools label{min-width:180px}.tag-list{display:flex;gap:8px;flex-wrap:wrap}.contract-template-table th,.contract-template-table td{vertical-align:top}@media(max-width:760px){.contract-package-status{flex-direction:column}.contract-template-tools>*{width:100%}}


/* v1.27.16 – overskuelig kontraktskabelonoversigt */
.modal-card.modal-contract-templates{width:min(1180px,97vw)}
.contract-template-toolbar{display:grid;grid-template-columns:minmax(280px,1fr) 190px auto;gap:10px;align-items:center;margin:14px 0}
.contract-template-toolbar input,.contract-template-toolbar select{margin:0}
.contract-template-toolbar #contractTemplateCount{text-align:right;white-space:nowrap}
.contract-template-table{table-layout:fixed}
.contract-template-table .ct-document{width:14%}.contract-template-table .ct-title{width:19%}.contract-template-table .ct-version{width:8%}.contract-template-table .ct-type{width:14%}.contract-template-table .ct-file{width:23%}.contract-template-table .ct-status{width:9%}.contract-template-table .ct-action{width:13%}
.contract-template-table th,.contract-template-table td{padding:10px 12px;vertical-align:middle!important}
.contract-template-table td:nth-child(3),.contract-template-table td:nth-child(6){white-space:nowrap}
.contract-template-table td:nth-child(5){white-space:normal}
.contract-template-table .contract-template-status,.contract-template-table .contract-filetype{display:inline-flex;align-items:center;justify-content:center;max-width:100%;white-space:nowrap}
.contract-template-table .row-actions{justify-content:flex-end;flex-wrap:wrap;gap:6px}
.contract-template-table th.sortable{cursor:pointer;user-select:none;padding-right:25px;position:relative}
.contract-template-table th.sortable:hover{background:#eef5f7}
.contract-template-table th.sortable:after{content:'↕';position:absolute;right:9px;color:#91a0a8;font-size:11px}
.contract-template-table th.sortable.sort-active:after{content:'↑';color:#16799b}
.contract-template-table th.sortable.sort-active[data-sort-direction="desc"]:after{content:'↓'}
@media(max-width:760px){.contract-template-toolbar{grid-template-columns:1fr}.contract-template-toolbar #contractTemplateCount{text-align:left}.contract-template-table .row-actions{justify-content:flex-start}}

/* v1.30.0 – kontraktarbejdsrum */
.contract-workspace-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 18px}.contract-workspace-tabs .active{background:#2f91b8;color:#fff;border-color:#2f91b8}.contract-tab-panel.hidden{display:none}.contract-section-editor{border:1px solid #d9e3e9;border-radius:12px;padding:14px;margin:10px 0;background:#f8fafb}.contract-section-head{display:flex;align-items:center;gap:16px;margin-bottom:9px}.contract-section-head .check{margin-left:auto;order:2}.contract-section-editor textarea{width:100%;min-height:120px;resize:vertical}.workspace-help{background:#edf8f5;border:1px solid #b9e4d7;border-radius:10px;padding:12px;margin-bottom:12px}.modal-card:has(.contract-workspace-tabs){width:min(1180px,96vw);max-height:94vh;overflow:auto}
@media(max-width:700px){.contract-workspace-tabs{display:grid;grid-template-columns:1fr 1fr}.contract-section-head{align-items:flex-start;flex-direction:column}.contract-section-head .check{margin-left:0;order:0}}

/* v1.32.0 dokumentarbejdsrum */
.modal-contract-workspace{width:min(1500px,96vw);max-width:1500px}.contract-workspace-tabs{overflow-x:auto;flex-wrap:nowrap}.document-overrides{display:grid;gap:10px}.document-override-row{display:grid;grid-template-columns:minmax(240px,1fr) 170px auto;gap:8px;padding:12px;border:1px solid #d8e1e8;border-radius:10px}.document-override-row textarea{grid-column:1/3}.document-override-row .remove-override{grid-row:1/3;grid-column:3}.contract-pdf-preview{min-height:560px;margin-top:12px;border:1px solid #d8e1e8;border-radius:12px;background:#f6f9fb;overflow:hidden}.contract-pdf-preview.large{min-height:720px}.contract-pdf-preview iframe{width:100%;height:72vh;border:0;background:#fff}.contract-version-list{display:grid;gap:8px}.contract-version-list article{display:grid;grid-template-columns:110px 1fr 120px;gap:12px;padding:10px;border:1px solid #d8e1e8;border-radius:10px}@media(max-width:800px){.document-override-row{grid-template-columns:1fr}.document-override-row textarea,.document-override-row .remove-override{grid-column:auto;grid-row:auto}.contract-version-list article{grid-template-columns:1fr}}

/* v1.32.0 dokumentarbejdsrum */
.modal-contract-workspace{width:min(1500px,96vw);max-width:1500px}.contract-workspace-tabs{overflow-x:auto;flex-wrap:nowrap}.document-overrides{display:grid;gap:10px}.document-override-row{display:grid;grid-template-columns:minmax(240px,1fr) 170px auto;gap:8px;padding:12px;border:1px solid #d8e1e8;border-radius:10px}.document-override-row textarea{grid-column:1/3}.document-override-row .remove-override{grid-row:1/3;grid-column:3}.contract-pdf-preview{min-height:560px;margin-top:12px;border:1px solid #d8e1e8;border-radius:12px;background:#f6f9fb;overflow:hidden}.contract-pdf-preview.large{min-height:720px}.contract-pdf-preview iframe{width:100%;height:72vh;border:0;background:#fff}.contract-version-list{display:grid;gap:8px}.contract-version-list article{display:grid;grid-template-columns:110px 1fr 120px;gap:12px;padding:10px;border:1px solid #d8e1e8;border-radius:10px}@media(max-width:800px){.document-override-row{grid-template-columns:1fr}.document-override-row textarea,.document-override-row .remove-override{grid-column:auto;grid-row:auto}.contract-version-list article{grid-template-columns:1fr}}

/* v1.32.1 download feedback */
.btn.is-downloading,.btn:disabled{opacity:.55;cursor:wait;filter:grayscale(.35)}

/* v1.32.4 – mobiloptimering af tilbud og kontrakter */
@media(max-width:760px){
  .modal{padding:0;place-items:stretch}
  .modal-card,
  .modal-card.modal-wide,
  .modal-card.modal-quote-list,
  .modal-contract-workspace{
    width:100vw!important;max-width:none!important;height:100dvh;max-height:100dvh;
    border-radius:0!important;padding:14px 12px 96px!important;overflow-x:hidden!important;
  }
  .modal-close{position:sticky;float:right;top:4px;right:4px;background:#fff;border:1px solid var(--border);box-shadow:0 2px 8px rgba(16,38,54,.08)}
  .quote-builder-head,.quote-list-head{position:sticky;top:-14px;z-index:8;margin:-2px -2px 12px;padding:8px 44px 12px 2px;background:#fff;display:block}
  .quote-builder-head h2,.quote-list-head h2{font-size:18px;line-height:1.25}
  .quote-builder-head p,.quote-list-head p{font-size:11px;line-height:1.4;margin-top:5px}

  .contract-workspace-tabs{
    position:sticky;top:54px;z-index:7;display:grid!important;grid-template-columns:1fr 1fr;
    gap:6px;overflow:visible!important;background:#fff;padding:8px 0 10px;margin:0 0 12px;
    border-bottom:1px solid var(--border)
  }
  .contract-workspace-tabs .btn{width:100%;min-width:0;white-space:normal;line-height:1.15;padding:9px 6px;font-size:11px}
  .contract-workspace-tabs .btn[data-contract-tab="combined"],
  .contract-workspace-tabs .btn[data-contract-tab="documents"]{grid-column:auto}

  .modal-contract-workspace #contractForm>.form-actions,
  .quote-builder-head~form>.form-actions.sticky-actions{
    position:fixed!important;left:0;right:0;bottom:0;z-index:120;background:#fff;
    border-top:1px solid var(--border);box-shadow:0 -8px 24px rgba(16,38,54,.12);
    padding:9px 10px calc(9px + env(safe-area-inset-bottom));margin:0;display:grid;
    grid-template-columns:1fr 1fr;gap:7px;max-height:42vh;overflow-y:auto
  }
  .modal-contract-workspace #contractForm>.form-actions .btn,
  .modal-contract-workspace #contractForm>.form-actions select,
  .quote-builder-head~form>.form-actions.sticky-actions .btn{width:100%;margin:0;min-height:42px;white-space:normal}
  .modal-contract-workspace #contractForm>.form-actions select{grid-column:1/-1}
  .modal-contract-workspace #contractForm>.form-actions #openCombinedContract{grid-column:1/-1}

  .contract-tab-panel .form-grid,.quote-line-grid{grid-template-columns:1fr!important}
  .contract-section-editor{padding:11px}
  .contract-section-head{gap:8px}
  .workspace-help{font-size:12px;line-height:1.45}
  .document-override-row{padding:10px}
  .contract-docs .service-admin-card{display:grid;grid-template-columns:1fr;gap:10px}
  .contract-docs .row-actions{justify-content:stretch}
  .contract-docs .row-actions .btn{flex:1}
  .inline-upload{display:grid!important;grid-template-columns:1fr!important;gap:8px}
  .inline-upload>*{width:100%}
  .contract-pdf-preview,.contract-pdf-preview.large{min-height:420px}
  .contract-pdf-preview iframe{height:62vh}

  .contract-price-table-wrap{overflow:visible;border:0}
  .contract-price-table,.contract-price-table tbody,.contract-price-table tr,.contract-price-table td{display:block;width:100%}
  .contract-price-table thead{display:none}
  .contract-price-table tr{border:1px solid var(--border);border-radius:11px;padding:8px 10px;margin-bottom:10px;background:#fff}
  .contract-price-table td{display:grid;grid-template-columns:88px minmax(0,1fr);gap:8px;padding:7px 0;border-bottom:1px solid #edf1f3;white-space:normal;overflow-wrap:anywhere}
  .contract-price-table td:last-child{border-bottom:0}
  .contract-price-table td:before{content:attr(data-label);color:var(--muted);font-size:var(--t-5);font-weight:800;text-transform:uppercase;letter-spacing:.35px}
  .contract-price-table select{margin:0;min-width:0}

  .quote-item,.quote-resource,.quote-custom-section{padding:12px;margin-bottom:10px}
  .quote-item .remove-line,.quote-resource .remove-resource{position:static!important;width:100%;margin-top:8px}
  .section-title.split{align-items:stretch;flex-direction:column;gap:8px}
  .section-title.split .btn{width:100%}
  .deal-totals{grid-template-columns:1fr!important}
  .service-choice-grid{grid-template-columns:1fr!important}
  .quote-overview-grid{grid-template-columns:1fr}
  .quote-overview-card{padding:13px}
  .quote-overview-top{align-items:flex-start;flex-direction:column}
  .quote-overview-values{grid-template-columns:1fr}
  .quote-actions,.row-actions{justify-content:stretch}
  .quote-actions .btn,.row-actions .btn{flex:1;min-width:120px}
  .quote-list{max-height:none;overflow:visible}
  .quote-list-card{padding:12px;gap:10px}
  .quote-meta,.quote-values{grid-template-columns:1fr 1fr}
  .table-wrap:not(.contract-price-table-wrap){max-width:100%;-webkit-overflow-scrolling:touch}
}

@media(max-width:430px){
  .contract-workspace-tabs{grid-template-columns:1fr 1fr;top:50px}
  .contract-workspace-tabs .btn{font-size:var(--t-5);padding:8px 4px}
  .modal-contract-workspace #contractForm>.form-actions,
  .quote-builder-head~form>.form-actions.sticky-actions{grid-template-columns:1fr 1fr}
  .quote-meta,.quote-values{grid-template-columns:1fr}
}

/* v1.32.5 – fjern resterende vandret scroll i tilbud og kontrakter på mobil */
@media(max-width:760px){
  html,body{width:100%;max-width:100%;overflow-x:hidden!important}
  .app,.content,.modal,.modal-card,.modal-contract-workspace{min-width:0!important;max-width:100%!important}
  .content{width:100%!important;overflow-x:hidden!important}
  .modal-card *,.modal-contract-workspace *{min-width:0;max-width:100%}
  .modal-card img,.modal-contract-workspace img,.modal-card svg,.modal-contract-workspace svg{max-width:100%;height:auto}
  .modal-card form,.modal-contract-workspace form,.contract-tab-panel,.quote-builder,.quote-form,.quote-list{width:100%;max-width:100%;overflow-x:hidden}
  .modal-card .form-grid,.modal-card .form-grid.compact,.modal-card .quote-line-grid,.modal-card .deal-totals,.modal-card .quick-create-grid{grid-template-columns:minmax(0,1fr)!important;width:100%}
  .modal-card input,.modal-card select,.modal-card textarea,.modal-card button{max-width:100%;min-width:0}
  .modal-card .toolbar,.modal-card .card-header,.modal-card .section-title.split,.modal-card .deal-item-head,.modal-card .quote-overview-top{max-width:100%;flex-wrap:wrap}
  .modal-card .toolbar>*{max-width:100%;flex:1 1 100%}
  .modal-card .table-wrap{width:100%;max-width:100%;overflow-x:auto!important}
  .modal-card table{max-width:100%}
  .modal-card th,.modal-card td{white-space:normal;overflow-wrap:anywhere;word-break:normal}
  .quote-item,.quote-resource,.quote-custom-section,.deal-item,.contract-section-editor,.document-override-row,.service-admin-card{width:100%;max-width:100%;overflow:hidden}
  .quote-actions,.row-actions,.form-actions{max-width:100%;flex-wrap:wrap}
  .quote-actions .btn,.row-actions .btn,.form-actions .btn{min-width:0!important}
  .contract-pdf-preview,.contract-pdf-preview iframe{width:100%;max-width:100%}
  .contract-workspace-tabs{width:100%;max-width:100%}
}


/* v1.32.6 – reel mobilvisning af tilbuds- og kontraktoversigter */
@media(max-width:760px){
  .topbar{
    height:auto;min-height:116px;padding:10px 12px;align-content:flex-start;flex-wrap:wrap;gap:8px
  }
  .topbar>div:first-of-type{min-width:0;flex:1}
  .top-actions{order:3;width:100%;margin-left:0;gap:8px;display:flex!important}
  .top-actions .global-search{display:block!important;flex:1 1 auto;min-width:0;position:relative}
  .top-actions .global-search input{display:block!important;width:100%;max-width:none;margin:0;height:42px}
  .top-actions .user-chip{display:flex!important;flex:0 0 auto;border-left:0;padding-left:0}
  .top-actions .user-chip div,.top-actions #globalAdd{display:none!important}
  .content{padding-top:132px!important}

  .mobile-record-list{padding:12px!important;overflow:hidden}
  .mobile-record-list>.toolbar{display:grid!important;grid-template-columns:1fr auto;align-items:center;gap:9px;margin-bottom:12px}
  .mobile-record-list>.toolbar input{grid-column:1/-1;width:100%;max-width:none!important;margin:0}
  .mobile-record-list>.toolbar .spacer{display:none}
  .mobile-record-list>.toolbar .quote-filter{grid-column:1/-1}
  .mobile-record-list>.toolbar strong{justify-self:end;white-space:nowrap}
  .mobile-record-list>.toolbar .btn{width:auto;min-width:0}

  .mobile-record-list .table-wrap{overflow:visible!important;border:0!important;border-radius:0!important}
  .mobile-record-list table,.mobile-record-list tbody{display:block!important;width:100%!important;min-width:0!important}
  .mobile-record-list thead{display:none!important}
  .mobile-record-list tr{display:block!important;width:100%!important;min-width:0!important;margin:0 0 12px;padding:12px;border:1px solid var(--border);border-radius:12px;background:#fff;box-shadow:0 3px 12px rgba(16,38,54,.05)}
  .mobile-record-list tr:last-child{margin-bottom:0}
  .mobile-record-list td{display:grid!important;grid-template-columns:112px minmax(0,1fr);align-items:start;gap:10px;width:100%!important;min-width:0!important;padding:8px 0!important;border-bottom:1px solid #edf1f3!important;white-space:normal!important;overflow:visible!important;text-align:left!important}
  .mobile-record-list td:last-child{border-bottom:0!important;padding-bottom:0!important}
  .mobile-record-list td::before{content:attr(data-label);font-size:var(--t-5);line-height:1.35;font-weight:800;letter-spacing:.45px;text-transform:uppercase;color:var(--muted)}
  .mobile-record-list td>*{min-width:0;max-width:100%;overflow-wrap:break-word;word-break:normal}
  .mobile-record-list td strong{font-size:14px;line-height:1.3}
  .mobile-record-list td small{display:block;margin-top:3px;color:var(--muted)}
  .mobile-record-list td[data-label="Handling"] .row-actions{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:100%}
  .mobile-record-list td[data-label="Handling"] .btn{width:100%;min-height:42px;margin:0}
  .mobile-record-list .empty{display:block!important;padding:22px!important;text-align:center}
  .mobile-record-list .empty::before{display:none}
}
@media(max-width:390px){
  .mobile-record-list td{grid-template-columns:96px minmax(0,1fr);gap:8px}
}

/* v1.33.0 – Rich editor til Bilag 1 */
.rich-toolbar{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:8px;border:1px solid #cbd8e1;border-bottom:0;border-radius:10px 10px 0 0;background:#f5f8fa;position:sticky;top:0;z-index:2}
.rich-toolbar button,.rich-toolbar select{min-height:34px;border:1px solid #c7d4dc;background:#fff;border-radius:7px;padding:5px 9px;font:inherit;color:#173246}
.rich-toolbar button:hover{background:#eaf4f8}
.rich-editor{min-height:180px;border:1px solid #cbd8e1;border-radius:0 0 10px 10px;background:#fff;padding:14px;line-height:1.45;overflow:auto;outline:none}
.rich-editor:focus{border-color:#168fd0;box-shadow:0 0 0 2px rgba(22,143,208,.15)}
.rich-editor:empty:before{content:attr(data-placeholder);color:#8a9aa5}
.rich-editor img{display:block;max-width:100%;height:auto;margin:10px auto;border-radius:4px}
.rich-editor table{width:100%;border-collapse:collapse;margin:10px 0}
.rich-editor td,.rich-editor th{border:1px solid #9bb7c9;padding:6px;vertical-align:top}
.rich-editor h2,.rich-editor h3{color:#315f8d;margin:12px 0 6px}
@media(max-width:700px){.rich-toolbar{position:static}.rich-toolbar button,.rich-toolbar select{flex:1 1 auto}.rich-editor{min-height:220px}}
.rich-image-toolbar{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:7px 8px;border:1px solid #cbd8e1;border-bottom:0;background:#eef5f8}
.rich-image-toolbar.hidden{display:none}
.rich-image-toolbar span{font-weight:700;color:#496273;margin-right:4px}
.rich-image-toolbar button{min-height:32px;border:1px solid #c7d4dc;background:#fff;border-radius:7px;padding:4px 8px;font:inherit;color:#173246}
.rich-image-toolbar [data-image-delete]{color:#a92f36;border-color:#e6b6ba}
.rich-editor img.is-selected{outline:3px solid #168fd0;outline-offset:3px}
.rich-editor img[data-width="25"]{width:25%}
.rich-editor img[data-width="50"]{width:50%}
.rich-editor img[data-width="75"]{width:75%}
.rich-editor img[data-width="100"]{width:100%}
.rich-editor img[data-align="left"]{margin-left:0;margin-right:auto}
.rich-editor img[data-align="center"]{margin-left:auto;margin-right:auto}
.rich-editor img[data-align="right"]{margin-left:auto;margin-right:0}

/* v1.34.0 – operational intelligence */
.operational-hero{display:flex;justify-content:space-between;align-items:center;background:linear-gradient(135deg,#12364a,#1d6274);color:#fff}.operational-hero h2{color:#fff}.handover-grid,.capacity-visual-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:16px}.handover-card.blocked{border-top:4px solid #c6535d}.handover-card.in_progress{border-top:4px solid #d49b34}.handover-card.completed{border-top:4px solid #319675}.handover-values{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:12px 0}.handover-values span{background:#f4f7f9;border-radius:10px;padding:10px}.handover-values small,.handover-values strong{display:block}.handover-progress{height:8px;background:#e7edf0;border-radius:99px;overflow:hidden}.handover-progress i{display:block;height:100%;background:#319675}.handover-checklist{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:14px 0}.handover-checklist label{display:flex;gap:8px;align-items:flex-start}.form-grid.compact{grid-template-columns:repeat(2,minmax(0,1fr))}.health-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}.customer-health-grid{display:grid;gap:8px}.health-card{display:grid;grid-template-columns:64px minmax(0,1fr) 170px auto;align-items:center;gap:14px;width:100%;border:1px solid #dce5e9;background:#fff;padding:12px;text-align:left;border-radius:12px}.health-card:hover{border-color:#2f91b5}.health-score{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;font-weight:800;color:#fff}.health-score.green{background:#319675}.health-score.amber{background:#d49b34}.health-score.red{background:#c6535d}.health-main strong,.health-main small,.health-main em,.health-money small,.health-money strong{display:block}.health-main em{font-style:normal;color:#6d7d86;margin-top:4px}.health-money{text-align:right}.capacity-resource-card{cursor:pointer}.capacity-bars{height:230px;display:grid;grid-template-columns:repeat(6,1fr);gap:8px;align-items:end;padding:12px 0}.capacity-month{text-align:center;display:grid;grid-template-rows:1fr auto auto;height:100%;gap:4px}.capacity-stack{height:170px;background:#eef3f5;border-radius:7px 7px 2px 2px;display:flex;flex-direction:column-reverse;overflow:hidden;justify-content:flex-start}.capacity-stack i{display:block}.capacity-stack .won{background:#2f8fa0}.capacity-stack .pipeline{background:#9ecbd7}.capacity-month strong{font-size:.9rem}.capacity-month small{text-transform:capitalize}.capacity-limit{display:flex;align-items:center;gap:8px}.capacity-limit input{max-width:130px}.sticky-actions{position:sticky;bottom:0;background:rgba(245,248,249,.94);padding:12px;display:flex;justify-content:flex-end;z-index:5}
@media(max-width:760px){.operational-hero{align-items:flex-start;gap:14px}.handover-grid,.capacity-visual-grid{grid-template-columns:1fr}.handover-values,.health-summary{grid-template-columns:1fr 1fr}.handover-checklist,.form-grid.compact{grid-template-columns:1fr}.health-card{grid-template-columns:52px minmax(0,1fr);}.health-money,.health-card>.pill{grid-column:2;text-align:left}.capacity-bars{height:190px;overflow-x:auto}.capacity-stack{height:130px;min-width:42px}}

/* v1.34.5 - Stram og ensartet leverancecheckliste */
.handover-checklist{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px 14px;
  margin:16px 0 20px;
  align-items:stretch;
}
.handover-check-item{
  display:grid!important;
  grid-template-columns:24px minmax(0,1fr);
  align-items:center!important;
  gap:10px!important;
  min-height:52px;
  padding:10px 12px;
  margin:0;
  border:1px solid #dbe5e9;
  border-radius:10px;
  background:#f8fafb;
  cursor:pointer;
  line-height:1.25;
  transition:border-color .15s ease,background .15s ease,box-shadow .15s ease;
}
.handover-check-item:hover{
  border-color:#9dc8d5;
  background:#f2f8fa;
}
.handover-check-item:focus-within{
  box-shadow:0 0 0 3px rgba(47,145,181,.16);
  border-color:#2f91b5;
}
.handover-check-item input{
  position:absolute;
  opacity:0;
  pointer-events:none;
}
.handover-check-box{
  width:22px;
  height:22px;
  border:2px solid #92a3ab;
  border-radius:6px;
  background:#fff;
  display:grid;
  place-items:center;
  flex:0 0 auto;
}
.handover-check-item input:checked + .handover-check-box{
  border-color:#319675;
  background:#319675;
}
.handover-check-item input:checked + .handover-check-box::after{
  content:'✓';
  color:#fff;
  font-size:15px;
  line-height:1;
  font-weight:800;
}
.handover-check-text{
  display:block;
  min-width:0;
  font-weight:650;
  color:#40525d;
  overflow-wrap:anywhere;
}
.handover-check-item.is-done{
  border-color:#b9ddcf;
  background:#eef8f4;
}
.handover-check-item.is-done .handover-check-text{
  color:#2e7059;
}
.handover-card .form-grid.compact{
  padding-top:18px;
  margin-top:2px;
  border-top:1px solid #e2eaed;
}
@media(max-width:760px){
  .handover-checklist{grid-template-columns:1fr;gap:9px}
  .handover-check-item{min-height:48px}
}

/* v1.34.6 – kompakt, prioriteret kapacitetscockpit */
.compact-hero{padding:20px 24px}.capacity-summary-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-bottom:14px}.capacity-summary-card{background:#fff;border:1px solid var(--border);border-radius:13px;padding:14px;box-shadow:var(--shadow)}.capacity-summary-card small,.capacity-summary-card span{display:block;color:var(--muted)}.capacity-summary-card strong{display:block;font-size:24px;margin:4px 0}.capacity-summary-card.critical{border-top:4px solid #c6535d}.capacity-summary-card.warning{border-top:4px solid #d49b34}.capacity-toolbar{display:flex;gap:12px;align-items:end;flex-wrap:wrap;margin-bottom:14px}.capacity-toolbar label{display:grid;gap:5px;font-size:12px;color:var(--muted)}.capacity-toolbar select{min-width:155px}.capacity-toolbar .capacity-toggle{display:flex;align-items:center;gap:7px;height:40px;color:var(--text)}.capacity-toolbar .capacity-toggle input{width:auto}.capacity-toolbar .btn{margin-left:auto}.capacity-family-list{display:grid;gap:14px}.capacity-family{padding:0;overflow:hidden}.capacity-family-head{display:flex;align-items:center;justify-content:space-between;padding:15px 18px;background:#f6f9fa;border-bottom:1px solid var(--border)}.capacity-family-head h2{margin:0;font-size:17px}.capacity-family-head span{color:var(--muted);font-size:12px}.capacity-resource-list{display:grid}.capacity-compact-row{display:grid;grid-template-columns:minmax(190px,1.45fr) minmax(115px,.8fr) minmax(115px,.8fr) minmax(150px,1.05fr) minmax(115px,.8fr) 85px 92px;gap:14px;align-items:center;width:100%;padding:13px 18px;border:0;border-bottom:1px solid var(--border);background:#fff;text-align:left;cursor:pointer}.capacity-compact-row:last-child{border-bottom:0}.capacity-compact-row:hover{background:#f6fafb}.capacity-compact-row.critical{box-shadow:inset 4px 0 #c6535d}.capacity-compact-row.warning{box-shadow:inset 4px 0 #d49b34}.capacity-resource-name strong,.capacity-resource-name small,.capacity-current small,.capacity-current strong,.capacity-change small,.capacity-change strong,.capacity-limit-display small,.capacity-limit-display strong{display:block}.capacity-resource-name small,.capacity-current small,.capacity-change small,.capacity-limit-display small{color:var(--muted);font-size:11px}.capacity-change .up{color:#a66a17}.capacity-change .down{color:#23795e}.capacity-mini-chart{display:flex;align-items:flex-end;gap:4px;height:38px;padding:3px 0;border-bottom:1px solid #dce5e8}.capacity-mini-chart i{display:block;flex:1;min-width:5px;max-width:18px;background:#62aabd;border-radius:3px 3px 0 0}.capacity-status{text-align:center}.capacity-open{font-size:12px;font-weight:700;color:#287f9f;text-align:right}.capacity-limit-modal[hidden]{display:none}.capacity-limit-modal{display:grid;place-items:center;position:fixed;inset:0;background:rgba(13,31,43,.55);z-index:120}.capacity-limit-dialog{width:min(760px,calc(100vw - 30px));max-height:86vh;display:flex;flex-direction:column}.capacity-limit-search{margin:12px 0}.capacity-limit-list{overflow:auto;border:1px solid var(--border);border-radius:10px}.capacity-limit-list label{display:grid;grid-template-columns:minmax(0,1fr) 150px 70px;gap:12px;align-items:center;padding:10px 12px;border-bottom:1px solid var(--border)}.capacity-limit-list label:last-child{border-bottom:0}.capacity-limit-list strong,.capacity-limit-list small{display:block}.capacity-limit-list small,.capacity-limit-list em{color:var(--muted);font-style:normal}.capacity-limit-list input{width:100%}
@media(max-width:1150px){.capacity-summary-grid{grid-template-columns:repeat(3,1fr)}.capacity-compact-row{grid-template-columns:minmax(170px,1.4fr) 110px 110px minmax(130px,1fr) 100px 75px}.capacity-open{display:none}}
@media(max-width:760px){.capacity-summary-grid{grid-template-columns:1fr 1fr}.capacity-toolbar{display:grid;grid-template-columns:1fr 1fr}.capacity-toolbar label,.capacity-toolbar select,.capacity-toolbar .btn{width:100%;min-width:0;margin:0}.capacity-toolbar .capacity-toggle{height:auto}.capacity-family-head{align-items:flex-start}.capacity-compact-row{grid-template-columns:1fr auto;padding:14px;gap:8px 12px}.capacity-resource-name{grid-column:1}.capacity-status{grid-column:2;grid-row:1}.capacity-current,.capacity-change,.capacity-limit-display{display:grid;grid-template-columns:auto auto;justify-content:start;gap:7px;align-items:baseline}.capacity-current{grid-column:1}.capacity-change{grid-column:1}.capacity-limit-display{grid-column:1}.capacity-mini-chart{grid-column:1/3;width:100%;height:34px}.capacity-open{display:block;grid-column:2;grid-row:3/5;align-self:end}.capacity-limit-list label{grid-template-columns:1fr 110px}.capacity-limit-list em{display:none}}

/* v1.34.9 backup downloads */
.backup-download-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:16px}.backup-download-grid .service-admin-card{align-items:center}.backup-download-grid small{display:block;margin-top:5px;line-height:1.45}.backup-download-grid .row-actions{flex:0 0 auto}@media(max-width:760px){.backup-download-grid{grid-template-columns:1fr}.backup-download-grid .service-admin-card{align-items:flex-start}.backup-download-grid .row-actions{width:100%}.backup-download-grid .btn{width:100%}}

/* v1.34.10 – brugerbestemte login- og adgangskodekrav */
.login-remember{display:flex!important;align-items:flex-start!important;gap:10px;margin:4px 0 14px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:#f7fafb;cursor:pointer}
.login-remember input{width:auto!important;margin:3px 0 0!important}
.login-remember span{display:grid;gap:2px}.login-remember small{color:var(--muted);font-weight:400}

/* v1.35.0 – Infrastrukturdiagram */
.modal-infrastructure{width:min(1540px,97vw);max-width:1540px;height:min(94vh,1100px);overflow:auto}
.infra-editor-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:14px}.infra-editor-head h2{margin:0 0 4px}.infra-editor-head p{margin:0;color:var(--muted)}
/* v2.20.510 - «naar jeg aabner redigér HLD skal jeg baade scrolle lodret og vandret».

   Aarsagen var to spalter: preview-ruden tog ~60 % af bredden, saa
   kontrolspalten blev ~600 px - og servertabellen inde i den kræver 1220 px.
   Dertil et max-height paa 430 px, saa man scrollede i en kasse inde i en kasse
   inde i en dialog.

   Preview-ruden er fjernet. Den rigtige tegning staar paa siden bagved i fuld
   størrelse og gentegnes, naar der gemmes - et sammenklemt miniaturebillede
   kostede 60 % af bredden uden at oplyse noget, den ikke allerede kunne se. */
.infra-layout{display:block}.infra-controls{min-width:0}
.infra-flyttet510{margin:0 0 14px;font-size:12.5px;line-height:1.5}
.infra-meta{grid-template-columns:repeat(2,minmax(0,1fr))}.infra-mapping{margin:14px 0;border:1px solid var(--line);border-radius:12px;background:#f8fbfc;padding:12px}.infra-mapping summary{cursor:pointer;font-weight:800;color:var(--navy);padding:2px 0 8px}.infra-storage-map{display:grid;grid-template-columns:1fr 1.4fr 1.4fr auto;gap:8px;align-items:center;margin:8px 0}.infra-storage-map input,.infra-storage-map select{min-width:0}
/* Én lodret scroll - dialogens egen. Ikke to. */
.infra-server-table table{min-width:1220px}.infra-server-table td{vertical-align:middle}.infra-server-table input,.infra-server-table select{width:100%;min-width:95px;padding:8px}.infra-server-table td:nth-child(1){min-width:130px}.infra-server-table td:nth-child(2){min-width:210px}.infra-server-table td:nth-child(3){min-width:165px}.infra-server-table td:nth-child(8){min-width:250px;white-space:normal}.infra-list{display:grid;gap:10px}.infra-upload-label{cursor:pointer}.infra-quote-block{margin:20px 0;padding:16px;border:1px solid var(--line);border-radius:12px;background:#f7fbfc}.infra-quote-block label{display:grid;gap:6px;font-weight:700}.infra-contract-box{margin:0 0 18px}.infra-contract-preview{display:block;width:100%;max-height:520px;object-fit:contain;background:#eef4f7;border:1px solid var(--line);border-radius:10px;padding:8px}.empty.mini{padding:14px;border:1px dashed var(--line);border-radius:10px}
@media(max-width:1000px){.infra-meta{grid-template-columns:1fr}.infra-storage-map{grid-template-columns:1fr}.infra-editor-head{flex-direction:column}.modal-infrastructure{width:97vw}}

/* v1.35.2 – synlig infrastruktursektion på nye salgssager */
.infrastructure-deal-section{margin-top:22px}.infrastructure-deal-section .btn:disabled{cursor:not-allowed;opacity:.6}.infrastructure-deal-help{margin-top:-2px;margin-bottom:14px}

/* v1.35.3 – synligt infrastrukturdiagram og flytbare salgslinjer */
.infrastructure-deal-wrap{margin-top:22px;padding-top:2px;border-top:1px solid var(--border)}
.infrastructure-deal-wrap .section-title{border-top:0;margin-top:10px;padding-top:0}
.deal-item-title{display:flex;align-items:center;gap:10px;min-width:0}
.deal-drag-handle{display:grid;place-items:center;width:34px;height:34px;padding:0;border:1px solid #cbd8de;border-radius:8px;background:#fff;color:#647985;font-size:20px;line-height:1;cursor:grab;user-select:none}
.deal-drag-handle:hover{background:#edf6f8;border-color:#8fc4cf;color:#1d778b}
.deal-drag-handle:active{cursor:grabbing}
.deal-item.deal-item-dragging{opacity:.55;box-shadow:0 12px 28px rgba(16,38,54,.16);border-color:#35a9b4}
#dealItems{min-height:20px}
@media(max-width:760px){.deal-drag-handle{width:40px;height:40px;touch-action:none}}

/* v1.36.0 – PostgreSQL + Update Center */
.update-center-hero{border-top:4px solid var(--accent2)}
.update-status-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:14px 0}
.update-status-grid>div{padding:14px;border:1px solid var(--border);border-radius:12px;background:#f7fafb}
.update-status-grid small,.update-status-grid strong{display:block}.update-status-grid small{color:var(--muted);margin-bottom:5px}.update-status-grid strong{font-size:18px}
.update-validation-flow{border:1px solid #d8e7ec;background:#f5fafb;border-radius:12px;padding:12px 16px;margin:10px 0 16px}.update-validation-flow ol{margin:0;padding-left:22px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 22px}.update-validation-flow li{color:#405761}
.release-drop{display:block;border:2px dashed #b8cbd4;border-radius:14px;padding:18px;background:#fbfcfd}.release-drop input{margin-top:10px}
.update-progress{margin:14px 0 10px;border:1px solid #d5e4da;background:#f5fbf7;border-radius:14px;padding:12px 14px}.update-progress-track{height:14px;background:#e7eef0;border-radius:999px;overflow:hidden}.update-progress-fill{height:100%;width:0;background:linear-gradient(90deg,#3cb371,#2e9b78);border-radius:999px;transition:width .45s ease}.update-progress-meta{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-top:10px}.update-progress.active .update-progress-fill{box-shadow:0 0 0 1px rgba(46,155,120,.08)}.update-progress.done{border-color:#7cc8a0;background:#eefaf2}.update-progress.done .update-progress-fill{background:linear-gradient(90deg,#45c26d,#2e9b78)}.update-progress.error{border-color:#e3c6c6;background:#fff7f7}.update-progress.error .update-progress-fill{background:linear-gradient(90deg,#d18a8a,#b94e4e)}
.release-result{display:grid;grid-template-columns:minmax(180px,.8fr) minmax(280px,1.4fr) auto;gap:16px;align-items:center;border:1px solid var(--border);border-radius:13px;padding:15px;margin-top:12px;background:#fff}.release-result.valid{border-left:4px solid #2e9b78}.release-result h3{margin:6px 0 3px}.release-result p{margin:0 0 5px;color:var(--muted)}.release-result small{overflow-wrap:anywhere}.release-check-badges{display:flex;gap:6px;flex-wrap:wrap}.release-check-badges span{font-size:var(--t-5);padding:5px 7px;border-radius:999px;background:#e9f6f1;color:#216c55;font-weight:700}.release-result details{grid-column:1/-1}.release-result pre{max-height:320px;overflow:auto;white-space:pre-wrap;background:#122536;color:#dce9ee;padding:12px;border-radius:10px;font-size:11px}.update-restarting{text-align:center;padding:70px 20px}.update-restarting h2{margin-top:18px}.update-spinner{width:46px;height:46px;border:4px solid #d9e5e9;border-top-color:var(--accent2);border-radius:50%;margin:auto;animation:updateSpin .8s linear infinite}@keyframes updateSpin{to{transform:rotate(360deg)}}
@media(max-width:900px){.update-status-grid{grid-template-columns:1fr 1fr}.release-result{grid-template-columns:1fr}.release-result .row-actions{justify-content:flex-start}.update-validation-flow ol{grid-template-columns:1fr}}
@media(max-width:520px){.update-status-grid{grid-template-columns:1fr}}

/* v1.37.0 – kundens servermiljø på kundeprofilen */
.customer-infrastructure-section{margin-top:22px;padding-top:18px;border-top:1px solid var(--border)}
.customer-infrastructure-section .section-title{margin-top:0;padding-top:0;border-top:0}
.customer-infra-summary{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border:1px solid var(--border);border-radius:12px;background:#f5fafb;margin:8px 0 18px}
.customer-infra-summary>div{display:grid;gap:4px}.customer-infra-summary span{color:var(--muted);font-size:13px}
@media(max-width:700px){.customer-infra-summary{align-items:flex-start;flex-direction:column}.customer-infrastructure-section .section-title.split{align-items:flex-start;gap:10px}.customer-infrastructure-section .section-title.split .btn{width:100%}}

/* v1.37.4 – kundens servermiljø */
.customer-infrastructure-section{margin:22px 0;padding:18px;border:1px solid #cfe1e8;border-radius:16px;background:#f7fbfc}.customer-infrastructure-section .section-title{margin-top:0}.customer-infrastructure-section .row-actions{display:flex;gap:8px;flex-wrap:wrap}.customer-infra-summary{margin-top:12px;padding:12px 14px;border:1px solid #dbe7eb;border-radius:12px;background:#fff;display:flex;justify-content:space-between;gap:16px;align-items:center}.customer-infra-summary>div{display:flex;flex-direction:column;gap:3px}.customer-infra-summary span{color:var(--muted)}@media(max-width:680px){.customer-infrastructure-section .section-title.split{align-items:flex-start}.customer-infrastructure-section .row-actions{width:100%}.customer-infrastructure-section .row-actions .btn,.customer-infrastructure-section .row-actions label.btn{flex:1}.customer-infra-summary{align-items:flex-start;flex-direction:column}}

/* v1.38.0 – HLD / kundeinfrastruktur */
.hld-customer-card,.customer-infrastructure-section{margin:22px 0;padding:18px 20px;border:1px solid #b9d9e6;border-radius:16px;background:linear-gradient(180deg,#f7fcfe,#eef8fb)}
.customer-infrastructure-section .section-title{margin:0 0 8px;padding:0;border:0}.customer-infrastructure-section .row-actions{flex-wrap:wrap}.customer-infrastructure-section p{max-width:900px}
.hld-connections{display:grid;gap:12px;margin:10px 0 22px}.hld-connection-row{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;align-items:end;padding:14px;border:1px solid #dce6ee;border-radius:14px;background:linear-gradient(180deg,#fbfdfe 0%,#f6fafc 100%);box-shadow:0 1px 0 rgba(13,50,104,.03)}.hld-connection-row label{font-size:11px;font-weight:700;color:var(--muted)}.hld-connection-row input,.hld-connection-row select{margin-top:5px}.hld-connection-row .hld-conn-wide{grid-column:span 2}.hld-check{display:flex!important;flex-direction:column;align-items:center;justify-content:flex-end;gap:6px}.hld-check input,.hld-check-cell input{width:auto}.hld-server-table input,.hld-server-table select{min-width:92px}.hld-server-table td:nth-child(1) input{min-width:135px}.hld-server-table td:nth-child(2) input{min-width:125px}.hld-server-table td:nth-child(8) input,.hld-server-table td:nth-child(9) input{min-width:190px}.hld-connectivity-head{margin-top:22px}
@media(max-width:1200px){.hld-connection-row{grid-template-columns:repeat(3,minmax(0,1fr))}.hld-connection-row .hld-conn-wide{grid-column:span 2}.hld-connection-row .hld-check{align-items:flex-start}}
@media(max-width:700px){.hld-connection-row{grid-template-columns:1fr}.hld-connection-row .hld-conn-wide{grid-column:span 1}.customer-infrastructure-section .row-actions{display:grid;grid-template-columns:1fr}.customer-infrastructure-section .btn{width:100%}}

/* v1.38.1 HLD upload status */
.hld-upload-progress,.hld-upload-error{display:flex;flex-direction:column;gap:6px}.hld-upload-progress span,.hld-upload-error span{color:var(--muted)}.hld-mini-progress{height:8px;border-radius:999px;background:#dfeaec;overflow:hidden;margin-top:5px}.hld-mini-progress i{display:block;width:45%;height:100%;border-radius:999px;background:#2e9b78;animation:hldUploadMove 1.1s ease-in-out infinite alternate}.hld-upload-error{color:#9c2f35}.hld-upload-error span{color:#8c4649}@keyframes hldUploadMove{from{transform:translateX(-25%)}to{transform:translateX(145%)}}

/* v1.39.0 – HLD i tilbud og kontrakt */
.hld-quote-section{background:linear-gradient(180deg,#f7fbfc 0%,#eef8fa 100%);border-color:#b9dce5}
.hld-quote-grid{display:grid;grid-template-columns:minmax(220px,.7fr) minmax(260px,1fr);gap:14px;align-items:end}
.hld-quote-grid .full{grid-column:1/-1}
.hld-include-toggle{display:flex!important;grid-auto-flow:column;justify-content:start;align-items:center;gap:10px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:#fff}
.hld-include-toggle input{width:auto;margin:0}
.hld-quote-preview{display:grid;grid-template-columns:minmax(0,1fr) 180px;gap:14px;align-items:center;border:1px solid var(--line);border-radius:12px;background:#fff;padding:12px}
.hld-quote-preview img{width:100%;max-height:300px;object-fit:contain;border-radius:8px;background:#fff}
.hld-quote-preview img.is-disabled{opacity:.25}
.hld-quote-preview div{display:grid;gap:4px}.hld-quote-preview small{color:var(--muted)}
.contract-hld-snapshot{margin:12px 0 14px;padding:14px;border:1px solid #badce4;border-radius:12px;background:#f4fbfc}
.contract-hld-snapshot-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px}
.contract-hld-snapshot-head>div{display:grid;gap:3px}.contract-hld-snapshot-head small{color:var(--muted)}
.contract-hld-actions{display:flex;align-items:end;gap:10px;flex-wrap:wrap;margin-bottom:12px}.contract-hld-actions label{min-width:260px;display:grid;gap:5px;font-weight:700}
.contract-hld-preview-wrap{background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px;margin-bottom:10px}.contract-hld-preview-wrap img{display:block;width:100%;max-height:420px;object-fit:contain}
@media(max-width:760px){.hld-quote-grid{grid-template-columns:1fr}.hld-quote-preview{grid-template-columns:1fr}.contract-hld-actions{display:grid;grid-template-columns:1fr}.contract-hld-actions label{min-width:0}}

/* v1.39.1 – HLD visual polish */
.modal-card.modal-infrastructure .modal-close{position:absolute!important;top:6px!important;right:6px!important;width:40px;height:40px;border:1px solid #dfe6ea;background:#fff;border-radius:50%;display:grid;place-items:center;font-size:26px;line-height:1;z-index:60;box-shadow:0 3px 12px rgba(16,38,54,.10)}
.modal-card.modal-infrastructure .infra-editor-head{padding-right:56px}
.modal-card.modal-infrastructure .modal-close:hover{background:#f3f7f9}

/* v1.40.2 – fleksibel HLD-import og manuelle overrides */
.hld-import-analysis{margin:18px 0;padding:14px 16px;border:1px solid #bcded0;border-radius:13px;background:#f5fbf8}.hld-import-analysis.needs-review{border-color:#e7d4a6;background:#fffaf0}.hld-analysis-badges,.hld-analysis-fields{display:flex;gap:7px;flex-wrap:wrap;margin:8px 0}.hld-analysis-badges span{padding:5px 8px;border-radius:999px;background:#e7f1f4;font-size:11px;font-weight:700;color:var(--navy)}.hld-analysis-fields span{padding:5px 8px;border-radius:8px;font-size:11px;font-weight:700}.hld-analysis-fields .ok{background:#e8f7ef;color:#216c55}.hld-analysis-fields .warn{background:#fff0d9;color:#936019}.hld-import-analysis ul{margin:8px 0 0 18px;color:#805c1b}
.hld-manual-panel{margin:18px 0 22px;padding:16px;border:1px solid #cfe0e6;border-radius:14px;background:#f8fbfc}.hld-inline-check{display:flex!important;align-items:center;gap:8px;margin:8px 0 12px;font-weight:700}.hld-inline-check input{width:auto;margin:0}.hld-manual-platform-table table{min-width:1080px}.hld-manual-platform-table input{min-width:100px;width:100%;padding:8px}.hld-manual-platform-table td:nth-child(1),.hld-manual-platform-table td:nth-child(2){min-width:150px}.hld-manual-platform-table td:nth-child(3){min-width:220px}.hld-manual-platform-table td:nth-child(4),.hld-manual-platform-table td:nth-child(5),.hld-manual-platform-table td:nth-child(6){min-width:95px}.hld-capacity-table{max-width:720px}.hld-capacity-table input{width:100%;padding:8px}
@media(max-width:760px){.hld-manual-panel{padding:12px}.hld-analysis-badges,.hld-analysis-fields{align-items:flex-start}.hld-capacity-table{max-width:none}}
/* v1.40.3 – IOPS pr. disk */
.hld-iops-requirements{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:10px 0 4px;font-size:12px}.hld-iops-requirements span{background:#fff;border:1px solid #cfe0ea;border-radius:999px;padding:4px 8px}.hld-iops-requirements em{color:#607080}

/* v1.40.4 – redigerbare IOPS- og OS-profiler */
.hld-server-table .hld-iops-selects{display:flex;flex-direction:column;gap:6px;min-width:190px}
.hld-server-table .hld-iops-selects label{display:grid;grid-template-columns:minmax(86px,1fr) minmax(108px,auto);gap:6px;align-items:center;margin:0}
.hld-server-table .hld-iops-selects label>span{font-size:var(--t-5);line-height:1.15;color:#607080;white-space:normal}
.hld-server-table .hld-iops-selects select,.hld-server-table td>select[data-k="operating_system"]{min-width:145px;width:100%;padding:7px 8px;font-size:11px}
.hld-server-table th:nth-child(7),.hld-server-table td:nth-child(7){min-width:210px}
.hld-server-table th:nth-child(8),.hld-server-table td:nth-child(8){min-width:180px}

/* v1.40.9 – tydelig og personlig fejring af vundne salgssager */
.confetti-layer>i{width:var(--s,9px);height:calc(var(--s,9px) * 1.65)}
.win-celebration{top:16%;min-width:380px;padding:26px 34px;border:1px solid rgba(47,157,120,.22);box-shadow:0 24px 80px rgba(9,34,49,.32)}
.win-trophy{font-size:46px;line-height:1;margin-bottom:4px;filter:drop-shadow(0 5px 9px rgba(9,34,49,.16))}
.win-kicker{font-size:11px!important;letter-spacing:.18em;font-weight:800;color:#2f9d78!important;margin-top:0!important}
.win-celebration>strong{font-size:28px;margin-top:5px}
.win-message{font-size:17px!important;font-weight:700;color:#2f5368!important}
.win-deal{margin-top:10px!important;font-size:14px!important}
.win-values{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-top:12px}
.win-value{margin-top:0!important;padding:7px 11px;border-radius:999px;background:#eef7f3;color:#244f40!important}
.win-value strong{color:#173e31}
.confetti-layer.reduced-motion .win-celebration{animation:none;transform:translate(-50%,0)}
@media(max-width:800px){.win-celebration{min-width:0;width:calc(100% - 28px);padding:22px 18px}.win-celebration>strong{font-size:24px}.win-trophy{font-size:40px}}
@media(prefers-reduced-motion:reduce){.confetti-layer.reduced-motion{display:block}.confetti-layer.reduced-motion>i{display:none}}

/* v1.40.13 – moderne auditlog og revisionsoplevelse */
.audit-shell{display:flex;flex-direction:column;gap:14px}
.audit-hero{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:24px 26px;border-radius:18px;background:linear-gradient(135deg,#102f45,#174c62 58%,#167884);color:#fff;box-shadow:0 18px 45px rgba(14,45,64,.16)}
.audit-hero h2{margin:2px 0 7px;font-size:26px;color:#fff}.audit-hero p{margin:0;max-width:820px;color:rgba(255,255,255,.78);line-height:1.5}.audit-eyebrow{display:block;font-size:var(--t-5);font-weight:900;letter-spacing:.17em;color:#8ee0dc;margin-bottom:5px}.audit-report-cta{background:#fff!important;color:#173b50!important;border-color:#fff!important;box-shadow:0 8px 25px rgba(0,0,0,.15);white-space:nowrap}
.audit-stats{display:grid;grid-template-columns:repeat(4,minmax(160px,1fr));gap:10px}.audit-stats>div{background:#fff;border:1px solid var(--border);border-radius:13px;padding:13px 15px;box-shadow:0 5px 18px rgba(18,48,65,.05)}.audit-stats span,.audit-stats strong{display:block}.audit-stats span{font-size:var(--t-5);text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:800}.audit-stats strong{font-size:22px;color:#17354d;margin-top:4px}.audit-stats .critical{border-left:4px solid #c73d46}.audit-stats .warning{border-left:4px solid #d69e00}
.audit-control-card{padding:16px 18px}.audit-control-head{display:flex;align-items:center;justify-content:space-between;gap:16px}.audit-control-head strong,.audit-control-head small{display:block}.audit-control-head small{color:var(--muted);margin-top:3px}.audit-critical-toggle{display:flex;align-items:center;gap:8px;padding:8px 11px;border:1px solid var(--border);border-radius:999px;background:#f8fafb;font-weight:800;font-size:12px;white-space:nowrap}.audit-critical-toggle input{width:auto;margin:0;accent-color:#bd3039}
.audit-filters{display:grid;grid-template-columns:minmax(260px,2fr) repeat(4,minmax(130px,1fr)) auto;gap:9px;padding:14px 0 0;align-items:center}.audit-filters input,.audit-filters select{width:100%}.audit-log-card{padding:0;overflow:hidden}.audit-log-card .card-header{padding:16px 18px 10px}.audit-log-card .card-header h3{margin:0 0 3px}.audit-table-wrap{max-height:68vh;overflow:auto;border-top:1px solid var(--border)}.audit-table{min-width:1080px}.audit-table thead{position:sticky;top:0;z-index:3;background:#f4f8fa}.audit-table th{font-size:var(--t-5);letter-spacing:.04em;text-transform:uppercase;color:#607482}.audit-row{cursor:pointer;transition:background .12s}.audit-row:hover{background:#f5fafb}.audit-row td{vertical-align:middle}.audit-time{font-variant-numeric:tabular-nums;white-space:nowrap;color:#526875}.audit-user{display:flex;align-items:center;gap:8px}.audit-avatar{display:grid;place-items:center;width:29px;height:29px;border-radius:50%;background:#e7f1f4;color:#1c5c6f;font-size:var(--t-5);font-weight:900;flex:none}.history-detail strong,.history-detail small{display:block}.history-detail small{margin-top:4px;color:var(--c-ink-3);font-size:var(--t-5)}.audit-entity{display:block;font-weight:800}.audit-entity small{display:block;color:var(--muted);font-weight:500;margin-top:3px}.audit-open{font-size:22px;color:#466a7e}.severity{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:900}.severity.info{background:#e7f6ec;color:#256c3b}.severity.warning{background:#fff2cc;color:#805b00}.severity.critical{background:#fee2e2;color:#a51818}.audit-critical{background:#fff9f9}.audit-critical td:first-child{box-shadow:inset 3px 0 0 rgba(217,45,32,.20)}.audit-warning td:first-child{box-shadow:inset 3px 0 0 rgba(214,158,0,.18)}
.audit-row:not(.audit-critical):not(.audit-warning) td:first-child{box-shadow:inset 3px 0 0 rgba(57,140,76,.12)}
.audit-detail-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.audit-detail-head small{color:var(--muted)}.audit-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:16px 0}.audit-detail-grid>div{padding:11px;border:1px solid var(--border);border-radius:10px;background:#f8fafb}.audit-detail-grid small,.audit-detail-grid strong{display:block}.audit-detail-grid small{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:var(--t-5)}.audit-detail-grid strong{margin-top:4px}.audit-explanation{padding:13px 15px;border-left:4px solid #178391;background:#eef8f8;border-radius:9px;margin:14px 0}.audit-explanation p{margin:5px 0 0;line-height:1.5;color:#405963}.audit-technical-details{display:grid;grid-template-columns:1fr 1fr;gap:8px}.audit-technical-details>div{padding:9px;border-bottom:1px solid var(--border)}.audit-technical-details span,.audit-technical-details strong{display:block}.audit-technical-details span{font-size:var(--t-5);color:var(--muted);text-transform:capitalize}.audit-raw{margin-top:14px}.audit-raw summary{cursor:pointer;font-weight:800}.audit-raw pre{max-height:260px;overflow:auto;padding:12px;border-radius:8px;background:#102b3b;color:#dce9ef;font-size:11px;white-space:pre-wrap}
.audit-report-includes{margin:14px 0;padding:13px 15px;border:1px solid var(--border);border-radius:11px;background:#f8fafb}.audit-report-includes>strong{display:block;margin-bottom:8px}.audit-report-includes>div{display:grid;grid-template-columns:1fr 1fr;gap:7px;color:#3e5664;font-size:12px}
@media(max-width:1050px){.audit-stats{grid-template-columns:1fr 1fr}.audit-filters{grid-template-columns:1fr 1fr}.audit-filters input{grid-column:1/-1}.audit-hero{align-items:flex-start;flex-direction:column}.audit-report-cta{align-self:flex-start}}
@media(max-width:620px){.audit-stats,.audit-filters,.audit-detail-grid,.audit-technical-details,.audit-report-includes>div{grid-template-columns:1fr}.audit-filters input{grid-column:auto}.audit-control-head{align-items:flex-start;flex-direction:column}.audit-hero{padding:20px}.audit-report-cta{width:100%}}

/* v1.40.13 – premium Vundet-fejring */
.win-celebration{top:14%;min-width:430px;max-width:720px;padding:30px 38px 24px;overflow:hidden;border:1px solid rgba(141,224,220,.35);background:linear-gradient(145deg,rgba(12,43,61,.98),rgba(17,75,91,.97));box-shadow:0 30px 90px rgba(4,28,40,.42);color:#fff}
.win-shine{position:absolute;inset:-50% auto -50% -35%;width:32%;transform:rotate(18deg);background:linear-gradient(90deg,transparent,rgba(255,255,255,.16),transparent);animation:winShine 1.15s ease-out .18s both}
.win-trophy{position:relative;font-size:54px;filter:drop-shadow(0 8px 18px rgba(0,0,0,.28));animation:trophyBounce .55s cubic-bezier(.2,.9,.3,1.25) both}.win-kicker{position:relative;color:#91e3dc!important;font-size:var(--t-5)!important;letter-spacing:.21em}.win-celebration>strong{position:relative;color:#fff;font-size:31px;margin-top:7px}.win-message{position:relative;color:#d8eef0!important;font-size:16px!important;font-weight:700}.win-deal{position:relative;color:#aac7d0!important;margin-top:11px!important;font-size:13px!important}.win-metrics{position:relative;display:grid;grid-template-columns:repeat(2,minmax(145px,1fr));gap:9px;margin-top:17px}.win-metric{padding:11px 13px;border:1px solid rgba(255,255,255,.13);border-radius:12px;background:rgba(255,255,255,.07)}.win-metric span,.win-metric strong{display:block}.win-metric span{margin:0!important;color:#9fc0c9!important;font-size:var(--t-5)!important;text-transform:uppercase;letter-spacing:.08em;font-weight:800}.win-metric strong{margin-top:4px;color:#fff;font-size:16px}.win-footer{position:relative;margin-top:15px!important;color:#7fa3ad!important;font-size:var(--t-5)!important;text-transform:uppercase;letter-spacing:.12em}.confetti-layer>i:nth-child(3n){border-radius:50%}.confetti-layer>i:nth-child(5n){height:var(--s,9px);transform:rotate(45deg)}
@keyframes winShine{from{left:-35%}to{left:130%}}@keyframes trophyBounce{0%{transform:scale(.5) rotate(-12deg);opacity:0}70%{transform:scale(1.12) rotate(5deg);opacity:1}100%{transform:scale(1) rotate(0)}}
@media(max-width:800px){.win-celebration{min-width:0;width:calc(100% - 28px);padding:25px 20px 21px}.win-celebration>strong{font-size:25px}.win-trophy{font-size:46px}.win-metrics{grid-template-columns:1fr}}

/* v1.40.18 – drag-and-drop catalog sorting */
.sort-handle-head,.sort-handle-cell{width:42px;min-width:42px;text-align:center!important;padding-left:8px!important;padding-right:6px!important}.drag-handle{display:inline-flex;align-items:center;justify-content:center;width:28px;height:30px;border-radius:8px;color:#6b7f8d;font-size:18px;font-weight:800;letter-spacing:-4px;cursor:grab;user-select:none;transition:background .15s,color .15s,transform .15s}.drag-handle:hover{background:#eaf3f6;color:#173b55;transform:scale(1.04)}.drag-handle:active{cursor:grabbing}.drag-handle.locked{cursor:default;letter-spacing:0;color:#a2adb5;background:#f3f6f7}.catalog-sort-row[draggable=true]{transition:background .12s,box-shadow .12s,opacity .12s}.catalog-sort-row.dragging{opacity:.48;background:#eef7f8}.catalog-sort-row.drag-over{box-shadow:inset 0 2px 0 #2f8fa0}.catalog-sort-row.sort-locked{background:#f8fafb}.catalog-category-label{display:inline-flex;padding:4px 8px;border-radius:7px;background:#f2f6f7;font-weight:700;color:#35566c}.catalog-sort-row td{vertical-align:middle}

/* v1.40.19 – information architecture + solution flow */
.opportunity-view-tabs{display:inline-flex;gap:4px;padding:4px;background:#e8eef2;border:1px solid #d8e2e7;border-radius:11px;margin-bottom:14px}.opportunity-view-tabs button{border:0;background:transparent;border-radius:8px;padding:8px 16px;font-weight:750;color:var(--c-ink-3)}.opportunity-view-tabs button.active{background:#fff;color:#19364a;box-shadow:0 2px 8px #17304612}.solution-hero{display:flex;justify-content:space-between;align-items:center;gap:22px;background:linear-gradient(135deg,#fff,#f2fafb);border-color:#cfe3e8;margin-bottom:16px}.solution-hero h2{font-size:22px;margin:4px 0 7px}.solution-hero p{max-width:850px;margin:0;color:var(--muted);line-height:1.55}.solution-hero-mark{min-width:92px;height:72px;border-radius:18px;background:linear-gradient(135deg,#16364a,#2d718d);color:#fff;display:grid;place-items:center;font-size:21px;font-weight:850;letter-spacing:.06em;box-shadow:0 12px 24px #17304622}.solution-picker{display:grid;grid-template-columns:1fr minmax(320px,560px) auto;gap:14px;align-items:end;margin-bottom:16px}.solution-picker strong,.solution-picker span{display:block}.solution-picker select{margin:0}.solution-context{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:16px}.solution-context h2{margin:7px 0 4px}.solution-context p{margin:0;color:var(--muted)}.solution-context-value{text-align:right}.solution-context-value small,.solution-context-value strong{display:block}.solution-context-value strong{font-size:22px;margin-top:4px}.solution-flow-track{display:grid;grid-template-columns:repeat(7,minmax(125px,1fr));gap:0;overflow:auto;padding:7px 0}.solution-flow-step{position:relative;padding:12px 10px 12px 20px;min-width:145px;border-top:3px solid #d7e0e5;background:#f8fafb}.solution-flow-step:first-child{border-radius:10px 0 0 10px}.solution-flow-step:last-child{border-radius:0 10px 10px 0}.solution-flow-step.done{border-top-color:var(--green);background:#f0faf6}.solution-flow-step.active{border-top-color:var(--amber);background:#fff9ef}.solution-flow-dot{position:absolute;left:8px;top:13px;font-weight:900;color:#73848e}.solution-flow-step.done .solution-flow-dot{color:var(--green)}.solution-flow-step.active .solution-flow-dot{color:var(--amber)}.solution-flow-step strong,.solution-flow-step small,.solution-flow-step em{display:block;margin-left:10px}.solution-flow-step strong{font-size:11px}.solution-flow-step small{font-size:var(--t-5);color:var(--muted);margin-top:3px}.solution-flow-step em{font-size:var(--t-5);font-style:normal;font-weight:700;margin-top:7px;color:#49616f}.solution-action-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:16px}.solution-action{appearance:none;text-align:left;display:grid;grid-template-columns:42px 1fr;column-gap:10px;align-items:center;color:var(--text);cursor:pointer}.solution-action:hover{border-color:#9fc8d1;transform:translateY(-1px)}.solution-action>span{grid-row:1/3;width:38px;height:38px;border-radius:11px;background:#e8f4f6;color:#23798b;display:grid;place-items:center;font-size:18px}.solution-action strong,.solution-action small{display:block}.solution-action small{color:var(--muted);margin-top:3px}.solution-guidance{margin-top:16px}.solution-mini-flow{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:12px 0}.solution-mini-flow span{padding:8px 11px;border-radius:9px;background:#eef5f7;font-weight:750;font-size:12px}.solution-mini-flow i{font-style:normal;color:#8b9aa2}.opportunity-solution-strip{border:1px solid #cfe3e8;background:linear-gradient(135deg,#f7fbfc,#fff);border-radius:14px;padding:13px 14px;margin:0 0 16px}.opportunity-solution-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.opportunity-solution-head strong{display:block;margin-top:2px}.opportunity-mini-flow{display:flex;align-items:center;gap:7px;overflow:auto;margin-top:11px;padding-bottom:2px}.opportunity-mini-flow span{display:flex;align-items:center;gap:5px;white-space:nowrap;font-size:var(--t-5);font-weight:750;color:#71818a}.opportunity-mini-flow i{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-style:normal;background:#e6edf0;color:#73838c}.opportunity-mini-flow span.done{color:#26765b}.opportunity-mini-flow span.done i{background:#ddf3eb;color:#227659}.opportunity-mini-flow b{color:#a7b4bb;font-weight:500}.opportunity-flow-loading{color:var(--muted);font-size:11px;margin-top:10px}.solution-selector-grid{margin-top:0}
@media(max-width:1050px){.solution-flow-track{grid-template-columns:repeat(7,155px)}.solution-action-grid{grid-template-columns:repeat(2,1fr)}.solution-picker{grid-template-columns:1fr}.solution-picker .btn{width:100%}}
@media(max-width:700px){.solution-hero{align-items:flex-start}.solution-hero-mark{display:none}.solution-action-grid{grid-template-columns:1fr}.solution-context{align-items:flex-start;flex-direction:column}.solution-context-value{text-align:left}.opportunity-solution-head{align-items:flex-start;flex-direction:column}}

/* v1.40.20 – complete Solution workspace */
.solution-subnav{display:flex;gap:7px;align-items:center;overflow:auto;padding:5px;margin:0 0 14px;background:#edf3f5;border:1px solid #d9e4e8;border-radius:13px;position:sticky;top:0;z-index:8}.solution-subnav button{appearance:none;border:0;background:transparent;padding:9px 13px;border-radius:9px;color:#536873;font-weight:780;white-space:nowrap;cursor:pointer}.solution-subnav button:hover{background:#fff}.solution-subnav button.active{background:#fff;color:#17384c;box-shadow:0 2px 9px #17304614}.solution-page-intro{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,430px);gap:24px;align-items:end;background:linear-gradient(135deg,#fff,#f5fafb);border-color:#cfe2e7;margin-bottom:16px}.solution-page-intro h2{margin:4px 0 7px}.solution-page-intro p{margin:0;color:var(--muted);line-height:1.55}.solution-page-intro label{margin:0}.solution-context-banner{display:flex;align-items:center;justify-content:space-between;gap:14px;background:#f6fafb;border:1px solid #d5e6ea;border-radius:12px;padding:11px 13px;margin-bottom:14px}.solution-context-banner strong,.solution-context-banner small{display:block}.solution-context-banner small{color:var(--muted);margin-top:3px}.solution-hub-links{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px;margin:0 0 16px}.solution-hub-links button{appearance:none;border:1px solid #d7e4e8;background:#fff;border-radius:14px;padding:15px;text-align:left;display:grid;grid-template-columns:38px 1fr;column-gap:10px;align-items:center;cursor:pointer;box-shadow:0 4px 14px #17304608}.solution-hub-links button:hover{border-color:#9fc8d1;transform:translateY(-1px)}.solution-hub-links button>span{grid-row:1/3;width:36px;height:36px;border-radius:10px;background:#e9f4f6;color:#23798b;display:grid;place-items:center;font-size:18px}.solution-hub-links strong,.solution-hub-links small{display:block}.solution-hub-links small{color:var(--muted);margin-top:3px}.infra-list.secondary{opacity:.86}.solution-context .row-actions{align-self:center}
@media(max-width:1050px){.solution-hub-links{grid-template-columns:repeat(2,1fr)}.solution-page-intro{grid-template-columns:1fr}.solution-subnav{position:static}}
@media(max-width:650px){.solution-hub-links{grid-template-columns:1fr}.solution-context-banner{align-items:flex-start;flex-direction:column}.solution-context-banner .btn{width:100%}.solution-subnav button span{display:none}.solution-subnav{justify-content:space-between}}

/* v1.40.21 – gældende HLD i opportunity-flow */
.quote-list-card.is-active-hld{box-shadow:0 0 0 2px rgba(14,116,144,.18),0 10px 24px rgba(15,23,42,.06);background:linear-gradient(180deg,rgba(236,254,255,.72),#fff)}
.hld-make-active{font-weight:700}

/* v1.40.23 – WIKI v2: complete seller guide */
.wiki-hero-v2{margin-bottom:14px}.wiki-hero-v2>div{max-width:980px}.wiki-hero-v2 h1{font-size:36px}.wiki-start-panel{background:#fff;border:1px solid var(--border);border-radius:16px;padding:18px;margin-bottom:16px;box-shadow:0 5px 18px rgba(20,48,61,.04)}.wiki-start-heading{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:12px}.wiki-start-heading h2{margin:2px 0 0;font-size:22px}.wiki-journeys{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.wiki-journeys article{border:1px solid #dbe6ea;border-radius:12px;overflow:hidden;background:#fbfdfe}.wiki-journey-main{border:0;background:transparent;width:100%;padding:15px;text-align:left;display:flex;gap:11px;cursor:pointer;color:var(--text)}.wiki-journey-main:hover{background:#f1f8fa}.wiki-journey-main i{font-style:normal;width:32px;height:32px;border-radius:9px;background:#e5f5f8;color:#137f98;display:grid;place-items:center;font-weight:800;font-size:17px;flex:0 0 auto}.wiki-journey-main span{display:grid;gap:5px}.wiki-journey-main strong{font-size:14px}.wiki-journey-main small{line-height:1.35;color:#617780}.wiki-journey-go{width:100%;border:0;border-top:1px solid #e4ecef;background:#fff;color:#177e96;padding:9px 12px;text-align:left;font-weight:700;cursor:pointer}.wiki-journey-go:hover{background:#edf7f9}.wiki-layout-v2{grid-template-columns:245px minmax(0,1fr)}.wiki-layout-v2 .wiki-toc button.active{background:#e7f4f7;color:var(--c-accent-ink);font-weight:800}.wiki-result-toolbar{display:flex;justify-content:space-between;align-items:end;min-height:45px;margin:0 2px 8px}.wiki-result-toolbar>div{display:grid;gap:2px}.wiki-result-toolbar strong{font-size:18px}.wiki-result-toolbar span{font-size:12px;color:var(--c-ink-3)}.wiki-guide-card{scroll-margin-top:18px}.wiki-guide-card .wiki-article-head p{margin:6px 0 0;color:var(--c-ink-3);font-size:13px}.wiki-steps{list-style:none!important;padding-left:0!important;counter-reset:wstep;display:grid;gap:9px}.wiki-steps li{counter-increment:wstep;display:grid;grid-template-columns:34px 1fr;column-gap:10px;align-items:start;margin:0!important;background:#f8fbfc;border:1px solid #e5ecef;border-radius:10px;padding:11px}.wiki-steps li:before{content:counter(wstep);grid-row:1/3;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#dff1f5;color:#167f96;font-weight:800}.wiki-steps li strong{font-size:14px}.wiki-steps li span{grid-column:2;color:#60747d;font-size:13px}.wiki-check{list-style:none!important;padding-left:0!important;display:grid;gap:7px}.wiki-check li{position:relative;padding:9px 11px 9px 38px!important;margin:0!important;background:#f7fbf9;border-radius:9px;border:1px solid #dcebe5}.wiki-check li:before{content:'✓';position:absolute;left:12px;top:8px;color:#2c8c6c;font-weight:900}.wiki-day-grid,.wiki-menu-map{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.wiki-day-grid>div,.wiki-menu-map>div{border:1px solid #e2eaed;border-radius:10px;padding:12px;background:#fbfdfe}.wiki-day-grid strong,.wiki-menu-map strong{display:block;color:#1a5567}.wiki-day-grid p{margin:5px 0 0}.wiki-menu-map span{display:block;color:#617780;margin-top:4px;font-size:13px}.wiki-flow{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:12px;background:#f5fafb;border:1px solid #dfeaec;border-radius:10px}.wiki-flow span{padding:7px 9px;background:#fff;border:1px solid #d9e5e9;border-radius:8px;font-weight:700;font-size:12px}.wiki-flow b{color:#68a9b8}.wiki-example{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;padding:12px 14px;border-radius:10px;background:#eef7fa;border:1px solid #d7e8ed;margin:12px 0}.wiki-example span{color:#526b75}.wiki-article-body code{background:#eef3f5;border-radius:5px;padding:1px 5px}
@media(max-width:1100px){.wiki-journeys{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.wiki-start-heading{align-items:flex-start;flex-direction:column}.wiki-start-heading .btn{width:100%}.wiki-journeys,.wiki-day-grid,.wiki-menu-map{grid-template-columns:1fr}.wiki-layout-v2{grid-template-columns:1fr}.wiki-result-toolbar{margin-top:4px}.wiki-hero-v2 h1{font-size:28px}}
/* v1.40.24 – ALSO subscriptions */
.also-admin{margin-top:18px}.also-preview-summary{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:16px 0}.license-price{width:105px;padding:7px 9px}.file-button{cursor:pointer}.notice.info{background:#eef7fa;border:1px solid #cce8ee;padding:12px 14px;border-radius:10px;margin:12px 0}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:16px 0}.metric{padding:14px;border:1px solid #e1e8ed;border-radius:12px;background:#fff}.metric small{display:block;color:#687d8c}.metric strong{font-size:22px}.toolbar{display:flex;gap:10px;margin:14px 0}.toolbar input{flex:1}@media(max-width:900px){.metric-grid{grid-template-columns:1fr 1fr}.toolbar{flex-direction:column}}
.metric-grid.compact{grid-template-columns:repeat(3,minmax(0,1fr));margin:10px 0}.license-mini-list{display:grid;gap:6px;margin:8px 0 16px}.license-mini-list>div{display:flex;justify-content:space-between;gap:12px;padding:8px 10px;border:1px solid #e5ecef;border-radius:9px;background:#fafcfd}.license-mini-list span{color:#6b7f8d}
/* v1.40.25 – ALSO Simple API connection test */
.notice.success{background:#effaf4;border:1px solid #bfe7cf;color:#1f6844;padding:12px 14px;border-radius:10px;margin:12px 0}
.notice.danger{background:#fff3f3;border:1px solid #efc3c3;color:#8c3030;padding:12px 14px;border-radius:10px;margin:12px 0}
.also-admin code{font-size:max(var(--t-5),.92em);background:#f3f6f8;border-radius:5px;padding:2px 5px}

/* v1.40.26 – ALSO login diagnostics */
.also-diagnostics{display:grid;gap:8px;margin-top:12px}.also-diagnostic-row{display:flex;gap:10px;align-items:flex-start;padding:9px 10px;border:1px solid var(--border,#dbe2ea);border-radius:10px;background:rgba(255,255,255,.72)}.also-diagnostic-row small{display:block;margin-top:2px;color:var(--muted,#667085)}.also-diagnostic-icon{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:999px;font-weight:800;flex:0 0 22px}.also-diagnostic-icon.ok{background:#dcfce7;color:#166534}.also-diagnostic-icon.bad{background:#fee2e2;color:#991b1b}

/* v1.40.28 – Opportunities: tydeligt Pipeline/Liste-skift */
.opportunity-view-bar{display:flex;align-items:center;gap:12px;justify-content:space-between;margin:0 0 14px;padding:8px 10px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 3px 12px rgba(16,38,54,.04)}
.opportunity-view-switch{display:inline-flex;gap:3px;padding:3px;background:#eef3f5;border:1px solid #dde6ea;border-radius:10px}
.opportunity-view-btn{border:0;background:transparent;color:#5e707a;border-radius:8px;padding:8px 13px;font-weight:750;line-height:1;cursor:pointer}
.opportunity-view-btn:hover{background:#ffffffb8;color:#284555}
.opportunity-view-btn.active{background:#fff;color:#167f99;box-shadow:0 1px 5px rgba(20,55,72,.12)}
@media(max-width:700px){.opportunity-view-bar{align-items:flex-start;flex-direction:column}.opportunity-view-switch{width:100%}.opportunity-view-btn{flex:1}.opportunity-view-bar>.muted{font-size:11px}}

/* v1.40.29 – Opportunities: fælles toolbar for Pipeline og Liste */
.opportunity-toolbar-shell{margin:0 0 14px;padding:0 12px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 3px 12px rgba(16,38,54,.04)}
.opportunity-toolbar{margin:0;min-height:62px;align-items:center}
.opportunity-toolbar input#dealSearch{flex:0 1 320px;min-width:220px;max-width:420px}
.opportunity-toolbar-help{white-space:nowrap}
.opportunity-list-card{margin-top:0}
@media(max-width:900px){.opportunity-toolbar{flex-wrap:wrap;padding:10px 0}.opportunity-toolbar input#dealSearch{flex:1 1 240px;max-width:none}.opportunity-toolbar .spacer{display:none}.opportunity-toolbar-help{order:5;width:100%;white-space:normal}}

/* v1.50.0 – Customer Hub / customer-centric CRM */
.customer-directory-card{padding:0;overflow:hidden}.customer-directory-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:22px 22px 10px}.customer-directory-head h2{margin:3px 0 5px;font-size:23px}.customer-directory-head p{margin:0;color:var(--muted);max-width:820px}.customer-eyebrow{font-size:var(--t-5);letter-spacing:.13em;font-weight:800;color:#6b8794}.customer-directory-toolbar{display:flex;align-items:center;gap:10px;padding:10px 22px 16px}.customer-directory-toolbar>input{flex:0 1 360px;min-width:220px}.customer-status-filter{display:flex;gap:3px;padding:3px;border-radius:10px;background:#edf3f5;border:1px solid #dce6ea}.customer-status-filter button{border:0;background:transparent;border-radius:7px;padding:7px 10px;font-weight:700;color:#60727c;cursor:pointer}.customer-status-filter button.active{background:#fff;color:#167e97;box-shadow:0 1px 5px rgba(20,55,72,.11)}.customer-directory-table table{margin:0}.customer-hub-row{cursor:pointer}.customer-hub-row:hover td{background:#f7fbfc}.customer-list-name{display:grid;gap:2px}.customer-list-name small{color:var(--muted)}.customer-card-link{color:inherit;text-decoration:none;border-radius:6px}.customer-card-link strong{color:#102b3b}.customer-card-link:hover strong,.customer-card-link:focus-visible strong{color:#167e97;text-decoration:underline}.customer-card-link:focus-visible{outline:2px solid #35a9b4;outline-offset:3px}.customer-open-link{text-decoration:none}.customer-hub-row:focus-visible{outline:2px solid #35a9b4;outline-offset:-2px}.customer-source-pill{background:#e6f5f7!important;color:#176d7e!important;border-color:#cde8ec!important}.customer-hub-row td small{color:var(--muted);font-size:11px}
.customer-hub-header{background:linear-gradient(180deg,#fff,#f7fafb);border:1px solid var(--border);border-radius:16px;box-shadow:0 4px 18px rgba(16,38,54,.05);margin-bottom:16px;overflow:hidden}.customer-hub-top{display:flex;align-items:center;gap:16px;padding:18px 20px 12px}.customer-hub-identity{display:flex;align-items:center;gap:13px;min-width:0;flex:1}.customer-company-mark{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(145deg,#173e54,#2f94aa);color:#fff;font-weight:850;font-size:17px;letter-spacing:.03em;flex:0 0 auto}.customer-title-row{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.customer-title-row h2{margin:0;font-size:23px;line-height:1.15}.customer-hub-identity p{margin:5px 0 0;color:var(--muted)}.customer-hub-actions{display:flex;gap:8px;flex-wrap:wrap}.customer-header-mini{display:flex;gap:22px;padding:0 20px 14px;margin-left:80px;color:#607580;font-size:12px;flex-wrap:wrap}.customer-header-mini b{color:#183647;font-size:13px}.customer-tabs{display:flex;gap:1px;overflow-x:auto;padding:0 12px;border-top:1px solid #e3ecef;background:#fbfdfe}.customer-tabs button{border:0;border-bottom:3px solid transparent;background:transparent;padding:12px 11px 10px;color:#60737d;font-weight:750;white-space:nowrap;cursor:pointer}.customer-tabs button:hover{color:#285465;background:#f2f8fa}.customer-tabs button.active{color:#147c94;border-bottom-color:#2fa0b5;background:#fff}.customer-tabs button span{display:inline-grid;place-items:center;min-width:19px;height:19px;padding:0 5px;border-radius:999px;background:#eaf1f4;font-size:var(--t-5);margin-left:3px}.customer-tabs button.active span{background:#dff2f6;color:#167b92}.customer-tab-content{display:grid;gap:14px}.customer-subcard{margin:0}.customer-subcard h3{margin:0}.customer-subcard .card-header span.muted{display:block;margin-top:3px}.customer-metrics{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}.customer-metric{border:1px solid #dce7eb;background:#fff;border-radius:13px;padding:14px 15px;box-shadow:0 3px 12px rgba(17,43,57,.035)}.customer-metric small,.customer-metric span{display:block}.customer-metric small{color:#6f818a;font-size:var(--t-5);text-transform:uppercase;letter-spacing:.06em;font-weight:800}.customer-metric strong{display:block;margin:5px 0 2px;font-size:21px;color:#17394a}.customer-metric span{color:var(--muted);font-size:11px}.customer-overview-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.customer-facts{display:grid;grid-template-columns:1fr 1fr;gap:0 18px;margin:0}.customer-facts>div{display:grid;grid-template-columns:105px 1fr;gap:8px;padding:10px 0;border-bottom:1px solid #edf1f3}.customer-facts dt{color:#6b7f89;font-size:12px}.customer-facts dd{margin:0;font-weight:650;color:#203d4b}.customer-journey{grid-column:1/-1}.customer-journey-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:9px}.customer-journey-grid button{border:1px solid #dce8eb;border-radius:12px;background:#fbfdfe;padding:13px;text-align:left;display:grid;grid-template-columns:30px 1fr;column-gap:9px;cursor:pointer;color:#1c3c4c}.customer-journey-grid button:hover{border-color:#9bc8d2;background:#f2fafb}.customer-journey-grid i{grid-row:1/3;width:29px;height:29px;border-radius:9px;background:#e2f2f5;display:grid;place-items:center;color:#187d94;font-style:normal}.customer-journey-grid strong,.customer-journey-grid span{display:block}.customer-journey-grid span{color:var(--muted);font-size:11px;margin-top:2px}.customer-contact-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.customer-contact-grid article{display:grid;grid-template-columns:42px 1fr auto;gap:11px;align-items:center;padding:13px;border:1px solid #e1e9ec;border-radius:12px;background:#fbfdfe}.customer-contact-grid article>div:nth-child(2){display:grid;gap:2px}.customer-contact-grid span,.customer-contact-grid small{color:var(--muted)}.customer-avatar{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:#dff1f5;color:#176f83;font-weight:800}.customer-empty{padding:28px 18px;text-align:center;border:1px dashed #ccdce2;border-radius:12px;background:#fafcfd}.customer-empty strong{font-size:15px}.customer-empty p{margin:6px auto 0;max-width:600px;color:var(--muted)}.customer-simple-list{display:grid}.customer-simple-list>div{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 2px;border-bottom:1px solid #e8eef0}.customer-simple-list>div>div{display:grid;gap:2px}.customer-simple-list small{color:var(--muted)}.customer-service-layout{display:grid;grid-template-columns:1fr 1fr;gap:14px}.customer-service-layout .full{grid-column:1/-1}
@media(max-width:1250px){.customer-metrics{grid-template-columns:repeat(3,1fr)}.customer-journey-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:900px){.customer-directory-head,.customer-hub-top{align-items:flex-start;flex-direction:column}.customer-directory-toolbar{flex-wrap:wrap}.customer-directory-toolbar>input{flex:1 1 280px}.customer-status-filter{overflow-x:auto;max-width:100%}.customer-header-mini{margin-left:0}.customer-hub-actions{width:100%}.customer-hub-actions .btn{flex:1}.customer-overview-grid,.customer-service-layout{grid-template-columns:1fr}.customer-service-layout .full{grid-column:auto}.customer-contact-grid{grid-template-columns:1fr}.customer-journey{grid-column:auto}.customer-facts{grid-template-columns:1fr}}
@media(max-width:620px){.customer-metrics{grid-template-columns:1fr 1fr}.customer-journey-grid{grid-template-columns:1fr 1fr}.customer-directory-toolbar{padding:10px 14px 14px}.customer-directory-head{padding:17px 14px 8px}.customer-tabs{padding:0 6px}.customer-hub-top{padding:15px}.customer-header-mini{padding:0 15px 12px;gap:11px}.customer-hub-top>#customerBack{order:-1}.customer-title-row h2{font-size:20px}}

/* v1.50.0 – Customer Hub navigation refinement: four primary customer areas */
.customer-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:10px 14px 12px;border-top:1px solid #e3ecef;background:#f5f9fa;overflow:visible}
.customer-tabs button{min-width:0;border:1px solid transparent;border-radius:11px;padding:11px 13px;background:transparent;color:#60737d;font-weight:750;display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:8px;align-items:center;text-align:left;cursor:pointer}
.customer-tabs button i{width:28px;height:28px;border-radius:9px;display:grid;place-items:center;background:#e7eff2;color:#53717f;font-style:normal;font-weight:850}
.customer-tabs button b{font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.customer-tabs button>span{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:#e4ecef;color:#5b737f;font-size:var(--t-5);margin-left:0}
.customer-tabs button:hover{color:#285465;background:#eef6f8;border-color:#d8e7eb}
.customer-tabs button.active{color:#126f86;background:#fff;border-color:#c8e1e7;box-shadow:0 3px 10px rgba(20,55,72,.08)}
.customer-tabs button.active i{background:#dff2f6;color:#167b92}
.customer-tabs button.active>span{background:#dff2f6;color:#167b92}
.customer-section-tabs{display:inline-flex;align-items:center;gap:4px;padding:4px;margin:0 0 12px;border:1px solid #dce7eb;border-radius:11px;background:#edf3f5;max-width:100%;overflow-x:auto}
.customer-section-tabs button{border:0;border-radius:8px;background:transparent;padding:8px 11px;font-weight:750;color:#60737d;white-space:nowrap;cursor:pointer}
.customer-section-tabs button:hover{background:#f7fbfc;color:#285465}.customer-section-tabs button.active{background:#fff;color:#147c94;box-shadow:0 1px 5px rgba(20,55,72,.11)}
.customer-section-tabs button span{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:#dfe8eb;font-size:var(--t-5);margin-left:4px}.customer-section-tabs button.active span{background:#dff2f6;color:#167b92}
.customer-section-content{display:grid;gap:14px}.customer-directory-toolbar{position:sticky;top:0;z-index:3;background:#fff;border-bottom:1px solid #edf1f3}.customer-directory-table thead th{position:sticky;top:61px;z-index:2;background:#f7f9fa}
@media(max-width:900px){.customer-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.customer-directory-table thead th{position:static}}
@media(max-width:620px){.customer-tabs{grid-template-columns:1fr 1fr;padding:8px}.customer-tabs button{grid-template-columns:24px minmax(0,1fr) auto;padding:9px 8px;gap:6px}.customer-tabs button i{width:24px;height:24px}.customer-tabs button b{font-size:12px}.customer-section-tabs{display:flex;width:100%;box-sizing:border-box}}

/* v1.50.1 – ren og stabil kundeværktøjslinje */
.customer-directory-toolbar{position:static!important;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 22px 16px;background:#fff;border-bottom:1px solid #e7eef1}
.customer-toolbar-main{display:flex;align-items:center;gap:12px;min-width:0;flex:1}
.customer-toolbar-meta{display:flex;align-items:center;gap:14px;white-space:nowrap;color:#435d69}
.customer-search-wrap{display:flex;align-items:center;gap:8px;min-width:260px;max-width:520px;flex:1;border:1px solid #ccdbe1;border-radius:10px;background:#fff;padding:0 11px;box-shadow:0 1px 2px rgba(18,43,55,.02)}
.customer-search-wrap>span{color:#80939c;font-size:16px;line-height:1}.customer-search-wrap>input{border:0!important;box-shadow:none!important;background:transparent!important;padding:10px 0!important;min-width:0;width:100%;outline:0}
.customer-status-filter{flex:0 0 auto}.customer-status-filter button{min-height:36px;padding:7px 13px}.customer-status-filter button:focus{outline:none}.customer-status-filter button:focus-visible{box-shadow:0 0 0 2px rgba(43,157,183,.22)}
.customer-directory-table thead th{position:static!important}.customer-list-name small{display:block;margin-top:2px}.customer-list-name small:first-letter{text-transform:none}
@media(max-width:1000px){.customer-directory-toolbar{align-items:stretch;flex-direction:column}.customer-toolbar-main{flex-wrap:wrap}.customer-toolbar-meta{justify-content:flex-end}.customer-search-wrap{max-width:none;flex:1 1 320px}}
@media(max-width:620px){.customer-toolbar-main{align-items:stretch;flex-direction:column}.customer-status-filter{overflow-x:auto}.customer-search-wrap{min-width:0;width:100%}.customer-toolbar-meta{justify-content:space-between;white-space:normal}}

/* v1.50.3 – permanent customer duplicate control */
.dedupe-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:24px}.dedupe-hero h2{margin:4px 0 6px}.dedupe-hero p{max-width:980px;margin:0;color:var(--muted,#627482);line-height:1.55}.dedupe-kpis{margin-top:14px}.dedupe-safe{display:flex;align-items:center;justify-content:space-between;gap:24px;border-left:4px solid #2d9f79}.dedupe-safe h3{margin:0 0 4px}.dedupe-safe p{margin:0;color:var(--muted,#627482)}.dedupe-list{display:grid;gap:12px}.dedupe-pair{border:1px solid #dfe7ec;border-radius:14px;padding:14px;background:#fff}.dedupe-pair-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}.dedupe-pair-head .muted{margin-left:auto}.dedupe-compare{display:grid;grid-template-columns:minmax(0,1fr) 42px minmax(0,1fr);gap:12px;align-items:stretch}.dedupe-customer{padding:14px;border-radius:12px;background:#f6f9fa;border:1px solid #e3eaee}.dedupe-customer.master{background:#f1fbf7;border-color:#cbeadf}.dedupe-customer.duplicate{background:#fff8f1;border-color:#f0dfcc}.dedupe-customer small{display:block;font-size:var(--t-5);font-weight:800;letter-spacing:.08em;color:#70828e}.dedupe-customer h3{margin:4px 0 2px}.dedupe-customer p{margin:0 0 8px;color:#61727d}.dedupe-customer span{font-size:12px;color:#627482}.dedupe-arrow{display:grid;place-items:center;font-size:22px;color:#8ca0aa}.dedupe-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}@media(max-width:800px){.dedupe-hero,.dedupe-safe{flex-direction:column}.dedupe-compare{grid-template-columns:1fr}.dedupe-arrow{transform:rotate(90deg);height:24px}.dedupe-actions{justify-content:flex-start;flex-wrap:wrap}}

/* v1.50.4 – ALSO LIVE API diagnostics */
.also-live-request{margin-top:12px;padding:10px 12px;border:1px solid var(--border,#d9e1e8);border-radius:10px;background:#f7fafc}.also-live-request strong{display:block;margin-bottom:4px}.also-live-request small{display:block;line-height:1.45;word-break:break-word}

/* v1.50.7 – ALSO WCF fault diagnostics */
.also-fault{margin-top:12px}.also-fault details{margin-top:8px}.also-fault summary{cursor:pointer;font-weight:700}.also-fault pre{white-space:pre-wrap;word-break:break-word;max-height:260px;overflow:auto;background:#0e1f2d;color:#eef6fb;border-radius:10px;padding:12px;font-size:12px;line-height:1.45}

/* v1.50.8 – consistent sortable list headers */
.crm-sortable th.sortable{transition:background .15s ease,color .15s ease}.crm-sortable th.sortable:hover,.crm-sortable th.sortable:focus{background:#eef5f7;color:#126f88;outline:none}.crm-sortable th.sortable.sorted{color:#126f88}.crm-sortable th[data-no-sort="1"]{cursor:default}.crm-sortable th[data-no-sort="1"]:after{content:""}


/* v1.50.9 – Admin IP access */
.admin-ip-global-banner{position:fixed;z-index:1200;left:260px;right:0;top:0;background:#991b1b;color:#fff;padding:9px 18px;text-align:center;font-size:13px;box-shadow:0 2px 10px rgba(0,0,0,.18)}
.admin-ip-global-banner:not(.hidden)+.topbar{top:38px}
.admin-ip-global-banner:not(.hidden)~.content{padding-top:38px}
.admin-ip-card .admin-ip-status-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:14px 0}
.admin-ip-status-grid>div{border:1px solid var(--border,#dbe3ea);border-radius:12px;padding:12px;background:var(--panel-soft,#f8fafc);display:flex;flex-direction:column;gap:3px}
.admin-ip-status-grid span,.admin-ip-status-grid small{color:var(--muted,#64748b);font-size:12px}.admin-ip-status-grid strong{font-size:15px}.ok-text{color:#15803d!important}.warn-text{color:#b45309!important}
.admin-ip-toggle{display:flex;align-items:flex-start;gap:10px;border:1px solid var(--border,#dbe3ea);border-radius:12px;padding:13px 14px;margin:14px 0;background:#fff}.admin-ip-toggle input{width:auto;margin-top:3px}.admin-ip-toggle span{display:flex;flex-direction:column;gap:2px}.admin-ip-toggle small{color:var(--muted,#64748b)}
.admin-ip-bypass-warning{display:flex;flex-direction:column;gap:3px;background:#991b1b;color:#fff;border-radius:12px;padding:12px 14px;margin:12px 0}.admin-ip-bypass-warning span{font-size:12px;opacity:.92}
.admin-ip-emergency{margin-top:14px;border-top:1px solid var(--border,#dbe3ea);padding-top:12px}.admin-ip-emergency summary{cursor:pointer;font-weight:700}.admin-ip-emergency code{background:#eef2f7;padding:2px 5px;border-radius:5px}
@media(max-width:900px){.admin-ip-global-banner{left:0}.admin-ip-status-grid{grid-template-columns:1fr!important}}
/* v1.51.1 – admin-only customer succession / acquisition workflow */
.succession-card{border-top:3px solid #2d8faf}.succession-card .notice{margin:10px 0 14px}.succession-preview .dedupe-compare{margin-bottom:14px}.succession-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 18px;margin:14px 0}.succession-options label{display:flex;align-items:flex-start;gap:8px;font-weight:650}.succession-options input{width:auto;margin-top:2px}.customer-succession-banner{display:flex;gap:12px;align-items:center;margin:0 16px 10px;padding:10px 13px;border-radius:10px;font-size:12px}.customer-succession-banner strong{white-space:nowrap}.customer-succession-banner.outgoing{background:#fff7e9;border:1px solid #efd8a9}.customer-succession-banner.incoming{background:#eef9f5;border:1px solid #cbe8dc}.link-button{border:0;background:none;padding:0;color:#177c9f;text-decoration:underline;cursor:pointer;font:inherit;font-weight:750}@media(max-width:760px){.succession-options{grid-template-columns:1fr}.customer-succession-banner{align-items:flex-start;flex-direction:column;gap:4px}}

/* v1.51.3 – Admin navigation collapse fix */
/* v1.51.4 – Admin navigation typography aligned with the rest of Skallen */
.admin-overview-hero{display:flex;justify-content:space-between;gap:24px;align-items:center;margin-bottom:16px;background:linear-gradient(135deg,#fff,#f3f9fb)}.admin-overview-hero h2{font-size:22px;margin:4px 0 7px}.admin-overview-hero p{margin:0;color:var(--muted);max-width:780px;line-height:1.5}.admin-overview-hero-mark{min-width:72px;height:72px;border-radius:20px;background:linear-gradient(135deg,var(--nav2),var(--accent2));color:#fff;display:grid;place-items:center;font-size:30px;font-weight:800;box-shadow:0 10px 25px #17304622}.admin-overview-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.admin-overview-card{display:flex;flex-direction:column;min-height:270px}.admin-overview-card-head{display:flex;gap:13px}.admin-overview-card-head>span{width:42px;height:42px;border-radius:12px;background:#e8f4f6;color:#267e91;display:grid;place-items:center;font-size:19px;flex:none}.admin-overview-card-head small{font-size:var(--t-5);letter-spacing:1.1px;color:#78909d;font-weight:800}.admin-overview-card-head h2{font-size:16px;margin:3px 0 4px}.admin-overview-card-head p{margin:0;color:var(--muted);font-size:12px;line-height:1.45}.admin-overview-statuses{display:grid;gap:7px;margin:17px 0;flex:1}.admin-overview-status{display:grid;grid-template-columns:8px 1fr;column-gap:8px;align-items:center;padding:8px 10px;border-radius:9px;background:#f7f9fa}.admin-overview-status i{width:7px;height:7px;border-radius:50%;grid-row:1/3}.admin-overview-status strong{font-size:12px}.admin-overview-status small{grid-column:2;color:var(--muted);font-size:var(--t-5);margin-top:1px}.admin-overview-status.ok i{background:#2e9b78}.admin-overview-status.warn i{background:#d59b42}.admin-overview-status.neutral i{background:#8fa1ac}.admin-overview-actions{display:flex;gap:7px;flex-wrap:wrap}.admin-overview-actions .btn{padding:7px 10px;font-size:12px}.admin-overview-note{margin-top:16px;display:flex;align-items:center;gap:14px}.admin-overview-note strong{white-space:nowrap}.admin-overview-note span{color:var(--muted);flex:1;font-size:12px}@media(max-width:1050px){.admin-overview-grid{grid-template-columns:1fr}.admin-overview-note{align-items:flex-start;flex-direction:column}.admin-overview-note strong{white-space:normal}}@media(max-width:760px){.admin-overview-hero-mark{display:none}.admin-overview-card{min-height:0}}

/* v1.51.5 – final Admin sidebar typography correction: same visual rhythm as standard navigation */

/* v1.51.6 – sidebar overflow correction: never scroll sideways */
.sidebar{overflow:hidden}
.sidebar nav{
  flex:1 1 auto;
  min-height:0;
  min-width:0;
  width:100%;
  overflow-y:auto;
  overflow-x:hidden;
  padding-right:3px;
  scrollbar-width:thin;
  scrollbar-color:#5f7482 transparent;
  overscroll-behavior:contain;
}
.sidebar nav::-webkit-scrollbar{width:6px;height:0}
.sidebar nav::-webkit-scrollbar-track{background:transparent}
.sidebar nav::-webkit-scrollbar-thumb{background:#5f7482;border-radius:999px}
.sidebar nav::-webkit-scrollbar-thumb:hover{background:#7892a2}
/* v2.20.524 - EN RULLENDE LISTE MAA IKKE KLEMME SINE EGNE RAEKKER.
   `.sidebar nav` er en flex-kolonne, der ruller. Naar indholdet er hoejere end menuen -
   og det er det altid med 43 punkter - shrinker flexbox HVER raekke ned mod dens
   min-height. Et punkt med en etiket paa to linjer skal bruge 45 px og fik 30, saa den
   anden linje laa oven i punktet nedenunder. Maalt: 13 klemte punkter, 8 overlap.
   `flex:none` lader raekken beholde sin egen hoejde; menuen ruller i stedet. */
.sidebar nav>*{min-width:0;max-width:100%;flex:0 0 auto}
.sidebar .nav-item{max-width:100%;min-width:0}
.sidebar-bottom{flex:0 0 auto;min-width:0;overflow:hidden}

/* v1.51.7 – ITC Shell Database integration */
.itcshell-card{margin-top:18px;overflow:hidden}
.itcshell-head{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;margin-bottom:18px}
.itcshell-head h2{margin:4px 0 6px}.itcshell-head p{margin:0;max-width:850px;color:var(--muted)}
.integration-roadmap{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:14px 0 18px}
.integration-roadmap>div{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--soft)}
.integration-roadmap>div>strong{display:grid;place-items:center;min-width:26px;height:26px;border-radius:50%;background:var(--line);font-size:12px}
.integration-roadmap>div.done>strong{background:var(--teal);color:#fff}.integration-roadmap span{font-weight:700}.integration-roadmap small{display:block;font-weight:400;color:var(--muted);margin-top:2px}
.itcshell-form{margin:8px 0 4px}.itcshell-actions{margin:10px 0 12px;flex-wrap:wrap}
.itcshell-security-note{padding:11px 13px;border:1px solid var(--line);border-radius:10px;background:var(--soft);font-size:13px;line-height:1.45;margin:8px 0 14px}
.itcshell-discovery{border-top:1px solid var(--line);padding-top:14px;margin-top:12px}
.itcshell-domain-grid,.itcshell-match-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin-top:10px}
.itcshell-domain-grid>div,.itcshell-match-stats>div{padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--soft)}
.itcshell-domain-grid strong,.itcshell-match-stats strong{display:block;font-size:20px}.itcshell-domain-grid span,.itcshell-match-stats span{font-size:12px;color:var(--muted)}
.itcshell-match-stats .attention{border-color:#e3b24a;background:#fff8e8}
.itcshell-auto{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 14px;align-items:center;margin-top:14px;padding:12px;border:1px solid var(--line);border-radius:10px}
.itcshell-auto label{font-weight:700}.itcshell-auto small{grid-column:1/-1;color:var(--muted)}
@media(max-width:850px){.integration-roadmap{grid-template-columns:1fr 1fr}.itcshell-head{display:block}.itcshell-head>.pill{margin-top:10px}.itcshell-auto{grid-template-columns:1fr}.itcshell-auto small{grid-column:auto}}
@media(max-width:520px){.integration-roadmap{grid-template-columns:1fr}}
/* v2.0.2 – Azure drift-table safety analysis */
.itcshell-table-analysis{margin-top:16px;border-top:1px solid var(--line);padding-top:14px}
.itcshell-table-analysis table{font-size:12px}
.itcshell-table-analysis td{vertical-align:top}
.itcshell-table-analysis details{margin-top:5px;max-width:420px}
.itcshell-table-analysis summary{cursor:pointer;color:var(--accent);font-weight:700}
.itcshell-table-analysis pre{max-height:220px;overflow:auto;white-space:pre-wrap;font-size:11px;margin-top:6px}
.itcshell-table-analysis .warning{border-color:#e3b24a;background:#fff8e8}
.itcshell-mapping-editor{margin-top:10px;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--soft)}
.itcshell-mapping-editor .three-col{grid-template-columns:repeat(3,minmax(150px,1fr));gap:8px;margin-top:8px}
.itcshell-mapping-editor label{font-size:11px;font-weight:700;color:var(--muted)}
.itcshell-mapping-editor select{display:block;width:100%;margin-top:3px}
@media(max-width:900px){.itcshell-mapping-editor .three-col{grid-template-columns:1fr}}

/* v2.0.3 – customer infrastructure VM drill-down */
.customer-infra-details{margin:14px 0 0;border-top:1px solid var(--line,#dfe7ec);padding-top:12px}
.customer-infra-details>summary{cursor:pointer;font-weight:700;color:var(--accent,#0b7f96);list-style:none;display:inline-flex;align-items:center;gap:7px}
.customer-infra-details>summary::-webkit-details-marker{display:none}
.customer-infra-details>summary:before{content:'▸';font-size:12px;transition:transform .15s ease}
.customer-infra-details[open]>summary:before{transform:rotate(90deg)}
.customer-infra-details .table-wrap{margin-top:10px;max-height:420px;overflow:auto}

/* v2.0.7 – bulk VMM cloud mapping */
.modal-itc-vmm-bulk{width:min(1280px,97vw);max-height:94vh}.itc-vmm-bulk-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding-right:42px;margin-bottom:16px}.itc-vmm-bulk-head h2{margin:3px 0 6px}.itc-vmm-bulk-head p{margin:0;color:var(--muted)}.itc-vmm-bulk-table{max-height:62vh}.itc-vmm-bulk-table td:nth-child(1){white-space:normal;min-width:260px}.itc-vmm-bulk-table td:nth-child(3){min-width:360px}.permission-check.compact{display:inline-flex;padding:6px 9px;white-space:nowrap}.permission-check.compact input{min-height:0;width:auto;margin:0}.modal-itc-vmm-bulk .sticky-actions{display:flex;align-items:center;gap:8px;bottom:-28px}
@media(max-width:760px){.modal-itc-vmm-bulk{width:100vw!important;max-height:100dvh!important}.itc-vmm-bulk-head{display:block;padding-right:36px}.itc-vmm-bulk-table td:nth-child(3){min-width:260px}}

/* v2.1.0 – fakturering: faste kolonner, kladdevisning og målingshistorik */
.billing-source-table-wrap{overflow-x:auto}
/* v2.20.632 - FOLDNINGEN, ANDEN UDGAVE.

   v2.20.632 lagde en ekstra raekke oven paa den brede og spaendte alle ni kolonner
   med colspan. Tabelhovedet beskrev saa kolonner, der ikke laa under det, og
   linjen brugte en tredjedel af bredden.

   Nu er der ÉN raekke. Foldet ind skjules KUN smaateksten - maalemetode,
   prisgrundlag, betalingsfrekvens - saa hver celle viser sin foerste vaerdi under
   sin egen overskrift. Enheden i maengdecellen ligger inde i
   `.license-quantity-inline` og overlever derfor af sig selv.

   Kun tokens. */
.billing-source-table tbody tr[data-raekke630]>td{cursor:pointer}
.billing-source-table tbody tr[data-raekke630]:hover>td{background:var(--c-surface-2)}
.billing-source-table tbody tr[data-raekke630].aaben631>td{background:var(--c-surface-2)}
/* Foldet ind: alt det, der goer raekken fem linjer hoej, forsvinder. */
.billing-source-table tbody tr[data-raekke630]:not(.aaben631) td>small,
.billing-source-table tbody tr[data-raekke630]:not(.aaben631) td>br,
.billing-source-table tbody tr[data-raekke630]:not(.aaben631) .billing-price-master>small,
.billing-source-table tbody tr[data-raekke630]:not(.aaben631) .billing-also-price-lock>small,
.billing-source-table tbody tr[data-raekke630]:not(.aaben631) .billing-cadence-note,
.billing-source-table tbody tr[data-raekke630]:not(.aaben631) .billing-source-quantity,
.billing-source-table tbody tr[data-raekke630]:not(.aaben631) .billing-allocation-from{display:none}
/* v2.20.641 - prisredigeringen (Kundepris / Rabat / Gem) foldes med. Maalt foer paa
   fem manuelle linjer: 137 px pr. raekke, editoren synlig i alle fem, og
   «Mangler produktmatch» paa to linjer - den sidste er med vilje: en maerkat paa 140 px
   i en kolonne paa 130 kan ikke staa paa én linje uden at stikke ud (proevet med nowrap:
   teksten loeb ud over maerkatens egen baggrund). Foldet ind: tal + note i stedet for
   editoren. */
.billing-kundepris-vis641{display:none}
/* !important: `.billing-source-table .billing-inline-price{display:grid!important}` staar
   to gange laengere nede (kolonnegaelden fra .633), og uden det taber folderegel. */
.billing-source-table tbody tr[data-raekke630]:not(.aaben631) .billing-inline-price{display:none!important}
.billing-source-table tbody tr[data-raekke630]:not(.aaben631) .billing-kundepris-vis641{display:flex;flex-direction:column;align-items:stretch;text-align:right}
.billing-source-table tbody tr[data-raekke630]:not(.aaben631) .billing-kundepris-vis641>small{display:none}
/* Maerkaten under maengden («Manuel», «ALSO») er et kildemaerke, ikke et tal: foldet ind
   skjules den, som navnets maerkater allerede bliver det (.632). */
.billing-source-table tbody tr[data-raekke630]:not(.aaben631) .billing-col-qty .pill{display:none}
/* v2.20.642 - «det her kan vel ogsaa goeres paenere?» Infrastruktur og backup, maalt
   i 1440 px paa ni linjer: 78-86 px pr. raekke, prisen 33-58 px under raekkens top
   (maengden stod 8 px nede) - fordi maerkaten stod OVER prisen og selv braekkede til
   «Mangler / produktmatc / h». Foldet ind er reglen nu:

     · prisen staar paa foerste linje, ud for de andre tal
     · en groen maerkat (ALSO, Produkter) er en bekraeftelse og foldes vaek
     · en gul er en advarsel og bliver - kort, paa én linje, under prisen
     · optaellingen af advarslerne staar ved sektionens overskrift

   Foldet ud er alt, som det var. */
.billing-kort642{display:none}
/* I tabellen er det den korte maerkat, der staar - ogsaa foldet ud. Den lange
   («Mangler produktmatch», ~140 px) braekkede i 1440 px midt i ordet til
   «produktmatc / h» i en kolonne paa 90 px, foldet ud som foldet ind. Den fulde
   tekst staar i maerkatens title og i forklaringen under prisen. */
.billing-source-table .billing-kort642{display:inline-flex;white-space:nowrap!important;overflow-wrap:normal!important;margin-top:2px;align-self:flex-end}
.billing-source-table .billing-price-master-main>.pill.amber,.billing-source-table .billing-lang642{display:none!important}
.billing-source-table .billing-col-economic .billing-kort642{align-self:auto;margin-top:0}
/* Foldet ind foldes ogsaa de groenne vaek (ALSO, Produkter): en bekraeftelse, ikke en advarsel. */
.billing-source-table tbody tr[data-raekke630]:not(.aaben631) .billing-price-master-main>.pill{display:none!important}
/* Prisredigeringen foldet ud: under hinanden, ikke ved siden af. Kolonnen er 90-160 px
   inde i, og «Kundepris» + «Rabat» ved siden af hinanden gav «K/U/N/D/E/P/R/I/S», ét
   bogstav pr. linje, i 1440 px. Den stablede udgave stod der allerede - men kun under
   900 px. */
.billing-source-table td.billing-col-customer-price .billing-inline-price{grid-template-columns:minmax(0,1fr)!important;grid-template-areas:"price" "discount" "save"!important;gap:6px!important}
.billing-source-table td.billing-col-customer-price .billing-inline-price>label:nth-of-type(2){width:auto!important;max-width:none!important}
.billing-source-table td.billing-col-customer-price .billing-inline-price>.billing-save-inline-price{justify-self:stretch!important;width:100%!important;max-width:none!important}
.billing-advarsler642{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.billing-advarsler642 .pill{white-space:nowrap}
/* Faktureres: vaelgeren fylder sin kolonne og ikke mere, i knappernes hoejde.
   Selectoren er en tak mere specifik end noedvendigt: to regler laengere nede saetter
   width:88px!important og height:40px!important med (0,2,0) - og samme vaegt taber til
   den, der staar sidst. Maalt: foerste forsoeg havde ingen virkning. */
.billing-source-table td.billing-col-billable .billing-billable-select{width:100%!important;min-width:0!important;max-width:84px;height:31px!important;min-height:0!important;padding:3px 22px 3px 9px!important;margin:0}
.billing-source-table th:nth-child(6),.billing-source-table td.billing-col-billable{padding-left:6px!important;padding-right:6px!important}
/* Foldet ind: ingen celle kraever 44 px (.389's min-height paa prisbeholderne var til
   to linjer, der nu er foldet vaek), og knapper og vaelger flugter med tallenes foerste
   linje i stedet for at staa 5 px lavere. Maalt: tekstens midte 18 px, kontrollernes 23. */
.billing-source-table tbody tr[data-raekke630]:not(.aaben631) .billing-price-master,
.billing-source-table tbody tr[data-raekke630]:not(.aaben631) .billing-also-price-lock{min-height:0!important}
/* Og en advarselsraekke maa ikke vaere dobbelt saa hoej som sine naboer: prisraekkens
   min-height (24 px) og opkraevningens line-height (24 px) var til de udfoldede
   raekker. Foldet ind er en linje en linje. */
.billing-source-table tbody tr[data-raekke630]:not(.aaben631) .billing-price-master-main{min-height:0!important}
.billing-source-table tbody tr[data-raekke630]:not(.aaben631) .billing-col-total strong{min-height:0!important;line-height:inherit!important}
.billing-source-table tbody tr[data-raekke630]:not(.aaben631) .billing-kort642{padding-top:1px;padding-bottom:1px;line-height:16px}
.billing-source-table tbody tr[data-raekke630]:not(.aaben631) td.billing-col-billable .billing-billable-select,
.billing-source-table tbody tr[data-raekke630]:not(.aaben631) .billing-col-actions .btn{margin-top:-5px!important}
/* Handling: to smaa knapper paa én linje. */
.billing-source-table .billing-col-actions .billing-actions{display:flex;flex-wrap:nowrap;gap:6px;justify-content:flex-end}
.billing-source-table .billing-col-actions .btn{padding-left:9px!important;padding-right:9px!important;white-space:nowrap!important}
/* Huset bruger !important paa cellernes padding seks steder. Foldet ind skal
   den vaere mindre, og uden !important taber reglen mod dem. */
.billing-source-table tbody tr[data-raekke630]:not(.aaben631)>td{padding-top:8px!important;padding-bottom:8px!important}
.billing-source-table tbody tr[data-raekke630]:not(.aaben631) .billing-billable-select{padding-top:3px;padding-bottom:3px;height:auto}
/* v2.20.632 - «nogle af linierne skubber».

   Maalt: en raekke med et langt produktnavn var 71 px, naboerne 61. Navnet
   ombroed til to linjer, og saa skubbede raekken. Foldet ind er navnet derfor ÉN
   linje med punktummer i enden; foldet ud ombryder det som foer.

   Det er navnets KNAP, der beskaeres - ikke cellen. Satte man `display:flex`
   eller `block` paa en <td>, ville den forlade tabellayoutet, og saa stabler
   kolonnerne sig oven paa hinanden. Det var praecis fejlen i v2.20.632. */
.billing-source-table tbody tr[data-raekke630]:not(.aaben631) .billing-col-service .link-button,
.billing-source-table tbody tr[data-raekke630]:not(.aaben631) .billing-col-service>strong{
  display:inline-block;max-width:calc(100% - 32px);overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap!important;vertical-align:middle;text-align:left}
/* Maerkaterne efter navnet - «Produktfordeling», «Leveret igen» - ville ogsaa
   kunne skubbe. Foldet ind staar de i detaljen. */
.billing-source-table tbody tr[data-raekke630]:not(.aaben631) .billing-col-service>.pill{display:none}
/* v2.20.633 - «kan alt ikke stå korrekt over hinanden?»

   Maalt med getComputedStyle, kolonne for kolonne. Tre steder var overskriften og
   cellen UENIGE, og GRUNDPRIS var venstrestillet, mens de tre andre talkolonner
   var hoejre:

     2 Maengde     th=right  td=left
     3 Grundpris   th=left   td=left
     4 Kundepris   th=right  td=left
     5 Opkraevning th=right  td=right   <- den eneste, der var i orden
     9 Handling    th=left   td=right

   Nu er alle fire talkolonner hoejrestillede i baade hoved og celle, saa «kr.»
   staar i én lodret linje hele vejen ned. */
.billing-source-table th:nth-child(3),
.billing-source-table th:nth-child(9),
.billing-source-table .billing-col-qty,
.billing-source-table .billing-col-price-master,
.billing-source-table .billing-col-customer-price{text-align:right}
/* Prismaerket foer tallet, ikke efter. Stod det efter, ville «kr.» rykke sig med
   maerkatets bredde fra kilde til kilde - og saa flugter kolonnen ikke alligevel. */
.billing-source-table .billing-price-master-main{justify-content:flex-end!important}
.billing-source-table .billing-price-master-main>.pill{order:-1}
/* Og det var HER, det gik galt i foerste forsoeg: de to beholdere er
   kolonne-flex med `align-items:flex-start`, saa deres boern er praecis saa brede
   som deres indhold og pakket mod venstre. `justify-content:flex-end` paa
   pris-raekken havde dermed ingen plads at rykke sig ud i, og `text-align:right`
   paa en flex-vare uden overskydende bredde goer heller ingenting.
   `stretch` giver boernene cellens fulde bredde - foerst DA kan de hoejrestilles. */
.billing-source-table .billing-price-master,
.billing-source-table .billing-also-price-lock{text-align:right;align-items:stretch}
/* Overskriften stod 1 px ved siden af tallet under sig. Grunden: cellernes
   vandrette padding saettes paa linje 1391 (`tbody td` → 10px) og overskriftens
   paa linje 1340 (`th,td` → 9px). Ingen af dem er forkerte hver for sig; de er
   bare ikke ens. Her stilles overskriften efter cellen, saa hoejrekanten er den
   samme. (Husets padding saettes seks steder med !important - det er en
   oprydning for sig, ikke en, der skal ske inde i en rettelse af tal.) */
.billing-source-table thead th{padding-left:10px!important;padding-right:10px!important}
/* Maengden: tallet hoejrestillet i sin egen boks og enheden i en fast boks efter
   det. Ellers flugter «61 GB» ikke med «2 stk.», fordi enhederne er lige brede. */
.billing-source-table .license-quantity-inline{white-space:nowrap}
.billing-source-table .license-quantity-inline>small{display:inline-block;min-width:3.4ch;
  text-align:left;margin-left:3px}
/* Pilen foran ydelsens navn. */
.fold630{flex:0 0 auto;width:20px;height:20px;display:inline-flex;align-items:center;
  justify-content:center;border:1px solid var(--c-line-control);border-radius:5px;
  background:var(--c-surface);color:var(--c-ink-3);font-size:13px;line-height:1;
  cursor:pointer;padding:0;margin-right:8px;vertical-align:middle}
.fold630 span{display:block;transition:transform .12s ease}
.fold630[aria-expanded="true"] span{transform:rotate(90deg)}
.fold630:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px}
/* En linje, der IKKE faktureres, er undtagelsen blandt 33, der goer. Den skal
   kunne ses i et scroll - ogsaa uden farvesyn, derfor en kant og ikke kun en tone.
   v2.20.647 - men kanten var ROED, og roed betyder fejl. En fravalgt linje er ikke
   en fejl. Graa nu; gul er til de linjer, der faktureres og har et problem. */
.billing-source-table tbody tr.billing-not-billable>td:first-child{
  box-shadow:inset 3px 0 0 var(--c-line-strong)}
.fold-alle629{gap:6px}
/* Paa print er alt foldet ud: et papir kan ikke klikkes. */
@media print{.billing-source-table tbody tr[data-raekke630]:not(.aaben631) td>small,
  .billing-source-table tbody tr[data-raekke630]:not(.aaben631) td>br,
  .billing-source-table tbody tr[data-raekke630]:not(.aaben631) .billing-price-master>small,
  .billing-source-table tbody tr[data-raekke630]:not(.aaben631) .billing-also-price-lock>small,
  .billing-source-table tbody tr[data-raekke630]:not(.aaben631) .billing-cadence-note{display:revert}
  .fold630{display:none}}
.billing-source-table{table-layout:fixed;min-width:1260px}
.billing-source-table .billing-w-service{width:26%}.billing-source-table .billing-w-qty{width:9%}.billing-source-table .billing-w-measure{width:11%}.billing-source-table .billing-w-money{width:10%}.billing-source-table .billing-w-discount{width:7%}.billing-source-table .billing-w-total{width:11%}.billing-source-table .billing-w-group{width:11%}.billing-source-table .billing-w-economic{width:10%}.billing-source-table .billing-w-actions{width:105px}
.billing-source-table th,.billing-source-table td{vertical-align:middle}.billing-source-table .num-cell,.billing-draft-lines .num-cell{text-align:right;font-variant-numeric:tabular-nums}.billing-source-table th:nth-child(2),.billing-source-table th:nth-child(4),.billing-source-table th:nth-child(5),.billing-source-table th:nth-child(6){text-align:right}.billing-col-service{white-space:normal;min-width:260px}.billing-col-measure,.billing-col-group,.billing-col-economic{white-space:normal}.billing-col-actions{text-align:right}.billing-actions{display:flex;gap:6px;justify-content:flex-end;align-items:center;flex-wrap:wrap}
.modal-card:has(.billing-history-modal),.modal-card:has(.billing-draft-preview){width:min(1080px,96vw)}
.billing-history-warning{margin:12px 0}.billing-history-warning p{margin:4px 0 0}
.modal-title-row{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px}.modal-title-row h2{margin:4px 0 3px}.modal-title-row p{margin:0;color:var(--muted)}
.billing-history-ranges{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.billing-history-chart-wrap{position:relative;border:1px solid var(--border);border-radius:12px;background:#fbfcfd;padding:8px;overflow:hidden}.billing-history-chart{width:100%;height:auto;display:block}.chart-axis{stroke:#cad6dc;stroke-width:1}.chart-line{stroke:var(--accent2);stroke-width:3;stroke-linejoin:round;stroke-linecap:round}.billing-history-point{fill:#fff;stroke:var(--accent2);stroke-width:2;cursor:crosshair}.billing-history-point:hover{fill:var(--accent2)}.chart-label{font-size:11px;fill:#6c7b84}.billing-chart-tooltip{position:absolute;z-index:2;pointer-events:none;background:#102536;color:#fff;border-radius:8px;padding:7px 9px;box-shadow:0 7px 20px #0003;min-width:125px}.billing-chart-tooltip strong,.billing-chart-tooltip span{display:block}.billing-chart-tooltip span{font-size:11px;color:#c7d6df;margin-top:2px}.billing-history-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:12px}.billing-history-summary span{border:1px solid var(--border);background:#f7f9fa;border-radius:10px;padding:11px}.billing-history-summary small,.billing-history-summary strong{display:block}.billing-history-summary small{color:var(--muted);font-size:var(--t-5);text-transform:uppercase;letter-spacing:.4px}.billing-history-summary strong{margin-top:4px;font-size:15px}
.billing-draft-lines{min-width:760px}.billing-draft-lines tfoot td{background:#f7f9fa;border-top:2px solid var(--border)}
@media(max-width:800px){.billing-history-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.modal-title-row{flex-direction:column}.billing-history-ranges{justify-content:flex-start}}


/* v2.20.9 – compact customer billing/license tables + clear estimate spacing */
.billing-hero,.billing-cockpit-hero{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:24px;align-items:start}
.billing-hero-total{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:5px;min-width:220px;padding:2px 0 0}
.billing-hero-total small{display:block;color:var(--muted);font-size:var(--t-5);text-transform:uppercase;letter-spacing:.06em;font-weight:800;line-height:1.2}
.billing-hero-total strong{display:block;font-size:22px;line-height:1.2;color:#17394a;font-variant-numeric:tabular-nums;white-space:nowrap}
.billing-hero-total span{display:block;color:var(--muted);font-size:11px;line-height:1.2}
@media (min-width:1201px){
 .billing-source-table-wrap,.customer-license-table-wrap{overflow-x:visible}
 .billing-source-table{width:100%;min-width:0!important;table-layout:fixed}
 .billing-source-table th,.billing-source-table td{padding:8px 7px;white-space:normal;vertical-align:middle}
 .billing-source-table .billing-w-service{width:28%}.billing-source-table .billing-w-qty{width:7%}.billing-source-table .billing-w-measure{width:9%}.billing-source-table .billing-w-money{width:9%}.billing-source-table .billing-w-discount{width:6%}.billing-source-table .billing-w-total{width:9%}.billing-source-table .billing-w-group{width:10%}.billing-source-table .billing-w-economic{width:14%}.billing-source-table .billing-w-actions{width:8%}
 .billing-source-table .num-cell,.billing-source-table .billing-col-actions{white-space:nowrap}
 .billing-source-table .billing-col-economic{overflow-wrap:anywhere;word-break:break-word;font-size:11px}
 .billing-source-table .billing-col-service{min-width:0;overflow-wrap:anywhere}
 .customer-license-table{width:100%;min-width:0!important;table-layout:fixed}
 .customer-license-table th,.customer-license-table td{padding:8px 7px;white-space:normal;vertical-align:middle}
 .customer-license-table th:nth-child(1){width:24%}.customer-license-table th:nth-child(2){width:8%}.customer-license-table th:nth-child(3){width:7%}.customer-license-table th:nth-child(4){width:18%}.customer-license-table th:nth-child(5),.customer-license-table th:nth-child(6),.customer-license-table th:nth-child(7){width:8%}.customer-license-table th:nth-child(8){width:6%}.customer-license-table th:nth-child(9){width:9%}.customer-license-table th:nth-child(10){width:4%}
 .customer-license-table td:nth-child(n+5):nth-child(-n+9){font-variant-numeric:tabular-nums}
 .customer-license-table td:first-child{overflow-wrap:anywhere}
}
@media (max-width:1200px){
 .billing-hero,.billing-cockpit-hero{grid-template-columns:1fr}
 .billing-hero-total{align-items:flex-start;min-width:0}
 .billing-source-table-wrap,.customer-license-table-wrap{overflow-x:auto}
 .billing-source-table{min-width:1080px}
 .customer-license-table{min-width:1080px}
}

/* v2.20.13 – compact license quantities and clickable ticket details */
.license-quantity-inline{display:inline-flex;align-items:baseline;gap:5px;white-space:nowrap}
.license-quantity-inline small{display:inline;font-size:.88em;color:var(--muted,#60717e)}
.customer-ticket-row{cursor:pointer}
.customer-ticket-row:hover{background:rgba(28,145,175,.055)}
.customer-ticket-row:focus{outline:2px solid rgba(24,145,180,.35);outline-offset:-2px}
.ticket-detail-modal{max-width:min(980px,92vw)}
.ticket-detail-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:14px 0}
.ticket-detail-summary>span,.ticket-source-card{border:1px solid var(--line,#dfe7eb);border-radius:12px;padding:12px;background:var(--surface,#fff)}
.ticket-source-card{margin:12px 0}
.ticket-source-card h4{margin:0 0 8px}
.ticket-description{white-space:normal;line-height:1.55;padding:12px;border-radius:10px;background:rgba(24,145,180,.055);margin-bottom:10px}
.ticket-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 14px;margin:0}
.ticket-detail-grid>div{min-width:0;border-top:1px solid var(--line,#e5ecef);padding-top:7px}
.ticket-detail-grid dt{font-size:var(--t-5);font-weight:700;color:var(--muted,#667985);word-break:break-word}
.ticket-detail-grid dd{margin:3px 0 0;word-break:break-word;white-space:pre-wrap}
@media(max-width:760px){.ticket-detail-summary,.ticket-detail-grid{grid-template-columns:1fr}}

/* v2.20.17 – visible, persistent billable state on customer billing lines */
.billing-source-table .billing-w-billable{width:78px}
.billing-col-billable{text-align:center;white-space:nowrap}
.billing-billable-pill{min-width:42px;justify-content:center}
.billing-source-table tr.billing-not-billable td{background:#fafbfc;color:#71808a}
.billing-source-table tr.billing-not-billable .billing-col-service .link-button{color:#607681}
@media (min-width:1201px){
 .billing-source-table .billing-w-service{width:25%}.billing-source-table .billing-w-qty{width:7%}.billing-source-table .billing-w-measure{width:9%}.billing-source-table .billing-w-money{width:8%}.billing-source-table .billing-w-discount{width:6%}.billing-source-table .billing-w-total{width:9%}.billing-source-table .billing-w-billable{width:6%}.billing-source-table .billing-w-group{width:9%}.billing-source-table .billing-w-economic{width:13%}.billing-source-table .billing-w-actions{width:8%}
}

/* v2.20.30 – product catalog pricing + customer price/discount overlay */
.billing-price-master{display:flex;flex-direction:column;gap:3px;align-items:flex-start;min-width:0}.billing-price-master strong{font-variant-numeric:tabular-nums}.billing-price-master small{line-height:1.25;color:var(--muted,#637684);overflow-wrap:anywhere}.billing-also-price-lock{display:flex;flex-direction:column;gap:3px;align-items:flex-start}.billing-also-price-lock small{color:var(--muted,#637684)}
.billing-inline-price{display:grid;grid-template-columns:minmax(82px,1fr) auto minmax(72px,.8fr) auto;gap:5px;align-items:end;min-width:0}.billing-inline-price label{display:flex;flex-direction:column;gap:3px;min-width:0;font-size:11px;color:var(--muted,#637684)}.billing-inline-price input{width:100%;min-width:0;padding:7px 8px;font-variant-numeric:tabular-nums}.billing-inline-or{font-size:var(--t-5);color:var(--muted,#637684);padding-bottom:9px}.billing-inline-discount-wrap{display:flex;align-items:center;gap:3px}.billing-inline-discount-wrap em{font-style:normal;color:var(--muted,#637684)}.billing-save-inline-price{white-space:nowrap}
.billing-source-table .billing-w-service{width:20%}.billing-source-table .billing-w-qty{width:11%}.billing-source-table .billing-w-price-master{width:14%}.billing-source-table .billing-w-customer-price{width:22%}.billing-source-table .billing-w-total{width:9%}.billing-source-table .billing-w-billable{width:6%}.billing-source-table .billing-w-group{width:8%}.billing-source-table .billing-w-economic{width:7%}.billing-source-table .billing-w-actions{width:70px}.billing-col-price-master,.billing-col-customer-price{white-space:normal}.billing-col-qty{white-space:normal}
@media (min-width:1400px){.billing-source-table{min-width:0!important;width:100%;table-layout:fixed}.billing-source-table-wrap{overflow-x:visible}}
@media (max-width:1050px){.billing-source-table{min-width:1180px}.billing-inline-price{grid-template-columns:85px auto 75px auto}}

/* v2.20.30 network workspace */
.row-muted{opacity:.62;background:#f8fafb}.customer-network-metrics{margin:0 0 14px}

/* v2.20.34 – long customer product/service/license names must stay left-aligned.
   Admin rows use a real <button> for history drill-down; user-agent button styles
   otherwise center wrapped text, which made long NCE, Veeam and firewall names
   look inconsistent. Keep the control semantics while rendering it like normal
   left-aligned table text. */
.billing-source-table .billing-col-service .link-button{
 text-align:left;
 display:inline;
 max-width:100%;
 line-height:1.28;
 vertical-align:top;
 overflow-wrap:break-word;
 word-break:normal;
}

/* v2.20.37 – full-screen ITC Shell analysis/details without horizontal scrolling */
.itcshell-card{overflow:visible}
.itcshell-table-analysis details.itcshell-analysis-detail{max-width:none;width:100%}
.itcshell-table-analysis details.itcshell-analysis-detail[open]{
  position:fixed;
  inset:8px;
  z-index:140;
  width:auto;
  max-width:none;
  margin:0;
  padding:18px 20px 22px;
  overflow:auto;
  background:#fff;
  border:1px solid var(--border);
  border-radius:16px;
  box-shadow:0 28px 90px rgba(16,38,54,.32);
}
.itcshell-table-analysis details.itcshell-analysis-detail[open]>summary{
  position:sticky;
  top:-18px;
  z-index:8;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  margin:0 -20px 14px;
  padding:15px 20px;
  background:#fff;
  border-bottom:1px solid var(--border);
  font-size:16px;
}
.itcshell-table-analysis details.itcshell-analysis-detail[open]>summary::after{
  content:'× Luk';
  flex:none;
  color:var(--muted);
  font-size:13px;
  font-weight:700;
}
.itcshell-analysis-detail[open]>.muted{display:block;white-space:normal;overflow-wrap:anywhere;margin-bottom:8px}
.itcshell-analysis-detail[open] pre{width:100%;max-width:100%;max-height:32vh;white-space:pre-wrap;overflow:auto;overflow-wrap:anywhere}
.itcshell-analysis-detail[open] .itcshell-mapping-editor,
.itcshell-analysis-detail[open] .itcshell-reference-editor,
.itcshell-analysis-detail[open] .itcshell-handled-detail{width:100%;max-width:none}
.itcshell-analysis-detail[open] .itcshell-reference-editor .table-wrap,
.itcshell-analysis-detail[open] .itcshell-handled-detail .table-wrap{width:100%;max-width:100%;overflow-x:hidden}
.itcshell-analysis-detail[open] .itcshell-reference-editor table,
.itcshell-analysis-detail[open] .itcshell-handled-detail table{width:100%;min-width:0!important;table-layout:fixed}
.itcshell-analysis-detail[open] .itcshell-reference-editor th,
.itcshell-analysis-detail[open] .itcshell-reference-editor td,
.itcshell-analysis-detail[open] .itcshell-handled-detail th,
.itcshell-analysis-detail[open] .itcshell-handled-detail td{white-space:normal;overflow-wrap:anywhere;word-break:break-word}
.itcshell-analysis-detail[open] .itcshell-reference-editor code,
.itcshell-analysis-detail[open] .itcshell-handled-detail code{white-space:normal;overflow-wrap:anywhere;word-break:break-word}
.itcshell-analysis-detail[open] .itcshell-reference-editor input{min-width:0;width:100%}
.itcshell-handled-detail>summary{margin-top:10px}

/* Full-screen bulk customer/reference matching on desktop as well. */
.modal-card.modal-itc-vmm-bulk{
  width:calc(100vw - 16px)!important;
  max-width:none!important;
  height:calc(100vh - 16px);
  max-height:none!important;
  border-radius:14px;
}
.modal-itc-vmm-bulk .itc-vmm-bulk-table{max-height:calc(100vh - 245px);overflow-x:hidden}
.modal-itc-vmm-bulk .itc-vmm-bulk-table table{width:100%;min-width:0!important;table-layout:fixed}
.modal-itc-vmm-bulk .itc-vmm-bulk-table th,
.modal-itc-vmm-bulk .itc-vmm-bulk-table td{white-space:normal;overflow-wrap:anywhere;word-break:break-word}
.modal-itc-vmm-bulk .itc-vmm-bulk-table code{white-space:normal;overflow-wrap:anywhere;word-break:break-word}
.modal-itc-vmm-bulk .itc-vmm-bulk-table td:nth-child(1){min-width:0;width:12%}
.modal-itc-vmm-bulk .itc-vmm-bulk-table td:nth-child(2){min-width:0;width:32%}
.modal-itc-vmm-bulk .itc-vmm-bulk-table td:nth-child(3){min-width:0;width:8%}
.modal-itc-vmm-bulk .itc-vmm-bulk-table td:nth-child(4){min-width:0;width:38%}
.modal-itc-vmm-bulk .itc-vmm-bulk-table td:nth-child(5){min-width:0;width:10%}
@media(max-width:760px){
  .itcshell-table-analysis details.itcshell-analysis-detail[open]{inset:0;border-radius:0;padding:14px}
  .itcshell-table-analysis details.itcshell-analysis-detail[open]>summary{top:-14px;margin:0 -14px 12px;padding:14px}
  .modal-card.modal-itc-vmm-bulk{width:100vw!important;height:100dvh;max-height:100dvh!important;border-radius:0}
}


/* v2.20.38 – Admin ALSO Reserved Instances overview */
.also-ri-panel{margin:18px 0;padding:18px;border:1px solid var(--border,#d9e3e8);border-radius:16px;background:#fbfdfe}
.also-ri-panel .section-head{align-items:flex-start;gap:16px}
.also-ri-panel .button-row{flex-wrap:wrap;justify-content:flex-end}
.also-ri-metrics{margin:14px 0}
.also-ri-toolbar{margin:12px 0;display:grid;grid-template-columns:minmax(260px,1fr) minmax(170px,240px);gap:10px}
.also-ri-table-wrap{width:100%;overflow:visible}
.also-ri-table{width:100%;table-layout:fixed;border-collapse:collapse}
.also-ri-table th,.also-ri-table td{white-space:normal!important;overflow-wrap:anywhere;word-break:normal;vertical-align:top}
.also-ri-table th:nth-child(1){width:16%}.also-ri-table th:nth-child(2){width:22%}.also-ri-table th:nth-child(3){width:7%}.also-ri-table th:nth-child(4){width:16%}.also-ri-table th:nth-child(5){width:8%}.also-ri-table th:nth-child(6){width:11%}.also-ri-table th:nth-child(7){width:20%}
.also-ri-signal{margin:0 0 7px}.also-ri-signal strong,.also-ri-signal small{display:block}.also-ri-signal code{font-size:.9em}
@media(max-width:900px){.also-ri-toolbar{grid-template-columns:1fr}.also-ri-table{table-layout:auto}.also-ri-table-wrap{overflow-x:auto}.also-ri-table{min-width:900px}}


/* v2.20.42 – full-screen UniFi CID preview */
.modal-card.integration-analysis-modal{
  width:calc(100vw - 16px)!important;
  max-width:none!important;
  height:calc(100vh - 16px);
  max-height:none!important;
  border-radius:14px;
}
.integration-analysis-modal .integration-analysis-full{min-width:0}
.integration-analysis-modal .table-wrap{width:100%;max-width:100%;overflow-x:hidden}
.integration-analysis-modal table{width:100%;min-width:0!important;table-layout:fixed}
.integration-analysis-modal th,.integration-analysis-modal td{white-space:normal;overflow-wrap:anywhere;word-break:break-word}
@media(max-width:760px){.modal-card.integration-analysis-modal{width:100vw!important;height:100dvh;max-height:100dvh!important;border-radius:0}}

/* ShellV2.0 v2.20.53 – clickable UniFi site detail */
.network-site-link{padding:0;border:0;background:transparent;color:var(--primary,#187aa5);cursor:pointer;text-align:left;font:inherit;text-decoration:underline;text-underline-offset:2px}
.network-site-link:hover{filter:brightness(.85)}
.network-site-detail-panel{margin-top:14px;padding:18px;border:1px solid var(--border,#d9e4ea);border-radius:14px;background:var(--card,#fff);box-shadow:0 8px 24px rgba(15,42,56,.06)}
.network-site-detail-panel[hidden]{display:none!important}
.network-site-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:12px}
.network-site-detail-head h3{margin:2px 0 4px}
.network-site-facts{margin:0 0 14px}
.network-site-facts dd .pill{vertical-align:middle}
@media (max-width:760px){.network-site-detail-head{flex-direction:column}.network-site-detail-head .btn{align-self:flex-start}}

/* v2.20.54 – calmer integrations + inline UniFi reported count */
.network-reported-inline{display:inline-flex;align-items:baseline;gap:.38rem;white-space:nowrap}
.network-reported-inline strong{font-size:1em}
.network-reported-inline small{display:inline;margin:0;color:var(--muted,#64748b)}

.integration-friendly-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start;margin-top:16px}
.integration-fold{border:1px solid rgba(148,163,184,.28);border-radius:14px;background:var(--card,#fff);box-shadow:0 1px 2px rgba(15,23,42,.04);overflow:hidden;min-width:0}
.integration-fold>summary{list-style:none;cursor:pointer;padding:16px 18px;display:flex;align-items:center;justify-content:space-between;gap:14px;user-select:none}
.integration-fold>summary::-webkit-details-marker{display:none}
.integration-fold-summary-main{display:flex;align-items:center;gap:12px;min-width:0}
.integration-fold-icon{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:rgba(14,165,233,.09);font-size:18px;flex:0 0 auto}
.integration-fold-title{min-width:0}
.integration-fold-title strong{display:block;font-size:15px;color:var(--text,#0f172a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.integration-fold-title small{display:block;margin-top:2px;color:var(--muted,#64748b);font-size:12px}
.integration-fold-state{display:flex;align-items:center;gap:10px;flex:0 0 auto}
.integration-fold-chevron{font-size:15px;transition:transform .18s ease;color:var(--muted,#64748b)}
.integration-fold[open] .integration-fold-chevron{transform:rotate(180deg)}
.integration-fold>.itcshell-card{margin:0;border:0;border-top:1px solid rgba(148,163,184,.2);border-radius:0;box-shadow:none}
.integration-fold>.itcshell-card>.itcshell-head{display:none}
.integration-fold>.itcshell-card{padding-top:18px}
@media(max-width:1050px){.integration-friendly-grid{grid-template-columns:1fr}}

/* v2.20.55 – unified integration cards + customer network subareas */
.integration-friendly-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start;margin-top:14px}
/* v2.20.492 - «naar jeg folder sophos ud, saa staar de andre underligt».
   Kortene ligger i to spalter. Folder man ét ud, bliver HELE raekken lige saa hoej som
   det aabne kort, mens naboen bliver staaende oeverst - og efterlader et tomt felt paa
   halvdelen af skaermen. Et aabent kort faar derfor hele bredden og sin egen raekke.
   Det loeser to ting paa én gang: hullet forsvinder, og analysens brede tabeller faar
   den plads, de hele tiden har manglet. */
.integration-friendly-grid>.integration-fold[open]{grid-column:1/-1}
/* v2.20.494 - «kan du stoppe med at lave ting saa bredde at der skal scrolles vandret???»
   Ja. Den globale regel er `th,td{white-space:nowrap}`, og den er rigtig for tal - men
   ikke for et produktnavn som «Sophos MDR Complete - MSP Monthly - NordicsEUR - User»
   eller for en celle med et soegefelt og to knapper. De skubbede tabellen ud over kortet.
   Her maa teksten bryde, og koblingstabellen faar en fast fordeling, saa den aldrig kan
   blive bredere end det, den staar i. */
.sophos-wrap494 th{white-space:normal;word-break:break-word;min-width:92px}
.sophos-wrap494 td{white-space:normal}
/* v2.20.540 - summen af en kundes Sophos-konti. Det er DEN raekke, der svarer til
   partnerportalens tal, saa den skal kunne skelnes fra de konti, den er lagt sammen af.
   Baggrunden staar paa td'en: `html:root tbody tr:nth-child(even) td` i design-b.css
   vejer det samme som en klasseregel, saa en tr-baggrund forsvandt paa hver anden raekke
   (v2.20.533 og v2.20.539 - samme fejl, tredje gang). */
.sophos-wrap494 tbody tr.sophos-sum540 td{background:var(--c-accent-soft);font-weight:600;border-top:2px solid var(--c-line-strong,var(--c-line))}
/* v2.20.541 - raekken, hvor maskiner og licenser er uenige. Baggrunden paa td'en, ikke paa
   tr'en: den generelle regel fra v2.20.540 maaler netop det, og den ville fange mig her. */
.sophos-wrap494 tbody tr.sophos-afvig541 td,.sophos-kontrol541 tbody tr.sophos-afvig541 td{background:var(--c-crit-soft)}
.sophos-kontrol541{table-layout:auto}
.sophos-kontrol541 td,.sophos-kontrol541 th{white-space:normal}
.sophos-link-table494{table-layout:fixed;width:100%}
.sophos-link-table494 th,.sophos-link-table494 td{white-space:normal;word-break:break-word}
.sophos-link-table494 th:nth-child(4),.sophos-link-table494 td:nth-child(4){width:46%}
.sophos-link-cell494{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.sophos-link-cell494 input{margin-top:0;min-width:0;flex:1 1 170px}
/* v2.20.495 - Update Center. Femten kort med fjorten ens chips hver er 210 maerker,
   der alle siger det samme - og saa ser man ingen af dem. Ét kort er fremhaevet;
   resten er linjer i en tabel, man kan folde ud. Og `.update-rollback-list` havde
   slet ingen regel: rollback-punkterne laa oven paa hinanden uden luft. */
.update-disk495{gap:10px;align-items:center;white-space:nowrap}
.release-hero495{border-color:#bfe3e7;box-shadow:0 6px 18px rgba(23,121,132,.10)}
.release-checks495>summary{list-style:none;cursor:pointer;display:inline-flex}
.release-checks495>summary::-webkit-details-marker{display:none}
.release-checks495[open]>summary{margin-bottom:8px}
.release-others495{margin-top:14px;border-top:1px solid var(--border);padding-top:12px}
.release-others495>summary{cursor:pointer;color:var(--muted);font-weight:700}
.release-rows495{margin-top:10px;border:1px solid var(--border);border-radius:11px;overflow:hidden}
.release-row495{display:grid;grid-template-columns:minmax(0,2fr) 90px 110px minmax(0,auto);gap:12px;align-items:center;padding:10px 13px;border-bottom:1px solid #e9edef}
.release-row495:last-child{border-bottom:0}
.release-row-head495{background:#f7f9fa;font-size:var(--t-5);text-transform:uppercase;letter-spacing:.55px;color:#66757d;font-weight:800}
.release-row495.er-gammel495{background:#fbfcfc;color:var(--muted)}
.release-row495 .row-actions{justify-content:flex-end;gap:6px}
.update-rollback-list{display:grid;gap:12px}
@media(max-width:820px){.release-row495{grid-template-columns:1fr auto;row-gap:6px}.release-row-head495{display:none}}.integration-fold{border:1px solid #dbe5ea;border-radius:13px;background:#fff;overflow:hidden;min-width:0}.integration-fold>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 14px;min-height:64px}.integration-fold>summary::-webkit-details-marker{display:none}.integration-fold>summary:hover{background:#f8fbfc}.integration-fold-summary-main,.integration-fold-state{display:flex;align-items:center;gap:11px;min-width:0}.integration-fold-icon{width:34px;height:34px;border-radius:10px;background:#eef7fa;display:grid;place-items:center;color:#116d7c;font-weight:800;flex:0 0 auto}.integration-fold-title{display:flex;flex-direction:column;min-width:0}.integration-fold-title strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#173044}.integration-fold-title small{color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.integration-fold-chevron{font-size:16px;color:#6e8491;transition:transform .18s ease}.integration-fold[open] .integration-fold-chevron{transform:rotate(180deg)}.integration-fold>.card{border:0;border-top:1px solid #e4ecef;border-radius:0;margin:0;box-shadow:none}.integration-fold>.integration-card .integration-head{display:none}.integration-fold>.integration-card{padding-top:16px}.integration-grid:empty{display:none}.network-area-nav{display:flex;gap:8px;margin:16px 0 12px;border-bottom:1px solid #e3ebef;padding-bottom:10px}.network-area-nav .btn.active{background:#eaf6f8;border-color:#b7dfe5;color:#126d7a}.network-area-count{display:inline-flex;min-width:20px;height:20px;align-items:center;justify-content:center;border-radius:999px;background:#eef2f4;margin-left:4px;font-size:11px}.network-reported-inline{display:inline-flex;align-items:baseline;gap:5px;white-space:nowrap}.network-reported-inline small{display:inline!important;margin:0!important}.fortigate-card code{word-break:break-word}
@media(max-width:980px){.integration-friendly-grid{grid-template-columns:1fr}}@media(max-width:650px){.integration-fold>summary{align-items:flex-start}.integration-fold-state{flex-direction:column;align-items:flex-end}.network-area-nav{overflow:auto}}
/* v2.20.58 – billing-focused FortiGate detail */
.fortigate-billing-card{margin-top:14px;padding:14px;border:1px solid #dfe8ec;border-radius:12px;background:#fbfdfe}.fortigate-billing-card .card-header{margin-bottom:10px}.fortigate-billing-card h4{margin:0 0 3px}.fortigate-ip-list{margin-top:10px;display:flex;align-items:center;gap:7px;flex-wrap:wrap}.fortigate-ip-list code{padding:3px 6px;border-radius:6px;background:#eef3f5}


/* v2.20.68 – compact customer service register + persistent billable control */
.customer-agreements-wrap{overflow-x:visible}
.customer-agreements-table{width:100%;min-width:0;table-layout:fixed}
.customer-agreements-table .agreement-w-service{width:27%}
.customer-agreements-table .agreement-w-qty{width:10%}
.customer-agreements-table .agreement-w-measure{width:16%}
.customer-agreements-table .agreement-w-price{width:13%}
.customer-agreements-table .agreement-w-month{width:11%}
.customer-agreements-table .agreement-w-source{width:15%}
.customer-agreements-table .agreement-w-actions{width:8%}
.customer-agreements-table th,.customer-agreements-table td{padding:9px 8px;vertical-align:middle;white-space:normal;overflow-wrap:anywhere}
.customer-agreements-table .agreement-col-qty,.customer-agreements-table .agreement-col-month{white-space:nowrap}
.customer-agreements-table .agreement-col-actions .row-actions{justify-content:flex-end;gap:5px;flex-wrap:wrap}
.billing-billable-select{width:64px;min-width:64px;padding:6px 20px 6px 7px;border:1px solid var(--line,#dce6ea);border-radius:8px;background:var(--surface,#fff);font-weight:750}
.billing-not-billable .billing-billable-select{background:#fff6f6}
@media(max-width:1050px){.customer-agreements-wrap{overflow-x:auto}.customer-agreements-table{min-width:900px}}


/* v2.20.69 – Faktureres column alignment polish */
.billing-source-table th:nth-child(6),
.billing-source-table .billing-col-billable{
  text-align:center!important;
  padding-left:12px;
  padding-right:12px;
}
.billing-source-table .billing-w-billable{width:7%}
.billing-source-table .billing-w-group{width:8%}
.billing-billable-select{margin-inline:auto;display:block}

/* v2.20.70 – customer Infrastructure/HLD/Documentation separation */
.customer-hld-page{overflow:hidden}
/* v2.20.497 - «den fylder ogsaa utroligt meget i vinduet». 520 px lærred plus
   baandet nedenunder skubbede alt andet paa siden ud af syne. Tegningen staar nu
   i en lavere ramme, og man kan folde den helt ud, naar man vil se den. */
.customer-hld-canvas{width:100%;height:420px;margin-top:12px;border:1px solid #dce7eb;border-radius:14px;background:#fff;overflow:auto;resize:vertical}
.customer-hld-canvas.hld-stor497{height:78vh}.customer-hld-canvas>svg{display:block;width:100%;height:auto;min-width:980px}
.hld-overlay500{margin-top:14px;border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:var(--surface)}.hld-overlay500>summary{cursor:pointer;font-weight:600;font-size:13px}.hld-overlay500>p{margin:8px 0 10px;font-size:12px}.hld-overlay-tabel500{width:100%;table-layout:fixed}.hld-overlay-tabel500 th,.hld-overlay-tabel500 td{white-space:normal;vertical-align:middle;font-size:12px}.hld-overlay-tabel500 th:nth-child(1){width:34%}.hld-overlay-tabel500 th:nth-child(2){width:14%}.hld-overlay-tabel500 th:nth-child(3){width:16%}.hld-overlay-tabel500 th:nth-child(4){width:20%}.hld-overlay-tabel500 th:nth-child(5){width:16%}.hld-overlay-navn500{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;word-break:break-all}.hld-overlay-tabel500 select,.hld-overlay-tabel500 input{width:100%;font:inherit;font-size:12px;padding:5px 7px;border:1px solid var(--line);border-radius:7px;background:var(--bg);color:var(--text)}.hld-overlay500 .row-actions{margin-top:10px;justify-content:space-between;align-items:center}.hld-overlay500 .muted{font-size:12px}
.ordre-liste502{display:grid;gap:10px}.ordre-raekke502{display:grid;grid-template-columns:minmax(180px,1.4fr) minmax(160px,1.6fr) minmax(150px,1fr) minmax(220px,auto);gap:12px;align-items:center;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.ordre-navn502 strong{display:block;font-size:13px}.ordre-navn502 small,.ordre-spec502 small,.ordre-status502 small{display:block;font-size:11px;color:var(--muted);margin-top:2px}.ordre-spec502{font-size:12px;color:var(--text)}.ordre-handling502{display:flex;gap:8px;align-items:center;justify-content:flex-end;flex-wrap:wrap}.ordre-handling502 input{width:104px;font:inherit;font-size:12px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--text)}.ordre-handling502 .muted{font-size:11.5px}@media(max-width:900px){.ordre-raekke502{grid-template-columns:1fr 1fr}.ordre-handling502{justify-content:flex-start}}
.hld-rediger501{margin-top:14px;border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:var(--surface)}.hld-rediger501>summary{cursor:pointer;font-weight:600;font-size:13px}.hld-rediger-blok501{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}.hld-rediger-blok501>h4{margin:0 0 4px;font-size:12.5px}.hld-rediger-blok501>p{margin:0 0 10px;font-size:12px}.hld-felt-gitter501{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}.hld-felt-gitter501>label{display:grid;gap:4px;font-size:12px;font-weight:600;color:var(--muted)}.hld-felt-gitter501 input,.hld-rediger501 textarea{width:100%;font:inherit;font-size:13px;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:var(--bg);color:var(--text)}.hld-rediger501 textarea{min-height:70px;resize:vertical}/* v2.20.510 - en spalte mere forrest til grebet. Rækkefølgen i listen er
   placeringen på tegningen, så den skal kunne ændres. */
.hld-komp-raekke501{display:grid;grid-template-columns:22px minmax(120px,1fr) minmax(160px,1.6fr) minmax(160px,1.6fr) minmax(140px,1fr) auto;gap:8px;margin-bottom:8px;align-items:center}
.hld-komp-greb510{border:0;background:none;color:#9aa8b2;cursor:grab;font-size:15px;line-height:1;padding:4px 2px;border-radius:6px}
.hld-komp-greb510:hover{color:#5b7480;background:#eef3f5}
.hld-komp-greb510:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.hld-komp-greb510:active{cursor:grabbing}
.hld-komp-raekke501.traekkes510{opacity:.45}.hld-komp-raekke501 select,.hld-komp-raekke501 input{width:100%;font:inherit;font-size:12px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--text)}@media(max-width:820px){.hld-komp-raekke501{grid-template-columns:22px 1fr;gap:6px}}.hld-rediger-gem501{margin-top:14px;justify-content:space-between;align-items:center}.hld-rediger501 .muted{font-size:12px}
.hld-portal-note496{margin:10px 0 0;font-size:12px}.customer-hld-canvas .empty{min-height:520px;display:grid;place-items:center}.customer-hld-page .row-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
@media(max-width:900px){.customer-hld-canvas{height:260px}.customer-hld-canvas>svg{min-width:760px}.customer-hld-canvas .empty{min-height:360px}}

/* v2.20.71 – integration fold state + nightly backup visual alignment */
.integration-fold>.backup-telemetry-admin>.section-head{display:none}
.integration-fold>.backup-telemetry-admin{padding-top:16px}

/* v2.20.76 – visually mask API secrets without browser password-manager value substitution. */
.secret-text-input{-webkit-text-security:disc;text-security:disc;font-family:inherit}
.secret-text-input:focus{-webkit-text-security:disc}
/* v2.20.76 – reliable long Atera JWT entry without password-manager shadow values. */
.atera-token-input{min-height:74px;resize:vertical;line-height:1.35;white-space:pre-wrap;overflow-wrap:anywhere}

/* v2.20.90-safe – stable billing rows and readable billable control */
.billing-source-table-wrap{overflow-x:auto}
.billing-source-table{min-width:1180px;table-layout:fixed}
.billing-source-table .billing-w-billable{width:88px!important}
.billing-source-table .billing-col-price-master strong,
.billing-source-table .billing-col-customer-price strong,
.billing-source-table .billing-col-total strong,
.billing-source-table .billing-price-master strong,
.billing-source-table .billing-also-price-lock strong{white-space:nowrap;display:inline-block;font-variant-numeric:tabular-nums}
.billing-source-table .billing-col-total{white-space:nowrap}
.billing-billable-select{width:76px;min-width:76px;padding:7px 24px 7px 10px;line-height:1.2}
@media(min-width:1400px){.billing-source-table{min-width:1180px!important}.billing-source-table-wrap{overflow-x:auto!important}}

/* v2.20.92 – global billing table alignment and readable billable selector */
.billing-source-table-wrap{overflow-x:auto!important}
.billing-source-table{min-width:1320px!important;width:100%;table-layout:fixed!important}
.billing-source-table th,.billing-source-table td{vertical-align:top!important;padding:10px 9px!important}
.billing-source-table .billing-w-service{width:25%!important}
.billing-source-table .billing-w-qty{width:11%!important}
.billing-source-table .billing-w-price-master{width:13%!important}
.billing-source-table .billing-w-customer-price{width:16%!important}
.billing-source-table .billing-w-total{width:11%!important}
.billing-source-table .billing-w-billable{width:92px!important}
.billing-source-table .billing-w-group{width:11%!important}
.billing-source-table .billing-w-economic{width:10%!important}
.billing-source-table .billing-w-actions{width:82px!important}
.billing-price-master,.billing-also-price-lock{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-height:44px}
.billing-price-master-main{display:flex;align-items:center;gap:7px;min-height:24px;white-space:nowrap}
.billing-price-master-main strong,.billing-also-price-lock strong,.billing-col-total strong,.license-quantity-inline strong{white-space:nowrap;font-variant-numeric:tabular-nums}
.billing-col-qty,.billing-col-price-master,.billing-col-customer-price,.billing-col-total,.billing-col-billable,.billing-col-group,.billing-col-economic,.billing-col-actions{padding-top:12px!important}
.billing-billable-select{width:84px!important;min-width:84px!important;padding:7px 28px 7px 11px!important;line-height:1.25!important}
@media(min-width:1400px){.billing-source-table{min-width:1320px!important}.billing-source-table-wrap{overflow-x:auto!important}}

/* v2.20.92 – strict row alignment for billing source tables */
.billing-source-table{border-collapse:collapse!important}
.billing-source-table thead th{vertical-align:bottom!important}
.billing-source-table tbody td{vertical-align:top!important;padding-top:14px!important;padding-bottom:14px!important}
.billing-source-table .billing-col-service,
.billing-source-table .billing-col-qty,
.billing-source-table .billing-col-price-master,
.billing-source-table .billing-col-customer-price,
.billing-source-table .billing-col-total,
.billing-source-table .billing-col-billable,
.billing-source-table .billing-col-group,
.billing-source-table .billing-col-economic,
.billing-source-table .billing-col-actions{padding-top:14px!important}
.billing-source-table .billing-price-master-main{display:flex!important;align-items:center!important;gap:8px!important;min-height:24px!important;white-space:nowrap!important}
.billing-source-table .billing-price-master-main strong,
.billing-source-table .billing-also-price-lock strong,
.billing-source-table .billing-col-total strong,
.billing-source-table .license-quantity-inline{white-space:nowrap!important}
.billing-source-table .billing-billable-select{width:88px!important;min-width:88px!important}


/* v2.20.95 – stable billing grid; real CSS (v2.20.93 block contained escaped newlines) */
.billing-source-table-wrap{overflow-x:auto!important}
.billing-source-table{width:1660px!important;min-width:1660px!important;table-layout:fixed!important;border-collapse:collapse!important}
.billing-source-table .billing-w-service{width:350px!important}
.billing-source-table .billing-w-qty{width:285px!important}
.billing-source-table .billing-w-price-master{width:190px!important}
.billing-source-table .billing-w-customer-price{width:215px!important}
.billing-source-table .billing-w-total{width:180px!important}
.billing-source-table .billing-w-billable{width:100px!important}
.billing-source-table .billing-w-group{width:150px!important}
.billing-source-table .billing-w-economic{width:150px!important}
.billing-source-table .billing-w-actions{width:90px!important}
.billing-source-table thead th{vertical-align:bottom!important}
.billing-source-table tbody td{vertical-align:top!important;padding:12px 10px!important}
.billing-source-table .billing-col-qty>small{display:block;white-space:nowrap!important;overflow:visible!important}
.billing-source-table .license-quantity-inline{display:inline-flex!important;align-items:baseline!important;min-height:24px!important;white-space:nowrap!important}
.billing-source-table .billing-price-master-main{display:flex!important;align-items:center!important;gap:8px!important;min-height:24px!important;white-space:nowrap!important}
.billing-source-table .billing-price-master,.billing-source-table .billing-also-price-lock{min-height:44px!important;justify-content:flex-start!important}
.billing-source-table .billing-price-master-main strong,.billing-source-table .billing-also-price-lock strong,.billing-source-table .billing-col-total strong{white-space:nowrap!important;font-variant-numeric:tabular-nums}
.billing-source-table .billing-col-total strong{display:block!important;min-height:24px!important;line-height:24px!important}
.billing-source-table .billing-billable-select{width:88px!important;min-width:88px!important;height:40px!important;margin:0 auto!important}
@media(max-width:1700px){.billing-source-table{width:1660px!important;min-width:1660px!important}}


/* v2.20.98 – generic customer hierarchy */
.customer-hierarchy-card{margin-top:16px}
.customer-hierarchy-parent{display:flex;align-items:center;gap:10px;padding:10px 0 14px;border-bottom:1px solid var(--line,#e2eaee)}
.customer-hierarchy-parent small{min-width:90px;color:var(--muted,#64748b);font-weight:700}
.customer-hierarchy-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px;margin-top:12px}
.customer-hierarchy-child{appearance:none;border:1px solid var(--line,#dce6ea);background:var(--surface,#fff);border-radius:11px;padding:12px 14px;display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;cursor:pointer;color:inherit}
.customer-hierarchy-child:hover{border-color:#a8cfd6;background:#f8fbfc}
.customer-hierarchy-child span{display:flex;flex-direction:column;gap:3px;min-width:0}
.customer-hierarchy-child strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.customer-hierarchy-child small{color:var(--muted,#64748b)}
.customer-hierarchy-child b{white-space:nowrap;font-size:12px}

/* v2.20.98 – billing cadence clarity + ALSO department tree */
.billing-cadence-note{display:block;margin-top:4px;color:#667681;white-space:nowrap}
.also-department-tree{display:grid;gap:8px;margin:12px 0}
.also-department-tree details{border:1px solid #dbe5e8;border-radius:10px;background:#fff;overflow:hidden}
.also-department-tree summary{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:11px 14px;cursor:pointer;background:#f7fafb}
.also-department-tree summary span{color:#63747d;font-size:12px;white-space:nowrap}
.also-department-tree details>div{padding:6px 14px 10px}
.also-department-sub{display:flex;justify-content:space-between;gap:16px;padding:7px 0;border-bottom:1px solid #edf2f3}
.also-department-sub:last-child{border-bottom:0}
.also-department-sub span{color:#667681;white-space:nowrap}

/* v2.20.100 – Reconor department hierarchy fix */

/* v2.20.102 – UniFi Network Integration API correction; billing layout unchanged */

/* v2.20.103 – ALSO department billing/counting + UniFi site timestamp stabilization */

/* v2.20.104 – department invoice grouping */
.billing-draft-lines .billing-department-head td{background:var(--panel-2,#f5f7f9);padding-top:14px;padding-bottom:8px;border-top:2px solid var(--border,#dfe4e8)}
.billing-draft-lines .billing-department-subtotal td{background:var(--panel-1,#fafbfc);border-top:1px solid var(--border,#dfe4e8)}
.also-department-sub span{white-space:nowrap}

/* v2.20.108 – UniFi site details hidden behind CID/site link */
.network-site-detail-panel{scroll-margin-top:88px;background:linear-gradient(180deg,#fbfeff 0,#fff 160px);border-color:#cddde5;box-shadow:0 14px 38px rgba(15,42,56,.10)}
.network-site-detail-shell{display:grid;gap:14px}
.network-site-detail-head{padding-bottom:12px;border-bottom:1px solid #e1eaee}
.network-site-detail-head h3{font-size:24px;letter-spacing:-.02em}
.network-site-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;border:1px solid #e1eaee;border-radius:12px;overflow:hidden;background:#fff}
.network-site-facts>div{padding:11px 13px;border-right:1px solid #e7eef1;border-bottom:1px solid #e7eef1;min-width:0}
.network-site-facts>div:nth-child(3n){border-right:0}.network-site-facts dt{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:#6b7f8b;font-weight:800;margin-bottom:4px}.network-site-facts dd{margin:0;font-weight:650;overflow-wrap:anywhere}
.network-device-section{margin-top:2px}.network-device-toolbar{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin:6px 0 10px}.network-device-toolbar .section-title{margin:0 0 2px}.network-device-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.network-device-filters{display:flex;gap:6px;flex-wrap:wrap}.network-device-filters .btn.active{background:#eaf6f8;border-color:#b7dfe5;color:#126d7a}
.network-device-table-wrap{border:1px solid #e1eaee;border-radius:12px;overflow:auto;background:#fff}.network-device-table{margin:0;min-width:1040px}.network-device-table th{background:#f6f9fa}.network-device-table td{vertical-align:middle}.network-device-type-badge{display:inline-flex;align-items:center;min-height:25px;padding:3px 8px;border-radius:999px;background:#eef3f5;font-size:12px;font-weight:750;white-space:nowrap}.network-device-type-badge.ap{background:#e8f5ff;color:#17658a}.network-device-type-badge.switch{background:#eef8ed;color:#2c6a39}.network-device-type-badge.gateway{background:#fff4df;color:#8a5a16}
/* v2.20.546 - en bridge er sin egen slags, ikke «Andet». */
.network-device-type-badge.bridge{background:#f2eefb;color:#5b3fa3}
.network-copy-cell{display:flex;align-items:center;gap:7px;white-space:nowrap}.network-copy-cell code{font-size:12px}.network-copy-btn{border:0;background:transparent;color:#187aa5;font:inherit;font-size:11px;font-weight:750;cursor:pointer;padding:2px 3px}.network-copy-btn:hover{text-decoration:underline}
.network-site-hidden-note{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:12px;padding:11px 13px;border:1px dashed #c9dbe3;border-radius:11px;background:#f8fbfc;color:#425d6b}.network-site-hidden-note strong{color:#183747}.network-site-hidden-note span{font-size:12px;text-align:right}
@media(max-width:900px){.network-site-facts{grid-template-columns:repeat(2,minmax(0,1fr))}.network-site-facts>div:nth-child(3n){border-right:1px solid #e7eef1}.network-site-facts>div:nth-child(2n){border-right:0}.network-device-toolbar{align-items:flex-start;flex-direction:column}.network-device-actions{justify-content:flex-start}.network-site-hidden-note{align-items:flex-start;flex-direction:column}.network-site-hidden-note span{text-align:left}}
@media(max-width:560px){.network-site-facts{grid-template-columns:1fr}.network-site-facts>div{border-right:0!important}.network-site-detail-panel{padding:13px}.network-site-detail-head h3{font-size:21px}}

/* v2.20.111 – cross-customer development cockpit */
.development-shell{display:grid;gap:16px}.development-hero{display:flex;justify-content:space-between;gap:22px;align-items:flex-end;padding:24px 26px;border:1px solid var(--border,#dfe4e8);border-radius:16px;background:linear-gradient(135deg,#f8fbfc 0,#fff 70%)}.development-hero h2{margin:4px 0 7px;font-size:28px;letter-spacing:-.025em}.development-hero p{margin:0;max-width:760px;color:var(--muted,#64748b)}.development-period{display:flex;align-items:flex-end;gap:8px;flex:0 0 auto}.development-period label{margin:0;min-width:180px}.development-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.development-stats>div{display:flex;flex-direction:column;gap:3px;padding:15px 16px;border:1px solid var(--border,#dfe4e8);border-radius:13px;background:#fff}.development-stats small{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted,#64748b);font-weight:800}.development-stats strong{font-size:23px;letter-spacing:-.02em}.development-stats span{font-size:12px;color:var(--muted,#64748b)}.development-stats .positive strong,.development-positive{color:#177245}.development-stats .negative strong,.development-negative{color:#b33a3a}.development-positive{font-weight:750}.development-negative{font-weight:750}.development-neutral{color:#526570}.development-section{padding:0;overflow:hidden}.development-section>.card-header{padding:17px 18px;margin:0;border-bottom:1px solid var(--border,#e1e7eb)}.development-section>.empty{margin:16px}.development-metric{border-bottom:1px solid var(--border,#e6ebee);background:#fff}.development-metric:last-child{border-bottom:0}.development-metric>summary{display:grid;grid-template-columns:minmax(260px,1fr) minmax(440px,auto) 24px;align-items:center;gap:18px;padding:13px 18px;cursor:pointer;list-style:none}.development-metric>summary::-webkit-details-marker{display:none}.development-metric[open]>summary{background:#f8fafb}.development-metric-name{display:flex;flex-direction:column;gap:2px;min-width:0}.development-metric-name strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.development-metric-name small{color:var(--muted,#64748b)}.development-flow{display:grid;grid-template-columns:repeat(3,minmax(116px,auto)) minmax(115px,auto);align-items:center;gap:14px;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.development-flow small{font-weight:750}.development-chevron{font-size:23px;color:#71828c;transition:transform .15s ease}.development-metric[open] .development-chevron{transform:rotate(90deg)}.development-detail{padding:0 18px 16px;background:#f8fafb}.development-detail .table-wrap{border:1px solid var(--border,#dfe4e8);border-radius:10px;background:#fff}.development-detail table{margin:0;min-width:980px}.development-detail td{vertical-align:middle}.development-detail .development-positive{color:#177245}.development-detail .development-negative{color:#b33a3a}.development-note{padding:11px 14px;border:1px solid #d9e7eb;border-radius:11px;background:#f7fbfc;color:#49616d;font-size:12px}.development-note strong{color:#183747}
@media(max-width:1050px){.development-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.development-metric>summary{grid-template-columns:1fr 24px}.development-flow{grid-column:1/-1;grid-template-columns:repeat(4,minmax(0,1fr));text-align:left}.development-chevron{grid-column:2;grid-row:1}}
@media(max-width:700px){.development-hero{align-items:flex-start;flex-direction:column}.development-period{width:100%}.development-period label{flex:1}.development-stats{grid-template-columns:1fr}.development-flow{grid-template-columns:1fr 1fr;gap:7px 12px;white-space:normal}.development-metric>summary{padding:12px 13px}.development-detail{padding:0 10px 12px}}

/* v2.20.115 – customer billing/readability audit: prevent badges and helper text from crossing column boundaries */
.billing-source-table th,
.billing-source-table td{
  overflow-wrap:anywhere;
  word-break:normal;
}
.billing-source-table .billing-price-master,
.billing-source-table .billing-also-price-lock,
.billing-source-table .billing-col-price-master,
.billing-source-table .billing-col-customer-price,
.billing-source-table .billing-col-group,
.billing-source-table .billing-col-economic{
  min-width:0!important;
  max-width:100%;
}
.billing-source-table .billing-price-master-main{
  display:flex!important;
  flex-wrap:wrap!important;
  align-items:baseline!important;
  align-content:flex-start!important;
  gap:4px 7px!important;
  min-width:0!important;
  max-width:100%!important;
  white-space:normal!important;
}
.billing-source-table .billing-price-master-main strong{
  flex:0 0 auto;
}
.billing-source-table .billing-price-master-main .pill,
.billing-source-table .billing-col-economic .pill{
  max-width:100%;
  white-space:normal!important;
  overflow-wrap:anywhere;
  line-height:1.15;
  text-align:center;
}
.billing-source-table .billing-price-master>small,
/* v2.20.632 - `.billing-col-group` og `.billing-col-economic` ER TAGET UD AF
   DEN HER REGEL. De er <td>, og `display:block` tager en celle ud af
   tabellayoutet: de to stablede sig oven paa hinanden i ÉN kolonnes bredde, saa
   overskriften «E-CONOMIC PRODUKT» stod uden noget under sig, og hver raekke blev
   dobbelt saa hoej. Maalt: begge celler havde x=1481 og w=190.

   Reglen var ment for de INLINE elementer under den - et <small> skal vaere block
   for at kunne ombrydes. De to celler var fejet med. De faar deres ombrydning
   nedenfor i stedet, uden at forlade tabellen. */
.billing-source-table .billing-also-price-lock>small,
.billing-source-table .billing-col-qty>small,
.billing-source-table .billing-cadence-note{
  display:block;
  max-width:100%;
  white-space:normal!important;
  overflow:visible!important;
  overflow-wrap:anywhere;
  line-height:1.35;
}
.billing-source-table .billing-col-group,
.billing-source-table .billing-col-economic{
  max-width:100%;
  white-space:normal!important;
  overflow:visible!important;
  overflow-wrap:anywhere;
  line-height:1.35;
}
.billing-source-table .billing-inline-price{
  grid-template-columns:minmax(72px,1fr) minmax(64px,.8fr) auto!important;
  gap:5px!important;
  min-width:0!important;
  max-width:100%;
}
.billing-source-table .billing-inline-or{display:none!important}
.billing-source-table .billing-inline-price label,
.billing-source-table .billing-inline-price label>span,
.billing-source-table .billing-inline-discount-wrap{min-width:0;max-width:100%}
.billing-source-table .billing-save-inline-price{min-width:0;padding-left:7px;padding-right:7px}

/* Same defensive wrapping on the other customer-facing compact tables reviewed in this pass. */
.customer-agreements-table th,
.customer-agreements-table td{
  overflow-wrap:anywhere;
  word-break:normal;
}
.also-department-tree summary,
.also-department-sub{min-width:0}
.also-department-tree summary span,
.also-department-sub span{
  white-space:normal!important;
  overflow-wrap:anywhere;
}


/* v2.20.118 – payment-cadence-first customer billing presentation. */
.billing-cadence-total{display:flex;flex-direction:column;align-items:flex-end;gap:2px;min-width:150px}
.billing-cadence-total strong{white-space:nowrap;font-variant-numeric:tabular-nums}
.billing-cadence-total span{font-size:12px;color:var(--muted,#667884);white-space:normal;text-align:right}
.billing-cadence-total.mixed strong{font-size:14px}
.billing-payment-profile-wrap{min-width:230px}
.billing-payment-profile{display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.billing-payment-profile>span{display:block;white-space:nowrap;font-size:12px;color:var(--muted,#667884)}
.billing-payment-profile>span strong{font-size:16px;color:var(--text,#172733);font-variant-numeric:tabular-nums}
.billing-col-total small{display:block;white-space:normal!important;line-height:1.35}

/* =============================================================
   v2.20.128 – ShellV2.0 design wave A
   Visual-only modernization based on the supplied design handoff.
   Existing routes, permissions, data bindings and business logic remain.
   ============================================================= */
:root{
  /* Bridge legacy component variables to the shared Shell design tokens. */
  --nav:var(--c-nav-ground);
  --nav2:var(--c-nav-active);
  --accent:var(--c-accent);
  --accent2:var(--c-accent);
  --green:var(--c-pos);
  --amber:var(--c-warn);
  --red:var(--c-crit);
  --bg:var(--c-ground);
  --card:var(--c-surface);
  --text:var(--c-ink);
  --muted:var(--c-ink-3);
  --border:var(--c-line);
  --radius:var(--r-container);
  font-family:var(--f-sans);
}

html,body{background:var(--c-ground);color:var(--c-ink)}
body{font-family:var(--f-sans);font-size:var(--t-body-size);line-height:var(--t-body-lh)}
/* v2.20.637 - GULVET: INTET UNDER 11 PX (designgennemgangens nr. 3).

   Maalt paa 26 sider i 1440 og 390 px: 873 af 7.697 tekststumper stod under
   11 px - 9,5 px 442 gange, 10 px 144, 10,5 px 110, 9 px 54, og der fandtes
   9,2 og 8,4. Stylesheetet havde 61 forskellige font-size-vaerdier.

   Alle raa vaerdier under 11 px i den her fil er skiftet til var(--t-5), som
   er skalaens mindste trin (11 px): 114 px-vaerdier, 10 rem og 1 em. Tokens:
   --t-label-size og --t-tag-size 9,5 → 11.

   Det, der var tilbage efter dét, var <small> UDEN egen stoerrelse: browserens
   standard er `smaller` (0,83 em), saa en small i 13 px blev 10,8 og en small
   i 11 px blev 9,2 - 123 steder. Reglen her lader `smaller` virke, hvor der er
   plads til det, og stopper ved gulvet. Kode i en small foelger med. */
small{font-size:max(var(--t-5),.8333em)}
small code,small kbd{font-size:inherit}
button,input,select,textarea{font-family:inherit;color:inherit}
:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px;border-radius:var(--r-control)}
.money,.num,td.num,.metric-value,.kpi strong,.customer-metric strong{font-variant-numeric:tabular-nums}

/* Application frame */
.app{grid-template-columns:240px minmax(0,1fr);grid-template-rows:52px 1fr;background:var(--c-ground)}
.sidebar{width:240px;padding:14px 12px 18px;background:var(--c-nav-ground);border-right:1px solid var(--c-nav-line);box-shadow:none;color:var(--c-nav-ink)}
.brand{gap:10px;padding:2px 8px 15px}
.brand-mark,.brand-mark.small{width:28px;height:28px;border-radius:var(--r-control);background:var(--c-accent);color:var(--c-on-accent);box-shadow:none;font-size:11.5px;letter-spacing:.04em} /* v2.20.637 - «IT» i #03201F paa #0E8C85 var 4,15:1 paa 52 sider; hvid paa accent er 5,36 */
.brand strong{font-size:13.5px;font-weight:600;color:#F0F5F4;letter-spacing:-.01em}
.brand span{font-family:var(--f-mono);font-size:var(--t-5);letter-spacing:.1em;color:var(--c-nav-ink-2);margin-top:1px}
.sidebar nav{gap:1px;overflow:auto;scrollbar-width:thin;scrollbar-color:var(--c-nav-line) transparent}
.nav-section{font-family:var(--f-mono);font-size:var(--t-5);font-weight:500;letter-spacing:.15em;color:var(--c-nav-ink-2);padding:12px 10px 5px}
.nav-item{min-height:30px;padding:5px 10px;border-radius:var(--r-control);gap:9px;color:var(--c-nav-ink);font-size:13px;line-height:1.35;transition:background var(--motion),color var(--motion);box-shadow:none!important}
.nav-item .ico{width:17px;font-size:14px;opacity:.72}
.nav-item:hover{background:var(--c-nav-active);color:#EAF2F0}
.nav-item.active{position:relative;background:var(--c-nav-active);color:#fff;font-weight:500;box-shadow:none}
.nav-item.active:before{content:"";position:absolute;left:-12px;top:0;bottom:0;width:2px;background:var(--c-nav-marker)}
.nav-item.active .ico{color:var(--c-nav-marker);opacity:1}
/* v2.20.635 - gruppeoverskriften er en knap, der folder sin gruppe. Den ser ud
   som foer (samme skrift, samme farve, samme afstand), men faar en pil og et
   fokusring. Pilen peger til hoejre, naar gruppen er foldet, og ned, naar den
   er aaben. Grupperne selv skjules med `hidden` - ingen hoejde-animation, for
   menuen tegnes om ved hvert sidevalg, og en animation ville koere hver gang. */
/* v2.20.639 - .637 loeftede overskriften fra 9,5 til 11 px, og de 7 overskrifter blev
   tilsammen 13 px hoejere: menuen var 785 px i 772 px plads paa en 900 px skaerm, og
   saa fik den en rullebjaelke for 13 px. Luften over og under overskriften er 2 px
   mindre (12/5 → 10/3); maalt bagefter: 771 i 772. */
button.nav-section{appearance:none;background:transparent;border:0;width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;text-align:left;cursor:pointer;text-transform:uppercase;border-radius:var(--r-control);padding-top:10px;padding-bottom:3px}
button.nav-section:hover{color:var(--c-nav-ink)}
button.nav-section:focus-visible{outline:2px solid var(--c-nav-marker);outline-offset:-2px}
.nav-fold-pil635{display:inline-block;font-family:var(--f-sans);font-size:13px;line-height:1;opacity:.55;transform:rotate(0deg);transition:transform .12s}
button.nav-section[aria-expanded="true"] .nav-fold-pil635{transform:rotate(90deg)}
.nav-gruppe635{display:flex;flex-direction:column;gap:4px}
.nav-gruppe635[hidden]{display:none}
.sidebar-bottom{border-top:1px solid var(--c-nav-line);padding-top:10px;margin-top:auto}

.topbar{left:240px;height:52px;padding:0 24px;background:color-mix(in srgb,var(--c-ground) 88%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--c-line);box-shadow:none}
.topbar h1{font-size:15px;font-weight:600;letter-spacing:-.015em}
.topbar p{margin:2px 0 0;font-size:11px;color:var(--c-ink-3)}
.top-actions{gap:8px}
.global-search input{margin:0;min-width:260px;padding:7px 10px}
.user-chip{background:transparent;border:0;border-left:1px solid var(--c-line);border-radius:0;padding:0 0 0 12px;margin-left:2px}
.user-chip>span{width:27px;height:27px;border-radius:var(--r-control);background:var(--c-accent-soft);color:var(--c-accent-ink);font-size:11px;font-weight:600}
.user-chip strong{font-size:12px;font-weight:550}.user-chip small{font-size:var(--t-5);color:var(--c-ink-3)}
.content{padding:22px 24px 60px;min-width:0}

/* Controls */
.btn{border:1px solid var(--c-line-control);background:var(--c-surface);color:var(--c-ink);border-radius:var(--r-control);padding:7px 12px;font-size:12.5px;font-weight:500;box-shadow:none;transition:background var(--motion),border-color var(--motion)}
.btn:hover{background:var(--c-surface-3);border-color:var(--c-ink-3)}
.btn.primary{background:var(--c-accent);border-color:var(--c-accent);color:var(--c-on-accent)}
.btn.primary:hover{background:var(--c-accent-ink);border-color:var(--c-accent-ink)}
.btn.danger{color:var(--c-crit);border-color:var(--c-line-control)}
.btn.small{padding:5px 9px;font-size:12px}
input,select,textarea{border:1px solid var(--c-line-control);border-radius:var(--r-control);background:var(--c-surface);color:var(--c-ink);padding:8px 10px;box-shadow:none}
label{color:var(--c-ink-2);font-size:11px;font-weight:600}

/* Cards and hierarchy */
.card,.kpi{background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--r-container);box-shadow:var(--shadow)}
.card{padding:16px}.kpi{padding:13px 16px 15px}.kpi:after{display:none}
.card-header{margin:-16px -16px 14px;padding:11px 16px;border-bottom:1px solid var(--c-line);background:var(--c-surface-2);min-height:42px}
.card-header h2,.card-header h3{font-size:12px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--c-ink);margin:0}
.card-header .muted{font-size:12px;color:var(--c-ink-3);text-transform:none;letter-spacing:0;font-weight:400}
.kpis{gap:0;background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--r-container);box-shadow:var(--shadow);overflow:hidden}
.kpis .kpi{border:0;border-left:1px solid var(--c-line);border-radius:0;box-shadow:none}
.kpis .kpi:first-child{border-left:0}
.kpi label{font-family:var(--f-mono);font-size:var(--t-5);font-weight:500;letter-spacing:.13em;color:var(--c-ink-3)}
.kpi strong{font-size:26px;font-weight:600;letter-spacing:-.045em;color:var(--c-ink);margin-top:7px}
.kpi small{font-size:11.5px;color:var(--c-ink-3)}

/* Tables */
.table-wrap{border:1px solid var(--c-line);border-radius:var(--r-container);background:var(--c-surface);box-shadow:var(--shadow);overflow:auto}
table{background:var(--c-surface);color:var(--c-ink);font-size:13px}
th,td{padding:9px 12px;border-bottom:1px solid var(--c-line)}
th{background:var(--c-surface-2);font-family:var(--f-mono);font-size:var(--t-5);font-weight:500;letter-spacing:.12em;color:var(--c-ink-3);text-transform:uppercase}
tbody tr:hover, tr.clickable:hover{background:var(--c-surface-2)}
tbody tr:hover td{background:transparent}
.pill{border-radius:var(--r-chip);padding:2px 6px;font-size:var(--t-5);font-weight:600;letter-spacing:.06em;text-transform:uppercase;background:var(--c-surface-3);color:var(--c-ink-3)}
.pill.green{background:var(--c-pos-soft);color:var(--c-pos)}
.pill.red{background:var(--c-crit-soft);color:var(--c-crit)}
.pill.amber{background:var(--c-warn-soft);color:var(--c-warn)}
/* v2.20.420 – .pill.grey og .pill.yellow har ALDRIG haft en regel, selv om de bruges 25 steder i
   also.js, app.js, customer.js og forticloud.js. ALSO-raekker, der skulle laeses som "kraever
   opmaerksomhed" (control_status<>'ok', status 'review', negative aendringer), blev tegnet
   fuldstaendig som de neutrale. Det er .notice.warn fra v2.20.415 én gang til, og derfor er der nu
   en test, der kraever, at enhver pill-farve, koden bruger, ogsaa er tegnet.
   grey er med vilje den samme som .pill uden farve - den siger "neutral", og den skal kunne ses at
   vaere et bevidst valg frem for en manglende regel. */
.pill.grey{background:var(--c-surface-3);color:var(--c-ink-3)}
.pill.yellow{background:var(--c-warn-soft);color:var(--c-warn)}
.pill.teal,.customer-source-pill{background:var(--c-accent-soft)!important;color:var(--c-accent-ink)!important;border-color:transparent!important}
.muted{color:var(--c-ink-3)}

/* Customer directory – retain all existing filters/actions, change presentation only. */
.customer-directory-card{border-radius:var(--r-container);box-shadow:var(--shadow)}
.customer-directory-head{padding:18px 18px 8px}
.customer-directory-head h2{font-size:23px;font-weight:600;letter-spacing:-.032em;color:var(--c-ink)}
.customer-eyebrow{font-family:var(--f-mono);font-size:var(--t-5);font-weight:500;letter-spacing:.14em;color:var(--c-ink-3)}
.customer-directory-toolbar{padding:10px 18px 14px;background:var(--c-surface);border-bottom:1px solid var(--c-line)}
.customer-search-wrap{border:1px solid var(--c-line-control);border-radius:var(--r-control);background:var(--c-surface);box-shadow:none}
.customer-toolbar-main .customer-search-wrap{flex:0 0 240px;width:240px;min-width:240px;max-width:240px}
.customer-status-filter{padding:0;border:1px solid var(--c-line-control);border-radius:var(--r-control);background:var(--c-surface);overflow:hidden;gap:0}
.customer-status-filter button{min-height:34px;border-radius:0;padding:6px 12px;color:var(--c-ink-3);font-size:12.5px;font-weight:500}
.customer-status-filter button+button{border-left:1px solid var(--c-line)}
.customer-status-filter button.active{background:var(--c-ink);color:var(--c-ground);box-shadow:none}
.customer-directory-table .table-wrap,.customer-directory-table{border-radius:0;border-left:0;border-right:0;border-bottom:0;box-shadow:none}
.customer-directory-table th{top:52px!important;background:var(--c-surface-2)!important}
.customer-list-name{gap:1px}.customer-list-name strong,.customer-card-link strong{font-size:13px;font-weight:550;color:var(--c-ink)}
.customer-list-name small,.customer-hub-row td small{font-family:var(--f-mono);font-size:var(--t-5);color:var(--c-ink-3)}
.customer-hub-row:hover .customer-card-link strong{color:var(--c-accent-ink)}

/* Customer workspace */
.customer-hub-header{background:transparent;border:0;border-radius:0;box-shadow:none;margin-bottom:16px;overflow:visible}
.customer-hub-top{padding:0 0 14px;gap:14px}
.customer-company-mark{width:48px;height:48px;border-radius:var(--r-container);background:var(--c-ink);color:var(--c-ground);font-size:16px;font-weight:600;box-shadow:none}
.customer-title-row{gap:7px}.customer-title-row h2{font-size:25px;font-weight:600;letter-spacing:-.034em;color:var(--c-ink)}
.customer-hub-identity p{font-family:var(--f-mono);font-size:11px;color:var(--c-ink-3);margin-top:5px}
.customer-hub-actions{align-items:center}
/* v2.20.398 – Admin-handlingerne på kundekortet står for sig selv med en tynd skillelinje, så Hent
   alt og Slet permanent ikke ser ud som endnu en almindelig knap ved siden af Redigér. */
/* v2.20.638 - .customer-hub-admin398 (den lodrette streg foran Hent alt/Slet) tegnes ikke
   mere: de to ligger i «⋯ Mere»-menuen. Reglerne er taget ud, ikke efterladt doede. */
.customer-header-mini{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:0;padding:0;margin:0 0 16px;background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--r-container);box-shadow:var(--shadow);overflow:hidden;color:var(--c-ink-3)}
.customer-header-mini>span{padding:12px 14px;border-left:1px solid var(--c-line);min-width:0;display:flex;flex-direction:column;gap:3px;line-height:1.35}
.customer-header-mini>span:first-child{border-left:0}
.customer-header-mini b{font-size:17px;font-weight:600;letter-spacing:-.025em;color:var(--c-ink);font-variant-numeric:tabular-nums}
/* v2.20.639 - «hvad goer den lille graa ting?» En rullebjaelke. `overflow-x:auto`
   goer ogsaa overflow-y til auto, og fanernes indhold er 38 px i en 37 px kasse
   (den aktive fanes 2 px bundkant + afrunding) - saa tegnede browseren en lodret
   rullebjaelke for én pixel. Raekken ruller kun vandret; lodret er der intet at
   rulle, og intet at klippe. */
.customer-tabs{display:flex;gap:2px;padding:0;border:0;border-bottom:1px solid var(--c-line-strong);background:transparent;overflow-x:auto;overflow-y:hidden}
.customer-tabs button{display:flex;grid-template-columns:none;align-items:center;gap:7px;min-width:auto;padding:9px 13px 10px;border:0;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:var(--c-ink-3);font-size:13px;font-weight:450;box-shadow:none;margin-bottom:-1px}
.customer-tabs button i{display:none}.customer-tabs button b{font-weight:inherit;overflow:visible;text-overflow:clip}
.customer-tabs button>span{min-width:18px;height:18px;padding:0 5px;border-radius:var(--r-chip);background:var(--c-surface-3);color:var(--c-ink-3);font-family:var(--f-mono);font-size:var(--t-5);margin:0}
.customer-tabs button:hover{background:transparent;color:var(--c-ink);border-color:transparent}
.customer-tabs button.active{background:transparent;color:var(--c-ink);font-weight:550;border:0;border-bottom:2px solid var(--c-accent);box-shadow:none}
.customer-tabs button.active>span{background:var(--c-accent-soft);color:var(--c-accent-ink)}
.customer-tab-content{gap:16px}
.customer-section-tabs{display:flex;gap:2px;padding:0;margin:0 0 14px;border:0;border-bottom:1px solid var(--c-line);border-radius:0;background:transparent;overflow-x:auto}
.customer-section-tabs button{padding:7px 10px 9px;border:0;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:var(--c-ink-3);font-size:12.5px;font-weight:450;margin-bottom:-1px;box-shadow:none}
.customer-section-tabs button:hover{background:transparent;color:var(--c-ink)}
.customer-section-tabs button.active{background:transparent;color:var(--c-ink);font-weight:550;border-bottom-color:var(--c-accent);box-shadow:none}
.customer-section-tabs button span{border-radius:var(--r-chip);background:var(--c-surface-3);color:var(--c-ink-3)}
.customer-section-tabs button.active span{background:var(--c-accent-soft);color:var(--c-accent-ink)}

.customer-metrics{gap:0;background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--r-container);overflow:hidden;box-shadow:var(--shadow)}
.customer-metric{border:0;border-left:1px solid var(--c-line);border-radius:0;padding:13px 15px;box-shadow:none;background:var(--c-surface)}
.customer-metric:first-child{border-left:0}.customer-metric small{font-family:var(--f-mono);font-size:var(--t-5);font-weight:500;letter-spacing:.12em;color:var(--c-ink-3)}
.customer-metric strong{font-size:24px;font-weight:600;letter-spacing:-.04em;color:var(--c-ink)}
.customer-metric span{font-size:11.5px;color:var(--c-ink-3)}
.customer-facts>div,.customer-simple-list>div{border-color:var(--c-line)}
.customer-facts dt{font-family:var(--f-mono);font-size:var(--t-5);letter-spacing:.1em;text-transform:uppercase;color:var(--c-ink-3)}
.customer-facts dd{font-weight:450;color:var(--c-ink)}
.customer-contact-grid article,.customer-journey-grid button,.customer-empty,.customer-infra-summary,.customer-infrastructure-section,.hld-customer-card{border-radius:var(--r-container);box-shadow:none}
.customer-avatar{border-radius:var(--r-control);background:var(--c-accent-soft);color:var(--c-accent-ink)}

/* Existing dense billing/infrastructure views: tokenized surfaces without changing column behavior. */
.billing-source-table,.customer-license-table,.customer-agreements-table,.network-device-table{background:var(--c-surface)}
.billing-source-table th,.customer-license-table th,.customer-agreements-table th,.network-device-table th{background:var(--c-surface-2)!important;color:var(--c-ink-3)}
.row-muted{background:var(--c-surface-2);opacity:.68}
.network-site-detail-panel,.development-hero,.development-stats>div,.development-metric,.development-detail .table-wrap{background:var(--c-surface);border-color:var(--c-line);box-shadow:var(--shadow)}
.network-site-facts,.network-device-table-wrap{border-color:var(--c-line);border-radius:var(--r-container);background:var(--c-surface)}

/* Modal/login surfaces follow the same design language. */
.modal{background:rgba(4,12,12,.65)}
.modal-card{background:var(--c-surface);color:var(--c-ink);border:1px solid var(--c-line);border-radius:var(--r-container);box-shadow:0 10px 30px -10px rgba(0,0,0,.45)}
.login-screen{background:var(--c-nav-ground)}
.login-card{background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--r-container);box-shadow:0 10px 30px -10px rgba(0,0,0,.45)}
.toast{border-radius:var(--r-control);background:var(--c-ink);color:var(--c-ground)}

@media(max-width:1250px){
  .customer-header-mini{grid-template-columns:repeat(3,minmax(0,1fr))}
  .customer-header-mini>span:nth-child(4){border-left:0;border-top:1px solid var(--c-line)}
  .customer-header-mini>span:nth-child(n+4){border-top:1px solid var(--c-line)}
}
@media(max-width:900px){
  .app{grid-template-columns:1fr;grid-template-rows:52px 1fr}
  .topbar{left:0;padding:0 14px}.content{grid-column:1;padding:18px 14px 60px}
  .customer-header-mini{grid-template-columns:repeat(2,minmax(0,1fr))}
  .customer-header-mini>span{border-top:1px solid var(--c-line)}
  .customer-header-mini>span:nth-child(-n+2){border-top:0}
  .customer-header-mini>span:nth-child(odd){border-left:0}
  .global-search{display:none}
}
@media(max-width:620px){
  .customer-header-mini{grid-template-columns:1fr}
  .customer-header-mini>span{border-left:0!important;border-top:1px solid var(--c-line)!important}
  .customer-header-mini>span:first-child{border-top:0!important}
  .customer-hub-top{padding-top:2px}.customer-tabs button{padding-left:10px;padding-right:10px}
}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* v2.20.128 – design wave B1: density, full-width billing and customer overview hierarchy */
.customer-search-wrap{width:min(380px,100%);max-width:380px;flex:0 1 380px!important}
.customer-toolbar-main{display:flex;align-items:center;gap:12px;flex-wrap:wrap;min-width:0}
.customer-directory-toolbar{align-items:center}

/* Billing should use the available desktop canvas. Keep a safe minimum width only when the viewport is actually narrow. */
.billing-source-table-wrap{width:100%!important;max-width:none!important;overflow-x:auto!important}
.billing-source-table{width:100%!important;min-width:1450px!important;table-layout:fixed!important}
.billing-source-table .billing-w-service{width:23%!important}
/* v2.20.632 - 15 % til «61 GB» og 4 % til to knapper var omvendt af behovet:
   maengdecellen stod med 284 px tom plads, mens HANDLING fik 76 px og derfor
   broed «Regler» og «Slet» ned under hinanden - 24 px raekkehoejde pr. linje,
   ganget med 34 linjer. Maalt, ikke skoennet. `billing-w-service` roeres ikke:
   den er pinnet af design-wave-b1-proeven. */
/* v2.20.642 - Kundepris 12 → 10 %, Faktureres 7 → 8 %, Handling 11 → 12 %. Maalt i
   1440 px: Faktureres var 77 px, og vaelgeren (min-width 88) stak 21 px ind over
   Fakturagruppe, mens overskriften braekkede til «Fakturere / s». Handling var 121 px,
   og «Regler» + «Fjern» (60 + 53 + luft) stod under hinanden. Kundepris er foldet ind
   nu kun et tal, og det er dér, pladsen kom fra. Summen er stadig 100. */
.billing-source-table .billing-w-qty{width:8%!important}
.billing-source-table .billing-w-price-master{width:10%!important}
.billing-source-table .billing-w-customer-price{width:10%!important}
.billing-source-table .billing-w-total{width:11%!important}
.billing-source-table .billing-w-billable{width:8%!important}
.billing-source-table .billing-w-group{width:10%!important}
.billing-source-table .billing-w-economic{width:8%!important}
.billing-source-table .billing-w-actions{width:12%!important}
@media(max-width:1540px){.billing-source-table{min-width:1450px!important}}

.customer-overview-rail{grid-template-columns:repeat(5,minmax(0,1fr))!important;margin-bottom:16px}
.customer-overview-rail .customer-metric{min-width:0}
.customer-attention{margin:0 0 16px;background:var(--c-surface);border:1px solid var(--c-line);border-left:2px solid var(--c-warn);border-radius:0 var(--r-container) var(--r-container) 0;box-shadow:var(--shadow);overflow:hidden}
.customer-attention-head{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--c-surface-2);border-bottom:1px solid var(--c-line)}
.customer-attention-head h3{margin:0;font-size:12px;font-weight:600;letter-spacing:.05em;text-transform:uppercase}
.customer-attention-head span{margin-left:auto;color:var(--c-ink-3);font-size:12px}
.customer-attention ul{list-style:none;margin:0;padding:0}
.customer-attention li{display:grid;grid-template-columns:8px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 14px;border-top:1px solid var(--c-line)}
.customer-attention li:first-child{border-top:0}
.customer-attention li span:nth-child(2){display:flex;flex-direction:column;min-width:0}
.customer-attention li strong{font-size:13px;font-weight:550;color:var(--c-ink)}
.customer-attention li small{font-size:12px;color:var(--c-ink-3);white-space:normal}
.customer-attention-dot{width:6px;height:6px;background:var(--c-line-strong)}
.customer-attention-dot.warn{background:var(--c-warn)}
.customer-attention-dot.critical{background:var(--c-crit)}
.customer-journey .card-header h3{letter-spacing:.05em;text-transform:uppercase;font-size:12px}
@media(max-width:1180px){.customer-overview-rail{grid-template-columns:repeat(3,minmax(0,1fr))!important}}
@media(max-width:760px){.customer-search-wrap{width:100%;max-width:none;flex:1 1 100%!important}.customer-overview-rail{grid-template-columns:repeat(2,minmax(0,1fr))!important}.customer-attention li{grid-template-columns:8px minmax(0,1fr)}.customer-attention li .link-button{grid-column:2;justify-self:start}}

/* v2.20.128 – design wave B2: compact customer search + Min dag worklist */
.customer-search-wrap{width:min(290px,100%)!important;max-width:290px!important;flex:0 1 290px!important;min-width:220px!important}
@media(max-width:760px){.customer-search-wrap{width:100%!important;max-width:none!important;flex:1 1 100%!important}}
.home-day{display:grid;gap:14px;min-width:0}.home-day-head{display:flex;gap:16px;align-items:flex-end;flex-wrap:wrap}.home-day-head h2{margin:2px 0 3px;font-size:23px;font-weight:600;letter-spacing:-.032em}.home-day-head p{margin:0;color:var(--c-ink-3);font-size:12.5px}.home-day-actions{margin-left:auto;display:flex;gap:8px}.home-work-strip{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));border:1px solid var(--c-line);border-radius:var(--r-container);background:var(--c-surface);box-shadow:var(--shadow);overflow:hidden}.home-work-tile{position:relative;text-align:left;background:transparent;border:0;border-left:1px solid var(--c-line);padding:12px 14px 13px;color:var(--c-ink);min-width:0}.home-work-tile:first-child{border-left:0}.home-work-tile:hover{background:var(--c-surface-2)}.home-work-tile.active{background:var(--c-accent-soft)}.home-work-tile.active:after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--c-accent)}.home-work-tile span{display:flex;align-items:center;gap:6px;font-family:var(--f-mono);font-size:var(--t-5);letter-spacing:.12em;text-transform:uppercase;color:var(--c-ink-3)}.home-work-tile span:before{content:"";width:6px;height:6px;background:var(--c-line-strong)}.home-work-tile.approval span:before{background:var(--c-accent)}.home-work-tile.critical span:before{background:var(--c-crit)}.home-work-tile.warning span:before{background:var(--c-warn)}.home-work-tile strong{display:block;margin-top:7px;font-size:24px;line-height:1;font-weight:600;letter-spacing:-.045em;font-variant-numeric:tabular-nums}.home-work-tile small{display:block;margin-top:6px;color:var(--c-ink-3);font-size:11.5px}.home-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.home-view-switch{display:flex;border:1px solid var(--c-line-control);border-radius:var(--r-control);overflow:hidden;background:var(--c-surface)}.home-view-switch button{border:0;border-left:1px solid var(--c-line);background:transparent;padding:6px 12px;font-size:12.5px;color:var(--c-ink-3)}.home-view-switch button:first-child{border-left:0}.home-view-switch button.active{background:var(--c-ink);color:var(--c-ground)}.home-search{display:flex;align-items:center;gap:7px;width:300px;max-width:100%;border:1px solid var(--c-line-control);border-radius:var(--r-control);background:var(--c-surface);padding:0 9px;color:var(--c-ink-3)}.home-search input{border:0!important;box-shadow:none!important;background:transparent!important;padding:7px 0!important;min-width:0;width:100%;outline:0}.home-customer-table{overflow-x:auto}.home-customer-table table{min-width:1020px}.home-customer-table th.num,.home-customer-table td.num{text-align:right;font-variant-numeric:tabular-nums}.home-customer-table td:first-child strong{display:block;font-size:13px;font-weight:550}.home-customer-table td:first-child small{display:block;margin-top:1px;color:var(--c-ink-3);font-family:var(--f-mono);font-size:var(--t-5)}.home-customer-table .zero{color:color-mix(in srgb,var(--c-ink-3) 60%,transparent)}.home-signals{display:flex;gap:4px;justify-content:flex-end;flex-wrap:wrap}.home-signal{display:inline-flex;padding:2px 5px;border-radius:var(--r-chip);background:var(--c-surface-3);color:var(--c-ink-3);font-size:var(--t-5);font-weight:600;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}.home-signal.warning{background:var(--c-warn-soft);color:var(--c-warn)}.home-signal.critical{background:var(--c-crit-soft);color:var(--c-crit)}.home-chevron{width:24px;color:var(--c-ink-3);font-size:18px}.home-table-foot{display:flex;gap:20px;align-items:center;flex-wrap:wrap;padding:10px 12px;background:var(--c-surface-2);border-top:1px solid var(--c-line);font-size:12px;color:var(--c-ink-3)}.home-table-foot strong{color:var(--c-ink);font-variant-numeric:tabular-nums}.home-customer-table tbody tr:hover .home-chevron{color:var(--c-accent-ink)}
@media(max-width:1100px){.home-work-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.home-work-tile:nth-child(odd){border-left:0}.home-work-tile:nth-child(n+3){border-top:1px solid var(--c-line)}}
@media(max-width:700px){.home-work-strip{grid-template-columns:1fr}.home-work-tile{border-left:0!important;border-top:1px solid var(--c-line)}.home-work-tile:first-child{border-top:0}.home-search{width:100%}.home-day-actions{margin-left:0;width:100%}}

/* v2.20.353 · Min dag fakturagodkendelse for kundeansvarlige */
.home-billing-inbox{border:1px solid var(--c-line);border-left:3px solid var(--c-accent);border-radius:var(--r-container);background:var(--c-surface);box-shadow:var(--shadow);overflow:hidden;min-width:0}.home-billing-inbox.is-empty{border-left-color:var(--c-line-strong)}.home-billing-head{display:flex;align-items:center;gap:16px;padding:13px 15px;background:var(--c-surface-2);border-bottom:1px solid var(--c-line)}.home-billing-head h3{margin:2px 0;font-size:16px}.home-billing-head p{margin:0;color:var(--c-ink-3);font-size:11.5px}.home-billing-summary{margin-left:auto;text-align:right}.home-billing-summary strong{display:block;font-size:21px;line-height:1;font-variant-numeric:tabular-nums}.home-billing-summary span{font-size:var(--t-5);color:var(--c-ink-3);text-transform:uppercase;letter-spacing:.08em}.home-billing-list{display:grid}.home-billing-item{display:grid;grid-template-columns:86px minmax(180px,1.5fr) minmax(180px,1fr) minmax(110px,.55fr) auto;align-items:center;gap:14px;padding:11px 14px;border-top:1px solid var(--c-line);min-width:0}.home-billing-item:first-child{border-top:0}.home-billing-type{display:grid;gap:3px}.home-billing-type strong{font-family:var(--f-mono);font-size:var(--t-5);letter-spacing:.12em}.home-billing-type span{font-size:var(--t-5);color:var(--c-ink-3)}.home-billing-type.review span{color:var(--c-warn);font-weight:600}.home-billing-customer{min-width:0;border:0;background:transparent;padding:0;text-align:left;color:var(--c-ink);cursor:pointer}.home-billing-customer strong,.home-billing-customer small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.home-billing-customer strong{font-size:13px}.home-billing-customer small,.home-billing-period small{margin-top:2px;color:var(--c-ink-3);font-size:var(--t-5)}.home-billing-period span,.home-billing-period small{display:block}.home-billing-total{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.home-billing-empty{display:flex;gap:8px;justify-content:center;padding:16px;color:var(--c-ink-3);font-size:12px}.home-billing-empty strong{color:var(--c-ink)}
.billing-approval-page{display:grid;gap:16px;min-width:0}.billing-approval-head{display:flex;align-items:flex-end;gap:24px;padding:18px 20px;border:1px solid var(--c-line);border-radius:var(--r-container);background:var(--c-surface-2)}.billing-approval-head h2{margin:3px 0 5px;font-size:24px}.billing-approval-head p{margin:0;max-width:760px;color:var(--c-ink-3);font-size:12.5px}.billing-approval-metrics{margin-left:auto;display:flex;gap:24px;text-align:right}.billing-approval-metrics div{min-width:64px}.billing-approval-metrics strong,.billing-approval-metrics span{display:block}.billing-approval-metrics strong{font-size:23px;font-variant-numeric:tabular-nums}.billing-approval-metrics span{font-family:var(--f-mono);font-size:var(--t-5);letter-spacing:.1em;text-transform:uppercase;color:var(--c-ink-3)}
.billing-approval-page .home-day-head{align-items:flex-end}.billing-approval-page .home-day-head>button{margin-left:auto}.billing-approval-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.billing-approval-toolbar select{width:auto;min-width:150px}.billing-approval-toolbar .home-search{width:min(420px,100%)}.billing-approval-toolbar>strong{font-size:12px;white-space:nowrap}
@media(max-width:900px){.home-billing-item{grid-template-columns:70px minmax(160px,1fr) auto}.home-billing-period{grid-column:2}.home-billing-total{grid-column:3;grid-row:1}.home-billing-review{grid-column:3;grid-row:2}}
@media(max-width:620px){.home-billing-head{align-items:flex-start}.home-billing-item{grid-template-columns:1fr auto;gap:8px 12px}.home-billing-type{grid-column:1}.home-billing-customer{grid-column:1/-1}.home-billing-period{grid-column:1}.home-billing-total{grid-column:2;grid-row:3}.home-billing-review{grid-column:1/-1;grid-row:auto;width:100%}.home-billing-empty{align-items:center;flex-direction:column;text-align:center}}
@media(max-width:620px){.billing-approval-toolbar .home-search,.billing-approval-toolbar select{width:100%}.billing-approval-page .home-day-head>button{margin-left:0}}
@media(max-width:760px){.billing-approval-head{align-items:flex-start;flex-direction:column}.billing-approval-metrics{margin-left:0;width:100%;justify-content:flex-start;text-align:left}}

/* v2.20.128: customer directory search stays compact on desktop and expands only when layout stacks. */
@media(max-width:1000px){.customer-toolbar-main .customer-search-wrap{flex:1 1 260px;width:auto;min-width:220px;max-width:360px}}
@media(max-width:620px){.customer-toolbar-main .customer-search-wrap{flex:1 1 auto;width:100%;min-width:0;max-width:none}}

/* v2.20.128 – compact customer directory: remove redundant hero and keep controls on one work row. */
.customer-directory-compact{margin-top:0}
.customer-directory-compact .customer-directory-toolbar{padding:10px 14px;min-height:50px}
.customer-directory-compact .customer-toolbar-main{flex:1 1 auto}
.customer-directory-compact .customer-search-wrap{width:260px!important;max-width:260px!important;min-width:200px!important;flex:0 0 260px!important}
.customer-directory-compact .customer-toolbar-meta{margin-left:auto}
@media(max-width:1000px){.customer-directory-compact .customer-directory-toolbar{align-items:flex-start}.customer-directory-compact .customer-toolbar-meta{margin-left:0;width:100%;justify-content:flex-end}}
@media(max-width:620px){.customer-directory-compact .customer-search-wrap{width:100%!important;max-width:none!important;min-width:0!important;flex:1 1 100%!important}.customer-directory-compact .customer-toolbar-meta{justify-content:space-between}}

/* v2.20.129 – toolbar controls share one exact height. */
:root{--shell-toolbar-control-h:36px}
.home-view-switch,
.home-search,
.customer-status-filter,
.customer-search-wrap{height:var(--shell-toolbar-control-h);min-height:var(--shell-toolbar-control-h);box-sizing:border-box}
.home-view-switch button,
.customer-status-filter button{height:calc(var(--shell-toolbar-control-h) - 2px);min-height:calc(var(--shell-toolbar-control-h) - 2px)!important;padding-top:0!important;padding-bottom:0!important;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box}
.home-search,
.customer-search-wrap{padding-top:0!important;padding-bottom:0!important}
.home-search input,
.customer-search-wrap>input{height:calc(var(--shell-toolbar-control-h) - 2px);padding-top:0!important;padding-bottom:0!important;line-height:normal!important;box-sizing:border-box}
.home-search>span,
.customer-search-wrap>span{display:inline-flex;align-items:center;height:100%;line-height:1}

/* v2.20.134 · Min dag relation filter */
.home-status-filter{display:inline-flex;flex:0 0 auto}
@media (max-width:1100px){.home-toolbar{flex-wrap:wrap}.home-status-filter{order:2}.home-search{order:3}}

/* v2.20.134 · final customer polish + compact Atera inventory */
.customer-attention-head{padding:8px 12px}
.customer-attention li{padding:7px 12px;gap:9px}
.customer-attention li strong{font-size:12.5px}
.customer-attention li small{font-size:11.5px;line-height:1.35}
.customer-next-card .customer-empty{padding:14px 16px;min-height:0}
.customer-next-card .customer-empty strong{font-size:13px}
.customer-next-card .customer-empty p{margin-top:3px}
/* v2.20.539 - «hvorfor er der ikke kommet data ind siden 25.9?» Kortet, der siger,
   hvornaar der SIDST KOM data fra hver kilde - ikke hvornaar noget aendrede sig.
   Farverne er tokens (v2.20.426): en hardkodet hex holder ikke i to retninger. */
.customer-datakilder539 table{table-layout:auto}
.customer-datakilder539 td{white-space:normal}
.customer-datakilder539 tbody tr.datakilde-stille539 td{background:var(--c-crit-soft)}
.customer-datakilder539 tbody tr.datakilde-stille539 td:first-child{box-shadow:inset 3px 0 0 var(--c-crit)}
@media(max-width:760px){.customer-datakilder539 .table-wrap{overflow-x:auto}}
.customer-recent-changes table{table-layout:fixed}
.customer-recent-changes th:nth-child(1),.customer-recent-changes td:nth-child(1){width:11%}
.customer-recent-changes th:nth-child(2),.customer-recent-changes td:nth-child(2){width:13%}
.customer-recent-changes th:nth-child(3),.customer-recent-changes td:nth-child(3){width:26%}
.customer-recent-changes th:nth-child(4),.customer-recent-changes td:nth-child(4){width:32%}
.customer-recent-changes th:nth-child(5),.customer-recent-changes td:nth-child(5){width:18%}
.customer-hub-top{padding-top:12px;padding-bottom:8px}
.customer-tabs button{padding-top:8px;padding-bottom:8px}
.customer-tabs button span{opacity:.72}
.atera-assets-preview-head{display:flex;align-items:center;gap:12px;justify-content:space-between;padding:10px 14px;border-top:1px solid var(--c-line);border-bottom:1px solid var(--c-line);background:var(--c-surface-2)}
.atera-assets-preview-head>div{display:grid;gap:2px}
.atera-assets-preview-head strong{font-size:12.5px}
.atera-assets-preview-head small{color:var(--c-ink-3);font-size:11.5px}
.atera-assets-table-wrap{max-height:none}
.atera-assets-more{border-top:1px solid var(--c-line);background:var(--c-surface)}
.atera-assets-more>summary{cursor:pointer;padding:10px 14px;font-size:12.5px;font-weight:550;color:var(--c-accent-ink);background:var(--c-surface-2);list-style-position:inside}
.atera-assets-more>summary:hover{background:var(--c-surface-3)}
.atera-assets-more-body{border-top:1px solid var(--c-line)}
@media(max-width:760px){.customer-recent-changes table{table-layout:auto}.customer-recent-changes th,.customer-recent-changes td{width:auto!important}.atera-assets-preview-head{align-items:flex-start;flex-direction:column}}

/* v2.20.135 – Development customer exclusions */
.development-exclusion-toolbar{display:flex;align-items:center;gap:10px;margin:12px 0}.development-exclusion-toolbar input{margin:0;flex:1}.development-exclusion-toolbar strong{white-space:nowrap;color:var(--muted)}.development-exclusion-list{max-height:52vh;overflow:auto;border:1px solid var(--c-line,var(--border));border-radius:var(--r-container,4px);background:var(--c-surface,#fff)}.development-exclusion-list label{display:flex;align-items:flex-start;gap:10px;padding:9px 11px;border-bottom:1px solid var(--c-line,var(--border));cursor:pointer}.development-exclusion-list label:last-child{border-bottom:0}.development-exclusion-list label:hover{background:var(--c-surface-2,#f7f9f8)}.development-exclusion-list input{width:auto;margin:3px 0 0;flex:none}.development-exclusion-list span{display:grid;gap:1px}.development-exclusion-list small{color:var(--c-ink-3,var(--muted));font-family:var(--f-mono,monospace)}

/* v2.20.137 · billing draft correction + locked archive */
.billing-review-box{margin:10px 0;padding:10px 12px;border-left:2px solid var(--c-warn,var(--warn));background:var(--c-warn-soft,var(--warn-soft));font-size:12.5px}
.billing-review-box p{margin:3px 0 0;color:var(--c-ink-2,var(--muted))}
.billing-lock-note{margin:8px 0;padding:8px 10px;border:1px solid var(--c-line,var(--border));background:var(--c-surface-2,var(--panel-2));font-size:12px;color:var(--c-ink-2,var(--muted));overflow-wrap:anywhere}
.billing-draft-audit{margin-top:10px;border-top:1px solid var(--c-line,var(--border));padding-top:8px}
.billing-draft-audit summary{cursor:pointer;font-weight:600;font-size:12.5px;color:var(--c-accent-ink,var(--brand))}
.billing-draft-audit>div{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid var(--c-line,var(--border));font-size:12px}
.billing-draft-audit>div span{color:var(--c-ink-3,var(--muted));text-align:right}
.billing-economic-paused{margin-top:12px;padding-top:8px;border-top:1px solid var(--c-line,var(--border))}
.billing-draft-lines .billing-line-manual td{background:var(--c-accent-soft,#eef7f6)}
.billing-lock-note{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:baseline}
.billing-lock-note strong{color:var(--c-ink,var(--text))}
.billing-lock-note small{flex-basis:100%;color:var(--c-ink-3,var(--muted))}

/* v2.20.138 · installable online-first PWA */
.pwa-offline-banner{position:fixed;left:50%;bottom:14px;z-index:1000;transform:translateX(-50%);max-width:min(680px,calc(100vw - 28px));padding:8px 12px;border:1px solid var(--c-warn,var(--warn));border-radius:var(--r-control,3px);background:var(--c-warn-soft,var(--warn-soft));color:var(--c-warn,var(--warn));font-size:12.5px;font-weight:600;box-shadow:0 4px 18px rgba(0,0,0,.12)}
.pwa-offline-banner[hidden]{display:none!important}
.pwa-profile-card{margin-top:12px;padding:14px 16px;border:1px solid var(--c-line,var(--border));border-radius:var(--r-container,4px);background:var(--c-surface-2,var(--panel-2));display:grid;gap:8px;align-items:start}
.pwa-profile-card strong{font-size:14px}.pwa-profile-card p{margin:0;color:var(--c-ink-2,var(--muted));line-height:1.5;max-width:68ch}.pwa-profile-card .muted{color:var(--c-ink-3,var(--muted));font-size:12px}.pwa-profile-card .btn{justify-self:start}
@media(max-width:700px){.pwa-offline-banner{bottom:max(10px,env(safe-area-inset-bottom));font-size:12px}}


/* v2.20.139 · dedicated mobile/PWA usability pass. Desktop behavior is intentionally unchanged. */
.mobile-nav-backdrop{display:none}
@media(max-width:760px){
  html,body{max-width:100%;overflow-x:hidden!important;background:var(--c-ground)}
  body{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}
  body.mobile-nav-open{overflow:hidden!important}
  .mobile-nav-backdrop{display:block;position:fixed;inset:0;z-index:109;background:rgba(4,12,12,.48);backdrop-filter:blur(1px)}
  .mobile-nav-backdrop[hidden]{display:none!important}
  .sidebar{z-index:120!important;width:min(86vw,318px)!important;max-width:318px!important;padding-top:max(14px,env(safe-area-inset-top))!important;padding-bottom:max(16px,env(safe-area-inset-bottom))!important;box-shadow:18px 0 42px rgba(0,0,0,.34)!important;overscroll-behavior:contain}
  .sidebar nav{overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
  .sidebar .brand{padding-bottom:10px}
  .nav-section{padding-top:10px;padding-bottom:4px}
  .nav-item{min-height:40px;padding:7px 10px}

  .topbar{z-index:100!important;left:0!important;right:0!important;top:0!important;height:auto!important;min-height:calc(104px + env(safe-area-inset-top))!important;padding:calc(7px + env(safe-area-inset-top)) 10px 8px!important;display:grid!important;grid-template-columns:40px minmax(0,1fr) 40px;grid-template-rows:42px 42px;gap:5px 8px;align-items:center!important;background:color-mix(in srgb,var(--c-ground) 96%,transparent)!important}
  #menuBtn{display:grid!important;place-items:center;width:40px;height:40px;margin:0!important;border:1px solid var(--c-line-control);border-radius:var(--r-control);background:var(--c-surface);font-size:21px;line-height:1}
  .topbar>div:first-of-type{grid-column:2;grid-row:1;min-width:0;align-self:center}
  .topbar h1{font-size:16px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%!important}
  .topbar p{display:none!important}
  .top-actions{grid-column:1/-1;grid-row:2;width:100%!important;margin:0!important;display:grid!important;grid-template-columns:minmax(0,1fr) 40px;gap:8px!important;align-items:center}
  .top-actions .global-search{display:block!important;position:relative!important;left:auto!important;right:auto!important;top:auto!important;width:100%!important;min-width:0!important}
  .top-actions .global-search input{display:block!important;width:100%!important;min-width:0!important;height:40px!important;min-height:40px!important;margin:0!important;padding:0 10px!important;font-size:16px!important;background:var(--c-surface)!important}
  .search-results{top:44px!important;max-height:min(52dvh,420px)!important;border-radius:var(--r-container)!important}
  .top-actions .user-chip{display:flex!important;grid-column:2;width:40px;height:40px;padding:0!important;border:0!important;justify-content:center}
  .top-actions .user-chip>span{width:40px!important;height:40px!important;border-radius:var(--r-control)!important}
  .top-actions .user-chip div,.top-actions #globalAdd{display:none!important}
  .content{padding:calc(116px + env(safe-area-inset-top)) 10px calc(20px + env(safe-area-inset-bottom))!important;width:100%!important;max-width:100%!important;overflow-x:hidden!important}

  .card{padding:12px!important}
  .card-header{gap:8px;margin-bottom:10px!important}
  .card-header h2,.card-header h3{line-height:1.25}
  .card-header .btn{width:auto!important;min-height:38px}
  .toolbar{gap:7px!important;margin:10px 0!important}
  .toolbar input,.toolbar select,.toolbar .btn{min-height:42px!important}
  .row-actions{gap:6px!important}
  .row-actions .btn{min-height:40px!important}
  input,select,textarea{font-size:16px!important}

  /* Min dag: compact two-column action strip and mobile customer cards. */
  .home-day-head{align-items:flex-start!important;gap:10px!important;margin-bottom:12px!important}
  .home-day-head h2{font-size:22px!important}
  .home-day-head p{font-size:12px!important;margin-top:4px!important}
  .home-day-actions{width:100%!important;display:grid!important;grid-template-columns:1fr 1fr;gap:7px!important;margin:0!important}
  .home-day-actions .btn{width:100%!important;min-width:0!important}
  .home-work-strip{grid-template-columns:repeat(2,minmax(0,1fr))!important;margin-bottom:12px!important}
  .home-work-tile{border-top:1px solid var(--c-line)!important;border-left:1px solid var(--c-line)!important;padding:10px 11px!important;min-height:86px}
  .home-work-tile:nth-child(-n+2){border-top:0!important}.home-work-tile:nth-child(odd){border-left:0!important}
  .home-work-tile strong{font-size:21px!important;margin-top:5px!important}.home-work-tile small{font-size:var(--t-5)!important;line-height:1.25}
  .home-toolbar{display:grid!important;grid-template-columns:1fr;gap:7px!important;align-items:stretch!important}
  .home-view-switch,.home-status-filter{width:100%!important;max-width:100%!important;overflow-x:auto!important;overscroll-behavior-inline:contain;scrollbar-width:none}
  .home-view-switch::-webkit-scrollbar,.home-status-filter::-webkit-scrollbar{display:none}
  .home-view-switch button,.home-status-filter button{flex:0 0 auto;white-space:nowrap;min-height:38px!important}
  .home-search{width:100%!important;max-width:none!important;order:3!important;height:42px!important}
  #homeCount{order:4;font-size:12px;color:var(--c-ink-3)}
  .home-customer-table{overflow:visible!important;border:0!important;background:transparent!important}
  .home-customer-table table,.home-customer-table tbody{display:block!important;width:100%!important;min-width:0!important}
  .home-customer-table thead{display:none!important}
  .home-customer-table tbody tr{display:grid!important;grid-template-columns:1fr 1fr;gap:0 12px;margin:0 0 9px;padding:11px 12px;border:1px solid var(--c-line);border-radius:var(--r-container);background:var(--c-surface);box-shadow:var(--shadow);white-space:normal}
  .home-customer-table tbody td{display:block!important;padding:5px 0!important;border:0!important;white-space:normal!important;text-align:left!important;min-width:0}
  .home-customer-table tbody td:first-child{grid-column:1/-1;padding-bottom:8px!important;border-bottom:1px solid var(--c-line)!important;margin-bottom:3px}
  .home-customer-table tbody td:nth-child(n+2):nth-child(-n+7)::before{display:block;font-family:var(--f-mono);font-size:var(--t-5);letter-spacing:.08em;text-transform:uppercase;color:var(--c-ink-3);margin-bottom:1px}
  .home-customer-table tbody td:nth-child(2)::before{content:'Ansvarlig'}.home-customer-table tbody td:nth-child(3)::before{content:'Kontakter'}.home-customer-table tbody td:nth-child(4)::before{content:'Licenser'}.home-customer-table tbody td:nth-child(5)::before{content:'Opp.'}.home-customer-table tbody td:nth-child(6)::before{content:'Sager'}.home-customer-table tbody td:nth-child(7)::before{content:'Kr./md.'}
  .home-customer-table tbody td:nth-child(8){grid-column:1/-1;padding-top:7px!important}.home-signals{justify-content:flex-start!important}
  .home-customer-table tbody td:nth-child(9){display:none!important}.home-customer-table tbody td.empty{grid-column:1/-1!important;text-align:center!important}
  .home-table-foot{display:grid!important;grid-template-columns:1fr 1fr;gap:5px 10px;padding:9px 2px!important;background:transparent!important;border:0!important}.home-table-foot span:nth-child(2){text-align:right}.home-table-foot span:last-child{grid-column:1/-1}

  /* Customer directory also becomes readable cards instead of a 9-column swipe. */
  .customer-directory-compact .customer-directory-toolbar{padding:8px!important;min-height:0!important;display:grid!important;grid-template-columns:1fr;gap:7px!important}
  .customer-directory-compact .customer-toolbar-main{display:grid!important;grid-template-columns:1fr;gap:7px!important;width:100%}
  .customer-status-filter{width:100%;overflow-x:auto!important;scrollbar-width:none}.customer-status-filter::-webkit-scrollbar{display:none}
  .customer-directory-compact .customer-search-wrap{width:100%!important;max-width:none!important;min-width:0!important;flex:auto!important;height:42px!important}
  .customer-toolbar-meta{width:100%!important;justify-content:space-between!important;margin:0!important;gap:8px!important}
  .customer-directory-table{overflow:visible!important;border:0!important}
  .customer-directory-table table,.customer-directory-table tbody{display:block!important;width:100%!important;min-width:0!important}
  .customer-directory-table thead{display:none!important}
  .customer-directory-table tbody tr{display:grid!important;grid-template-columns:1fr 1fr;gap:0 12px;margin:0 0 9px;padding:11px 12px;border:1px solid var(--c-line);border-radius:var(--r-container);background:var(--c-surface);white-space:normal}
  .customer-directory-table tbody td{display:block!important;padding:5px 0!important;border:0!important;white-space:normal!important;text-align:left!important;min-width:0}
  .customer-directory-table tbody td:first-child{grid-column:1/-1;padding-bottom:8px!important;border-bottom:1px solid var(--c-line)!important;margin-bottom:3px}
  .customer-directory-table tbody td:nth-child(n+2):nth-child(-n+8)::before{display:block;font-family:var(--f-mono);font-size:var(--t-5);letter-spacing:.08em;text-transform:uppercase;color:var(--c-ink-3);margin-bottom:1px}
  .customer-directory-table tbody td:nth-child(2)::before{content:'Relation'}.customer-directory-table tbody td:nth-child(3)::before{content:'Ansvarlig'}.customer-directory-table tbody td:nth-child(4)::before{content:'Kontakter'}.customer-directory-table tbody td:nth-child(5)::before{content:'Licenser'}.customer-directory-table tbody td:nth-child(6)::before{content:'Opportunities'}.customer-directory-table tbody td:nth-child(7)::before{content:'Åbne sager'}.customer-directory-table tbody td:nth-child(8)::before{content:'Månedlig værdi'}
  .customer-directory-table tbody td:nth-child(9){display:none!important}.customer-directory-table tbody td.empty{grid-column:1/-1!important;text-align:center!important}

  /* Customer workspace: compact identity, scrollable tabs and two-column metrics. */
  .customer-hub-top{display:grid!important;grid-template-columns:42px minmax(0,1fr);gap:9px!important;padding:4px 0 8px!important;align-items:start!important}
  .customer-company-mark{width:42px!important;height:42px!important;font-size:14px!important}
  .customer-hub-identity{min-width:0}.customer-title-row{display:block!important}.customer-title-row h2{font-size:20px!important;line-height:1.15;overflow-wrap:anywhere}
  .customer-hub-identity p{font-size:var(--t-5)!important;line-height:1.45;overflow-wrap:anywhere}
  .customer-hub-actions{grid-column:1/-1;display:grid!important;grid-template-columns:1fr 1fr;gap:7px!important;width:100%!important}
  .customer-hub-actions .btn{width:100%!important;min-width:0!important}
  .customer-tabs,.customer-section-tabs{width:calc(100% + 20px);margin-left:-10px;padding-left:10px!important;padding-right:10px!important;overflow-x:auto!important;overscroll-behavior-inline:contain;scrollbar-width:none;scroll-snap-type:x proximity}
  .customer-tabs::-webkit-scrollbar,.customer-section-tabs::-webkit-scrollbar{display:none}.customer-tabs button,.customer-section-tabs button{flex:0 0 auto;white-space:nowrap;scroll-snap-align:start;min-height:40px}
  .customer-metrics{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .customer-metric{border-top:1px solid var(--c-line)!important;border-left:1px solid var(--c-line)!important;padding:10px 11px!important;min-width:0}.customer-metric:nth-child(-n+2){border-top:0!important}.customer-metric:nth-child(odd){border-left:0!important}
  .customer-metric strong{font-size:20px!important;overflow-wrap:anywhere}.customer-metric span{font-size:var(--t-5)!important}
  .customer-overview-grid,.customer-service-layout,.customer-contact-grid,.customer-hierarchy-grid{grid-template-columns:1fr!important}
  .customer-attention li{align-items:flex-start!important}.customer-attention li>a,.customer-attention li>.btn{margin-left:auto;flex:none}
  .customer-facts{grid-template-columns:1fr!important}

  /* Recent changes become cards, keeping the actual change visible without sideways scrolling. */
  .customer-recent-changes .table-wrap{overflow:visible!important;border:0!important}.customer-recent-changes table,.customer-recent-changes tbody{display:block!important;width:100%!important;min-width:0!important}.customer-recent-changes thead{display:none!important}
  .customer-recent-changes tbody tr{display:grid!important;grid-template-columns:1fr 1fr;gap:4px 10px;padding:9px 0;border-bottom:1px solid var(--c-line)}.customer-recent-changes tbody td{display:block!important;width:auto!important;padding:2px 0!important;border:0!important;white-space:normal!important;overflow-wrap:anywhere}.customer-recent-changes tbody td:nth-child(3),.customer-recent-changes tbody td:nth-child(4){grid-column:1/-1}.customer-recent-changes tbody td:nth-child(4){font-weight:550}.customer-recent-changes tbody td:nth-child(5){text-align:right!important;color:var(--c-ink-3)}

  /* Billing: keep all columns/actions, but confine wide data to a deliberate swipe area. */
  .billing-source-section{overflow:hidden!important}
  .billing-source-table-wrap,.billing-draft-lines,.customer-license-table-wrap,.customer-agreements-wrap,.network-device-table-wrap,.atera-assets-table-wrap{width:100%!important;max-width:100%!important;overflow-x:auto!important;-webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain;border-radius:var(--r-container)}
  .billing-source-table{min-width:1120px!important;width:1120px!important;table-layout:fixed!important}
  .billing-source-table th,.billing-source-table td{padding:8px 9px!important;white-space:normal!important;vertical-align:top!important;overflow-wrap:anywhere}
  .billing-source-table th:first-child,.billing-source-table td:first-child{position:sticky;left:0;z-index:2;background:var(--c-surface)!important;box-shadow:1px 0 0 var(--c-line)}
  .billing-source-table th:first-child{z-index:3;background:var(--c-surface-2)!important}
  .billing-source-table input,.billing-source-table select,.billing-source-table button{min-height:38px!important}
  .billing-actions,.billing-draft-modal-actions{display:flex!important;flex-wrap:wrap!important;gap:6px!important}.billing-actions .btn,.billing-draft-modal-actions .btn{flex:1 1 auto;min-width:120px}
  .billing-lock-note,.billing-draft-audit>div{align-items:flex-start!important}.billing-draft-audit>div{display:grid!important;grid-template-columns:1fr!important}.billing-draft-audit>div span{text-align:left!important}

  /* Atera/network inventory: preview stays short and tables swipe inside their own card. */
  .atera-assets-preview-head{padding:9px 10px!important;gap:6px!important}.atera-assets-preview-head .btn{width:100%!important}.atera-assets-more>summary{padding:10px!important}.atera-assets-table-wrap table,.network-device-table-wrap table{min-width:760px!important}.network-device-toolbar,.network-device-actions{width:100%!important}.network-device-actions .btn{flex:1 1 auto}

  /* General wide content never expands the page itself. */
  .table-wrap,.billing-history-chart-wrap,.customer-hld-canvas,.contract-pdf-preview{max-width:100%!important;overscroll-behavior-inline:contain}
  .customer-hld-canvas{overflow:auto!important;-webkit-overflow-scrolling:touch}
  .modal{padding:0!important}.modal-card{border-radius:0!important;border-left:0!important;border-right:0!important}.modal-close{min-width:42px;min-height:42px}
  .form-actions{gap:7px!important}.form-actions .btn{min-height:44px!important}
}
@media(max-width:390px){
  .home-day-actions{grid-template-columns:1fr!important}
  /* v2.20.638 - hovedets fire knapper staar 2x2 paa telefonen, ikke under hinanden.
     Maalt foer: seks fuldbredde-knapper, «Slet» paa foerste skaerm, foerste tal ved y=530. */
  .customer-hub-actions{grid-template-columns:1fr 1fr!important}
  .customer-hub-actions .portal-dropdown607,.customer-hub-actions .hub-mere638{display:block}
  .customer-hub-actions .portal-dropdown607>.btn,.customer-hub-actions .hub-mere638>.btn{width:100%}
  .customer-hub-actions .portal-panel607,.customer-hub-actions .hub-mere-panel638{left:0;right:auto;max-width:calc(100vw - 24px)}
  .home-work-strip{grid-template-columns:1fr!important}.home-work-tile{border-left:0!important}.home-work-tile:nth-child(2){border-top:1px solid var(--c-line)!important}
  /* v2.20.638 - KPI-fliserne 2 og 2 paa telefonen: fem fliser under hinanden var fem
     skaermhoejder af tal, foer stamdata kom (y=1276). Kanterne foelger med: ingen streg
     over foerste raekke, en lodret streg foran hver anden. */
  .customer-metrics{grid-template-columns:1fr 1fr!important}.customer-metric{border-left:0!important;border-top:1px solid var(--c-line)!important}
  .customer-metric:nth-child(-n+2){border-top:0!important}.customer-metric:nth-child(even){border-left:1px solid var(--c-line)!important}
}
@media(display-mode:standalone) and (max-width:760px){
  .topbar{padding-top:calc(7px + env(safe-area-inset-top))!important}
  .content{padding-bottom:calc(24px + env(safe-area-inset-bottom))!important}
}

/* v2.20.140 · second mobile/PWA pass based on real iPhone screenshots.
   Focus: deterministic Safari sizing, collision-free header, readable customer identity,
   and card-style license/service rows instead of tall horizontal-table artefacts. */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}

@media(max-width:760px){
  /* v2.20.140: Safari lagde en tredje raekke ind i headeren. Den er deterministisk nu.
     v2.20.568: sprogvaelgeren, der udloeste det, findes ikke laengere. */
  .topbar{
    min-height:calc(94px + env(safe-area-inset-top))!important;
    padding:calc(6px + env(safe-area-inset-top)) 10px 6px!important;
    grid-template-columns:40px minmax(0,1fr) 40px!important;
    grid-template-rows:40px 40px!important;
    gap:6px 8px!important;
    align-content:start!important;
  }
  .topbar>div:first-of-type{grid-column:2!important;grid-row:1!important;min-width:0!important}
  #menuBtn{grid-column:1!important;grid-row:1!important}
  .top-actions{display:contents!important}
    .top-actions .global-search{
    display:block!important;grid-column:1/-1!important;grid-row:2!important;
    width:100%!important;min-width:0!important;max-width:none!important;margin:0!important;
  }
  .top-actions .global-search input{height:40px!important;min-height:40px!important;width:100%!important;padding:0 11px!important}
  .top-actions .user-chip{
    display:grid!important;grid-column:3!important;grid-row:1!important;
    width:40px!important;height:40px!important;min-width:40px!important;margin:0!important;padding:0!important;
    border:0!important;place-items:center!important
  }
  .top-actions .user-chip>span{width:40px!important;height:40px!important}
  .top-actions #globalAdd{display:none!important}
  .content{padding-top:calc(102px + env(safe-area-inset-top))!important}

  /* Customer identity: back action gets its own row. The previous 42px grid column made
     “← Alle kunder” wrap into a vertical button on iPhone. */
  .customer-hub-top{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:9px!important;padding:5px 0 9px!important}
  .customer-hub-top>#customerBack{
    grid-column:1!important;justify-self:start!important;width:auto!important;max-width:100%!important;
    min-height:36px!important;padding:6px 10px!important;white-space:nowrap!important
  }
  .customer-hub-identity{
    grid-column:1!important;display:grid!important;grid-template-columns:44px minmax(0,1fr)!important;
    gap:10px!important;align-items:start!important;width:100%!important
  }
  .customer-company-mark{width:44px!important;height:44px!important}
  .customer-title-row{display:flex!important;align-items:center!important;gap:5px!important;flex-wrap:wrap!important}
  .customer-title-row h2{flex-basis:100%;font-size:20px!important;margin:0 0 2px!important}
  .customer-title-row .pill{font-size:var(--t-5)!important;padding:3px 5px!important}
  .customer-hub-identity p{margin:3px 0 0!important;font-size:var(--t-5)!important;line-height:1.4!important}
  .customer-hub-actions{grid-column:1!important;display:grid!important;grid-template-columns:1fr 1fr!important;gap:7px!important}
  .customer-hub-actions .btn{min-height:40px!important}

  /* Customer tab rails remain swipeable, but never make the page itself wider. */
  .customer-tabs,.customer-section-tabs{
    width:100%!important;margin-left:0!important;padding-left:0!important;padding-right:0!important;
    max-width:100%!important;overflow-x:auto!important
  }
  .customer-tabs button,.customer-section-tabs button{font-size:12px!important;padding-left:9px!important;padding-right:9px!important}

  /* Billing intro should read like a mobile summary, not a desktop hero. */
  .billing-hero,.billing-cockpit-hero{
    display:grid!important;grid-template-columns:1fr!important;gap:12px!important;padding:12px!important;
    overflow:hidden!important
  }
  .billing-hero h2,.billing-cockpit-hero h2{font-size:18px!important;line-height:1.2!important;margin:4px 0 6px!important;letter-spacing:-.02em!important}
  .billing-hero p,.billing-cockpit-hero p{font-size:12px!important;line-height:1.45!important;margin:0!important;overflow-wrap:anywhere!important}
  .billing-hero .wiki-kicker,.billing-cockpit-hero .wiki-kicker{font-size:var(--t-5)!important;letter-spacing:.12em!important}
  .billing-hero-total,.billing-payment-profile-wrap{min-width:0!important;width:100%!important;align-items:flex-start!important}
  .billing-payment-profile{align-items:flex-start!important;display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:7px 12px!important;width:100%!important}
  .billing-payment-profile>span{white-space:normal!important;text-align:left!important}
  .billing-payment-profile>span strong{font-size:16px!important}

  /* Licenses: the wide diagnostics column made every horizontal-table row hundreds of pixels
     tall even when only product name was visible. Convert each subscription to a real card. */
  .customer-license-table-wrap{overflow:visible!important;border:0!important;border-radius:0!important}
  .customer-license-table,.customer-license-table tbody{display:block!important;width:100%!important;min-width:0!important;table-layout:auto!important}
  .customer-license-table thead{display:none!important}
  .customer-license-table tbody tr{
    display:grid!important;grid-template-columns:1fr 1fr!important;gap:0 12px!important;
    width:100%!important;min-width:0!important;margin:0 0 9px!important;padding:11px 12px!important;
    border:1px solid var(--c-line)!important;border-radius:var(--r-container)!important;background:var(--c-surface)!important
  }
  .customer-license-table tbody td{
    display:block!important;width:auto!important;min-width:0!important;padding:5px 0!important;border:0!important;
    white-space:normal!important;overflow:visible!important;overflow-wrap:anywhere!important;text-align:left!important
  }
  .customer-license-table tbody td:first-child{grid-column:1/-1!important;padding-bottom:8px!important;border-bottom:1px solid var(--c-line)!important;margin-bottom:3px!important}
  .customer-license-table tbody td:nth-child(n+2)::before{
    display:block;font-family:var(--f-mono);font-size:var(--t-5);letter-spacing:.08em;text-transform:uppercase;color:var(--c-ink-3);margin-bottom:2px
  }
  .customer-license-table tbody td:nth-child(2)::before{content:'Antal'}
  .customer-license-table tbody td:nth-child(3)::before{content:'Status'}
  .customer-license-table tbody td:nth-child(4)::before{content:'Binding / betaling'}
  .customer-license-table tbody td:nth-child(5)::before{content:'ALSO kost'}
  .customer-license-table tbody td:nth-child(6)::before{content:'ALSO pris'}
  .customer-license-table tbody td:nth-child(7)::before{content:'Faktureringspris'}
  .customer-license-table tbody td:nth-child(8)::before{content:'Rabat'}
  .customer-license-table tbody td:nth-child(9)::before{content:'Netto / måned'}
  .customer-license-table tbody td:nth-child(10){grid-column:1/-1!important;padding-top:8px!important}
  .customer-license-table tbody td:nth-child(10) .btn{width:100%!important;min-height:40px!important}
  .customer-license-table tfoot{display:block!important;margin:4px 0 12px!important}
  .customer-license-table tfoot tr,.customer-license-table tfoot td{display:block!important;width:100%!important;padding:7px 0!important;border:0!important;white-space:normal!important}
  .customer-license-table details{max-width:100%!important}.customer-license-table pre{white-space:pre-wrap!important;overflow-wrap:anywhere!important}

  /* Services & subscriptions use the same card principle. */
  .customer-agreements-wrap{overflow:visible!important;border:0!important;border-radius:0!important}
  .customer-agreements-table,.customer-agreements-table tbody{display:block!important;width:100%!important;min-width:0!important;table-layout:auto!important}
  .customer-agreements-table thead{display:none!important}
  .customer-agreements-table tbody tr{
    display:grid!important;grid-template-columns:1fr 1fr!important;gap:0 12px!important;
    width:100%!important;margin:0 0 9px!important;padding:11px 12px!important;border:1px solid var(--c-line)!important;
    border-radius:var(--r-container)!important;background:var(--c-surface)!important
  }
  .customer-agreements-table tbody td{display:block!important;width:auto!important;min-width:0!important;padding:5px 0!important;border:0!important;white-space:normal!important;overflow-wrap:anywhere!important;text-align:left!important}
  .customer-agreements-table tbody td:first-child{grid-column:1/-1!important;padding-bottom:8px!important;border-bottom:1px solid var(--c-line)!important;margin-bottom:3px!important}
  .customer-agreements-table tbody td:nth-child(n+2)::before{display:block;font-family:var(--f-mono);font-size:var(--t-5);letter-spacing:.08em;text-transform:uppercase;color:var(--c-ink-3);margin-bottom:2px}
  .customer-agreements-table tbody td:nth-child(2)::before{content:'Antal / grundlag'}
  .customer-agreements-table tbody td:nth-child(3)::before{content:'Aktuel måling'}
  .customer-agreements-table tbody td:nth-child(4)::before{content:'Pris / enhed'}
  .customer-agreements-table tbody td:nth-child(5)::before{content:'Aktuel måned'}
  .customer-agreements-table tbody td:nth-child(6)::before{content:'Kilde / periode'}
  .customer-agreements-table tbody td:nth-child(7){grid-column:1/-1!important}.customer-agreements-table tbody td:nth-child(7)::before{content:'Handling'}
  .customer-agreements-table tbody td:nth-child(7) .row-actions{display:grid!important;grid-template-columns:1fr 1fr!important;width:100%!important}
  .customer-agreements-table tfoot{display:block!important}.customer-agreements-table tfoot tr,.customer-agreements-table tfoot td{display:block!important;width:100%!important;padding:7px 0!important;border:0!important;white-space:normal!important}

  /* Directory controls and cards: slightly denser after Safari text-size normalisation. */
  .customer-directory-compact .customer-directory-toolbar{padding:7px!important}
  .customer-status-filter button{font-size:12px!important;min-height:38px!important}
  .customer-directory-compact .customer-search-wrap{height:40px!important}
  .customer-toolbar-meta{font-size:12px!important}
  .customer-directory-table tbody tr{padding:10px!important}
  .customer-directory-table tbody td:first-child strong,.home-customer-table tbody td:first-child strong{font-size:14px!important}

  /* Explicit swipe areas get a subtle boundary; page body itself remains fixed-width. */
  .billing-source-table-wrap,.network-device-table-wrap,.atera-assets-table-wrap{
    border:1px solid var(--c-line)!important;background:var(--c-surface)!important
  }
}

@media(max-width:390px){
  /* v2.20.638 - .customer-hub-actions stod her ogsaa paa 1fr (anden gang i filen); 2x2 nu, se reglen ovenfor. */
  .billing-payment-profile{grid-template-columns:1fr!important}
  .customer-license-table tbody tr,.customer-agreements-table tbody tr{grid-template-columns:1fr!important}
  .customer-license-table tbody td:first-child,.customer-license-table tbody td:nth-child(10),.customer-agreements-table tbody td:first-child,.customer-agreements-table tbody td:nth-child(7){grid-column:1!important}
}


/* v2.20.141 · third mobile pass from real iPhone verification.
   The previous release styled the wrong license table in Billing and left the full change-log
   and infrastructure tables as desktop tables. These rules target the actual rendered classes. */
@media(max-width:760px){
  /* Full customer change log: cards instead of clipped desktop columns. */
  .customer-change-log-wrap{overflow:visible!important;border:0!important;background:transparent!important}
  .customer-change-log-table,.customer-change-log-table tbody{display:block!important;width:100%!important;min-width:0!important;table-layout:auto!important}
  .customer-change-log-table thead{display:none!important}
  .customer-change-log-table tbody tr{display:grid!important;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr)!important;gap:4px 10px!important;margin:0 0 8px!important;padding:10px 11px!important;border:1px solid var(--c-line)!important;border-radius:var(--r-container)!important;background:var(--c-surface)!important}
  .customer-change-log-table tbody td{display:block!important;width:auto!important;min-width:0!important;padding:2px 0!important;border:0!important;white-space:normal!important;overflow-wrap:anywhere!important;text-align:left!important}
  .customer-change-log-table tbody td::before{display:block!important;font-family:var(--f-mono)!important;font-size:var(--t-5)!important;letter-spacing:.08em!important;text-transform:uppercase!important;color:var(--c-ink-3)!important;margin-bottom:1px!important;font-weight:500!important}
  .customer-change-log-table tbody td:nth-child(1)::before{content:'Tidspunkt'}
  .customer-change-log-table tbody td:nth-child(2)::before{content:'Område'}
  .customer-change-log-table tbody td:nth-child(3)::before{content:'Ydelse / måling'}
  .customer-change-log-table tbody td:nth-child(4)::before{content:'Ændring'}
  .customer-change-log-table tbody td:nth-child(5)::before{content:'Kilde'}
  .customer-change-log-table tbody td:nth-child(3),.customer-change-log-table tbody td:nth-child(4){grid-column:1/-1!important}
  .customer-change-log-table tbody td:nth-child(3),.customer-change-log-table tbody td:nth-child(4){font-weight:550!important}
  .customer-change-log-table tbody td:nth-child(5){grid-column:1/-1!important;color:var(--c-ink-3)!important}

  /* Actual Billing source table (Licenser / Services / Backup etc.): cards with every field
     preserved, including Admin controls. No horizontal page/table swipe is needed for these rows. */
  .billing-source-section{overflow:visible!important}
  .billing-source-table-wrap{overflow:visible!important;border:0!important;background:transparent!important;border-radius:0!important}
  .billing-source-table,.billing-source-table tbody{display:block!important;width:100%!important;min-width:0!important;max-width:100%!important;table-layout:auto!important}
  .billing-source-table colgroup,.billing-source-table thead{display:none!important}
  .billing-source-table tbody tr{display:grid!important;grid-template-columns:1fr 1fr!important;gap:0 12px!important;width:100%!important;min-width:0!important;margin:0 0 9px!important;padding:11px 12px!important;border:1px solid var(--c-line)!important;border-radius:var(--r-container)!important;background:var(--c-surface)!important}
  .billing-source-table tbody td{display:block!important;position:static!important;width:auto!important;min-width:0!important;max-width:100%!important;padding:5px 0!important;border:0!important;box-shadow:none!important;background:transparent!important;white-space:normal!important;overflow:visible!important;overflow-wrap:anywhere!important;text-align:left!important}
  .billing-source-table tbody td:first-child{grid-column:1/-1!important;padding-bottom:8px!important;border-bottom:1px solid var(--c-line)!important;margin-bottom:3px!important}
  .billing-source-table tbody td:nth-child(n+2)::before{display:block!important;font-family:var(--f-mono)!important;font-size:var(--t-5)!important;letter-spacing:.08em!important;text-transform:uppercase!important;color:var(--c-ink-3)!important;margin-bottom:2px!important;font-weight:500!important}
  .billing-source-table tbody td:nth-child(2)::before{content:'Mængde / regel'}
  .billing-source-table tbody td:nth-child(3)::before{content:'Grundpris'}
  .billing-source-table tbody td:nth-child(4)::before{content:'Kundepris / rabat'}
  .billing-source-table tbody td:nth-child(5)::before{content:'Opkrævning'}
  .billing-source-table tbody td:nth-child(6)::before{content:'Faktureres'}
  .billing-source-table tbody td:nth-child(7)::before{content:'Fakturagruppe'}
  .billing-source-table tbody td:nth-child(8)::before{content:'e-conomic produkt'}
  .billing-source-table tbody td:nth-child(9)::before{content:'Handling'}
  .billing-source-table tbody td:nth-child(9){grid-column:1/-1!important}
  .billing-source-table tbody td:nth-child(9) .btn,.billing-source-table tbody td:nth-child(9) button{width:100%!important;min-height:40px!important}
  .billing-source-table input,.billing-source-table select,.billing-source-table button{max-width:100%!important}
  .billing-source-table details,.billing-source-table pre{max-width:100%!important;white-space:normal!important;overflow-wrap:anywhere!important}

  /* Infrastructure under Aftaler & services: the user should see the values without swiping
     through a desktop table. */
  .customer-infrastructure-table-wrap{overflow:visible!important;border:0!important;background:transparent!important}
  .customer-infrastructure-table,.customer-infrastructure-table tbody{display:block!important;width:100%!important;min-width:0!important;table-layout:auto!important}
  .customer-infrastructure-table thead{display:none!important}
  .customer-infrastructure-table tbody tr{display:grid!important;grid-template-columns:1fr 1fr!important;gap:0 12px!important;margin:0 0 8px!important;padding:10px 11px!important;border:1px solid var(--c-line)!important;border-radius:var(--r-container)!important;background:var(--c-surface)!important}
  .customer-infrastructure-table tbody td{display:block!important;width:auto!important;min-width:0!important;padding:5px 0!important;border:0!important;white-space:normal!important;overflow-wrap:anywhere!important;text-align:left!important}
  .customer-infrastructure-table tbody td:first-child{grid-column:1/-1!important;padding-bottom:7px!important;border-bottom:1px solid var(--c-line)!important;margin-bottom:2px!important}
  .customer-infrastructure-table tbody td:nth-child(n+2)::before{display:block!important;font-family:var(--f-mono)!important;font-size:var(--t-5)!important;letter-spacing:.08em!important;text-transform:uppercase!important;color:var(--c-ink-3)!important;margin-bottom:2px!important}
  .customer-infrastructure-table tbody td:nth-child(2)::before{content:'Mængde'}
  .customer-infrastructure-table tbody td:nth-child(3)::before{content:'Kilde'}
  .customer-infrastructure-table tbody td:nth-child(4)::before{content:'Pris / enhed'}
  .customer-infrastructure-table tbody td:nth-child(5)::before{content:'Netto / måned'}
  .customer-infrastructure-table tfoot{display:block!important;margin-top:5px!important}.customer-infrastructure-table tfoot tr,.customer-infrastructure-table tfoot td{display:block!important;width:100%!important;padding:7px 0!important;border:0!important;white-space:normal!important}
}
@media(max-width:390px){
  .billing-source-table tbody tr,.customer-infrastructure-table tbody tr,.customer-change-log-table tbody tr{grid-template-columns:1fr!important}
  .billing-source-table tbody td:first-child,.billing-source-table tbody td:nth-child(9),.customer-infrastructure-table tbody td:first-child,.customer-change-log-table tbody td:nth-child(3),.customer-change-log-table tbody td:nth-child(4),.customer-change-log-table tbody td:nth-child(5){grid-column:1!important}
}

/* v2.20.143 – aggregate billing product allocation */
.billing-allocation-editor{margin-top:8px}
.billing-allocation-editor label{display:flex;flex-direction:column;gap:5px}
.billing-allocation-parent td{background:color-mix(in srgb,var(--c-accent-soft,#dceae9) 24%,transparent)}
@media (max-width:760px){
  .billing-allocation-row{grid-template-columns:1fr!important;align-items:stretch!important}
  .billing-allocation-row .billing-allocation-remove{justify-self:start}
  .billing-allocation-editor .row-actions{align-items:flex-start;flex-direction:column}
}

/* v2.20.144 — quantity allocation lines are real invoice rows directly under the source line. */
.billing-source-table tr.billing-allocation-parent > td{background:var(--c-surface-2,#f7f9f8)}
.billing-source-table tr.billing-allocation-child > td:first-child{padding-left:28px;position:relative}
.billing-source-table tr.billing-allocation-child > td:first-child::before{content:"↳";position:absolute;left:10px;top:16px;color:var(--c-ink-3,#61706d);font-weight:600}
.billing-allocation-from{color:var(--c-ink-3,#61706d)}
@media (max-width:760px){
  .billing-source-table tr.billing-allocation-child > td:first-child{padding-left:18px}
  .billing-source-table tr.billing-allocation-child > td:first-child::before{left:3px;top:14px}
}

/* v2.20.164 – keep invoice-draft review notes compact so month-close warnings never widen the customer billing page.
   v2.20.645 - tabellen, reglerne her holdt styr paa, findes ikke mere: kladderne staar i
   «Til godkendelse» (se .godk645 sidst i filen). Kolonnebredderne, `td{overflow:hidden;
   text-overflow:ellipsis}` - det, der afkortede perioderne til «2026-10-02 → 2026-1…» - og
   reglerne for den gamle opsummering er fjernet med den. Boksen i forhaandsvisningen bliver. */
.billing-review-box p{white-space:normal!important;overflow-wrap:anywhere;word-break:break-word}

/* v2.20.167 – global modal close lane.
   The close X is a dedicated first grid row, so it can never overlap title rows,
   range buttons, filters or other controls in any popup using the shared modal shell. */
.modal-card{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto minmax(0,1fr)}
.modal-card>.modal-close{position:static!important;float:none!important;grid-column:2;grid-row:1;justify-self:end;align-self:start;z-index:20;width:36px;height:36px;min-width:36px;min-height:36px;margin:0 0 8px 12px;padding:0;display:grid;place-items:center;line-height:1;border:1px solid var(--border);background:#fff;border-radius:50%;box-shadow:0 2px 8px rgba(16,38,54,.08)}
.modal-card>.modal-close:hover{background:#f3f7f9}
.modal-card>#modalBody{grid-column:1/-1;grid-row:2;min-width:0;max-width:100%}
/* Existing modal header rows no longer need to reserve space for an overlapping X. */
.modal-card .modal-title-row,.modal-card.modal-infrastructure .infra-editor-head{padding-right:0}
@media(max-width:760px){.modal-card>.modal-close{width:42px;height:42px;min-width:42px;min-height:42px;margin-bottom:6px}}

/* v2.20.168 – stable inline customer pricing controls across desktop widths.
   Price + discount stay in a predictable two-column row and Save gets its own
   reserved row, so the action can never be squeezed into or on top of inputs. */
.billing-source-table .billing-inline-price{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) minmax(0,.78fr)!important;
  grid-template-areas:"price discount" "save save"!important;
  column-gap:8px!important;
  row-gap:6px!important;
  align-items:end!important;
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
}
.billing-source-table .billing-inline-price>label:nth-of-type(1){grid-area:price;min-width:0!important}
.billing-source-table .billing-inline-price>label:nth-of-type(2){grid-area:discount;min-width:0!important}
.billing-source-table .billing-inline-price>.billing-inline-or{display:none!important}
.billing-source-table .billing-inline-price>.billing-save-inline-price{
  grid-area:save!important;
  justify-self:end!important;
  align-self:center!important;
  min-width:58px!important;
  width:auto!important;
  margin:0!important;
  padding:7px 12px!important;
}
.billing-source-table .billing-inline-price input,
.billing-source-table .billing-inline-discount-wrap{min-width:0!important;max-width:100%!important}
@media(max-width:760px){
  .billing-source-table .billing-inline-price{
    grid-template-columns:minmax(0,1fr)!important;
    grid-template-areas:"price" "discount" "save"!important;
  }
  .billing-source-table .billing-inline-price>.billing-save-inline-price{justify-self:stretch!important;width:100%!important}
}
/* v2.20.171 – clickable customer overview KPIs */
button.customer-metric{font:inherit;text-align:left;color:inherit;width:100%;cursor:pointer;appearance:none}
.customer-metric-link{position:relative;transition:background .15s ease,box-shadow .15s ease}
.customer-metric-link:hover{background:#f3faf9!important;box-shadow:inset 0 -3px 0 #178c84!important}
.customer-metric-link:focus-visible{outline:3px solid rgba(23,140,132,.22);outline-offset:-3px}
.customer-metric-link em{display:block;margin-top:7px;color:#0c7b74;font-size:var(--t-5);font-style:normal;font-weight:700;opacity:.8}
/* v2.20.172 · Customer portal administration inside the customer workspace */
.customer-portal-admin-modal{display:grid;gap:18px;min-width:min(1040px,88vw)}.customer-portal-admin-head{display:flex;justify-content:space-between;align-items:end;gap:15px}.customer-portal-admin-head h3{margin:0 0 4px}.customer-portal-admin-head p{margin:0}.customer-portal-user-table{width:100%;min-width:860px}.customer-portal-user-table select{margin:0;min-width:150px}.customer-portal-user-table .inline-check{display:inline-flex;align-items:center;gap:6px}.customer-portal-user-table .inline-check input{width:auto;margin:0}.customer-portal-user-table .row-actions{display:flex;gap:6px;flex-wrap:wrap}.customer-portal-user-table .danger{color:#a33e34;border-color:#e5c4bf}
@media(max-width:900px){.customer-portal-admin-modal{min-width:0}.customer-portal-admin-head{align-items:flex-start;flex-direction:column}}

/* v2.20.175 – polished customer-portal administration modal.
   The modal gets a wide, responsive workspace and portal users collapse to cards
   on narrower screens. No horizontal scrollbar is required. */
.modal-card.modal-customer-portal-admin{
  width:min(1180px,calc(100vw - 48px))!important;
  max-width:1180px!important;
  max-height:min(90dvh,920px)!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  padding:22px 24px 26px!important;
}
.modal-customer-portal-admin>#modalBody{overflow-x:hidden!important;min-width:0!important}
.customer-portal-admin-modal{display:grid;gap:18px;min-width:0!important;width:100%;max-width:100%}
.customer-portal-admin-modal>.card-header{padding:0 0 16px;margin:0;border-bottom:1px solid var(--border);align-items:flex-start}
.customer-portal-admin-modal>.card-header h2{margin:0 0 5px;font-size:19px}
.customer-portal-admin-modal>.card-header .pill{flex:0 0 auto}
.customer-portal-admin-head{align-items:center!important;padding-top:2px}
.customer-portal-admin-head>div{min-width:0}
.customer-portal-admin-head p{max-width:760px;line-height:1.45}
.customer-portal-users-wrap{width:100%;max-width:100%;overflow:visible;border:1px solid var(--border);border-radius:12px;background:#fff}
.customer-portal-user-table{width:100%!important;min-width:0!important;table-layout:fixed}
.customer-portal-user-table th,.customer-portal-user-table td{white-space:normal!important;vertical-align:middle;overflow-wrap:anywhere}
.customer-portal-user-table th:nth-child(1){width:22%}
.customer-portal-user-table th:nth-child(2){width:18%}
.customer-portal-user-table th:nth-child(3){width:17%}
.customer-portal-user-table th:nth-child(4){width:15%}
.customer-portal-user-table th:nth-child(5){width:12%}
.customer-portal-user-table th:nth-child(6){width:16%}
.customer-portal-user-table td>strong,.customer-portal-user-table td>small{display:block}
.customer-portal-user-table td>small{margin-top:3px;color:var(--muted);line-height:1.35}
.customer-portal-user-table select{width:100%;min-width:0!important;margin:0}
.customer-portal-user-table .inline-check{display:flex!important;align-items:center;gap:7px;white-space:normal}
.customer-portal-user-table .row-actions{display:grid!important;grid-template-columns:1fr;gap:6px;align-items:stretch}
.customer-portal-user-table .row-actions .btn{width:100%;white-space:normal}

@media(max-width:980px){
  .modal-card.modal-customer-portal-admin{width:min(920px,calc(100vw - 28px))!important;padding:18px!important}
  .customer-portal-user-table thead{display:none}
  .customer-portal-users-wrap{border:0;background:transparent}
  .customer-portal-user-table,.customer-portal-user-table tbody{display:block;width:100%}
  .customer-portal-user-table tr{display:grid;grid-template-columns:1fr 1fr;gap:12px 18px;padding:16px;margin-bottom:12px;border:1px solid var(--border);border-radius:12px;background:#fff;box-shadow:0 3px 12px rgba(16,38,54,.05)}
  .customer-portal-user-table td{display:grid;grid-template-columns:minmax(105px,.55fr) minmax(0,1fr);align-items:center;gap:10px;padding:0!important;border:0!important;min-width:0}
  .customer-portal-user-table td::before{font-size:var(--t-5);text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:800}
  .customer-portal-user-table td:nth-child(1)::before{content:'Bruger'}
  .customer-portal-user-table td:nth-child(2)::before{content:'Rolle'}
  .customer-portal-user-table td:nth-child(3)::before{content:'MFA'}
  .customer-portal-user-table td:nth-child(4)::before{content:'Status'}
  .customer-portal-user-table td:nth-child(5)::before{content:'Seneste login'}
  .customer-portal-user-table td:nth-child(6)::before{content:'Handlinger'}
  .customer-portal-user-table td:nth-child(1){grid-column:1/-1;grid-template-columns:minmax(105px,.275fr) minmax(0,1fr)}
  .customer-portal-user-table td:nth-child(6){grid-column:1/-1;grid-template-columns:minmax(105px,.275fr) minmax(0,1fr)}
  .customer-portal-user-table .row-actions{display:flex!important;flex-wrap:wrap!important}
  .customer-portal-user-table .row-actions .btn{width:auto;flex:1 1 140px}
}
@media(max-width:650px){
  .modal-card.modal-customer-portal-admin{width:100vw!important;max-width:100vw!important;height:100dvh!important;max-height:100dvh!important;border-radius:0!important;padding:14px!important}
  .customer-portal-admin-head{align-items:stretch!important;flex-direction:column!important}
  .customer-portal-admin-head>.btn{width:100%}
  .customer-portal-user-table tr{grid-template-columns:1fr;gap:10px;padding:14px}
  .customer-portal-user-table td,.customer-portal-user-table td:nth-child(1),.customer-portal-user-table td:nth-child(6){grid-column:auto;grid-template-columns:1fr;gap:4px}
  .customer-portal-user-table td::before{margin-bottom:1px}
}

/* v2.20.177 – separate customer portal audit log under customer change log */
.customer-log-switch{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 14px;padding:8px;border:1px solid #dbe4e5;border-radius:12px;background:#f7faf9}
.customer-log-switch button{border:1px solid transparent;background:transparent;border-radius:9px;padding:9px 12px;font-weight:700;color:#405158;cursor:pointer;display:inline-flex;align-items:center;gap:8px}
.customer-log-switch button span{min-width:24px;padding:2px 7px;border-radius:999px;background:#e5ecec;font-size:11px;text-align:center;color:#5f7076}
.customer-log-switch button.active{background:#fff;border-color:#bfd0d2;color:#0f6f72;box-shadow:0 1px 2px rgba(12,44,45,.06)}
.customer-log-switch button.active span{background:#dff1ec;color:#11675e}
@media(max-width:720px){.customer-log-switch{align-items:stretch}.customer-log-switch button{flex:1;justify-content:center}}


/* v2.20.183 · Admin storage/database overview */
.storage-overview-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:18px 0 26px;align-items:stretch}
.storage-stat-card{min-width:0;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:6px;padding:16px 18px;border:1px solid #dce6e7;border-radius:12px;background:#fbfdfd;box-shadow:0 1px 2px rgba(10,50,52,.03)}
.storage-stat-card>span{display:block;color:#53666c;font-size:var(--t-5);font-weight:800;letter-spacing:.045em;text-transform:uppercase;line-height:1.25}
.storage-stat-card>strong{display:block;font-size:1.45rem;line-height:1.15;font-weight:800;font-variant-numeric:tabular-nums;color:#18282d;overflow-wrap:anywhere}
.storage-stat-card>small{display:block;color:var(--muted,#6b7280);font-size:.84rem;line-height:1.35;overflow-wrap:anywhere}
.storage-table-wrap{overflow-x:auto}
.storage-table{width:100%;table-layout:auto}
.storage-table th:not(:first-child),.storage-table td:not(:first-child){text-align:right;white-space:nowrap}
.storage-table td:first-child{min-width:220px}
.storage-sort-button{appearance:none;border:0;background:transparent;color:inherit;font:inherit;font-weight:800;padding:4px 2px;display:inline-flex;align-items:center;gap:6px;cursor:pointer;white-space:nowrap}
.storage-table th:not(:first-child) .storage-sort-button{justify-content:flex-end;width:100%}
.storage-sort-button span{font-size:var(--t-5);color:#9aabad;min-width:1em;text-align:center}
.storage-sort-button:hover,.storage-sort-button:focus-visible{color:#0c7275;outline:none}
.storage-sort-button.active{color:#0b6a6d}
.storage-sort-button.active span{color:#0b6a6d}
.storage-overview-foot{display:flex;gap:18px;flex-wrap:wrap;justify-content:space-between;margin-top:14px;color:var(--muted,#6b7280);font-size:.9rem}
@media(max-width:1250px){.storage-overview-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:680px){.storage-overview-grid{grid-template-columns:1fr}.storage-table td:first-child{min-width:160px}.storage-stat-card{padding:14px 15px}.storage-stat-card>strong{font-size:1.25rem}}

/* v2.20.183 · Admin cross-customer consumption overview */
.consumption-shell{display:grid;gap:16px}.consumption-hero{display:flex;justify-content:space-between;gap:24px;align-items:flex-end;padding:24px 26px;border:1px solid var(--border);border-radius:18px;background:linear-gradient(135deg,#f7fbfb,#eef6f5)}.consumption-hero h2{font-size:30px;margin:5px 0 8px}.consumption-hero p{max-width:820px;margin:0;color:var(--muted);line-height:1.55}.consumption-hero-meta{min-width:170px;text-align:right}.consumption-hero-meta strong{display:block;font-size:30px;line-height:1}.consumption-hero-meta span,.consumption-hero-meta small{display:block;color:var(--muted);margin-top:6px}.consumption-core-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.consumption-kpi{appearance:none;text-align:left;border:1px solid var(--border);background:#fff;border-radius:14px;padding:16px;min-width:0;cursor:pointer;transition:transform .12s,border-color .12s,box-shadow .12s}.consumption-kpi:hover,.consumption-kpi:focus-visible{transform:translateY(-1px);border-color:#8fbfba;box-shadow:0 7px 20px rgba(12,55,52,.08);outline:none}.consumption-kpi span,.consumption-kpi small{display:block;color:var(--muted)}.consumption-kpi strong{display:block;font-size:21px;margin:7px 0 5px;color:var(--text);overflow-wrap:anywhere}.consumption-table-card{padding:0;overflow:hidden}.consumption-table-card .card-header{padding:18px 20px 12px}.consumption-toolbar{display:grid;grid-template-columns:minmax(260px,1fr) minmax(180px,260px);gap:10px;padding:0 20px 14px}.consumption-table-wrap{border-top:1px solid var(--border);max-height:62vh;overflow:auto}.consumption-table{min-width:820px}.consumption-table th{position:sticky;top:0;background:#f6f9f9;z-index:2}.consumption-table td:first-child strong,.consumption-table td:first-child small{display:block}.consumption-table td:first-child small{color:var(--muted);margin-top:3px}.consumption-sort{appearance:none;border:0;background:none;padding:0;font:inherit;color:inherit;font-weight:800;cursor:pointer}.consumption-sort span{color:#8aa0a0;margin-left:4px}.consumption-sort.active span{color:var(--accent)}.consumption-table-card .wiki-tip{margin:16px 20px 20px}.consumption-detail .table-wrap{max-height:58vh;overflow:auto;margin-top:14px}.consumption-detail table{min-width:720px}.consumption-detail h2{margin:5px 0 8px}
@media(max-width:1180px){.consumption-core-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:850px){.consumption-hero{align-items:flex-start;flex-direction:column}.consumption-hero-meta{text-align:left}.consumption-core-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.consumption-toolbar{grid-template-columns:1fr}}
@media(max-width:560px){.consumption-core-grid{grid-template-columns:1fr}.consumption-hero{padding:19px}.consumption-hero h2{font-size:25px}}
/* v2.20.183 · capacity consumption trends */
.consumption-hero-side{display:flex;align-items:flex-end;gap:22px;flex-wrap:wrap;justify-content:flex-end}.consumption-range-switch{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.consumption-kpi-trend{display:block;margin-top:9px;padding-top:8px;border-top:1px solid #edf2f1;font-size:var(--t-5);font-weight:800;line-height:1.35}.consumption-kpi-trend.positive,.consumption-trend-summary .positive strong,.consumption-driver strong.positive{color:#087a59}.consumption-kpi-trend.negative,.consumption-trend-summary .negative strong,.consumption-driver strong.negative{color:#a35239}.consumption-kpi-trend.neutral,.consumption-trend-summary .neutral strong,.consumption-driver strong.neutral{color:var(--muted)}.consumption-detail-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;padding-right:8px}.consumption-detail-head h2{margin:5px 0 7px}.consumption-detail-head p{margin:0}.consumption-trend-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:18px 0 14px}.consumption-trend-summary>div{border:1px solid var(--border);border-radius:12px;background:#f8fbfa;padding:12px 14px;min-width:0}.consumption-trend-summary small,.consumption-trend-summary strong{display:block}.consumption-trend-summary small{color:var(--muted);font-size:var(--t-5);text-transform:uppercase;letter-spacing:.05em}.consumption-trend-summary strong{font-size:1rem;margin-top:5px;overflow-wrap:anywhere}.consumption-chart-wrap{position:relative;border:1px solid var(--border);border-radius:14px;background:#fbfdfc;padding:10px;overflow:hidden}.consumption-chart{display:block;width:100%;height:auto}.consumption-chart-line{stroke:var(--accent2);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.consumption-history-point{fill:#fff;stroke:var(--accent2);stroke-width:2;cursor:crosshair}.consumption-history-point:hover{fill:var(--accent2)}.consumption-chart-tooltip{position:absolute;z-index:4;pointer-events:none;background:#102536;color:#fff;border-radius:8px;padding:7px 9px;box-shadow:0 7px 20px #0003;min-width:145px}.consumption-chart-tooltip strong,.consumption-chart-tooltip span{display:block}.consumption-chart-tooltip span{font-size:11px;color:#c7d6df;margin-top:2px}.consumption-chart-empty{min-height:180px;display:grid;place-items:center;border:1px dashed var(--border);border-radius:14px;color:var(--muted);background:#fbfdfc}.consumption-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:18px}.consumption-detail-grid section{min-width:0}.consumption-detail-grid h3{font-size:1rem;margin:0 0 8px}.consumption-driver-list,.consumption-current-list{display:grid;border:1px solid var(--border);border-radius:12px;overflow:hidden;max-height:300px;overflow-y:auto;background:#fff}.consumption-driver{appearance:none;border:0;border-bottom:1px solid var(--border);background:#fff;padding:10px 12px;display:flex;align-items:center;justify-content:space-between;gap:14px;text-align:left;font:inherit;cursor:pointer}.consumption-driver:last-child{border-bottom:0}.consumption-driver:hover,.consumption-driver:focus-visible{background:#f4f9f8;outline:none}.consumption-driver span{min-width:0;overflow-wrap:anywhere}.consumption-driver strong{white-space:nowrap}.empty.compact{padding:18px}.consumption-table-card .card-header .muted{max-width:900px}
@media(max-width:1050px){.consumption-hero-side{align-items:flex-start;justify-content:flex-start}.consumption-trend-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.consumption-detail-grid{grid-template-columns:1fr}.consumption-detail-head{flex-direction:column}.consumption-range-switch{justify-content:flex-start}}
@media(max-width:620px){.consumption-trend-summary{grid-template-columns:1fr}.consumption-hero-side{display:grid;width:100%}.consumption-range-switch{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.consumption-range-switch .btn{width:100%}}
.consumption-history-note{margin-top:10px;padding:10px 12px;border-radius:10px;background:#f4f8f7;color:var(--muted);font-size:.84rem;line-height:1.45}

/* v2.20.183 – cross-customer infrastructure consistency + contract renewal workflow */
.consumption-quality{appearance:none;width:100%;border:1px solid var(--border);border-radius:14px;background:#fff;padding:14px 16px;display:flex;align-items:center;justify-content:space-between;gap:18px;text-align:left;font:inherit;cursor:pointer;transition:border-color .12s,box-shadow .12s,transform .12s}.consumption-quality:hover,.consumption-quality:focus-visible{transform:translateY(-1px);box-shadow:0 7px 20px rgba(12,55,52,.07);outline:none}.consumption-quality span{min-width:0}.consumption-quality strong,.consumption-quality small{display:block}.consumption-quality small{color:var(--muted);margin-top:4px}.consumption-quality b{font-size:.85rem;white-space:normal;text-align:right}.consumption-quality.warning{border-color:#e5c393;background:#fffaf2}.consumption-quality.warning b{color:#9a5b17}.consumption-quality.ok{border-color:#b8d8cd;background:#f5fbf8}.consumption-quality.ok b{color:#087a59}.consumption-quality-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:16px 0}.consumption-quality-summary>div{border:1px solid var(--border);border-radius:12px;background:#f8fbfa;padding:12px 14px}.consumption-quality-summary small,.consumption-quality-summary strong{display:block}.consumption-quality-summary small{color:var(--muted);font-size:var(--t-5)}.consumption-quality-summary strong{font-size:1.1rem;margin-top:4px}.consumption-quality-summary .negative strong{color:#a35239}.consumption-quality-summary .positive strong{color:#087a59}
.contract-renewal-state{display:grid;gap:4px;justify-items:start;min-width:150px}.contract-renewal-state small{color:var(--muted)}
@media(max-width:760px){.consumption-quality{align-items:flex-start;flex-direction:column}.consumption-quality b{text-align:left}.consumption-quality-summary{grid-template-columns:1fr}}

/* v2.20.215 · safe opportunity economics recovery */
.deal-recovery-banner{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;align-items:center;margin:10px 0;padding:12px 14px;border:1px solid #e7c98a;background:#fffaf0;border-radius:10px}.deal-recovery-banner strong{grid-column:1}.deal-recovery-banner span{grid-column:1;color:var(--muted,#64748b);font-size:12px}.deal-recovery-banner .btn{grid-column:2;grid-row:1/3}
@media(max-width:720px){.deal-recovery-banner{grid-template-columns:1fr}.deal-recovery-banner .btn{grid-column:1;grid-row:auto;justify-self:start}}

/* v2.20.215 – visible Atera background-sync heartbeat */
.atera-background-progress{display:grid;gap:7px;margin:14px 0;padding:14px 16px;border:1px solid var(--border,#dbe3ea);border-radius:12px;background:#f7fafb}.atera-background-progress strong{font-size:14px}.atera-background-progress span,.atera-background-progress small{display:block;color:var(--muted,#64748b);line-height:1.45}.atera-background-progress .warning-text{display:block;color:#9a5b16;font-style:normal;font-weight:700}

/* v2.20.218 · Products toolbar controls share one exact visual height */
.product-toolbar{align-items:center}
.product-toolbar .btn,.product-toolbar #productSearch{height:52px;min-height:52px;box-sizing:border-box;margin-top:0}
.product-toolbar .btn{display:inline-flex;align-items:center;justify-content:center;padding-top:0;padding-bottom:0}
.product-toolbar #productSearch{padding-top:0;padding-bottom:0}
@media(max-width:900px){.product-toolbar .btn,.product-toolbar #productSearch{height:50px;min-height:50px}}

/* v2.20.218 – stable customer-price controls in customer billing.
   Keep price, compact discount and Save on one baseline on desktop. The
   discount only needs room for a percentage, so it must not consume the
   same width as the customer price. Mobile keeps the safe vertical stack. */
.billing-source-table .billing-inline-price{
  grid-template-columns:minmax(118px,1fr) 88px 58px!important;
  grid-template-areas:"price discount save"!important;
  column-gap:8px!important;
  row-gap:0!important;
  align-items:end!important;
}
.billing-source-table .billing-inline-price>label:nth-of-type(2){
  width:88px!important;
  max-width:88px!important;
}
.billing-source-table .billing-inline-discount-wrap{
  display:grid!important;
  grid-template-columns:68px 12px!important;
  gap:4px!important;
  align-items:center!important;
  width:84px!important;
  max-width:84px!important;
}
.billing-source-table .billing-inline-discount-input{
  width:68px!important;
  max-width:68px!important;
  min-width:68px!important;
}
.billing-source-table .billing-inline-price>.billing-save-inline-price{
  grid-area:save!important;
  justify-self:end!important;
  align-self:end!important;
  width:58px!important;
  min-width:58px!important;
  height:34px!important;
  min-height:34px!important;
  margin:0!important;
}
@media(max-width:760px){
  .billing-source-table .billing-inline-price{
    grid-template-columns:minmax(0,1fr)!important;
    grid-template-areas:"price" "discount" "save"!important;
    row-gap:6px!important;
  }
  .billing-source-table .billing-inline-price>label:nth-of-type(2){width:auto!important;max-width:none!important}
  .billing-source-table .billing-inline-price>.billing-save-inline-price{justify-self:stretch!important;width:100%!important}
}

/* v2.20.222 · global IP search deep-link target */
.customer-search-focus{scroll-margin-top:120px;outline:3px solid rgba(9,111,102,.35);outline-offset:2px;box-shadow:0 0 0 6px rgba(9,111,102,.08);animation:customerSearchFocusPulse 1.2s ease-in-out 2}
tr.customer-search-focus>td{background:#eef9f6!important}
@keyframes customerSearchFocusPulse{0%,100%{outline-color:rgba(9,111,102,.28)}50%{outline-color:rgba(9,111,102,.72)}}

/* v2.20.222 · license register export field picker */
.license-export-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 14px;margin:10px 0 18px}.license-export-field{display:flex;align-items:center;gap:8px;min-height:38px;padding:7px 10px;border:1px solid var(--line,#d7e0df);border-radius:8px;background:var(--card,#fff)}.license-export-field input{width:auto;margin:0}.license-export-field span{min-width:0}@media(max-width:720px){.license-export-fields{grid-template-columns:1fr}}

/* v2.20.222 · annual license control view */
.license-view-tabs{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:0 0 18px}
.annual-license-summary{margin:0 0 18px}
.annual-license-toolbar{margin:14px 0 16px}
.annual-license-toolbar input{min-width:min(520px,100%)}
.annual-license-detail .section-head{align-items:flex-start}
.annual-license-detail h3{margin:22px 0 6px}
.annual-license-metrics .metric strong{font-size:1rem;line-height:1.3}
.annual-license-metrics .metric span{display:block;margin-top:4px;color:var(--muted)}
.annual-license-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:16px 0 22px}
.annual-license-facts>div{border:1px solid var(--line);border-radius:10px;padding:12px;background:var(--surface-soft,#f8fbfa);display:flex;flex-direction:column;gap:4px}
.annual-license-facts>div{min-width:0}
.annual-license-facts strong{max-width:100%;overflow-wrap:anywhere;word-break:break-word;line-height:1.25}
.annual-license-facts small{color:var(--muted)}
.annual-license-facts span{color:var(--muted);font-size:.82rem}
.annual-license-detail .notice ul{margin:8px 0 0 18px;padding:0}
@media(max-width:900px){.annual-license-facts{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.annual-license-facts{grid-template-columns:1fr}.annual-license-toolbar{align-items:stretch}.annual-license-toolbar input,.annual-license-toolbar select{width:100%;min-width:0}}

/* v2.20.241 · compact license register + annual license control */
.license-register-page{padding:14px 16px}
.license-register-page>.section-head{margin-bottom:7px}
.license-register-page>.section-head h2{margin:3px 0 4px;line-height:1.2}
.license-register-page>.section-head p{margin:0;line-height:1.35}
.license-register-page .license-view-tabs{gap:7px;margin:8px 0 9px}
.license-register-page .license-view-tabs .btn{padding:7px 11px;min-height:36px}
.license-register-summary{grid-template-columns:repeat(6,minmax(120px,1fr));gap:8px;margin:8px 0 10px}
.license-register-summary .metric,.annual-license-summary .metric{padding:10px 11px;border-radius:10px;min-height:70px}
.license-register-summary .metric strong,.annual-license-summary .metric strong{font-size:19px;line-height:1.15;margin-top:3px}
.license-register-toolbar,.annual-license-toolbar{gap:8px;margin:8px 0 10px;align-items:center}
.license-register-toolbar input{max-width:360px;min-width:240px}
.license-register-toolbar select{max-width:190px}
.license-register-toolbar input,.license-register-toolbar select,.annual-license-toolbar input,.annual-license-toolbar select{margin-top:0;min-height:38px;padding:8px 10px}
.license-register-group{margin-top:11px}
.license-register-group>.section-head{margin:0 0 7px}
.license-register-group>.section-head h3{margin:0;font-size:15px;line-height:1.2}
.license-register-group>.section-head p{margin:3px 0 0;line-height:1.3;color:var(--muted)}
.license-register-table-wrap{max-width:100%;overflow-x:auto}
.license-register-table{table-layout:fixed;min-width:1254px;font-size:12.5px} /* v2.20.636 - +34 (Opkrævning +30, Rabat +4), saa ALSO kost (auto) ikke betaler */
.license-register-table th,.license-register-table td{padding:7px 8px;line-height:1.25;vertical-align:middle}
/* v2.20.636 - 13 kolonner i 1.220 px med faste bredder og `nowrap`: «Faktureringspris»
   (87 px i 88-16), «Netto total / måned» (101 i 96-16), «Opkrævning», «Netto / enhed»
   og «Antal licenser» loeb ind under naboen og blev klippet af dens baggrund - 5 af
   13, foer som efter skriftskiftet. Der ER ikke plads paa én linje. Overskriften
   maa ombryde, som faktureringstabellen allerede goer; raekken bliver to linjer
   hoej, og alle 13 kan laeses. Stoerrelse og spatiering kommer fra design-b.css. */
.license-register-table th{white-space:normal;line-height:1.2;vertical-align:bottom}
.license-register-table th:nth-child(1),.license-register-table td:nth-child(1){width:132px}
.license-register-table th:nth-child(2),.license-register-table td:nth-child(2){width:148px}
.license-register-table th:nth-child(3),.license-register-table td:nth-child(3){width:74px}
.license-register-table th:nth-child(4),.license-register-table td:nth-child(4){width:68px}
.license-register-table th:nth-child(5),.license-register-table td:nth-child(5){width:142px}
.license-register-table th:nth-child(6),.license-register-table td:nth-child(6),
.license-register-table th:nth-child(7),.license-register-table td:nth-child(7){width:76px}
.license-register-table th:nth-child(8),.license-register-table td:nth-child(8){width:116px} /* v2.20.636 - «Faktureringspris» er 87 px + 8 luft + 20 til pilen; kolonne 2 gav de 28 */
.license-register-table th:nth-child(9),.license-register-table td:nth-child(9){width:62px} /* v2.20.636 - «Rabat» 31 + 28 */
.license-register-table th:nth-child(10),.license-register-table td:nth-child(10){width:80px}
.license-register-table th:nth-child(11),.license-register-table td:nth-child(11){width:96px}
.license-register-table th:nth-child(12),.license-register-table td:nth-child(12){width:96px} /* v2.20.636 - «Opkrævning» er 66 px + 8 + 16 til pilen + 6 luft */
.license-register-table th:nth-child(13),.license-register-table td:nth-child(13){width:82px}
.license-register-table td:nth-child(-n+5){white-space:normal;overflow-wrap:anywhere}
.license-register-table td:nth-child(n+6){white-space:nowrap}
.license-register-table td small{font-size:var(--t-5);line-height:1.15;color:var(--muted)}
.license-register-table .pill{padding:3px 6px;font-size:var(--t-5)}
.license-primary-text{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere;line-height:1.25;max-width:100%}
.license-customer-cell,.license-product-cell,.annual-license-customer,.annual-license-product{white-space:normal!important;overflow-wrap:anywhere}
.license-customer-cell small,.license-product-cell small,.annual-license-customer small,.annual-license-product small{overflow-wrap:anywhere}

.annual-license-summary{grid-template-columns:repeat(5,minmax(120px,1fr));gap:8px;margin:7px 0 9px}
.annual-license-intro{padding:8px 10px!important;margin:8px 0!important}
.annual-license-intro p{margin:3px 0 0;line-height:1.3}
.annual-license-toolbar{margin:8px 0 9px}
.annual-license-toolbar input{min-width:260px;max-width:420px}
.annual-license-toolbar select{max-width:175px}
.annual-license-table-wrap{max-width:100%;overflow-x:auto}
.annual-license-table{table-layout:fixed;min-width:960px;font-size:12.5px}
.annual-license-table th,.annual-license-table td{padding:7px 8px;line-height:1.25;vertical-align:middle;white-space:normal;overflow-wrap:anywhere}
.annual-license-table th{white-space:normal;line-height:1.2;vertical-align:bottom} /* v2.20.636 - som licensregistret */
.annual-license-table th:nth-child(1),.annual-license-table td:nth-child(1){width:19%}
.annual-license-table th:nth-child(2),.annual-license-table td:nth-child(2){width:21%}
.annual-license-table th:nth-child(3),.annual-license-table td:nth-child(3){width:8%}
.annual-license-table th:nth-child(4),.annual-license-table td:nth-child(4){width:14%}
.annual-license-table th:nth-child(5),.annual-license-table td:nth-child(5){width:12%}
.annual-license-table th:nth-child(6),.annual-license-table td:nth-child(6){width:13%}
.annual-license-table th:nth-child(7),.annual-license-table td:nth-child(7){width:9%}
.annual-license-table th:nth-child(8),.annual-license-table td:nth-child(8){width:72px;text-align:right}
.annual-license-table td small{font-size:var(--t-5);line-height:1.15}
.annual-license-table .btn.small{padding:5px 7px;font-size:11px}

@media(max-width:1350px){
  .license-register-summary{grid-template-columns:repeat(3,minmax(140px,1fr))}
  .annual-license-summary{grid-template-columns:repeat(3,minmax(140px,1fr))}
}
@media(max-width:760px){
  .license-register-page{padding:11px}
  .license-register-summary,.annual-license-summary{grid-template-columns:repeat(2,minmax(0,1fr))}
  .license-register-toolbar,.annual-license-toolbar{align-items:stretch}
  .license-register-toolbar input,.license-register-toolbar select,.annual-license-toolbar input,.annual-license-toolbar select{width:100%;max-width:none;min-width:0}
}
@media(max-width:500px){
  .license-register-summary,.annual-license-summary{grid-template-columns:1fr}
}

/* v2.20.241 · annual-license detail button stays on one line */
.annual-license-detail-btn{white-space:nowrap!important;min-width:82px!important;display:inline-flex!important;align-items:center;justify-content:center}
.annual-license-table th:nth-child(8),.annual-license-table td:nth-child(8){width:92px!important;min-width:92px!important}
.annual-history-warning{margin:8px 0 10px}

/* v2.20.241 · compact ITC Shell table analysis and collision-safe inline pricing */
.itcshell-table-analysis{min-width:0}
.itcshell-table-analysis .itcshell-analysis-head{align-items:flex-start;gap:14px}
.itcshell-table-analysis .itcshell-analysis-head>div:first-child{min-width:0}
.itcshell-table-analysis .itcshell-analysis-head .muted{max-width:900px;line-height:1.4}
.itcshell-analysis-table-wrap{width:100%;max-width:100%;overflow-x:hidden!important}
.itcshell-analysis-table{width:100%!important;min-width:0!important;max-width:100%!important;table-layout:fixed!important}
.itcshell-analysis-table th,.itcshell-analysis-table td{padding:9px 10px!important;white-space:normal!important;overflow-wrap:anywhere;word-break:normal;vertical-align:middle!important}
.itcshell-analysis-table th:nth-child(1),.itcshell-analysis-table td:nth-child(1){width:21%}
.itcshell-analysis-table th:nth-child(2),.itcshell-analysis-table td:nth-child(2){width:18%}
.itcshell-analysis-table th:nth-child(3),.itcshell-analysis-table td:nth-child(3){width:9%}
.itcshell-analysis-table th:nth-child(4),.itcshell-analysis-table td:nth-child(4){width:18%}
.itcshell-analysis-table th:nth-child(5),.itcshell-analysis-table td:nth-child(5){width:20%}
.itcshell-analysis-table th:nth-child(6),.itcshell-analysis-table td:nth-child(6){width:14%}
.itcshell-analysis-main-row td{border-bottom:0!important}
.itcshell-analysis-point-count{margin-top:4px;color:var(--muted,#64748b);font-size:11px}
.itcshell-analysis-detail-row td{padding:0 10px 9px!important;border-top:0!important;background:var(--c-surface,#fff)}
.itcshell-table-analysis details.itcshell-analysis-detail{width:100%;max-width:none;margin:0!important}
.itcshell-table-analysis details.itcshell-analysis-detail:not([open])>summary{display:inline-flex;align-items:center;gap:6px;padding:3px 0 5px;font-size:11.5px;line-height:1.25}
.itcshell-analysis-secondary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0 0 10px}
.itcshell-analysis-secondary>div{min-width:0;padding:9px 10px;border:1px solid var(--border,#d9e3e8);border-radius:9px;background:#f8fbfa}
.itcshell-analysis-secondary small,.itcshell-analysis-secondary strong,.itcshell-analysis-secondary span{display:block}
.itcshell-analysis-secondary small{margin-bottom:3px;color:var(--muted,#64748b);font-size:var(--t-5);text-transform:uppercase;letter-spacing:.04em}
.itcshell-analysis-secondary strong,.itcshell-analysis-secondary code{white-space:normal!important;overflow-wrap:anywhere;word-break:break-word}
.itcshell-analysis-secondary span{margin-top:3px;color:var(--muted,#64748b);font-size:11px}
.itcshell-analysis-points{display:grid;gap:5px;margin:0 0 10px;padding:9px 11px;border:1px solid #ead7a8;border-radius:9px;background:#fffaf2;color:#7a5715;font-size:11.5px;line-height:1.4}
.itcshell-analysis-columns{margin-bottom:8px!important;line-height:1.4}
@media(max-width:900px){
  .itcshell-analysis-table-wrap{overflow-x:auto!important}
  .itcshell-analysis-table{min-width:760px!important}
  .itcshell-analysis-secondary{grid-template-columns:1fr}
}

/* Keep customer price + compact discount inside their own cell. Save gets a
   dedicated second row so it can never overflow into Opkrævning/Betaling. */
.billing-source-table .billing-inline-price{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) 76px!important;
  grid-template-areas:"price discount" "save save"!important;
  column-gap:8px!important;
  row-gap:6px!important;
  align-items:end!important;
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
  box-sizing:border-box!important;
}
.billing-source-table .billing-inline-price>label:nth-of-type(1){grid-area:price!important;min-width:0!important;width:auto!important}
.billing-source-table .billing-inline-price>label:nth-of-type(2){grid-area:discount!important;width:76px!important;max-width:76px!important;min-width:0!important}
.billing-source-table .billing-inline-discount-wrap{display:grid!important;grid-template-columns:56px 12px!important;gap:4px!important;width:72px!important;max-width:72px!important;min-width:0!important}
.billing-source-table .billing-inline-discount-input{width:56px!important;max-width:56px!important;min-width:56px!important}
.billing-source-table .billing-inline-price>.billing-save-inline-price{
  position:static!important;
  grid-area:save!important;
  justify-self:end!important;
  align-self:center!important;
  width:64px!important;
  min-width:64px!important;
  max-width:64px!important;
  height:34px!important;
  min-height:34px!important;
  margin:0!important;
  padding:0 9px!important;
  box-sizing:border-box!important;
}
@media(max-width:760px){
  .billing-source-table .billing-inline-price{grid-template-columns:minmax(0,1fr)!important;grid-template-areas:"price" "discount" "save"!important}
  .billing-source-table .billing-inline-price>label:nth-of-type(2){width:auto!important;max-width:none!important}
  .billing-source-table .billing-inline-discount-wrap{width:76px!important;max-width:76px!important}
  .billing-source-table .billing-inline-price>.billing-save-inline-price{justify-self:stretch!important;width:100%!important;max-width:none!important}
}


/* v2.20.241 · inline ITC analysis + Save left-aligned under customer price */
/* The compact table-analysis workspace is now expanded in-place. Opening a
   mapping/detail block must never turn the integration page into a temporary
   full-screen sheet while Test/Analyse/refresh actions rerender the section. */
.itcshell-table-analysis details.itcshell-analysis-detail[open]{
  position:static!important;
  inset:auto!important;
  z-index:auto!important;
  width:100%!important;
  max-width:100%!important;
  margin:0!important;
  padding:6px 0 2px!important;
  overflow:visible!important;
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}
.itcshell-table-analysis details.itcshell-analysis-detail[open]>summary{
  position:static!important;
  top:auto!important;
  z-index:auto!important;
  display:inline-flex!important;
  justify-content:flex-start!important;
  gap:7px!important;
  margin:0 0 8px!important;
  padding:4px 0!important;
  background:transparent!important;
  border:0!important;
  font-size:12px!important;
}
.itcshell-table-analysis details.itcshell-analysis-detail[open]>summary::after{
  content:'Skjul'!important;
  font-size:11px!important;
}
.itcshell-analysis-detail[open] pre{max-height:260px!important}

/* Customer pricing: Save belongs visually to Kundepris. Keep Rabat compact,
   and align the action to the left edge directly below the customer-price input. */
.billing-source-table .billing-inline-price{
  grid-template-columns:minmax(0,1fr) 76px!important;
  grid-template-areas:"price discount" "save ."!important;
  column-gap:8px!important;
  row-gap:7px!important;
}
.billing-source-table .billing-inline-price>.billing-save-inline-price{
  grid-area:save!important;
  justify-self:start!important;
  align-self:start!important;
  width:72px!important;
  min-width:72px!important;
  max-width:72px!important;
  height:36px!important;
  min-height:36px!important;
  margin:0!important;
}
@media(max-width:760px){
  .billing-source-table .billing-inline-price{
    grid-template-columns:minmax(0,1fr)!important;
    grid-template-areas:"price" "discount" "save"!important;
  }
  .billing-source-table .billing-inline-price>.billing-save-inline-price{
    justify-self:start!important;
    width:72px!important;
    max-width:72px!important;
  }
}

/* v2.20.241 – Forbrug: separate technical/economy tabs with explicit data-quality treatment. */
.consumption-tabs220230{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:2px}
.consumption-panel220230{display:grid;gap:16px;min-width:0}
.consumption-panel220230[hidden]{display:none!important}
.economy-hero220230{background:linear-gradient(135deg,#f8fbfb,#f4f8f6)}
.economy-grid220230 .consumption-kpi{cursor:pointer}
.economy-grid220230 .consumption-kpi:hover,.economy-grid220230 .consumption-kpi:focus-visible{border-color:#9fcac6;box-shadow:0 7px 20px rgba(12,91,86,.08)}
.economy-warning220230{border-color:#e7c98d;background:#fffaf0}
.economy-warning220230:hover,.economy-warning220230:focus-visible{border-color:#c59b49;box-shadow:0 7px 20px rgba(120,85,25,.08)}
.economy-quality220230{cursor:pointer}
.economy-note220230{padding:0;overflow:hidden}
.economy-note220230 .card-header{padding:18px 20px 12px}
.economy-note220230 .wiki-tip{margin:0 20px 20px}
@media(max-width:620px){.consumption-tabs220230{display:grid;grid-template-columns:1fr 1fr}.consumption-tabs220230 .btn{width:100%}}

/* v2.20.241 – Economy data-quality drill-down. */
.economy-quality-button220231{width:100%;font:inherit;text-align:left;border:1px solid var(--border,#d7e1df);background:var(--panel,#fff);display:flex;justify-content:space-between;align-items:center;gap:18px;padding:18px 20px}
.economy-quality-button220231.warning{background:#fffaf0;border-color:#e7c98d}.economy-quality-button220231:hover,.economy-quality-button220231:focus-visible{border-color:#9fcac6;box-shadow:0 7px 20px rgba(12,91,86,.08)}
.economy-quality-toolbar220231{display:grid;grid-template-columns:minmax(260px,1fr) minmax(200px,300px);gap:10px;margin:14px 0}
.economy-quality-toolbar220231 input,.economy-quality-toolbar220231 select{min-height:42px}
.economy-quality-table220231{table-layout:fixed;min-width:900px}.economy-quality-table220231 th:nth-child(1){width:20%}.economy-quality-table220231 th:nth-child(2){width:29%}.economy-quality-table220231 th:nth-child(3){width:14%}.economy-quality-table220231 th:nth-child(4){width:17%}.economy-quality-table220231 th:nth-child(5){width:10%}.economy-quality-table220231 th:nth-child(6){width:10%}
.economy-quality-table220231 td{vertical-align:top}.economy-quality-table220231 td small{display:block;margin-top:4px;color:var(--muted,#667774);line-height:1.35}.economy-quality-table220231 .pill{white-space:normal}
@media(max-width:800px){.economy-quality-button220231{align-items:flex-start;flex-direction:column}.economy-quality-toolbar220231{grid-template-columns:1fr}.economy-quality-table220231{min-width:780px}}

/* v2.20.241 · wider economy data-quality drill-down with collision-safe wrapping */
.modal-card:has(.economy-quality-drill220231){
  width:min(1240px,96vw);
  max-width:1240px;
}
.economy-quality-drill220231{min-width:0;max-width:100%}
.economy-quality-table-wrap220231{width:100%;max-width:100%;overflow-x:auto}
.economy-quality-table220231{width:100%;min-width:0!important;table-layout:fixed}
.economy-quality-table220231 th:nth-child(1){width:24%}
.economy-quality-table220231 th:nth-child(2){width:32%}
.economy-quality-table220231 th:nth-child(3){width:12%}
.economy-quality-table220231 th:nth-child(4){width:16%}
.economy-quality-table220231 th:nth-child(5){width:8%}
.economy-quality-table220231 th:nth-child(6){width:8%}
.economy-quality-table220231 th,
.economy-quality-table220231 td{
  white-space:normal!important;
  min-width:0;
  overflow-wrap:anywhere;
  word-break:normal;
  vertical-align:top;
}
.economy-quality-table220231 td:nth-child(1),
.economy-quality-table220231 td:nth-child(2){line-height:1.35}
.economy-quality-table220231 .economy-quality-customer220231{
  width:100%;
  max-width:100%;
  padding:0;
  text-align:left;
  white-space:normal;
  overflow-wrap:anywhere;
  line-height:1.3;
}
.economy-quality-table220231 td strong,
.economy-quality-table220231 td small{overflow-wrap:anywhere;word-break:normal}
.economy-quality-table220231 .pill{
  max-width:100%;
  white-space:normal;
  overflow-wrap:anywhere;
  line-height:1.25;
}
@media(max-width:900px){
  .modal-card:has(.economy-quality-drill220231){width:min(98vw,1240px);padding:18px}
  .economy-quality-table220231{min-width:760px!important}
}

/* v2.20.241 – Admin performance observability */
.performance-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:18px}
.performance-table{width:100%;table-layout:fixed}
.performance-table th:nth-child(2),.performance-table td:nth-child(2){width:44%}
.performance-query{max-width:0}
.performance-query code{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.performance-hero .row-actions select{min-width:130px}
@media(max-width:1100px){.performance-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.performance-table{table-layout:auto}.performance-query{max-width:360px}}
@media(max-width:680px){.performance-kpis{grid-template-columns:1fr}.performance-hero .card-header{align-items:flex-start}.performance-hero .row-actions{width:100%}.performance-hero .row-actions select,.performance-hero .row-actions .btn{flex:1}}
.integration-review-standard220233 .integration-roadmap{grid-template-columns:repeat(5,minmax(0,1fr));margin-bottom:0}
.integration-review-standard220233 .integration-roadmap>div{min-width:0}
@media(max-width:1100px){.integration-review-standard220233 .integration-roadmap{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:720px){.integration-review-standard220233 .integration-roadmap{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.integration-review-standard220233 .integration-roadmap{grid-template-columns:1fr}}


/* v2.20.242 – Fakturakladde: ens, collision-safe layout for all customers and long product names. */
@media (min-width:801px){
  .modal-card:has(.billing-draft-preview){width:min(1180px,96vw)}
  .billing-draft-preview>.table-wrap{width:100%;max-width:100%;overflow-x:hidden}
  .billing-draft-lines{width:100%;max-width:100%;min-width:0;table-layout:fixed}
  .billing-draft-lines th,.billing-draft-lines td{min-width:0}
  .billing-draft-lines th:first-child,.billing-draft-lines td:first-child{width:auto;white-space:normal;overflow-wrap:anywhere;word-break:normal}
  .billing-draft-lines th:nth-child(2),.billing-draft-lines td:nth-child(2){width:122px}
  .billing-draft-lines th:nth-child(3),.billing-draft-lines td:nth-child(3){width:112px}
  .billing-draft-lines th:nth-child(4),.billing-draft-lines td:nth-child(4){width:92px}
  .billing-draft-lines th:nth-child(5),.billing-draft-lines td:nth-child(5){width:126px}
  .billing-draft-lines th:nth-child(6),.billing-draft-lines td:nth-child(6){width:108px}
  .billing-draft-lines td:nth-child(n+2):not(:last-child){white-space:nowrap}
  .billing-draft-lines td.billing-actions{white-space:normal;align-content:start}
  .billing-draft-lines td.billing-actions .btn{width:100%;min-width:0;white-space:nowrap}
}
@media (max-width:800px){
  .billing-draft-preview>.table-wrap{width:100%;max-width:100%;overflow-x:auto}
  .billing-draft-lines th:first-child,.billing-draft-lines td:first-child{white-space:normal;overflow-wrap:anywhere}
}

/* v2.20.244 · grouped billing draft review controls */
.billing-review-box-grouped{display:grid;gap:10px}
.billing-review-box-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.billing-review-box-head>div{display:grid;gap:3px}
.billing-review-box-head small{color:var(--muted)}
.billing-review-groups{display:grid;gap:7px}
.billing-review-group{border:1px solid rgba(130,96,26,.18);border-radius:8px;background:rgba(255,255,255,.48);overflow:hidden}
.billing-review-group>summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 11px;font-weight:650}
.billing-review-group>summary::-webkit-details-marker{display:none}
.billing-review-group>summary:before{content:'›';font-size:18px;line-height:1;transform:rotate(0deg);transition:transform .15s ease}
.billing-review-group[open]>summary:before{transform:rotate(90deg)}
.billing-review-group>summary>span:first-of-type{flex:1}
.billing-review-group ul{margin:0;padding:0 16px 11px 34px;display:grid;gap:6px}
.billing-review-group li{line-height:1.45;overflow-wrap:anywhere}
@media(max-width:700px){.billing-review-box-head{display:grid}.billing-review-group>summary{padding:10px}.billing-review-group ul{padding-left:28px}}

/* v2.20.255 – invoice preview alignment + ALSO department naming controls. */
@media (min-width:801px){
  .billing-draft-lines thead th:nth-child(2),
  .billing-draft-lines thead th:nth-child(3),
  .billing-draft-lines thead th:nth-child(4),
  .billing-draft-lines thead th:nth-child(5){text-align:right}
  .billing-draft-lines th,.billing-draft-lines td{vertical-align:middle}
  .billing-draft-lines th:nth-child(2),.billing-draft-lines td:nth-child(2){width:118px}
  .billing-draft-lines th:nth-child(3),.billing-draft-lines td:nth-child(3){width:124px}
  .billing-draft-lines th:nth-child(4),.billing-draft-lines td:nth-child(4){width:100px}
  .billing-draft-lines th:nth-child(5),.billing-draft-lines td:nth-child(5){width:136px}
  .billing-draft-lines th:nth-child(6),.billing-draft-lines td:nth-child(6){width:112px}
  .billing-draft-lines .num-cell{padding-left:12px;padding-right:12px}
}
.edit-also-department-name{margin-left:6px;vertical-align:middle}

/* v2.20.263 · visible product numbers in catalog and invoice drafts */
.product-table .product-number{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:nowrap;letter-spacing:.02em}
.product-table th[data-product-sort="sku"],.product-table td[data-label="Varenr."]{width:118px;min-width:118px;white-space:nowrap}
.billing-draft-lines th:nth-child(2),.billing-draft-lines td.billing-product-number{width:118px;min-width:118px;white-space:nowrap}
.billing-draft-lines td.billing-product-number{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.92em}
.billing-draft-lines th:nth-child(n+3):nth-child(-n+6){text-align:right}
/* v2.20.263 customer monthly reports */
.modal-monthly-report-admin{width:min(1120px,96vw);max-width:1120px}.modal-monthly-report{width:min(1180px,96vw);max-width:1180px}.monthly-report-generate{display:flex;align-items:end;gap:12px;padding:16px 0 20px}.monthly-report-generate label{max-width:260px}.monthly-report-editor{display:grid;gap:18px}.monthly-report-preview{background:#f4f7f6;border:1px solid #dce6e2;border-radius:18px;padding:18px;display:grid;gap:14px}.monthly-report-hero{display:flex;justify-content:space-between;align-items:start;background:#07100f;color:#fff;border-radius:16px;padding:20px 22px}.monthly-report-hero h2{margin:5px 0}.monthly-report-section{background:#fff;border:1px solid #e1e8e5;border-radius:14px;padding:16px}.monthly-report-section h3{margin:0 0 10px}.monthly-report-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.monthly-report-stat{background:#f7f9f8;border-radius:12px;padding:12px;display:grid;gap:4px}.monthly-report-stat span,.monthly-report-stat small{color:#66736e;font-size:12px}.monthly-report-stat strong{font-size:18px}.monthly-report-note{border-left:3px solid #2f9d78;padding:10px 12px;background:#f2faf7;border-radius:8px}.monthly-report-change{display:flex;justify-content:space-between;gap:16px;border-top:1px solid #edf1ef;padding:7px 0}.monthly-report-edit-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.monthly-report-edit-grid label{display:grid;gap:6px;font-weight:700}.monthly-report-edit-grid textarea{width:100%;resize:vertical;min-height:120px}.monthly-report-wide{grid-column:1/-1}@media(max-width:800px){.monthly-report-stats,.monthly-report-edit-grid{grid-template-columns:1fr 1fr}.monthly-report-wide{grid-column:auto}}@media(max-width:560px){.monthly-report-stats,.monthly-report-edit-grid{grid-template-columns:1fr}}
/* v2.20.267 monthly report quality */
.monthly-report-hero-tags,.report-cover-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.monthly-report-hero-tags span,.report-cover-tags span{font-size:11px;padding:5px 8px;border-radius:999px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.12)}.monthly-report-section-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:12px}.monthly-report-section-head>div{display:flex;gap:10px;align-items:flex-start}.monthly-step{display:inline-grid;place-items:center;min-width:30px;height:30px;border-radius:9px;background:#e9f5f1;color:#1d755b;font-weight:800;font-size:12px}.monthly-report-section-head h3{margin:0}.monthly-report-section-head small{color:#71807a}.monthly-report-lead{font-size:16px;line-height:1.65;margin:0}.monthly-report-priority{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.monthly-report-priority span{background:#f4f7f6;border:1px solid #e2e9e6;border-radius:999px;padding:6px 10px;font-size:12px}.monthly-report-stats{grid-template-columns:repeat(auto-fit,minmax(165px,1fr))}.monthly-report-stat{min-height:82px}.monthly-report-stat small{line-height:1.35}.monthly-report-change-head{display:flex;justify-content:space-between;gap:12px;align-items:end;margin-top:16px;padding-top:14px;border-top:1px solid #edf1ef}.monthly-report-change-head span{color:#71807a;font-size:12px}.monthly-report-change span{display:grid}.monthly-report-change span small{color:#81908a}.monthly-report-edit-grid textarea{border:1px solid #cfd9d5;border-radius:10px;padding:10px 12px;font:inherit}.btn.danger{border-color:#d8b7b7;color:#a33;background:#fff}.btn.danger:hover{background:#fff5f5}@media(max-width:760px){.monthly-report-change-head{display:grid}}

/* v2.20.267 — align monthly reports action and portal status pill */
.customer-portal-admin-modal>.card-header .row-actions{align-items:center!important}
.customer-portal-admin-modal>.card-header .row-actions>.pill{align-self:center;margin:0!important}
.monthly-report-trendline{margin-top:14px;padding-top:12px;border-top:1px solid #e6ece9;display:grid;grid-template-columns:140px repeat(6,minmax(0,1fr));gap:8px;align-items:center}.monthly-report-trendline>span{background:#f6f8f7;border-radius:9px;padding:8px;text-align:center;display:grid;gap:2px}.monthly-report-trendline small{color:#71807a}.monthly-report-trendline b{font-size:12px}.monthly-report-provisional{margin:0 0 14px;padding:12px 15px;border-radius:12px;background:#fff5dc;border:1px solid #f0dca6;color:#6d5314}.monthly-report-provisional strong{margin-right:6px}@media(max-width:900px){.monthly-report-trendline{grid-template-columns:1fr 1fr 1fr}.monthly-report-trendline>strong{grid-column:1/-1}}
/* v2.20.269 — final monthly report presentation and data transparency */
.monthly-report-coverage{background:#fff;border:1px solid #dfe7e3;border-radius:14px;padding:14px 16px;display:grid;gap:12px}.monthly-report-coverage>div:first-child{display:flex;justify-content:space-between;gap:12px;align-items:center}.monthly-report-coverage>div:first-child span{color:#6d7a75;font-size:12px}.monthly-report-coverage-items{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px}.monthly-report-coverage-items>span{display:grid;gap:2px;padding:9px 10px;border-radius:10px;background:#f7f9f8;border:1px solid #e8eeeb}.monthly-report-coverage-items>span.ok{border-left:3px solid #2f9d78}.monthly-report-coverage-items>span.missing{border-left:3px solid #d6a341;background:#fffaf0}.monthly-report-coverage-items small{color:#74817c;font-size:11px}.monthly-report-method-note{margin:12px 0 0;color:#6c7974;font-size:12px;line-height:1.5}.monthly-report-change-highlights{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;margin:10px 0 4px}.monthly-report-change-highlights>span{display:grid;gap:3px;padding:9px 10px;border-radius:10px;background:#f7f9f8;border:1px solid #e6ece9}.monthly-report-change-highlights small{color:#74817c}


/* v2.20.269 — månedsrapport grafik & visualisering */
.mr-visual-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,.75fr);gap:14px;margin-top:16px}.mr-chart-card{margin:0;min-width:0;border:1px solid #e1e9e6;background:linear-gradient(180deg,#fbfdfc,#f7faf9);border-radius:14px;padding:14px;overflow:hidden}.mr-chart-card figcaption{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;margin-bottom:8px}.mr-chart-card figcaption>div:first-child{display:grid;gap:2px}.mr-chart-card figcaption strong{font-size:13px;color:#23342f}.mr-chart-card figcaption small{font-size:11px;color:#74817c;line-height:1.35}.mr-chart{display:block;width:100%;height:auto;min-height:170px}.mr-gridline{stroke:#dfe7e4;stroke-width:1}.mr-axis-label{fill:#74817c;font-size:11px;text-anchor:middle}.mr-value-label{fill:#5b6d67;font-size:var(--t-5);font-weight:700;text-anchor:middle}.mr-bar{opacity:.92}.mr-series-a{fill:#3f8fc0}.mr-series-b{fill:#2f9d78}.mr-chart-legend{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end;color:#687670;font-size:var(--t-5)}.mr-chart-legend span{display:flex;align-items:center;gap:5px;white-space:nowrap}.mr-chart-legend i{display:inline-block;width:9px;height:9px;border-radius:3px;background:#93a39d}.mr-chart-legend i.a,.mr-chart-legend i.line-0{background:#3f8fc0}.mr-chart-legend i.b,.mr-chart-legend i.line-1{background:#2f9d78}.mr-chart-legend i.line-2{background:#c28a3d}.mr-chart-legend i.line-3{background:#8a67b0}.mr-line{fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.mr-line-0{stroke:#3f8fc0}.mr-line-1{stroke:#2f9d78}.mr-line-2{stroke:#c28a3d}.mr-line-3{stroke:#8a67b0}.mr-line-dot{fill:#fff;stroke-width:2.5;vector-effect:non-scaling-stroke}.mr-chart-empty{min-height:150px;display:grid;place-items:center;text-align:center;color:#7b8883;font-size:12px;border:1px dashed #dce5e1;border-radius:10px;background:#fff}.mr-donut-card{min-width:0}.mr-donut-wrap{display:grid;grid-template-columns:minmax(130px,170px) minmax(0,1fr);gap:16px;align-items:center;min-height:172px}.mr-donut{width:100%;height:auto;transform:rotate(-90deg)}.mr-donut-track{fill:none;stroke:#e8eeeb;stroke-width:18}.mr-donut-slice{fill:none;stroke-width:18;stroke-linecap:butt}.mr-donut-0{stroke:#d45b63}.mr-donut-1{stroke:#d9a23f}.mr-donut-2{stroke:#2f9d78}.mr-donut-3{stroke:#9ba7a2}.mr-donut-4{stroke:#3f8fc0}.mr-donut-total,.mr-donut-label{transform:rotate(90deg);transform-origin:62px 62px;text-anchor:middle;fill:#263a34}.mr-donut-total{font-size:18px;font-weight:800}.mr-donut-label{font-size:var(--t-5);fill:#7b8883}.mr-donut-legend{display:grid;gap:7px}.mr-donut-legend span{display:grid;grid-template-columns:10px minmax(0,1fr) auto;gap:7px;align-items:center;color:#66746f;font-size:11px}.mr-donut-legend i{width:9px;height:9px;border-radius:50%}.mr-donut-legend i.donut-0{background:#d45b63}.mr-donut-legend i.donut-1{background:#d9a23f}.mr-donut-legend i.donut-2{background:#2f9d78}.mr-donut-legend i.donut-3{background:#9ba7a2}.mr-donut-legend i.donut-4{background:#3f8fc0}.mr-donut-legend b{color:#283a35}.monthly-report-stat,.report-kpi{position:relative;overflow:hidden}.monthly-report-stat:after,.report-kpi:after{content:"";position:absolute;right:-18px;top:-22px;width:62px;height:62px;border-radius:50%;background:#2f9d78;opacity:.055}.monthly-report-stat strong,.report-kpi strong{position:relative}.monthly-report-priority span,.report-priority-row span{box-shadow:inset 0 -2px 0 rgba(47,157,120,.06)}
@media(max-width:860px){.mr-visual-grid{grid-template-columns:1fr}.mr-donut-wrap{grid-template-columns:150px 1fr}.mr-chart-card figcaption{display:grid}.mr-chart-legend{justify-content:flex-start}}@media(max-width:520px){.mr-donut-wrap{grid-template-columns:1fr}.mr-donut{max-width:150px;margin:auto}.mr-chart{min-height:150px}}


/* v2.20.272 · Månedsrapport · komplet licensoversigt */
.monthly-license-table-wrap{margin-top:14px;border:1px solid #e2e9e6;border-radius:12px;overflow:auto;background:#fff}
.monthly-license-table{width:100%;border-collapse:collapse;min-width:680px}
.monthly-license-table th,.monthly-license-table td{padding:10px 12px;border-bottom:1px solid #edf1ef;text-align:left;vertical-align:top}
.monthly-license-table th{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:#68766f;background:#f7f9f8;position:sticky;top:0}
.monthly-license-table td small{display:block;color:#81908a;margin-top:2px}
.monthly-license-table td.num,.monthly-license-table th:last-child{text-align:right;white-space:nowrap}
.monthly-license-table tbody tr:last-child td{border-bottom:0}
.monthly-license-empty{margin-top:14px;padding:14px;border:1px dashed #ccd8d3;border-radius:10px;color:#6e7b75;background:#fafcfb}


/* v2.20.274 · Kundeportal Admin · ensartet alignment */
.customer-portal-admin-modal>.card-header{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto!important;
  align-items:start!important;
  gap:20px!important;
}
.customer-portal-status-actions{
  display:grid!important;
  grid-template-columns:repeat(3,190px)!important;
  gap:10px!important;
  align-items:stretch!important;
  justify-content:end!important;
  margin:0!important;
}
.customer-portal-status-actions>.customer-portal-status-control{
  width:190px!important;
  min-width:190px!important;
  height:40px!important;
  min-height:40px!important;
  margin:0!important;
  padding:0 14px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  box-sizing:border-box!important;
  line-height:1.1!important;
  white-space:nowrap!important;
}
.customer-portal-status-actions>.pill.customer-portal-status-control{
  border:1px solid transparent!important;
  border-radius:8px!important;
  font-size:11px!important;
  letter-spacing:.08em!important;
}
@media(max-width:1180px){
  .customer-portal-admin-modal>.card-header{grid-template-columns:1fr!important}
  .customer-portal-status-actions{justify-content:start!important;grid-template-columns:repeat(3,minmax(150px,190px))!important}
  .customer-portal-status-actions>.customer-portal-status-control{width:100%!important;min-width:0!important}
}
@media(max-width:980px){
}
@media(max-width:620px){
  .customer-portal-status-actions{grid-template-columns:1fr!important;width:100%!important}
  .customer-portal-status-actions>.customer-portal-status-control{width:100%!important}
}

/* v2.20.297 · deployment environment identity */
.environment-badge{display:inline-flex;align-items:center;justify-content:center;min-height:24px;padding:4px 9px;border-radius:999px;font-size:var(--t-5);font-weight:900;letter-spacing:.12em;line-height:1;border:1px solid transparent;white-space:nowrap}
.environment-badge[data-environment="dev"],html[data-shell-environment="dev"] .environment-badge{background:#dbeafe;color:#1d4ed8;border-color:#93c5fd}
.environment-badge[data-environment="pre"],html[data-shell-environment="pre"] .environment-badge{background:#fff3cd;color:#7a5200;border-color:#e8c76b}
.environment-badge[data-environment="prod"],html[data-shell-environment="prod"] .environment-badge{background:#dcfce7;color:#166534;border-color:#86efac}
.login-environment{margin:12px auto 0;width:max-content}.environment-description{text-align:center;color:#6b7773;font-size:11px;font-weight:700;margin:-4px 0 14px}.brand .sidebar-environment{margin-left:auto;align-self:center}.sidebar-environment{min-height:21px;padding:3px 7px;font-size:var(--t-5)}
@media(max-width:760px){.brand .sidebar-environment{margin-left:6px}}

/* v2.20.297 · stable environment badge slot — labels must never shift sidebar identity */
.brand{position:relative;padding-right:84px!important}
.brand>div:nth-child(2){min-width:0}
.brand .sidebar-environment{position:absolute;right:8px;top:5px;margin:0!important;width:72px;min-width:72px;max-width:72px;overflow:hidden;text-overflow:clip}
@media(max-width:760px){.brand{padding-right:84px!important}.brand .sidebar-environment{right:8px;top:5px;margin:0!important}}

/* v2.20.300 – Microsoft Entra ID SSO */
.login-sso-divider{display:flex;align-items:center;gap:10px;margin:14px 0 10px;color:var(--muted,#718096);font-size:12px;text-transform:uppercase;letter-spacing:.08em}.login-sso-divider:before,.login-sso-divider:after{content:"";height:1px;flex:1;background:rgba(148,163,184,.28)}
.microsoft-login{width:100%;display:flex;align-items:center;justify-content:center;gap:9px;min-height:42px}.microsoft-mark{font-size:19px;line-height:1}.login-sso-note{display:block;margin-top:8px;text-align:center;color:var(--muted,#718096);line-height:1.35}

/* v2.20.301 – Admin Drift & synkronisering */
.sync-ops-nav-alert{width:9px;height:9px;border-radius:999px;background:#c44747;margin-left:auto;box-shadow:0 0 0 3px rgba(196,71,71,.12)}
.sync-ops-hero{display:flex;justify-content:space-between;gap:24px;align-items:center}.sync-ops-hero h2{margin:.2rem 0}.sync-ops-kpis{display:grid;grid-template-columns:repeat(5,minmax(88px,1fr));gap:10px;min-width:540px}.sync-ops-kpis span,.sync-ops-kpis>button{border:1px solid var(--line,#dfe5eb);border-radius:12px;padding:10px 12px;background:var(--surface,#fff);text-align:left;color:inherit;font:inherit}.sync-ops-kpis>button{cursor:pointer}.sync-ops-kpis>button:hover{border-color:var(--accent,#087d78);background:var(--surface-soft,#f7faf9)}.sync-ops-kpis small{display:block;color:var(--muted,#64748b);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.sync-ops-kpis strong{font-size:22px}.sync-ops-kpis .success strong{color:#16734b}.sync-ops-kpis .review strong{color:#20758a}.sync-ops-kpis .amber strong{color:#9a6700}.sync-ops-kpis .red strong{color:#b42318}
.sync-ops-job-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:14px 0}.sync-ops-job-card{background:var(--surface,#fff);border:1px solid var(--line,#dfe5eb);border-left:4px solid #94a3b8;border-radius:14px;padding:16px}.sync-ops-job-card.success{border-left-color:#2b8a62}.sync-ops-job-card.review{border-left-color:#4c9bad}.sync-ops-job-card.amber{border-left-color:#d29a21}.sync-ops-job-card.red{border-left-color:#c44747}.sync-ops-job-card.blue{border-left-color:#3b82f6}.sync-ops-job-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.sync-ops-job-head small{color:var(--muted,#64748b)}.sync-ops-job-head h3{margin:2px 0 10px}.sync-ops-job-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.sync-ops-job-grid span{min-width:0}.sync-ops-job-grid small{display:block;color:var(--muted,#64748b);font-size:11px}.sync-ops-job-grid strong{display:block;font-size:13px;overflow:hidden;text-overflow:ellipsis}.sync-ops-message{font-size:12px;margin:12px 0 0;padding:9px 10px;background:rgba(15,23,42,.035);border-radius:8px;overflow-wrap:anywhere}.sync-ops-message.error{background:rgba(180,35,24,.07);color:#8f1d14}.sync-ops-job-actions{display:flex;gap:8px;margin-top:12px}.sync-ops-toolbar{display:flex;gap:8px;align-items:center}.sync-ops-history-message{max-width:420px;white-space:normal;overflow-wrap:anywhere}.sync-ops-job-list .pill.review,.pill.review{background:#e5f3f6;color:#1d6677}.sync-ops-job-list .pill.red,.pill.red{background:rgba(180,35,24,.10);color:#a51f17}.sync-ops-job-list .pill.blue,.pill.blue{background:rgba(59,130,246,.10);color:#245fb2}
@media(max-width:980px){.sync-ops-hero{align-items:flex-start;flex-direction:column}.sync-ops-kpis{min-width:0;width:100%;grid-template-columns:repeat(2,1fr)}.sync-ops-job-list{grid-template-columns:1fr}.sync-ops-job-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.sync-ops-toolbar{flex-wrap:wrap;justify-content:flex-end}.sync-ops-toolbar input{width:min(280px,100%);min-width:220px}.sync-ops-toolbar select{width:auto;min-width:145px}.sync-ops-toolbar #syncOpsRefresh301{width:auto;min-width:104px;white-space:nowrap;align-self:stretch}.sync-ops-sort220325{appearance:none;border:0;background:transparent;padding:0;color:inherit;font:inherit;font-weight:inherit;text-transform:inherit;letter-spacing:inherit;white-space:nowrap;cursor:pointer}.sync-ops-sort220325:hover,.sync-ops-sort220325.active{color:var(--accent,#087d78)}.sync-ops-sort220325 span{font-size:.9em}
.sync-ops-detail-trigger{cursor:pointer}.sync-ops-detail-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:16px 0}.sync-ops-detail-metrics span{padding:12px;border:1px solid var(--line);border-radius:10px}.sync-ops-detail-metrics small,.sync-ops-detail-metrics strong{display:block}.sync-ops-detail-metrics small{color:var(--muted);text-transform:uppercase;font-size:var(--t-5)}.sync-ops-detail-metrics strong{font-size:20px}.sync-ops-detail-table th{width:190px;text-align:left}.sync-ops-detail pre,.sync-ops-raw pre{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font:11px/1.45 var(--f-mono)}.sync-ops-raw{margin-top:14px}.sync-ops-issue-list{display:grid;gap:12px;margin-top:18px}.sync-ops-issue-list>section{padding:14px;border:1px solid var(--line);border-left:4px solid var(--warn,#d29a21);border-radius:12px}.sync-ops-issue-list>section>div{display:flex;justify-content:space-between;gap:12px}.sync-ops-issue-list h3{margin:8px 0 4px}.sync-ops-issue-list p{margin:0 0 10px}.sync-ops-issue-list dl{display:grid;grid-template-columns:minmax(130px,.35fr) 1fr;gap:6px 12px;margin:8px 0 0}.sync-ops-issue-list dt{font-weight:700}.sync-ops-issue-list dd{margin:0}
@media(max-width:760px){.sync-ops-toolbar{display:grid;grid-template-columns:1fr 1fr;width:100%}.sync-ops-toolbar input{grid-column:1/-1;width:100%;min-width:0}.sync-ops-toolbar select{width:100%;min-width:0}.sync-ops-toolbar #syncOpsRefresh301{width:100%;min-height:40px}}

/* v2.20.304: readable Atera ticket detail */
.ticket-conversation{margin:18px 0;border:1px solid var(--line,#dfe7eb);border-radius:14px;background:var(--surface,#fff);overflow:hidden}
.ticket-conversation-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line,#dfe7eb);background:#f8fafb}
.ticket-conversation-head h3,.ticket-technical h3{margin:0}
.ticket-conversation-head span{font-size:var(--t-5);color:var(--muted,#667985)}
.ticket-message{padding:16px;max-width:100%;overflow:hidden}
.ticket-message+.ticket-message{border-top:1px solid var(--line,#e5ecef)}
.ticket-message-label{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;color:var(--muted,#667985)}
.ticket-message-label strong{color:var(--text,#172126)}
.ticket-message-label span{font-size:var(--t-5)}
.ticket-message-body{font-size:.96rem;line-height:1.55;white-space:normal;overflow-wrap:anywhere;word-break:normal;color:var(--text,#172126)}
.ticket-technical{margin:18px 0}
.ticket-technical>p{margin:5px 0 10px}
.ticket-technical-card{padding:0;overflow:hidden}
.ticket-technical-card summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;font-weight:700;background:#f8fafb}
.ticket-technical-card summary::-webkit-details-marker{display:none}
.ticket-technical-card summary:before{content:'▸';font-size:.8rem;margin-right:6px}
.ticket-technical-card[open] summary:before{content:'▾'}
.ticket-technical-card summary span{margin-left:auto;font-size:var(--t-5);font-weight:500;color:var(--muted,#667985)}
.ticket-technical-card .ticket-detail-grid{padding:12px 14px 14px}
@media(max-width:760px){.ticket-conversation-head,.ticket-message-label{align-items:flex-start;flex-direction:column}.ticket-message{padding:13px}}


/* v2.20.307 – Customer Trends */
.customer-trends-head{align-items:flex-start;gap:18px}.customer-trend-ranges{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.customer-trend-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:16px 0}.customer-trend-summary>div{border:1px solid var(--line);border-radius:12px;padding:14px;background:var(--surface-soft,#f8faf9);display:flex;flex-direction:column;gap:4px;min-height:92px}.customer-trend-summary small{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-size:var(--t-5)}.customer-trend-summary strong{font-size:22px}.customer-trend-summary span{color:var(--muted);font-size:12px}.customer-trend-decision-note{border:1px solid #b9dedb;background:#effaf8;border-radius:12px;padding:12px 14px;margin:0 0 16px}.customer-trend-chart{border:1px solid var(--line);border-radius:14px;padding:14px;margin:0 0 18px;background:#fff}.customer-trend-chart figcaption{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:8px}.customer-trend-chart figcaption div:first-child{display:flex;flex-direction:column;gap:2px}.customer-trend-chart figcaption small{color:var(--muted)}.customer-trend-chart svg{display:block;width:100%;height:auto;max-height:230px}.customer-trend-bar.total{fill:#dcebea}.customer-trend-bar.billable{fill:#168c83}.customer-trend-bar-value,.customer-trend-axis{font-size:var(--t-5);text-anchor:middle;fill:#62706d}.customer-trend-legend{display:flex;gap:12px;font-size:12px;color:var(--muted)}.customer-trend-legend span{display:flex;align-items:center;gap:5px}.customer-trend-legend i{width:10px;height:10px;border-radius:3px;display:inline-block}.customer-trend-legend i.total{background:#dcebea}.customer-trend-legend i.billable{background:#168c83}.customer-trend-group{margin-top:20px}.customer-trend-table td,.customer-trend-table th{vertical-align:middle}.customer-trend-table td:nth-child(3),.customer-trend-table td:nth-child(4){white-space:nowrap}.customer-trend-spark{width:118px;height:32px;display:block}.customer-trend-spark polyline{fill:none;stroke:#168c83;stroke-width:2;vector-effect:non-scaling-stroke}.customer-trend-nochart{color:var(--muted)}.customer-trend-delta{font-weight:700;white-space:nowrap}.customer-trend-delta.up{color:#0a766d}.customer-trend-delta.down{color:#9b4d24}.customer-trend-delta.flat{color:var(--muted)}.customer-trend-delta small{font-weight:500}.customer-trend-footnote{margin:18px 0 0;color:var(--muted);font-size:12px}.customer-trend-groups .section-title{margin:0 0 8px}.customer-trend-table{min-width:860px}
@media(max-width:1050px){.customer-trend-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.customer-trends-head{flex-direction:column}.customer-trend-ranges{justify-content:flex-start}}
@media(max-width:640px){.customer-trend-summary{grid-template-columns:1fr}.customer-trend-table{min-width:760px}}

/* v2.20.308 – Admin Insight · consultant time statistics */
.insight-time-hero220308{align-items:flex-start}.insight-time-kpis220308{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:16px 0}.insight-time-kpis220308>div{display:flex;flex-direction:column;gap:4px;min-height:105px;padding:15px;border:1px solid var(--line,#dfe7eb);border-radius:13px;background:var(--surface,#fff)}.insight-time-kpis220308 small{color:var(--muted,#667985);font-size:var(--t-5);font-weight:800;letter-spacing:.08em;text-transform:uppercase}.insight-time-kpis220308 strong{font-size:24px}.insight-time-kpis220308 span{color:var(--muted,#667985);font-size:12px}.insight-time-card220308{margin-top:14px}.insight-time-legend220308{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--muted,#667985)}.insight-time-legend220308 span{display:flex;align-items:center;gap:6px}.insight-time-legend220308 i{width:11px;height:11px;border-radius:3px}.insight-time-legend220308 .billable{background:#168c83}.insight-time-legend220308 .nonbillable{background:#b7c4c1}.insight-time-chart220308{display:flex;align-items:flex-end;gap:8px;min-height:285px;padding:24px 10px 4px;border-bottom:1px solid var(--line,#dfe7eb);overflow-x:auto}.insight-week220308{display:grid;grid-template-rows:24px 210px 24px;align-items:end;justify-items:center;gap:5px;flex:1 0 48px;min-width:48px}.insight-week-value220308{font-size:var(--t-5);font-weight:800;white-space:nowrap}.insight-week-bars220308{display:flex;align-items:flex-end;justify-content:center;gap:2px;width:100%;height:210px}.insight-week-bars220308 i{display:block;width:min(18px,42%);min-height:0;border-radius:4px 4px 0 0}.insight-week-bars220308 .billable{background:#168c83}.insight-week-bars220308 .nonbillable{background:#b7c4c1}.insight-week220308 small{font-size:var(--t-5);color:var(--muted,#667985);white-space:nowrap}.insight-time-table220308{min-width:1040px}.insight-time-table220308 td{vertical-align:middle}.insight-time-table220308 td:first-child small{display:block;color:var(--muted,#667985);margin-top:3px}.insight-week-pills220308{display:flex;gap:4px}.insight-week-pills220308 span{padding:4px 6px;border-radius:6px;background:var(--surface-soft,#f2f6f5);font-size:var(--t-5);white-space:nowrap}.insight-time-card220308 .card-header input{max-width:260px}
@media(max-width:1050px){.insight-time-kpis220308{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.insight-time-kpis220308{grid-template-columns:1fr}.insight-time-hero220308{flex-direction:column}.insight-time-card220308 .card-header{align-items:flex-start;flex-direction:column}.insight-time-card220308 .card-header input{max-width:none;width:100%}}

/* v2.20.310 – sortable Insight hours and contained 52-week chart */
.consumption-shell,.consumption-panel220230,.insight-time-card220308{min-width:0;max-width:100%}
.insight-time-card220308{overflow:hidden}
.insight-time-chart220308{box-sizing:border-box;width:100%;max-width:100%}
.insight-time-sort220310{appearance:none;border:0;background:transparent;color:inherit;cursor:pointer;font:inherit;font-weight:700;padding:7px 4px;text-align:left;white-space:nowrap}
.insight-time-sort220310 span{color:var(--muted,#667985);font-size:.85em;margin-left:3px}
.insight-time-sort220310.active{color:#08766f}
.insight-time-sort220310:hover,.insight-time-sort220310:focus-visible{color:#08766f;text-decoration:underline;text-underline-offset:3px}

/* v2.20.311 – consultant daily drill-down */
.insight-consultant-open220311{font-size:inherit;padding:0;text-align:left}
.insight-consultant-detail220311>h2{margin-bottom:4px}.insight-consultant-detail220311>h3{margin:22px 0 8px}
.insight-time-kpis220308{grid-template-columns:repeat(6,minmax(0,1fr))}.insight-period-controls220322{display:flex;flex-direction:column;align-items:flex-end;gap:8px;min-width:0}.insight-period-controls220322 select{width:auto;min-width:190px}.insight-custom-period220322{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}.insight-custom-period220322[hidden]{display:none}.insight-custom-period220322 input{width:145px}.insight-time-table220308{min-width:1260px}
@media(max-width:1250px){.insight-time-kpis220308{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.insight-time-kpis220308{grid-template-columns:repeat(2,minmax(0,1fr))}.insight-period-controls220322{align-items:stretch;width:100%}.insight-period-controls220322 select{width:100%}.insight-custom-period220322{display:grid;grid-template-columns:1fr auto 1fr}.insight-custom-period220322 input{width:100%;min-width:0}.insight-custom-period220322 .btn{grid-column:1/-1;width:100%}}
@media(max-width:480px){.insight-time-kpis220308{grid-template-columns:1fr}}
.insight-detail-kpis220311{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:18px 0}
.insight-detail-kpis220311>div{display:flex;flex-direction:column;gap:4px;padding:13px;border:1px solid var(--line,#dfe7eb);border-radius:12px;background:var(--surface-soft,#f7faf9)}
.insight-detail-kpis220311 small{color:var(--muted,#667985);font-size:var(--t-5);font-weight:800;letter-spacing:.07em;text-transform:uppercase}.insight-detail-kpis220311 strong{font-size:20px}.insight-detail-kpis220311 span{color:var(--muted,#667985);font-size:11px}
.insight-detail-days220311{max-height:420px;overflow:auto}.insight-detail-days220311 thead{position:sticky;top:0;z-index:1;background:var(--surface,#fff)}
@media(max-width:760px){.insight-detail-kpis220311{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v2.20.312 – customer case-level time drill-down */
.insight-case-detail220312>h2{margin-bottom:4px}.insight-case-detail220312>h3{margin:22px 0 8px}
.insight-case-rows220312{max-height:520px;overflow:auto}.insight-case-rows220312 thead{position:sticky;top:0;z-index:1;background:var(--surface,#fff)}
.insight-case-rows220312 td:nth-child(2),.insight-case-rows220312 td:nth-child(5),.insight-case-rows220312 td:nth-child(6){white-space:nowrap}
.insight-case-rows220312 td:nth-child(3){min-width:280px;white-space:normal}.insight-case-rows220312 td:nth-child(4) small{display:block;color:var(--muted,#667985);margin-top:2px}
.insight-case-rows220312 tr.insight-nonbillable220312 td{background:#fffaf0}

/* v2.20.313 – customer directory fits desktop width without horizontal scrolling */
@media(min-width:761px){
 .customer-directory-table{overflow-x:hidden}
 .customer-directory-table table{width:100%;min-width:0;table-layout:fixed}
 .customer-directory-table th,.customer-directory-table td{padding-left:10px;padding-right:10px;overflow:hidden;text-overflow:ellipsis}
/* v2.20.636 - Kunde 30→28 %, Åbne sager 8→9 %, Månedlig værdi 10→11 %. Maalt
   i 1440 px efter skriftskiftet i design-b.css: «Åbne sager» 95 px i 88, «Månedlig
   værdi» 117 i 110 - de sidste 7 px af de 32, overskriften stak ud med. Kunde
   har 309 px til navne paa omkring 230. Summen er stadig 100 %. */
 .customer-directory-table th:nth-child(1){width:28%}.customer-directory-table th:nth-child(2){width:9%}.customer-directory-table th:nth-child(3){width:12%}.customer-directory-table th:nth-child(4){width:10%}.customer-directory-table th:nth-child(5){width:11%}.customer-directory-table th:nth-child(6){width:10%}.customer-directory-table th:nth-child(7){width:9%}.customer-directory-table th:nth-child(8){width:11%}
 .customer-directory-table th:nth-child(9),.customer-directory-table td:nth-child(9){display:none}
 .customer-directory-table td:first-child{white-space:normal}.customer-directory-table .customer-list-name{min-width:0}
 .customer-directory-table .customer-list-name strong{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-height:1.25;overflow-wrap:anywhere}
 .customer-directory-table .customer-list-name small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
 .customer-directory-table td:nth-child(n+2){white-space:nowrap}
}

/* v2.20.314 – global Shell width containment audit */
html,body{max-width:100%}
.app,.content,#content{min-width:0;max-width:100%}
.content>*,#content>*,.grid>*,.two-col>*,.card,.dashboard-section{min-width:0;max-width:100%}
.table-wrap{width:100%;max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch}
.modal-card,#modalBody{min-width:0;max-width:100%}
img,svg,canvas,video{max-width:100%}
pre{max-width:100%;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere}

/* Inventory – platform-first technical asset register. */
.inventory-hero{display:flex;align-items:center;justify-content:space-between;gap:28px;margin-bottom:14px;background:linear-gradient(135deg,var(--c-surface,#fff),var(--c-accent-soft,#eef7f6));border-color:var(--c-line-strong,#c7dad8)}
.inventory-hero h2{font-size:22px;margin:4px 0 7px}.inventory-hero p{max-width:820px;margin:0;color:var(--muted);line-height:1.5}.inventory-hero-total{min-width:170px;padding-left:22px;border-left:1px solid var(--border);text-align:right}.inventory-hero-total small,.inventory-hero-total span{display:block;color:var(--muted)}.inventory-hero-total strong{display:block;font-size:32px;line-height:1.1;margin:4px 0}
.inventory-platform-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}.inventory-platform-card{appearance:none;display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:11px;align-items:center;border:1px solid var(--border);border-radius:12px;background:var(--card);padding:13px;text-align:left;color:var(--text);box-shadow:0 3px 12px rgba(16,38,54,.04)}.inventory-platform-card:hover,.inventory-platform-card.active{border-color:var(--accent);background:#f5fbfb}.inventory-platform-card.active{box-shadow:inset 3px 0 var(--accent)}.inventory-platform-card>span:nth-child(2){min-width:0}.inventory-platform-card strong,.inventory-platform-card small{display:block}.inventory-platform-card small{color:var(--muted);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.inventory-platform-card>b{font-size:20px}.inventory-platform-icon{width:40px;height:40px;border-radius:10px;display:grid;place-items:center;background:var(--nav);color:#fff;font-size:12px;font-weight:800;letter-spacing:.04em}
.inventory-register{padding:0;overflow:hidden}.inventory-toolbar{display:grid;grid-template-columns:minmax(260px,2fr) minmax(160px,1fr) minmax(180px,1fr) auto;gap:10px;align-items:end;padding:15px 17px;border-bottom:1px solid var(--border)}.inventory-toolbar input,.inventory-toolbar select{margin-top:4px}.inventory-result-head{display:flex;justify-content:space-between;align-items:center;padding:14px 17px 8px}.inventory-result-head strong,.inventory-result-head span{display:block}.inventory-result-head strong{font-size:17px}.inventory-result-head span{color:var(--muted);margin-top:3px;font-size:12px}.inventory-type-strip{display:flex;gap:7px;padding:4px 17px 14px;overflow:auto}.inventory-type-strip button{border:1px solid var(--border);background:#fff;border-radius:999px;padding:7px 10px;display:flex;gap:8px;align-items:center;white-space:nowrap;color:var(--text)}.inventory-type-strip button:hover,.inventory-type-strip button.active{border-color:var(--accent);background:#eaf7f7}.inventory-type-strip b{font-size:11px;background:#e8eef0;border-radius:999px;padding:2px 6px}.inventory-table-wrap{border-width:1px 0 0;border-radius:0}.inventory-table{min-width:1280px}.inventory-table td{vertical-align:top}.inventory-table td strong,.inventory-table td small,.inventory-table td code{display:block}.inventory-table td small{margin-top:3px;color:var(--muted);white-space:normal}.inventory-table td code{font-size:11px;max-width:180px;overflow:hidden;text-overflow:ellipsis}.inventory-table th:nth-child(1){width:14%}.inventory-table th:nth-child(2){width:17%}.inventory-table th:nth-child(3){width:17%}.inventory-table th:nth-child(4){width:14%}.inventory-table th:nth-child(5){width:14%}.inventory-table th:nth-child(6){width:7%}.inventory-table th:nth-child(7){width:10%}.inventory-table th:nth-child(8){width:12%}
@media(max-width:1100px){.inventory-platform-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.inventory-toolbar{grid-template-columns:1fr 1fr}.inventory-toolbar label:first-child{grid-column:1/-1}}
@media(max-width:650px){.inventory-hero{align-items:flex-start;flex-direction:column}.inventory-hero-total{width:100%;padding:12px 0 0;border-left:0;border-top:1px solid var(--border);text-align:left}.inventory-platform-grid{grid-template-columns:1fr}.inventory-toolbar{grid-template-columns:1fr}.inventory-toolbar label:first-child{grid-column:auto}.inventory-result-head{align-items:flex-start;gap:10px;flex-direction:column}}

/* v2.20.315 – customer ticket/time card fits the available desktop width */
.customer-ticket-card{overflow:hidden}
@media(min-width:761px){
 .customer-ticket-table-wrap{overflow-x:hidden}
 .customer-ticket-table{width:100%;min-width:0;table-layout:fixed}
 .customer-ticket-table th,.customer-ticket-table td{padding-left:8px;padding-right:8px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
 .customer-ticket-table th:nth-child(1){width:28%}.customer-ticket-table th:nth-child(2){width:8%}.customer-ticket-table th:nth-child(3){width:6%}.customer-ticket-table th:nth-child(4){width:14%}.customer-ticket-table th:nth-child(5){width:14%}.customer-ticket-table th:nth-child(6){width:7%}.customer-ticket-table th:nth-child(7){width:8%}.customer-ticket-table th:nth-child(8){width:10%}.customer-ticket-table th:nth-child(9){width:5%}
 .customer-ticket-table td:nth-child(1),.customer-ticket-table td:nth-child(4),.customer-ticket-table td:nth-child(5){white-space:normal;overflow-wrap:anywhere;line-height:1.3}
 .customer-ticket-table td:nth-child(1) strong,.customer-ticket-table td:nth-child(4),.customer-ticket-table td:nth-child(5){display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}
 .customer-ticket-table td:nth-child(1) small{display:block;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 .customer-ticket-table td:nth-child(n+6){white-space:nowrap}
}
@media(min-width:761px) and (max-width:1150px){
 .customer-ticket-table th:nth-child(3),.customer-ticket-table td:nth-child(3),.customer-ticket-table th:nth-child(9),.customer-ticket-table td:nth-child(9){display:none}
 .customer-ticket-table th:nth-child(1){width:30%}.customer-ticket-table th:nth-child(2){width:10%}.customer-ticket-table th:nth-child(4){width:17%}.customer-ticket-table th:nth-child(5){width:17%}.customer-ticket-table th:nth-child(6){width:8%}.customer-ticket-table th:nth-child(7){width:9%}.customer-ticket-table th:nth-child(8){width:9%}
}
.card-header>*,.toolbar>*{min-width:0}

/* v2.20.314 – Min dag customer worklist uses the same contained desktop policy */
@media(min-width:761px){
 .home-customer-table{overflow-x:hidden;max-width:100%}
 .home-customer-table table{width:100%;min-width:0;table-layout:fixed}
 .home-customer-table th,.home-customer-table td{padding-left:9px;padding-right:9px;overflow:hidden;text-overflow:ellipsis}
 .home-customer-table th:nth-child(1){width:27%}.home-customer-table th:nth-child(2){width:12%}.home-customer-table th:nth-child(3){width:7%}.home-customer-table th:nth-child(4){width:7%}.home-customer-table th:nth-child(5){width:6%}.home-customer-table th:nth-child(6){width:7%}.home-customer-table th:nth-child(7){width:10%}.home-customer-table th:nth-child(8){width:22%}.home-customer-table th:nth-child(9){width:2%}
 .home-customer-table td:first-child{white-space:normal}.home-customer-table td:first-child strong{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-height:1.25;overflow-wrap:anywhere}
 .home-customer-table td:first-child small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
 .home-customer-table td:nth-child(n+2):nth-child(-n+7){white-space:nowrap}
 .home-customer-table .home-signals{min-width:0;justify-content:flex-start;align-items:flex-start}
 .home-customer-table .home-signal{max-width:100%;overflow:hidden;text-overflow:ellipsis}
 .home-customer-table .home-chevron{padding-left:2px;padding-right:2px;text-align:center}
}

/* v2.20.314 – global Shell width containment audit */
html,body{max-width:100%}
.app,.content,#content{min-width:0;max-width:100%}
.content>*,#content>*,.grid>*,.two-col>*,.card,.dashboard-section{min-width:0;max-width:100%}
.table-wrap{width:100%;max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain}
.modal-card,#modalBody{min-width:0;max-width:100%}
img,svg,video,canvas{max-width:100%}
pre{max-width:100%;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere}

/* v2.20.320 – root-cause horizontal overflow contract (320px and up) */
html,body{width:100%;min-width:0;overflow-x:visible}
.app{width:100%;grid-template-columns:240px minmax(0,1fr)}
.topbar,.top-actions,.global-search,.content,#content,.modal,.modal-card,#modalBody{min-width:0}
.content,#content,.content>*,#content>*,.card,.card-header,.toolbar,.row-actions,
.grid,.grid>*,[class*="grid"],[class*="grid"]>*,[class*="flex"],[class*="flex"]>*,
form,fieldset,label,details,summary{min-width:0;max-width:100%}
.card-header>div,.topbar>div,.toolbar>div,.row-actions>*,.section-title>*{min-width:0}
/* v2.20.634 - «IT Confidenc / e», «+ Aktivi / tet», «Se dokumentatio / n», «OMFA / NG».

   Reglen her stod fra v2.20.320 som
       p,li,dd,dt,td,th,a,button,label,strong,small,span,code{overflow-wrap:anywhere}
   - lagt ind for at intet kan skubbe siden vandret paa 320 px. Men `anywhere`
   betyder: braek ordet HVOR SOM HELST, ogsaa midt i, ogsaa naar der er plads
   nok til at ombryde ved et mellemrum i stedet. Og den sad paa hver eneste
   knap, etiket og span i hele huset: 321 af 427 elementer paa overblikket i
   1440 px. Maalt: menuens «IT Confidence» stod paa TRE linjer i en 74 px boks,
   «+ Aktivitet» var 59x64 px, «Se dokumentation» 127x77 px.

   v2.20.563 og v2.20.580 havde allerede set praecis det («STA TUS», «Runni ng»,
   «MONIT ORING») og rettet det i hver sin tabel. Det her er roden.

   Nu gaelder `anywhere` kun for INDHOLD, der kan rumme lange, ubrydelige tokens
   - URL'er, e-mails, noegler, produktnumre - altsaa afsnit, listepunkter,
   celler og kode. Elementerne inde i dem (a, span, strong, small) arver det,
   saa en lang e-mail i en celle ombryder stadig. En knap eller etiket, der
   IKKE staar i en celle, faar browserens normale ombrydning tilbage: ved
   mellemrum, aldrig midt i et ord. */
p,li,dd,dt,td,code{overflow-wrap:anywhere}
/* v2.20.636 - `th` er taget UD af listen ovenfor. En overskrift er vores egen,
   korte tekst - aldrig en URL eller en noegle - og med `anywhere` blev
   «Faktureringspris» til «Fakturering / spris» i licensregistret, saa snart
   overskrifterne fik lov at ombryde. Samme regel som for knapper. */
th{overflow-wrap:break-word}
/* Og en knap, en etiket og et menupunkt faar `break-word` - ikke `normal`, og
   ikke `anywhere`. Forskellen er den, det hele handler om:

     anywhere    bryder ordet hvor som helst OG lader boksen krympe til ét
                 bogstavs bredde. Det er derfor flex kunne klemme «+ Aktivitet»
                 til 59 px og stable bogstaverne.
     normal      bryder aldrig et ord - men saa stikker ordet ud af en boks,
                 der er smallere end ordet. Proevet: i 761-900 px stak 15 ord
                 ud af kundekortets 72 px brede KPI-fliser. Forkastet.
     break-word  ombryder ved mellemrum, bryder KUN et ord, der alene er bredere
                 end boksen - og lader boksen kraeve plads til sit laengste ord,
                 saa flex ikke kan klemme den under det.

   Maalt i 320, 390, 1024 og 1440 px paa 26 sider: ord braekket midt over
   73 / 71 / 67 / 12 → 4 / 4 / 4 / 4 (de fire er «Sophos-kunde»-typen: brudt
   ved bindestregen, som er en lovlig ombrydning), knapper der stikker ud af
   deres boks 0 → 0, sider der scroller vandret 0 → 0.
   (`white-space:nowrap` var ogsaa proevet: KPI-fliser og tragtraekker er
   <button>, og 47 af dem fik indholdet skubbet ud over kanten. Forkastet.) */
button,.btn,label,.nav-item,.brand strong{overflow-wrap:break-word}
/* Og knappen i et korthoved maa ikke KLEMMES. v2.20.320 gav alt i et korthoved
   `min-width:0`, saa intet kan skubbe siden vandret - men dermed krymper en
   knap foer teksten ved siden af den. Maalt: «+ Aktivitet» 59 px bred paa to
   linjer i 1440 px, «Se dokumentation» 127 px paa to. Knappen beholder sin
   bredde; det er overskriften og forklaringen, der har `min-width:0` og
   ombryder. Maalt bagefter i 320, 390, 768, 1024 og 1440 px: ingen knap
   stikker ud, ingen side scroller vandret. */
.card-header>.btn,.card-header>button,.card-header>div>.btn{flex-shrink:0}
/* Menuens navn: «IT Confidence» staar paa 90 px i én linje. v2.20.297 gav
   miljoemaerkatet en fast plads paa 72 px + 8 px kant + 4 px luft = 84 px, og
   lod brand-maerket krympe fra 28 til 23 px. Tilbage til navnet: 74 px. Saa
   knaekkede det - foerst «Confidenc / e», og med `break-word` stadig, fordi
   ordet «Confidence» alene er 74 px. Maalt: det bredeste maerkat, PROD, er
   46 px; DEV 38, PRE 37, TEST 44. Pladsen er stadig FAST (48 px), saa navnet
   flytter sig ikke mellem miljoeerne - den er bare ikke laengere 26 px for
   stor. Navnet faar 93 px og staar paa én linje; maerket krymper ikke. */
.brand{padding-right:60px!important}
.brand .sidebar-environment{width:48px;min-width:48px;max-width:48px}
.brand .brand-mark{flex-shrink:0}
.brand strong{white-space:nowrap}
img,svg,canvas,video,iframe,embed,object{display:block;max-width:100%;height:auto}
iframe,embed,object{width:100%}
.table-wrap{display:block;width:100%;max-width:100%;overflow-x:auto;overflow-y:visible}
.modal{width:100%;max-width:100%}.modal-card{width:min(760px,100%)}
@media(max-width:900px){.modal-wide .modal-card,.modal-card.modal-wide,.modal-card.modal-quote-list{width:100%;max-width:100%}}
@media(max-width:760px){
 .app{width:100%;min-width:0}.sidebar{max-width:min(245px,88vw)}
 .topbar{width:100%;max-width:100%}.topbar>div:nth-child(2){min-width:0;overflow:hidden}
 .topbar h1,.topbar p{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
 .top-actions{margin-left:auto;max-width:calc(100% - 44px)}
 .content{width:100%;max-width:100%;padding-left:12px;padding-right:12px}
 .card-header,.toolbar,.form-actions{flex-wrap:wrap}
 .form-actions>*{max-width:100%}
}
@media(max-width:420px){
 .modal{padding:6px}.modal-card{padding-left:12px;padding-right:12px}
 .kpis,.insight-detail-kpis220311{grid-template-columns:1fr}
 .card-header,.section-title.split{align-items:flex-start}
}
/* These overrides deliberately prove that root containment is structural: no page-level clipping. */
html,body,.content{overflow-x:visible!important}
[class*="grid"]>*{min-width:0;max-width:100%}
@media(max-width:900px){
 .modal-card,.modal-card.modal-wide,.modal-card.modal-quote-list,.modal-contract-workspace,
 .modal-card.modal-contract-templates,.modal-card.modal-itc-vmm-bulk,
 .modal-card.integration-analysis-modal,.modal-card.modal-customer-portal-admin{
  width:100%!important;max-width:100%!important
 }
}

/* v2.20.353 – customer Billing must never enlarge the page canvas.
   The table may scroll inside its own frame on a narrow tablet, while a normal
   desktop uses the available width without the legacy 1450/1660 px floor. */
.customer-tab-content,
#customerBillingRoot,
.billing-source-section{
 min-width:0!important;
 width:100%!important;
 max-width:100%!important
}
.billing-source-section{overflow:hidden!important}
.billing-source-table-wrap{
 display:block!important;
 min-width:0!important;
 width:100%!important;
 max-width:100%!important;
 overflow-x:auto!important;
 overflow-y:visible!important;
 contain:inline-size;
 overscroll-behavior-inline:contain
}
@media(min-width:1280px){
 .billing-source-table{
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
  table-layout:fixed!important
 }
 .billing-source-table th,
 .billing-source-table td{white-space:normal!important;overflow-wrap:anywhere!important}
}
@media(min-width:761px) and (max-width:1279px){
 .billing-source-table{width:1120px!important;min-width:1120px!important;max-width:none!important}
}
@media(max-width:760px){
 .billing-source-section{overflow:visible!important}
 .billing-source-table-wrap{contain:none;overflow:visible!important}
}

/* v2.20.353 – read-only Atera/Shell time reconciliation */
.insight-atera-open220332{margin-top:14px}
.insight-atera-reconcile220332{display:grid;gap:14px;min-width:0}
.insight-atera-reconcile220332 h2,.insight-atera-reconcile220332 h3{margin:0}
.insight-reconcile-input220332{display:grid;grid-template-columns:minmax(220px,1fr) repeat(2,minmax(180px,.65fr));gap:10px;align-items:stretch}
.insight-reconcile-input220332>label,.insight-reconcile-input220332>div{min-width:0;border:1px solid var(--c-line,var(--border));border-radius:var(--r-container,12px);padding:12px;background:var(--c-surface,#fff)}
.insight-reconcile-input220332 input{margin-top:7px}
.insight-reconcile-input220332 small,.insight-reconcile-input220332 strong{display:block}
.insight-reconcile-input220332 small{color:var(--muted)}
.insight-reconcile-input220332 strong{font-size:22px;margin-top:8px}
.insight-reconcile-input220332 strong.negative{color:var(--red,#b84242)}
.insight-atera-reconcile220332 details{min-width:0;border:1px solid var(--c-line,var(--border));border-radius:var(--r-container,12px);overflow:hidden}
.insight-atera-reconcile220332 summary{padding:12px 14px;background:var(--c-surface-2,#f6f8f8);font-weight:700;cursor:pointer}
.insight-atera-reconcile220332 details .table-wrap{border:0;border-top:1px solid var(--c-line,var(--border));border-radius:0}
.insight-atera-reconcile220332 table{min-width:720px}
@media(max-width:760px){.insight-reconcile-input220332{grid-template-columns:1fr}.insight-atera-open220332{width:100%}}

/* v2.20.353 – preview and targeted repair from an Atera detail report */
.atera-report-repair220337{display:grid;gap:10px;padding:16px;border:1px solid var(--c-line,var(--border));border-radius:var(--r-container,12px);background:var(--c-surface-2,#f6f8f8);min-width:0}
.atera-report-repair220337 h3,.atera-report-repair220337 p{margin:0}
.atera-report-repair220337 input[type=file]{width:100%;min-width:0;padding:10px;border:1px solid var(--c-line,var(--border));border-radius:8px;background:var(--c-surface,#fff)}
.atera-report-repair220337 .table-wrap{max-height:360px;overflow:auto;background:var(--c-surface,#fff)}
.atera-report-repair220337 .negative{color:var(--red,#b84242)}

/* v2.20.353 – three-way Atera reconciliation */
.insight-reconcile-breakdown220333{display:grid;border:1px solid var(--c-line,var(--border));border-radius:var(--r-container,12px);overflow:hidden;background:var(--c-surface,#fff)}
.insight-reconcile-breakdown220333>.head,.insight-reconcile-breakdown220333>div{display:grid;grid-template-columns:minmax(170px,1fr) minmax(150px,.75fr) minmax(180px,.8fr) minmax(130px,.65fr);gap:12px;align-items:center;padding:10px 12px;min-width:0}
.insight-reconcile-breakdown220333>.head{background:var(--c-surface-2,#f6f8f8);color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.08em}
.insight-reconcile-breakdown220333>div+div{border-top:1px solid var(--c-line,var(--border))}
.insight-reconcile-breakdown220333 label{display:contents;font-weight:700}
.insight-reconcile-breakdown220333 input{width:100%;min-width:0}
.insight-reconcile-breakdown220333 strong.negative{color:var(--red,#b84242)}
@media(max-width:760px){
 .insight-reconcile-breakdown220333>.head{display:none}
 .insight-reconcile-breakdown220333>div{grid-template-columns:1fr 1fr}
 .insight-reconcile-breakdown220333 label{display:grid;grid-column:1/-1;gap:6px}
}

/* v2.20.353 – Atera mapping control inside existing customer data quality */
.atera-quality220336{border-top:4px solid var(--accent);min-width:0}
.atera-quality-kpis220336{grid-template-columns:repeat(4,minmax(0,1fr));margin:14px 0}
.atera-quality220336 details{margin-top:12px;border:1px solid var(--border);border-radius:10px;overflow:hidden}
.atera-quality220336 summary{padding:12px 14px;background:var(--soft);cursor:pointer}
.atera-quality220336 details .table-wrap{border:0;border-top:1px solid var(--border);border-radius:0}
.atera-quality220336 td{overflow-wrap:anywhere}
@media(max-width:760px){.atera-quality-kpis220336{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:420px){.atera-quality-kpis220336{grid-template-columns:1fr}}
.economic-test-invoice{width:100%;max-width:980px;min-width:0;margin:auto;background:#fff;color:#111;padding:18px 24px 26px;font-family:Arial,"Segoe UI",sans-serif}.economic-test-invoice~*{min-width:0}.economic-test-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 22px;padding:8px 10px;border:1px solid #ccd9dc;border-radius:4px;color:#244958;font-size:11px}.economic-test-banner>div{display:flex;align-items:center;gap:8px}.economic-test-banner>span{color:#66767d}.economic-test-dot{width:7px;height:7px;border-radius:50%;background:#35a9b4}.economic-test-company{text-align:center;margin:12px 0 48px;font-size:26px;letter-spacing:.01em}.economic-test-invoice header{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(145px,.8fr);gap:28px;align-items:start;margin-bottom:35px}.economic-test-invoice header section{min-width:0}.economic-test-invoice p{line-height:1.35;margin:3px 0}.economic-test-recipient{margin:0;padding:0;background:none;min-height:0}.economic-test-recipient strong{display:block;font-size:14px}.economic-test-delivery em{font-size:14px}.economic-test-wordmark{display:flex;justify-content:flex-end;align-items:flex-start;padding-top:0}.economic-test-wordmark img{display:block;width:100%;max-width:190px;height:auto;object-fit:contain}.economic-test-document{display:grid;grid-template-columns:minmax(0,1fr) minmax(270px,.55fr);gap:28px;margin-bottom:42px}.economic-test-order,.economic-test-meta{border-top:1.5px solid #111;padding-top:15px}.economic-test-order strong,.economic-test-order span{display:block}.economic-test-order strong{font-size:15px}.economic-test-order span{margin-top:5px;color:#67747a;font-size:11px}.economic-test-meta h2{font-size:23px;margin:-48px 0 8px;padding-bottom:7px;border-bottom:1.5px solid #111}.economic-test-meta dl{display:grid;grid-template-columns:72px minmax(0,1fr);gap:5px 10px;margin:15px 0 0;font-size:11px}.economic-test-meta dt{color:#333}.economic-test-meta dd{margin:0;overflow-wrap:anywhere}.economic-test-lines{width:100%;max-width:100%;overflow:hidden;border:0;border-top:1px solid #111}.economic-test-lines table{width:100%;min-width:0;max-width:100%;table-layout:fixed}.economic-test-lines th,.economic-test-lines td{min-width:0;padding:8px 6px;white-space:normal;overflow-wrap:anywhere;vertical-align:top}.economic-test-lines th{position:static;background:#fff;color:#111;border-bottom:1px solid #111;font-size:var(--t-5);font-weight:400;letter-spacing:0;text-transform:none}.economic-test-lines td{border:0;font-size:12px}.economic-test-lines tbody tr+tr td{padding-top:11px}.economic-line-period{display:block;margin-top:3px;color:#66767d;font-size:var(--t-5);line-height:1.35}.economic-test-lines .num-cell{white-space:nowrap;text-align:right;font-variant-numeric:tabular-nums}.economic-col-number{width:15%}.economic-col-text{width:32%}.economic-col-qty{width:9%}.economic-col-unit{width:9%}.economic-col-price{width:17%}.economic-col-total{width:18%}.economic-test-totals{display:grid;grid-template-columns:1fr auto;gap:10px 24px;width:min(310px,100%);margin:54px 0 30px auto;padding-top:12px;border-top:1px solid #111;font-size:14px;text-align:right}.economic-test-totals span:last-of-type,.economic-test-totals strong:last-child{font-size:16px;border-bottom:1px solid #111;padding:4px 0 9px;font-weight:800}.economic-test-invoice footer{margin-top:35px;padding-top:10px;border-top:1px solid #111;text-align:center;font-size:var(--t-5);line-height:1.5}.economic-test-invoice footer span{color:#536168}@media(max-width:700px){.economic-test-invoice{padding:8px 2px}.economic-test-company{margin-bottom:26px;font-size:22px}.economic-test-invoice header{grid-template-columns:1fr 1fr;gap:18px}.economic-test-wordmark{grid-column:1/-1;justify-content:flex-start}.economic-test-wordmark img{max-width:165px}.economic-test-document{grid-template-columns:1fr;margin-top:24px;gap:60px}.economic-test-meta h2{font-size:20px}.economic-test-banner{align-items:flex-start;flex-direction:column;gap:4px}.economic-test-lines{border-top:0;overflow:visible}.economic-test-lines thead{display:none}.economic-test-lines table,.economic-test-lines tbody{display:block}.economic-test-lines tr{display:grid;grid-template-columns:1fr 1fr;margin-bottom:10px;padding:11px 12px;border:1px solid #dce4e7;border-radius:6px;background:#fff}.economic-test-lines td{display:flex;justify-content:space-between;gap:12px;padding:6px 0!important;border:0;text-align:right!important;white-space:normal!important}.economic-test-lines td:before{content:attr(data-label);flex:0 0 auto;color:#72828a;font-size:var(--t-5);font-weight:700;text-transform:uppercase}.economic-test-lines td:nth-child(2){grid-column:1/-1;display:block;text-align:left!important;padding:8px 0!important;border-top:1px solid #edf0f1;border-bottom:1px solid #edf0f1}.economic-test-lines td:nth-child(2):before{display:block;margin-bottom:4px}.economic-test-totals{width:100%;margin-top:30px}}@media(max-width:440px){.economic-test-invoice header{grid-template-columns:1fr}.economic-test-wordmark{grid-column:auto}}
@media print{
@page{size:A4 portrait;margin:12mm 10mm}html,body{width:auto!important;height:auto!important;min-height:0!important;margin:0!important;background:#fff!important}body>*:not(#modal){display:none!important}#modal{display:block!important;position:static!important;inset:auto!important;width:auto!important;max-width:none!important;height:auto!important;min-height:0!important;padding:0!important;background:#fff!important;overflow:visible!important}#modal .modal-card{display:block!important;position:static!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;box-shadow:none!important;overflow:visible!important}#modalBody{display:block!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;overflow:visible!important}
.modal-close,.economic-test-invoice .form-actions,.economic-test-banner,.economic-test-invoice>.notice,.economic-test-invoice footer{display:none!important}.economic-test-invoice{display:block!important;width:auto!important;max-width:none!important;margin:0!important;padding:0!important}.economic-test-invoice header,.economic-test-document{break-inside:avoid;page-break-inside:avoid}.economic-test-lines{overflow:visible!important}.economic-test-lines table{display:table!important}.economic-test-lines thead{display:table-header-group!important}.economic-test-lines tbody{display:table-row-group!important}.economic-test-lines tr{display:table-row!important;break-inside:avoid;page-break-inside:avoid}.economic-test-lines th,.economic-test-lines td{display:table-cell!important}.economic-test-totals{margin-top:30px!important}.economic-test-totals{break-inside:avoid;page-break-inside:avoid}}
.billing-flow-steps{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:8px;align-self:center}.billing-flow-steps span{border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--surface,#fff);font-size:var(--t-5);font-weight:700;color:var(--muted)}.billing-flow-steps span.done{border-color:#83c9a2;background:#effaf3;color:#166534}.billing-flow-steps span.active{border-color:#6ca4e8;background:#eef6ff;color:#174b87;box-shadow:0 0 0 2px rgba(69,132,214,.1)}.billing-flow-steps span.paused{border-color:#e9c46a;background:#fff9e8;color:#805b00}.billing-flow-steps-modal{margin:16px 0 20px}@media(max-width:900px){.billing-flow-steps{grid-template-columns:1fr 1fr}}@media(max-width:560px){.billing-flow-steps{grid-template-columns:1fr}}
.economic-test-lines .economic-section-heading th{padding:18px 6px 6px;border-bottom:1px solid #111;color:#111;font-size:11px;font-weight:800;letter-spacing:.08em;text-align:left}.economic-test-lines .economic-section-heading:first-child th{padding-top:12px}@media(max-width:700px){.economic-test-lines .economic-section-heading{display:block;border:0;padding:13px 2px 3px}.economic-test-lines .economic-section-heading th{display:block;padding:0!important;border:0;font-size:11px}}
.economic-test-invoice header{grid-template-columns:minmax(0,1fr) minmax(145px,.8fr)}@media(max-width:700px){.economic-test-wordmark{grid-column:auto}}

/* v2.20.356 – live sync progress */
.sync-ops-live220355{display:grid;grid-template-columns:12px minmax(90px,.35fr) minmax(0,1fr);gap:5px 10px;align-items:center;margin-top:12px;padding:11px 12px;border:1px solid #b9d7fb;border-radius:10px;background:#f2f8ff;color:#174b87}
.sync-ops-live220355 i{grid-row:1/3;width:10px;height:10px;border:2px solid #93c5fd;border-top-color:#2563eb;border-radius:50%;animation:syncOpsSpin220355 .8s linear infinite}
.sync-ops-live220355 strong,.sync-ops-live220355 span,.sync-ops-live220355 small{min-width:0;overflow-wrap:anywhere}
.sync-ops-live220355 small{grid-column:2/-1;color:#56718f}
@keyframes syncOpsSpin220355{to{transform:rotate(360deg)}}
@media(max-width:650px){.sync-ops-live220355{grid-template-columns:12px 1fr}.sync-ops-live220355 span,.sync-ops-live220355 small{grid-column:2}}

/* v2.20.356 – operational job monitor */
.sync-ops-monitor220356{margin-top:12px;padding:13px 14px;border:1px solid #a9cdf8;border-radius:12px;background:linear-gradient(135deg,#f5f9ff,#eef6ff);color:#174b87}
.sync-ops-monitor-head,.sync-ops-monitor-head>span,.sync-ops-monitor-meta{display:flex;align-items:center}.sync-ops-monitor-head{justify-content:space-between;gap:12px}.sync-ops-monitor-head>span{gap:9px}.sync-ops-monitor-head i{width:11px;height:11px;border:2px solid #93c5fd;border-top-color:#2563eb;border-radius:50%;animation:syncOpsSpin220355 .8s linear infinite}.sync-ops-monitor-head b{font-variant-numeric:tabular-nums}.sync-ops-monitor220356 p{margin:7px 0 9px;font-size:13px;overflow-wrap:anywhere}.sync-ops-progress220356{height:7px;overflow:hidden;border-radius:99px;background:#dbeafe}.sync-ops-progress220356 span{display:block;height:100%;border-radius:inherit;background:#2672cf;transition:width .35s ease}.sync-ops-monitor-meta{flex-wrap:wrap;gap:5px 16px;margin-top:8px;color:#526f91;font-size:11px}.sync-ops-monitor220356.stale{border-color:#e1bb61;background:#fff9e9;color:#77520a}.sync-ops-monitor220356.stale .sync-ops-progress220356 span{background:#c68a14}.sync-ops-stale220356{margin-top:9px;padding-top:9px;border-top:1px solid rgba(164,113,13,.22);font-size:11px;font-weight:700}

/* v2.20.377 – customer time entries: the description wraps instead of widening the card.
   The base rule td{white-space:nowrap} keeps numbers and short labels on one line, which is right
   for most tables but turns a free-text column into horizontal scrolling. This table states its own
   column widths and lets only the description wrap, exactly as the ticket table does since v2.20.315.
   Mobile is untouched: below 761px the shared .table-wrap min-width and horizontal scroll still apply. */
@media(min-width:761px){
 .customer-time-entry-wrap220377{overflow-x:hidden}
 .customer-time-entry-table220377{width:100%;min-width:0;table-layout:fixed}
 .customer-time-entry-table220377 th,.customer-time-entry-table220377 td{overflow:hidden;text-overflow:ellipsis;vertical-align:top}
 .customer-time-entry-table220377 th:nth-child(1){width:10%}
 .customer-time-entry-table220377 th:nth-child(2){width:16%}
 .customer-time-entry-table220377 th:nth-child(3){width:12%}
 .customer-time-entry-table220377 th:nth-child(4){width:44%}
 .customer-time-entry-table220377 th:nth-child(5){width:8%}
 .customer-time-entry-table220377 th:nth-child(6){width:10%}
 .customer-time-entry-table220377 td:nth-child(4){white-space:normal;overflow-wrap:anywhere;line-height:1.35}
 .customer-time-entry-table220377 td:nth-child(5){text-align:right;font-variant-numeric:tabular-nums}
}

/* v2.20.378 – invoice preview: company section, category subheading, subtotal per company */
.economic-test-invoice .economic-group-heading td{padding-top:14px;padding-bottom:4px;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--c-ink-3);border-bottom:0;white-space:normal}
.economic-test-invoice .economic-section-subtotal td{padding-top:10px;border-top:1px solid #d9e0e5;border-bottom:2px solid #c7d0d6;font-weight:700;white-space:normal}
.economic-test-invoice .economic-section-subtotal td:first-child{text-align:right}

/* v2.20.380 - løsningstid i detaljer: fordeling på arbejdsdage + median pr. prioritet */
.mr-resolution{margin-top:16px;border:1px solid #e2e9e6;border-radius:13px;background:#fff;padding:14px 15px;min-width:0}
.mr-resolution-head{display:flex;justify-content:space-between;gap:14px;align-items:baseline;flex-wrap:wrap;margin-bottom:12px}
.mr-resolution-head strong{font-size:13px;color:#23342f}
.mr-resolution-head span{color:#74817c;font-size:11px}
.mr-resolution-bars{display:grid;gap:8px}
.mr-resolution-row{display:grid;grid-template-columns:minmax(0,150px) minmax(0,1fr) minmax(0,84px);gap:12px;align-items:center;font-size:12px;color:#5b6d67}
.mr-resolution-track{height:10px;border-radius:99px;background:#eef3f1;overflow:hidden}
.mr-resolution-track i{display:block;height:100%;border-radius:99px;background:#2f9d78}
.mr-resolution-track i.mr-resolution-1{background:#3f8fc0}
.mr-resolution-track i.mr-resolution-2{background:#d9a23f}
.mr-resolution-track i.mr-resolution-3{background:#d45b63}
.mr-resolution-row b{text-align:right;color:#23342f;font-variant-numeric:tabular-nums}
.mr-resolution-row b small{display:block;font-weight:600;color:#7b8883;font-size:var(--t-5)}
.mr-resolution-table{width:100%;table-layout:fixed;border-collapse:collapse;margin-top:14px}
.mr-resolution-table th,.mr-resolution-table td{padding:7px 8px;border-bottom:1px solid #edf1ef;text-align:right;font-size:12px;white-space:normal;overflow-wrap:anywhere;background:none}
.mr-resolution-table th{font-size:var(--t-5);text-transform:uppercase;letter-spacing:.04em;color:#68766f;position:static}
.mr-resolution-table th:first-child,.mr-resolution-table td:first-child{text-align:left;width:40%}
.mr-resolution-table tbody tr:last-child td{border-bottom:0}
.mr-resolution-empty{margin-top:16px;padding:14px;border:1px dashed #dce5e1;border-radius:11px;color:#7b8883;font-size:12px;text-align:center}
@media(max-width:560px){.mr-resolution-row{grid-template-columns:minmax(0,1fr) minmax(0,70px);}.mr-resolution-track{grid-column:1/-1;order:3}}

/* v2.20.380 - navngivne modaler skal kunne overleve senere generelle .modal-card-regler.
   .modal-card{width:min(760px,100%)} står også sent i denne fil. Den har samme specificitet som
   .modal-monthly-report, så den vandt alene på rækkefølge og tvang månedsrapporten ned i 760 px,
   hvorefter indholdet scrollede vandret. To klasser gør bredden uafhængig af rækkefølgen i filen. */
.modal-card.modal-monthly-report{width:min(1180px,96vw);max-width:1180px}
/* v2.20.510 - HLD-editoren havde NØJAGTIG samme fejl som månedsrapporten ovenfor,
   og den blev aldrig rettet med. .modal-infrastructure står på linje ~550 med én klasse,
   så .modal-card{width:min(760px,100%)} længere nede vandt på rækkefølge: editoren var
   760 px bred med en servertabel, der kræver 1220. Derfor den vandrette scroll. */
.modal-card.modal-infrastructure{width:min(1540px,97vw);max-width:1540px}
.modal-card.modal-monthly-report-admin{width:min(1120px,96vw);max-width:1120px}
.modal-card.modal-monthly-report .monthly-report-editor,.modal-card.modal-monthly-report .monthly-report-preview,.modal-card.modal-monthly-report .monthly-report-section{min-width:0}
/* minmax(0,...) i stedet for bare fr: et grid-spor med auto-minimum kan blive bredere end sin
   beholder. Med 0 som minimum krymper indholdet i stedet for at skubbe en vandret scrollbar frem. */
.mr-visual-grid{grid-template-columns:minmax(0,1.45fr) minmax(0,.75fr)}
/* .mr-donut-wrap beholder sin egen minimumsbredde: et 0-minimum klemmer signaturteksten
   sammen til én bogstavkolonne, og donut-kortet har i forvejen min-width:0 og kan derfor ikke
   skubbe sin beholder bredere. */
.mr-donut-legend span{min-width:0}

/* v2.20.381 - én prioritet er ikke en fordeling. Sætningen træder i stedet for kagediagram,
   prioritetschips og prioritetstabel, så visningen ikke ligner en analyse den ikke er. */
.mr-priority-note{margin:12px 0 0;padding:10px 12px;border-radius:10px;background:#f7f9f8;border:1px solid #e8eeeb;color:#5f6d68;font-size:12px;line-height:1.5}
.mr-priority-note b{color:#23342f}
.mr-resolution .mr-priority-note{margin-top:14px}

/* v2.20.382 - Netværk & sikkerhed. Tabellerne har deres egen breddekontrakt: uden table-layout:fixed
   arver de td{white-space:nowrap} og bliver bredere end deres kort - samme fejl som ticket-tabellen
   og tidsregistreringstabellen tidligere ramte. */
.mr-net-block{margin-top:16px;border:1px solid #e2e9e6;border-radius:13px;background:#fff;padding:14px 15px;min-width:0}
.mr-net-head{display:flex;justify-content:space-between;gap:14px;align-items:baseline;flex-wrap:wrap;margin-bottom:10px}
.mr-net-head strong{font-size:13px;color:#23342f}
.mr-net-head span{color:#74817c;font-size:11px}
.mr-net-table{width:100%;table-layout:fixed;border-collapse:collapse}
.mr-net-table th,.mr-net-table td{padding:8px;border-bottom:1px solid #edf1ef;text-align:left;font-size:12px;white-space:normal;overflow-wrap:anywhere;vertical-align:top;background:none}
.mr-net-table th{font-size:var(--t-5);text-transform:uppercase;letter-spacing:.04em;color:#68766f;position:static}
.mr-net-table td.num,.mr-net-table th:last-child{text-align:right;font-variant-numeric:tabular-nums}
.mr-net-table tbody tr:last-child td{border-bottom:0}
.mr-net-models th:nth-child(1),.mr-net-models td:nth-child(1){width:46%}
.mr-net-models th:nth-child(2),.mr-net-models td:nth-child(2){width:34%}
.mr-net-models th:nth-child(3),.mr-net-models td:nth-child(3){width:20%}
.mr-net-security th:nth-child(1),.mr-net-security td:nth-child(1){width:32%}
.mr-net-security th:nth-child(2),.mr-net-security td:nth-child(2){width:14%;text-align:right}
.mr-net-security th:nth-child(3),.mr-net-security td:nth-child(3){width:54%;text-align:left}
.mr-net-names{color:#6c7974}
.mr-net-chips{display:flex;flex-wrap:wrap;gap:8px}
.mr-net-chips>span{display:grid;gap:2px;padding:7px 11px;border-radius:10px;background:#f7f9f8;border:1px solid #e8eeeb;min-width:0}
.mr-net-chips b{font-size:12px;color:#23342f}
.mr-net-chips small{font-size:11px;color:#74817c;overflow-wrap:anywhere}
@media(max-width:560px){.mr-net-security th:nth-child(3),.mr-net-security td:nth-child(3){width:40%}.mr-net-security th:nth-child(1),.mr-net-security td:nth-child(1){width:42%}}

/* v2.20.385 - Dokumentation på kundekortet. Tabellerne får deres breddekontrakt fra starten:
   uden table-layout:fixed arver de td{white-space:nowrap} og bliver bredere end deres kort. Det er
   samme fejl som ticket-tabellen, tidsregistreringstabellen og månedsrapportens tabeller ramte. */
.customer-doc-toolbar385{display:flex;justify-content:space-between;gap:14px;align-items:center;flex-wrap:wrap;margin:4px 0 14px}
.customer-doc-chips385{display:flex;flex-wrap:wrap;gap:7px;min-width:0}
.customer-doc-chip385{border:1px solid var(--border);background:#fff;border-radius:999px;padding:6px 12px;font-size:12px;font-weight:650;color:#53646e;display:inline-flex;align-items:center;gap:7px}
.customer-doc-chip385 b{color:#8795a0;font-weight:700}
.customer-doc-chip385.active{background:#eef6f8;border-color:#9ec9cf;color:#17707c}
.customer-doc-chip385.active b{color:#17707c}
.customer-doc-toolbar385 input{max-width:280px;margin-top:0}
.customer-doc-table385{width:100%;table-layout:fixed;border-collapse:collapse}
.customer-doc-table385 th,.customer-doc-table385 td{white-space:normal;overflow-wrap:anywhere;vertical-align:top}
.customer-doc-table385 th:nth-child(1),.customer-doc-table385 td:nth-child(1){width:44%}
.customer-doc-table385 th:nth-child(2),.customer-doc-table385 td:nth-child(2){width:17%}
.customer-doc-table385 th:nth-child(3),.customer-doc-table385 td:nth-child(3){width:9%;text-align:right}
.customer-doc-table385 th:nth-child(4),.customer-doc-table385 td:nth-child(4){width:10%;text-align:right}
.customer-doc-table385 th:nth-child(5),.customer-doc-table385 td:nth-child(5){width:20%}
.customer-doc-table385 td small{display:block;color:var(--muted);margin-top:3px}
.customer-doc-table385 td.num{font-variant-numeric:tabular-nums}
.customer-doc-tags385{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.customer-doc-tags385 i{font-style:normal;font-size:11px;background:#f2f6f7;border:1px solid var(--border);border-radius:999px;padding:3px 8px;color:#5d6d76}
.modal-card.modal-customer-doc385{width:min(1020px,96vw);max-width:1020px}
.customer-doc-view385,.customer-doc-edit385{display:grid;gap:16px;min-width:0}
/* pre-wrap bevarer linjeskift i en tekst, der er skrevet som ren tekst - uden at tolke markup. */
.customer-doc-body385{white-space:pre-wrap;line-height:1.65;background:#f8fafb;border:1px solid var(--border);border-radius:12px;padding:16px;min-width:0;overflow-wrap:anywhere}
.customer-doc-panel385{border:1px solid var(--border);border-radius:12px;padding:14px 16px;min-width:0}
.customer-doc-panel385 .card-header{margin-bottom:10px}
.customer-doc-panel385 h3{margin:0;font-size:13px}
.customer-doc-file-table385,.customer-doc-version-table385{width:100%;table-layout:fixed;border-collapse:collapse}
.customer-doc-file-table385 th,.customer-doc-file-table385 td,.customer-doc-version-table385 th,.customer-doc-version-table385 td{white-space:normal;overflow-wrap:anywhere;font-size:12px}
.customer-doc-file-table385 th:nth-child(1),.customer-doc-file-table385 td:nth-child(1){width:42%}
.customer-doc-file-table385 td.num{text-align:right;font-variant-numeric:tabular-nums}
.customer-doc-version-table385 th:nth-child(1),.customer-doc-version-table385 td:nth-child(1){width:10%;text-align:right}
.customer-doc-version-table385 th:nth-child(2),.customer-doc-version-table385 td:nth-child(2){width:32%}
.customer-doc-edit385 textarea{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;line-height:1.6}
@media(max-width:760px){.customer-doc-toolbar385 input{max-width:100%;width:100%}}

/* v2.20.386 - Adgange & hemmeligheder. Samme breddekontrakt som resten af fanen. */
.customer-secret-table386,.customer-secret-log-table386{width:100%;table-layout:fixed;border-collapse:collapse}
.customer-secret-table386 th,.customer-secret-table386 td,.customer-secret-log-table386 th,.customer-secret-log-table386 td{white-space:normal;overflow-wrap:anywhere;vertical-align:top}
.customer-secret-table386 th:nth-child(1),.customer-secret-table386 td:nth-child(1){width:30%}
.customer-secret-table386 th:nth-child(2),.customer-secret-table386 td:nth-child(2){width:20%}
.customer-secret-table386 th:nth-child(3),.customer-secret-table386 td:nth-child(3){width:16%}
.customer-secret-table386 th:nth-child(4),.customer-secret-table386 td:nth-child(4){width:16%}
.customer-secret-table386 th:nth-child(5),.customer-secret-table386 td:nth-child(5){width:18%;text-align:right}
.customer-secret-table386 td small{display:block;color:var(--muted);margin-top:3px}
.customer-secret-mask386{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.06em;color:#53646e}
.customer-secret-log-table386 th,.customer-secret-log-table386 td{font-size:12px}
/* Den afslørede værdi står i en tydeligt afgrænset boks, så det er synligt, hvad der er fortroligt
   på skærmen - og user-select:all gør, at ét klik markerer hele værdien uden at den skal læses højt. */
.customer-secret-value386{margin-top:14px;border:1px solid #cfe0e4;background:#f4fafb;border-radius:12px;padding:14px 16px;display:grid;gap:4px}
.customer-secret-value386 span{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#5d7a81}
.customer-secret-value386 strong{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:18px;user-select:all;overflow-wrap:anywhere}
.customer-secret-value386 small{color:var(--muted);margin-top:6px}
.customer-secret-reveal386{display:grid;gap:14px;min-width:0}

/* v2.20.387 - registre på dokumentationsfanen. Bilag vises som et diskret ikon med tal og åbner i en
   popover: ligger filnavnene i tabellen, drukner selve registret i dem. */
.customer-reg-toolbar387{margin:0 0 14px}
.customer-reg-toolbar387 input{max-width:420px;margin-top:0}
.customer-reg-table387{width:100%;table-layout:fixed;border-collapse:collapse}
.customer-reg-table387 th,.customer-reg-table387 td{white-space:normal;overflow-wrap:anywhere;vertical-align:top;font-size:12px}
.customer-reg-table387 td small{display:block;color:var(--muted);margin-top:2px}
.customer-reg-table387 th:nth-last-child(2),.customer-reg-table387 td:nth-last-child(2){width:78px;text-align:right;white-space:nowrap}
.customer-reg-table387 th:last-child,.customer-reg-table387 td:last-child{width:198px;text-align:right}
/* label{display:block} i grundstilen gjorde vedhæft-knappen fuldbredde, så de tre knapper stablede
   sig lodret. Handlingerne har derfor deres egen beholder, og filfeltet skjules eksplicit. */
.customer-reg-actions387{display:flex;gap:6px;justify-content:flex-end;align-items:center;flex-wrap:nowrap}
.customer-reg-actions387 .btn.small{white-space:nowrap}
.customer-reg-attach387{display:inline-flex!important;align-items:center;width:auto;margin:0;font-size:12px}
.customer-reg-attach387 input[type=file]{display:none!important}
.customer-reg-synced387{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em}
.customer-reg-sub387{display:block;color:var(--muted);font-size:11px;margin-top:2px}
.customer-reg-source387{text-transform:uppercase;letter-spacing:.05em;font-size:var(--t-5);color:#8795a0}
.customer-reg-clip387{border:1px solid var(--border);background:#fff;border-radius:8px;padding:3px 8px;font-size:12px;display:inline-flex;align-items:center;gap:5px}
.customer-reg-clip387 b{color:var(--muted);font-size:11px}
.customer-reg-clip387:hover{background:#f4fafb;border-color:#9ec9cf}
.customer-reg-fileicon387{margin-right:7px}
.customer-reg-file-table387{width:100%;table-layout:fixed;border-collapse:collapse}
.customer-reg-file-table387 th,.customer-reg-file-table387 td{white-space:normal;overflow-wrap:anywhere;font-size:12px}
.customer-reg-file-table387 th:nth-child(1),.customer-reg-file-table387 td:nth-child(1){width:38%}
.customer-reg-file-table387 td.num{text-align:right;font-variant-numeric:tabular-nums}
.customer-reg-drop387{display:grid;gap:4px;place-items:center;text-align:center;border:2px dashed #cfd9dd;border-radius:14px;padding:22px;margin-bottom:14px;background:#fbfdfd;cursor:pointer}
.customer-reg-drop387:hover,.customer-reg-drop387.active{border-color:#35a9b4;background:#f2fbfc}
.customer-reg-drop387 strong{font-size:14px}
.customer-reg-drop387 span{color:var(--muted);font-size:12px}
@media(max-width:760px){.customer-reg-toolbar387 input{max-width:100%;width:100%}.customer-reg-table387 th:last-child,.customer-reg-table387 td:last-child{width:120px}}

/* v2.20.387 – dublet-markering i registrene. En manuel række, der hedder det samme som en
   synkroniseret, er den eneste måde registret kan komme til at rumme samme oplysning to gange.
   Markeringen er diskret, men står i navnekolonnen hvor den ikke kan overses. */
.customer-reg-dupmark387{display:block;color:var(--warn,#b8860b);font-size:11px;margin-top:2px;font-weight:600}
.customer-reg-dupcount387{color:var(--warn,#b8860b)}
.customer-reg-table387 tr.customer-reg-dup387>td:first-child{box-shadow:inset 3px 0 0 var(--warn,#b8860b)}

/* v2.20.390 – registrene foldes ind. Overskriften er selve knappen: hele linjen kan klikkes, og
   tallet står i den, så man kan vælge kort uden at åbne dem først.
   Kortet får sin egen polstring i stedet for .card's, så et lukket kort er én stribe og ikke en
   stribe med en tom hvid kant under. */
.customer-reg-card387{padding:0;overflow:hidden}
.customer-reg-card387 .card-header{margin:0;padding:12px 16px;border-bottom:1px solid var(--border)}
.customer-reg-card387:not(.open) .card-header{border-bottom:0}
.customer-reg-card387>*:not(.card-header){margin:14px 16px 16px;width:auto;max-width:none}
/* width:auto er ikke pynt. .table-wrap får width:100% fra et tidligere regelsæt, og 100% regnes af
   KORTET - ikke af pladsen inden for margenerne. Med margin-left:16px stak tabellen derfor præcis
   16 px ud over kortets højre kant, og sidste kolonne så klippet ud. Med width:auto fylder den
   pladsen mellem margenerne, som den skal. */
.customer-reg-head387{gap:12px}
.customer-reg-toggle387{display:flex;align-items:flex-start;gap:10px;border:0;background:none;padding:0;text-align:left;flex:1;min-width:0;color:inherit}
.customer-reg-toggle387 h2{margin:0}
.customer-reg-toggle387 .muted{display:block;margin-top:2px}
.customer-reg-toggle387:hover h2{text-decoration:underline}
.customer-reg-caret387{flex:0 0 14px;color:var(--muted);font-size:11px;line-height:1.7}

/* Værktøjer i topbaren. */
.tools-menu390{position:relative}
.tools-dropdown390{position:absolute;right:0;top:calc(100% + 8px);min-width:300px;background:var(--c-surface);color:var(--text);border:1px solid var(--border);border-radius:12px;box-shadow:0 18px 50px #10253626;padding:6px;z-index:60}
.tools-item390{display:flex;align-items:flex-start;gap:11px;width:100%;border:0;background:none;padding:10px 11px;border-radius:9px;text-align:left;color:inherit}
.tools-item390:hover:not(.disabled){background:var(--c-surface-2)}
.tools-item390.disabled{opacity:.5;cursor:default}
.tools-item390 b{display:block;font-size:13px}
.tools-item390 small{display:block;color:var(--muted);font-size:11px;margin-top:1px}
.tools-ico390{flex:0 0 22px;text-align:center;font-size:15px;color:var(--accent2)}
.tools-note390{padding:11px;color:var(--muted);font-size:12px}
.modal-card.modal-tool390{width:min(560px,96vw);max-width:560px}
.tool-dialog390 .pw-out390{background:#f7f9fa;border:1px solid var(--border);border-radius:10px;padding:14px;font:15px/1.5 ui-monospace,Menlo,Consolas,monospace;white-space:pre-wrap;word-break:break-all;margin:4px 0 10px}
.pw-row390{display:flex;align-items:center;gap:12px;margin-top:6px}
.pw-row390 label{flex:1;margin:0}
.pw-row390 output{font-weight:700;min-width:32px;text-align:right}
.pw-opts390{display:flex;gap:16px;flex-wrap:wrap;margin:10px 0 14px}
.pw-opts390 label{display:flex;align-items:center;gap:7px;margin:0}
.pw-opts390 input{width:auto;margin:0}
.pw-meta390{display:flex;align-items:center;gap:10px;font-size:12px}
.sms-count390{color:var(--muted);font-size:12px;margin-top:8px}
@media(max-width:760px){.tools-menu390{display:none}}

/* v2.20.393 – detaljevinduet for en registerpost. Det er en visning og ikke en formular: man skal
   kunne slå et nummer op uden at stå i et felt, man kan komme til at rette. */
.customer-reg-detail393 .card-header{margin-bottom:14px}
.customer-reg-detail393 h2{margin:0}
.customer-reg-group393{border-top:1px solid var(--border);padding-top:14px;margin-top:16px}
.customer-reg-group393:first-of-type{border-top:0;padding-top:0;margin-top:0}
.customer-reg-group393 h3{margin:0 0 10px;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.customer-reg-group393 .card-header{margin-bottom:10px}
.customer-reg-group393 .card-header h3{margin:0}
.customer-reg-fields393{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px 18px}
.customer-reg-field393 small{display:block;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em}
.customer-reg-field393 span{display:block;margin-top:2px;overflow-wrap:anywhere}
.customer-reg-emptyhint393{font-size:11px;margin:12px 0 0}
.customer-reg-note393{white-space:pre-wrap;margin:0}
.customer-reg-contact393{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;
 border:1px solid var(--border);border-radius:11px;padding:11px 13px;margin-bottom:8px}
.customer-reg-contact393.primary{border-color:#bcd9d3;background:#f6fbfa}
.customer-reg-contact393 strong{margin-right:8px}
.customer-reg-contact393 small,.customer-reg-contact393 span,.customer-reg-contact393 a{display:block;font-size:12px;margin-top:2px}
.customer-reg-contact393 .pill{display:inline-flex;margin-top:0}
.customer-reg-contact393 .row-actions{flex:0 0 auto;display:flex;gap:6px}
.customer-reg-file393{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid #eef2f3;font-size:13px}
.customer-reg-file393:last-child{border-bottom:0}
.customer-reg-formgroup393{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);
 margin:18px 0 8px;padding-top:14px;border-top:1px solid var(--border)}
.customer-reg-form393 h3.customer-reg-formgroup393:first-of-type{margin-top:4px;padding-top:0;border-top:0}
.customer-reg-table387 tr.clickable:hover{background:#f4fafb;cursor:pointer}

/* v2.20.395 – leverandørkartoteket. */
.supplier-hits395{max-height:340px;overflow:auto;border:1px solid var(--border);border-radius:11px;margin:10px 0 4px}
.supplier-hit395{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;
 border:0;border-bottom:1px solid #eef2f3;background:none;padding:11px 13px;text-align:left;color:inherit}
.supplier-hit395:last-child{border-bottom:0}
.supplier-hit395:hover{background:#f4fafb}
.supplier-hit395 strong{display:block;font-size:13px}
.supplier-hit395 small{display:block;color:var(--muted);font-size:11px;margin-top:2px}
.supplier-hit395 .muted{flex:0 0 auto;font-size:11px}
.customer-reg-shared395{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-top:16px}
.customer-reg-shared395 button{flex:0 0 auto}

/* v2.20.397 – forhåndsvisning før en permanent sletning. Tallene er pointen: en advarselstekst
   læses ikke, men "4.812 rækker" gør. */
.modal-card.modal-erasure397{width:min(640px,96vw);max-width:640px}
.erasure-sum397{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:14px 0}
.erasure-sum397>div{background:var(--card,#fff);border:1px solid var(--border);border-radius:11px;padding:12px;text-align:center}
.erasure-sum397 strong{display:block;font-size:20px;font-variant-numeric:tabular-nums}
.erasure-sum397 small{display:block;color:var(--muted);font-size:11px;margin-top:2px}
.erasure-detail397{margin-bottom:14px}
.erasure-detail397 summary{cursor:pointer;font-size:12px;color:var(--muted);padding:4px 0}
.erasure-table397{width:100%;table-layout:fixed}
.erasure-table397 th,.erasure-table397 td{white-space:normal;overflow-wrap:anywhere;font-size:12px}
.erasure-table397 th:nth-child(2),.erasure-table397 td:nth-child(2){width:88px;text-align:right}
.erasure397 .notice.warn strong{display:block}

/* ===================== v2.20.398 – Slettede kunder som sin egen visning =====================
   Reglerne står her til sidst med vilje. Kundetabellen har allerede to lag ovenpå sig: faste
   procentbredder pr. kolonne og en kortvisning på små skærmer. Begge to regner i kolonnenumre og
   antager ni kolonner. Slettede-visningen har syv, og betyder noget andet i hver enkelt - så den
   skal sætte sit eget oven på dem, ikke prøve at passe ind i deres. */
.customer-filter-deleted398{margin-left:8px;padding-left:12px!important;border-left:1px solid #dce7eb!important}
.customer-filter-deleted398.active{color:#a3282d!important}
.customer-row-deleted398{background:#fdf7f7;cursor:default}
.customer-row-deleted398:hover td{background:#fbf1f1}
.customer-row-deleted398 .customer-list-name strong{color:#7c4247}
/* Med display:flex regner browseren cellens mindste bredde ud fra den bredeste knap alene - ikke
   summen - og de tre knapper lægger sig oven i hinanden og ud over kanten. inline-flex giver sum. */
.customer-deleted-actions398{display:inline-flex!important;flex-wrap:nowrap;gap:6px;white-space:nowrap}
.customer-deleted-actions398 .btn{flex:0 0 auto}
/* table-layout:fixed tager bredderne fra overskriftsrækken, så handlingskolonnen skal navngives der. */
.customer-deleted-cell398{width:236px!important;white-space:nowrap;text-align:right!important;overflow:visible!important}
.customer-directory-table .customer-rows-deleted398 td:nth-child(1){width:auto}
.customer-directory-table .customer-rows-deleted398 td:nth-child(4),
.customer-directory-table .customer-rows-deleted398 td:nth-child(5){white-space:nowrap}
@media(max-width:760px){
  /* På kortvisningen har hver celle sin egen etiket, og etiketterne er skrevet til kundelisten.
     Her betyder kolonnerne noget andet, så de skrives om - ellers står der "Kontakter" over en dato. */
  .customer-directory-table .customer-rows-deleted398 td:nth-child(2)::before{content:'Status'}
  .customer-directory-table .customer-rows-deleted398 td:nth-child(3)::before{content:'Ansvarlig'}
  .customer-directory-table .customer-rows-deleted398 td:nth-child(4)::before{content:'Slettet'}
  .customer-directory-table .customer-rows-deleted398 td:nth-child(5)::before{content:'Slettet af'}
  .customer-directory-table .customer-rows-deleted398 td:nth-child(6)::before{content:'Månedlig værdi'}
  /* Handlingscellen skal ingen etiket have - uden dette arver den "Åbne sager" fra kundelisten. */
  .customer-directory-table .customer-rows-deleted398 td:nth-child(7)::before{content:''!important;display:none!important}
  .customer-directory-table .customer-rows-deleted398 td:nth-child(7){display:block!important;grid-column:1/-1;padding-top:9px!important;border-top:1px solid var(--c-line)!important;width:auto!important;text-align:left!important}
  .customer-deleted-actions398{display:grid!important;grid-template-columns:1fr 1fr;gap:7px;width:100%}
  .customer-deleted-actions398 .btn:last-child{grid-column:1/-1}
}

/* ===================== v2.20.399 – licenser oprettet og rettet i Shell =====================
   Det, der er Shells eget, skal kunne ses på afstand. En linje, ALSO ejer, og en linje, nogen har
   lagt ind i ventetiden, må ikke ligne hinanden - det er hele forskellen på et tal, der er bekræftet,
   og et tal, der er aftalt. */
.license-head399{align-items:center;gap:8px}
.license-wishes399 ul{margin:8px 0 0;padding-left:18px}
.license-wishes399 li{margin:3px 0}
.license-wishes399 .btn.tiny{margin-left:6px}
.license-wish399{background:#fff5e6!important;color:#8a5a12!important;border-color:#f0d9b0!important}
.license-actions399{justify-content:flex-end;flex-wrap:nowrap;gap:6px;white-space:nowrap}
.license-picker399 .license-picker-list399{display:grid;gap:6px;max-height:46vh;overflow:auto;margin:10px 0 4px}
.license-pick399{display:flex;align-items:center;justify-content:space-between;gap:14px;text-align:left;
 border:1px solid var(--border);border-radius:11px;background:#fbfdfe;padding:11px 13px;cursor:pointer;width:100%}
.license-pick399:hover{border-color:#9bc8d2;background:#f2fafb}
.license-pick399 span{display:grid;gap:2px;min-width:0}
.license-pick399 strong{color:#17394a}
.license-pick399 small{color:var(--muted);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.license-pick-meta399{text-align:right;flex:0 0 auto}
.modal-license399{max-width:720px}
@media(max-width:760px){
 .license-actions399{flex-wrap:wrap;white-space:normal}
 .license-pick399{flex-direction:column;align-items:flex-start;gap:6px}
 .license-pick-meta399{text-align:left}
}

/* Handlingskolonnen i licenstabellen var sat til 4% - plads til én lille knap. Med to bliver de
   klemt oven i hinanden og ud over cellens kant, hvor musen ikke kan ramme dem. Tabellen ruller
   allerede vandret (min-width:1080px), så en fast bredde her koster ikke plads noget andet sted. */
.customer-license-table th:nth-child(10){width:212px!important}
.customer-license-table td:nth-child(10){white-space:nowrap;text-align:right}
.license-actions399{display:inline-flex!important;flex-wrap:nowrap;gap:6px;white-space:nowrap;justify-content:flex-end}
.license-actions399 .btn{flex:0 0 auto}
@media(max-width:760px){
 .customer-license-table td:nth-child(10){white-space:normal!important;text-align:left!important}
 .license-actions399{display:grid!important;grid-template-columns:1fr 1fr;gap:7px;width:100%}
 .license-actions399 .btn{width:100%!important}
}

/* v2.20.401 – FortiCloud: hvorfor er knappen slukket, og hvad kom der fra Fortinet. */
.forticloud-blocked400{margin:6px 0 2px;padding:9px 12px;border-radius:10px;background:#fff6e8;border:1px solid #f0dcb8;color:#7d5a1c;font-size:13px}
.forticloud-diag400{margin-top:12px;border:1px solid var(--border);border-radius:11px;padding:10px 13px;background:#fbfdfe}
.forticloud-diag400>summary{cursor:pointer;font-weight:750;color:#1c3c4c}
.forticloud-fields400{margin-top:10px}
.forticloud-fields400 h4{margin:0 0 6px;font-size:13px}
.forticloud-fields400 code{font-size:11px}
.forticloud-fields400 td{vertical-align:top}
.forticloud-allfields400{margin-top:10px}
.forticloud-allfields400>summary{cursor:pointer;color:var(--muted);font-size:12px}

/* v2.20.402 – kontrolkøen skal kunne bruges til fyrre rækker, ikke kun til tre. */
.forticloud-review-search402{width:100%;margin:10px 0 8px}
.forticloud-review-count402{font-size:12px;margin-top:6px}
.forticloud-review400 .table-wrap{max-height:52vh;overflow:auto}
.forticloud-review400 td{vertical-align:top}
.forticloud-review400 select{min-width:200px}
.modal-forticloud400{max-width:1100px}

/* v2.20.403 – masse-godkendelse. Beviset skal kunne læses, og afkrydsningen skal kunne ses. */
.forticloud-bulk403{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
 margin:10px 0 4px;padding:11px 14px;border-radius:11px;background:#eef7f9;border:1px solid #cfe6eb}
.forticloud-bulk403 small{display:block;color:var(--muted);margin-top:2px}
.fc-pick403{width:34px;text-align:center}
.fc-pick403 input{width:auto}
.fc-evidence403{color:#7d5a1c}

/* v2.20.404 – hvad gør man nu. "Intet er skrevet" siger hvad der ikke skete, ikke hvad man gør. */
.forticloud-next403{margin:10px 0;padding:11px 14px;border-radius:11px;background:#eef7f9;border:1px solid #cfe6eb;color:#1c3c4c}
.forticloud-next403 small{color:var(--muted)}

/* v2.20.406 – den ægte fejl, serveren gemte. Sikkerhedslaget skjuler den i svaret; her hentes den. */
.forticloud-error406{margin-top:10px}
.forticloud-error406 p{margin:6px 0 0;overflow-wrap:anywhere;font-family:var(--f-mono,monospace);font-size:12.5px}
.forticloud-error406 small{display:block;margin-top:7px}

/* v2.20.407 – fuldt vindue. 114 rækker i et vindue på halv skærm er ikke arbejdsplads nok. */
.forticloud-head407{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.forticloud-head407 h2{margin:0}
/* v2.20.513 - «luk-krydset er her i venstre side, mange andre steder i højre».

   Maalt: med modal-full407 blev kortet display:flex!important, og saa var
   luk-banen fra v2.20.167 - et grid, hvor krydset har sin EGEN soejle til hoejre
   og sin egen raekke, saa det aldrig kan staa oven i tekst - slaaet ihjel.
   Krydset faldt til venstre som foerste flex-barn.

   Gittret kan det samme som flex'en skulle: grid-template-rows er
   «auto minmax(0,1fr)», saa kroppen faar resten af hoejden. Derfor beholder vi
   gittret og flytter flex'en ind i #modalBody, hvor den hoerer hjemme. */
.modal-card.modal-full407{max-width:none!important;width:calc(100vw - 48px)!important;height:calc(100vh - 48px)!important}
.modal-card.modal-full407>#modalBody{display:flex;flex-direction:column;min-height:0}
.modal-card.modal-full407 .forticloud-review400{display:flex;flex-direction:column;min-height:0;flex:1}
.modal-card.modal-full407 .forticloud-review400 .table-wrap{max-height:none;flex:1;min-height:0}
.forticloud-expiring-wrap407{max-height:60vh;overflow:auto}
@media(max-width:760px){.modal-card.modal-full407{width:100vw!important;height:100vh!important}}

/* v2.20.408 – FortiCloud er nu et område inde i Netværk-kortet, ikke et kort for sig. Området har
   derfor ingen ramme og ingen baggrund: rammen er Netværk-kortet, og en ekstra kant indeni ville
   se ud som to kort, der er kommet til at ligge oven i hinanden. Kun luften over overskriften og
   under indledningen skal sættes, så området starter ligesom de to andre. */
.forticloud-area408{min-width:0}
.forticloud-area408>.section-title{margin-top:2px;display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.forticloud-area408>small.muted{display:block;margin:2px 0 12px}
.forticloud-area408 .customer-metrics{margin-bottom:12px}

/* v2.20.410 – Ret kobling: listen over enheder, der følger med en mappe, skal kunne foldes ud uden
   at gøre tabellen uoverskuelig. Den er lukket som udgangspunkt: man skal kunne se 40 mapper på én
   skærm og først folde den ene ud, man er i tvivl om. */
.forticloud-movelist410{margin-top:4px}
.forticloud-movelist410>summary{cursor:pointer;color:var(--muted);font-size:12px}
.forticloud-movelist410 ul{margin:5px 0 0;padding-left:17px}
.forticloud-movelist410 li{font-size:12.5px;line-height:1.55}
/* Kundevælgeren og Flyt-knappen deler celle. De stod i hver sin kolonne, og saa var tabellen
   58 px for bred til vinduet - knappen, hele skaermen handler om, laa uden for kanten og kraevede
   vandret rulning. En primaer handling, man skal rulle hen til, er en handling, ingen finder. */
.forticloud-movecell410{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.forticloud-movecell410 select{min-width:0;max-width:215px;flex:1 1 150px}

/* v2.20.412 – Næste handling: én liste, én slags post.
   Før havde kontraktudløb et kort med ramme og knap, mens en aktivitet var en tekstlinje uden
   ramme og uden sideluft — med en border-bottom, der løb sammen med kortets egen kant, så den
   sidste post så ud som om den var skåret over. Nu deler de form, og farven siger, hvad der haster. */
.customer-next-list412{display:grid;gap:8px;padding:0 14px 14px}
.customer-next-item412{
  display:grid;grid-template-columns:168px minmax(0,1fr) auto;align-items:start;gap:4px 14px;
  border:1px solid var(--c-line,#e3ebef);border-left:4px solid var(--c-line-strong,#cbd7dc);
  border-radius:10px;background:var(--c-surface-2,#f7f9f8);padding:11px 13px}
.customer-next-item412.overdue{border-color:#e7b8b8;border-left-color:#b94242;background:#fff7f7}
.customer-next-item412.today,.customer-next-item412.soon{border-color:#ead7a8;border-left-color:#d49b35;background:#fffbf2}
.customer-next-when412{display:flex;flex-direction:column;gap:3px;align-items:flex-start}
/* v2.20.531 - «udløbet for 43 dage siden står ikke ordentligt».

   Kolonnen var 118 px fast, og teksten måtte ikke ombrydes. «udløbet for 43 dage siden»
   fylder 149 px, så de sidste 30 px blev tegnet uden for kolonnen - oven i «Handling
   planlagt …» i linjen ved siden af. Ved 365 dage var det 38 px, ved 1234 dage 45 px.

   EN FAST KOLONNE PLUS nowrap ER ET LØFTE, INDHOLDET IKKE KAN HOLDE. Rettelsen er
   derfor to ting, og de gør ikke det samme:

   - 168 px er MÅLT: den længste etiket, der kan opstå, fylder 163 px. Den er der, for
     at teksten normalt ikke SKAL ombrydes.
   - `white-space:normal` er GARANTIEN: skulle der en dag komme en etiket, ingen har
     målt, ombrydes den inde i sin egen kolonne i stedet for at lægge sig oven i
     naboen. Et overlap ser ud som en tegnefejl, ikke som CSS - og bliver derfor
     meldt som «det står ikke ordentligt» i stedet for at blive fundet. */
.customer-next-when412 small{color:var(--muted);font-size:11.5px;white-space:normal;overflow-wrap:anywhere}
.customer-next-what412{min-width:0}
.customer-next-what412 strong{display:block;line-height:1.35;overflow-wrap:anywhere}
.customer-next-what412 small{display:block;color:var(--muted);margin-top:2px;overflow-wrap:anywhere}
.customer-next-source412{display:inline-block;margin-top:1px;font-size:var(--t-5);letter-spacing:.06em;
  text-transform:uppercase;color:var(--muted);border:1px solid var(--c-line,#e3ebef);
  border-radius:999px;padding:1px 8px;background:var(--c-surface,#fff)}
.customer-next-do412:empty{display:none}
/* Under ~820 px er tre kolonner ikke tre kolonner, det er tre klemte kolonner. */
@media(max-width:820px){
  .customer-next-item412{grid-template-columns:minmax(0,1fr);gap:7px}
  .customer-next-when412{flex-direction:row;align-items:center;gap:8px}
  .customer-next-do412 .btn{width:100%}
}

/* v2.20.415 – advarsel på Min dag om natlige job uden en vellykket kørsel. Den skal kunne ses
   uden at fylde hele skærmen: den står øverst, men holder sig til én blok med en kort liste. */
.stale-sync415{margin:0 0 16px}
.stale-sync415 ul{margin:8px 0 0;padding-left:19px}
.stale-sync415 li{line-height:1.55;margin-bottom:3px}
.stale-sync415 li small{color:var(--muted);overflow-wrap:anywhere}
.stale-sync415 p{margin:9px 0 10px}

/* v2.20.415 – ADVARSELSKASSEN HAR ALDRIG HAFT EN STIL.
   Fundet mens advarslen om forældede job blev sat op: `.notice.info`, `.notice.success` og
   `.notice.danger` findes alle sammen — men `.notice.warn` og `.notice.warning` gør ikke, og de
   bruges 45 steder i otte filer. Hver eneste advarsel i Shell er altså blevet tegnet som almindelig
   brødtekst: ingen ramme, ingen baggrund, ingen farve. Det gælder også «Synkronisering er blokeret»
   og FortiClouds fejlbeskeder. En advarsel, der ser ud som et afsnit, er ikke en advarsel — og det
   er præcis den slags, der gør, at noget kan stå og fejle i tre døgn uden at nogen reagerer.
   Begge stavemåder får samme stil; at rette 45 kaldesteder ville være en større og mere risikabel
   ændring end at lade CSS'en kende dem begge. */
.notice.warn,.notice.warning{background:#fffbf2;border:1px solid #ead7a8;border-left:4px solid #d49b35;
  color:#6b4a12;padding:12px 14px;border-radius:10px;margin:12px 0}
.notice.warn strong,.notice.warning strong{color:#5a3d0d}
.notice.warn code,.notice.warning code{background:#fff6e4;border-radius:5px;padding:1px 5px}

/* v2.20.420 – Kræver handling. Sorteringen skal kunne SES: kritisk har en rød kant, noget der er
   vokset en gul, og det uændrede og kvitterede står gråt og sammenfoldet. Farven bærer betydningen,
   men aldrig alene - hver post skriver også sin tilstand med ord. */
.sync-attention418{margin:0 0 18px}
.sync-attention-kpis418{display:flex;gap:10px;flex-wrap:wrap}
.sync-attention-kpis418 span{display:grid;gap:2px;min-width:92px;padding:8px 12px;border:1px solid #e3e7ee;border-radius:10px;background:#fafbfd}
.sync-attention-kpis418 span small{color:#6b7280;font-size:11px;text-transform:uppercase;letter-spacing:.04em}
.sync-attention-kpis418 span strong{font-size:19px;line-height:1.1}
.sync-attention-kpis418 span.red{border-color:#e6b5b5;background:#fdf4f4}
.sync-attention-kpis418 span.red strong{color:#b94242}
.sync-attention-kpis418 span.amber{border-color:#ead7a8;background:#fffbf2}
.sync-attention-kpis418 span.amber strong{color:#8a6412}
.sync-attention-group418{border-top:1px solid #edf0f5;padding:12px 0 4px}
.sync-attention-group418>summary{cursor:pointer;font-weight:600;list-style:none;display:flex;align-items:center;gap:8px}
.sync-attention-group418>summary::-webkit-details-marker{display:none}
.sync-attention-group418>summary::before{content:'▸';color:#9aa3b2;transition:transform .12s}
.sync-attention-group418[open]>summary::before{transform:rotate(90deg)}
.sync-attention-group418>summary span{background:#eef1f6;border-radius:999px;padding:1px 9px;font-size:12px;font-weight:600;color:#4b5563}
.sync-attention-group418>p{margin:6px 0 10px 18px;font-size:13px}
.sync-attention-list418{display:grid;gap:10px}
.sync-attention-item418{border:1px solid #e3e7ee;border-left:4px solid #c9d0db;border-radius:10px;padding:11px 13px;background:#fff}
.sync-attention-item418.critical{border-left-color:#b94242;background:#fdf7f7}
.sync-attention-item418.change{border-left-color:#d49b35;background:#fffcf6}
.sync-attention-item418.acknowledged{opacity:.82}
.sync-attention-head418{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.sync-attention-head418 strong{flex:1;min-width:140px}
.sync-attention-head418 b{font-size:17px;font-variant-numeric:tabular-nums}
.sync-attention-item418 p{margin:6px 0 0;font-size:13px;color:#4b5563;overflow-wrap:anywhere}
.sync-attention-meta418{display:flex;gap:10px;flex-wrap:wrap;margin-top:7px;font-size:12px;color:#6b7280}
.sync-attention-delta418{font-weight:600}
.sync-attention-delta418.up{color:#b94242}
.sync-attention-delta418.down{color:#2f7a4d}
.sync-attention-note418{margin:8px 0 0;padding:6px 11px;border-left:3px solid #c9d0db;background:#f7f9fc;font-size:13px;color:#374151}
.sync-attention-actions418{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:9px}
@media(max-width:820px){
 .sync-attention-kpis418{width:100%}
 .sync-attention-kpis418 span{flex:1 1 42%}
 .sync-attention-actions418 .btn{width:100%}
}

/* ==========================================================================================
   v2.20.420 – TELEFON.
   Alt herunder er målt på en 390 px skærm, ikke skønnet. Tre ting, i den rækkefølge de gjorde ondt.
   ========================================================================================== */

/* 1. TABELLEN BLIVER ET KORT.
   Licensregistret tegnede en tabel på 1.214 px inde i et vindue på 390. Shell havde allerede
   svaret — `.product-table` har haft kortformen i årevis — det blev bare aldrig givet til de
   66 andre tabeller. `data-cards420` sættes af stampTableLabels420(), som læser overskrifterne
   ud af tabellens egen thead, så en ny tabel får formen uden at nogen skal huske det. */
@media(max-width:760px){
  .table-wrap:has(table[data-cards420]){border:0;overflow:visible;background:none}
  table[data-cards420]{min-width:0!important;background:none;table-layout:auto!important}
  table[data-cards420] colgroup,table[data-cards420] col{display:none}
  table[data-cards420] thead{display:none}
  table[data-cards420],table[data-cards420] tbody,table[data-cards420] tr,table[data-cards420] td{display:block}
  table[data-cards420] tr{position:relative;margin-bottom:10px;padding:12px 14px;border:1px solid var(--border);
    border-radius:12px;background:#fff;box-shadow:0 3px 12px rgba(16,38,54,.06)}
  table[data-cards420] tr:last-child{margin-bottom:0}
  /* Etiketten står OVER værdien, ikke ved siden af. En to-kolonne-opdeling inde i et kort på 344 px
     giver 130 px til værdien, og så brækker et SKU som 141309_Micros365BusinePremiu_71693 i ét tegn
     pr. linje. Dertil kommer, at flere tabeller sætter faste kolonnebredder og table-layout:fixed,
     som en procentbredde inde i cellen alligevel ikke kan regne rigtigt imod. Over/under bruger
     hele bredden og er ligeglad med, hvad kolonnen hed på en skærm, der er ti gange bredere. */
  table[data-cards420] td{border:0;padding:6px 0 0;white-space:normal;font-size:14px;
    width:auto!important;max-width:none!important;min-width:0!important;overflow-wrap:anywhere}
  table[data-cards420] td:before{content:attr(data-label);display:block;color:var(--muted);
    font-size:var(--t-5);font-weight:800;text-transform:uppercase;letter-spacing:.35px;margin-bottom:1px}
  /* Den første celle er rækkens navn: overskrift på kortet, ikke endnu et felt. */
  table[data-cards420] td:first-child{padding:0 0 8px;font-weight:700;font-size:15px;
    border-bottom:1px solid #eef2f4;margin-bottom:4px}
  table[data-cards420] td:first-child:before{display:none}
  /* Tomme tilstande og totalrækker har colspan og får ingen data-label — de skal blive ved at være
     én linje midt på kortet, ikke et felt uden overskrift. */
  table[data-cards420] td[colspan]{padding:10px 0;text-align:center;font-weight:400;font-size:14px;
    border:0;margin:0}
  table[data-cards420] td[colspan]:before{display:none}
  table[data-cards420] td:empty{display:none}
  table[data-cards420] .btn{width:100%;margin-top:6px}
  table[data-cards420] .row-actions{display:flex;gap:8px;flex-wrap:wrap}
  table[data-cards420] .row-actions .btn{flex:1;width:auto}
}

/* 2. KPI-TÅRNET.
   Licenser: seks KPI-kort under hinanden, 991 px før den første licens. Integrationer: elleve,
   1.076 px KPI før noget som helst. På en telefon er et tal ikke et kort — det er et tal. */
@media(max-width:760px){
  .kpis,.grid.kpis,.health-summary,.sync-ops-kpis,.sync-attention-kpis418,
  .metric-grid,.license-register-summary,.annual-license-summary,.performance-kpis,
  .insight-time-kpis220308,.insight-detail-kpis220311{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;display:grid!important;gap:8px!important}
  /* `.license-register-summary` blev sat til ÉN kolonne under 500 px. Det er den regel, der lavede
     tårnet: seks kort på hver sin række, 991 px at rulle forbi før den første licens. To kolonner
     giver 187 px pr. kort på en 390 px skærm — rigeligt til «Aktive licenser · 132». */
  .metric-grid .metric,.license-register-summary .metric,.annual-license-summary .metric{
    min-height:0;padding:9px 10px}
  .metric-grid .metric strong,.license-register-summary .metric strong{font-size:18px}
  .kpis .kpi,.health-summary .kpi{padding:10px 12px}
  .kpi label{font-size:var(--t-5);letter-spacing:.3px}
  .kpi strong{font-size:19px;margin-top:3px}
  .kpi:after{display:none}
  .sync-ops-kpis>*,.sync-attention-kpis418>*{min-width:0}
}

/* 3. BERØRINGSMÅL.
   49 af 79 mål på licensskærmen var under 44 px høje. 44 er ikke en smagssag; det er den
   mindste flade, en tommelfinger rammer pålideligt. Reglen gælder pegeredskabet, ikke bredden,
   så en mus på en lille skærm ikke får unødigt store knapper. */
@media (pointer:coarse) and (max-width:760px){
  .btn,button:not(.tab):not(.modal-close):not(.nav-item),select,input:not([type=checkbox]):not([type=radio]),
  .pill.sync-ops-detail-trigger,[role=button]{min-height:44px}
  .btn.small{min-height:40px;padding:8px 12px}
  input[type=checkbox],input[type=radio]{width:22px;height:22px}
  label:has(>input[type=checkbox]),label:has(>input[type=radio]){min-height:44px;display:flex;align-items:center;gap:10px}
  .tabs{gap:2px;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .tab{min-height:44px;white-space:nowrap}
  table[data-cards420] tr.clickable{min-height:44px}
}

/* ==========================================================================================
   v2.20.423 – HENTE- OG FEJLTILSTAND MELLEM TO SIDER
   Indtil nu blev #content først overskrevet, når den nye sides data var hjemme. På en tung
   side stod forrige sides indhold derfor under den nye sides overskrift, og en nedbrudt side
   så ud som en forkert side. Disse to tilstande gør forskellen synlig.
   Farverne læses fra tokens, så de følger lys/mørk uden en egen kopi.
   ========================================================================================== */
.page-state423{display:flex;align-items:center;gap:12px;padding:24px;border:1px solid var(--c-line);border-radius:10px;background:var(--c-surface);color:var(--c-ink-3);font-size:13px}
.page-state423-dot{width:14px;height:14px;flex:0 0 auto;border-radius:50%;border:2px solid var(--c-line);border-top-color:var(--c-accent);animation:pageSpin423 .7s linear infinite}
@keyframes pageSpin423{to{transform:rotate(360deg)}}
.page-state423-error{display:block;border-color:var(--c-crit);color:var(--c-ink-2)}
.page-state423-error strong{display:block;color:var(--c-crit);margin-bottom:6px;font-size:15px}
.page-state423-error span{display:block;margin-bottom:12px}
/* Uden denne snurrer prikken videre hos en, der har slået bevægelse fra i systemet. */
@media (prefers-reduced-motion:reduce){.page-state423-dot{animation:none;border-top-color:var(--c-line)}}

/* ==========================================================================================
   v2.20.426 – DRIFTSOVERBLIK
   Forsiden for driftshalvdelen. Kilderne med deres tilstand og driftens egne tal.
   Farverne læses fra tokens, så siden følger lys/mørk og Retning B uden en egen kopi —
   og så der ikke kommer flere hårdkodede hex til de 1.532, der er i forvejen.
   ========================================================================================== */
.drift-overview-426{display:flex;flex-direction:column;gap:16px}
.drift-overview-426 .grid.kpis{margin:0}
.drift-busiest-426{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 14px;padding:10px 14px;border:1px solid var(--c-line);border-radius:10px;background:var(--c-surface-2)}
.drift-busiest-426 small{color:var(--c-ink-3);font-size:12px}
.drift-busiest-426 span{font-size:13px;color:var(--c-ink-2)}
.drift-busiest-426 b{color:var(--c-ink);font-variant-numeric:tabular-nums}
.drift-sources-426{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.drift-source-426{display:flex;flex-direction:column;gap:6px;padding:12px 14px}
.drift-source-head-426{display:flex;align-items:center;justify-content:space-between;gap:10px}
.drift-source-head-426 strong{font-size:14px;color:var(--c-ink)}
.drift-source-426 small{color:var(--c-ink-3);font-size:12px}
/* Paa telefon er to kolonner kilder for smalle til at kunne laeses. */
@media(max-width:760px){.drift-sources-426{grid-template-columns:1fr}}


/* ==========================================================================================
   v2.20.427 – «OK» SKAL VÆRE GRØN

   syncOpsTone301() svarer 'success' for en kørsel, der gik godt, og driftssiden skriver
   <span class="pill success">. Men .pill.success har aldrig eksisteret: varianterne hedder
   green, red, amber, yellow, grey, blue, teal og review. Piller med en ukendt variant falder
   tilbage på den neutrale grå — så «OK» har set ud som «ingen oplysning» siden v2.20.301.

   Det er tredje gang i denne serie, en klasse bliver sendt af sted uden en regel (.notice.warn
   i v2.20.409, .pill.grey i v2.20.419). Derfor følger der denne gang en test med, der tager
   HVER status, tone-funktionen kan svare, og kræver en .pill-regel for den. Så kan det ikke
   ske igen uden at releasen fejler.

   .sync-ops-job-card.success er stylet i forvejen — kortets venstrekant HAR været grøn. Det
   var kun pillen, der manglede, og derfor så det ud som en detalje i stedet for en fejl. */
.pill.success{background:var(--c-pos-soft);color:var(--c-pos)}

/* ---- v2.20.427: kildenavnet må ikke brække midt i et ord --------------------------------
   Målt i browseren: overflow-wrap:anywhere arves ned i kortet, så «Fakturering / Atera» blev
   sat som «Faktureri / ng / Atera». Navnet skal bryde på mellemrum, ikke inde i et ord — og
   hellere lade hovedet ombryde end at klemme navnet sammen. Statusfeltet krymper ikke. */
.drift-source-head-426{flex-wrap:wrap;align-items:flex-start}
.drift-source-head-426 strong{min-width:0;overflow-wrap:normal;word-break:normal;hyphens:none;line-height:1.3}
.drift-source-head-426 .pill{flex:0 0 auto;white-space:nowrap}
.drift-sources-426{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}

/* v2.20.429 – ticket-tilknytning: en diagnose, der forsvinder, naar den er loest. */
.ticket-attribution-429{border-left:4px solid var(--c-warn);display:flex;flex-direction:column;gap:14px}
.ticket-attribution-429 td small{color:var(--c-ink-3)}
.ticket-attribution-429 .money{text-align:right;font-variant-numeric:tabular-nums}

/* v2.20.430 – tabelrækkerne skal flugte.
   «tekster skal stå så de flugter med hinanden, ok, står både oppe og nede».
   Browserens standard for en celle er vertical-align:middle. Så snart ÉN celle i
   rækken bryder over to-tre linjer — og resultatteksten i sync-historikken gør det
   hele tiden — bliver alle de korte celler centreret i rækkens fulde højde, mens den
   lange tekst begynder øverst. Datoen, jobnavnet og OK-pillen lander derfor et andet
   sted end den linje, de hører til. Én regel retter hele tabellen. */
.sync-ops-history-430 th,.sync-ops-history-430 td,.ticket-attribution-429 th,.ticket-attribution-429 td{vertical-align:top}
.sync-ops-history-430 td .pill{margin-top:-1px}

/* v2.20.431 – kildekortene: pillen samme sted på alle kort.
   «OK står ved siden af B4Restore/AvePoint, men under Storage Protect … og sådan kan
   jeg blive ved.» v2.20.427 satte flex-wrap:wrap på hovedet for at give lange navne
   plads. Det virkede — men ombrydningen flytter pillen ned på sin egen linje netop på
   de kort, hvor navnet er langt, og så står status i to forskellige højder ved siden af
   hinanden. Et gitter med to spor gør det modsatte: navnet må gerne bryde over to
   linjer INDE i sit eget spor, og pillen bliver stående øverst til højre på hvert kort.
   Og meta-linjen skubbes til bunden, så den flugter hele rækken igennem. */
.drift-source-head-426{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;justify-content:stretch;flex-wrap:nowrap;column-gap:10px}
.drift-source-426>small{margin-top:auto}

/* v2.20.431 – en talkolonne skal have sin overskrift over tallene.
   Tallene er højrestillede (.money), overskrifterne var ikke, så «SAGER» stod yderst
   til venstre i en kolonne, hvor 37.357 stod yderst til højre. */
.ticket-attribution-429 th.money{text-align:right}
.ticket-attribution-429 td>strong+small{margin-left:6px;color:var(--c-ink-3);font-weight:500}
.ticket-attribution-refs-431{margin-top:5px;font-size:12px;line-height:1.5;color:var(--c-ink-2);white-space:normal}
.ticket-attribution-note-431{margin:0;font-size:12px;line-height:1.55;white-space:normal}
.ticket-attribution-legend-431{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 14px;margin:0;padding:12px 14px;border:1px solid var(--c-line);border-radius:10px;font-size:12px;line-height:1.5}
.ticket-attribution-legend-431 dt{font-weight:800;color:var(--c-ink);white-space:nowrap}
.ticket-attribution-legend-431 dd{margin:0;color:var(--c-ink-2)}
@media(max-width:760px){.ticket-attribution-legend-431{grid-template-columns:1fr;gap:2px}.ticket-attribution-legend-431 dd{margin:0 0 6px}}

/* v2.20.434 – statuslinjen for timer-afstemningen.
   Den står ved siden af «Afstem med Atera» og svarer på, om knappen overhovedet skal
   bruges. Farverne er de samme fire, som resten af driften bruger — én tilstand, ét
   sprog. Reglen for hver tone står her, så ingen af dem falder tilbage på ingenting;
   det er den fejl, v2.20.409, .419, .427 og .432 hver især var. */
.insight-atera-status434{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin-top:10px}
.time-reconciliation-434{display:grid;gap:2px;min-width:0;flex:1 1 320px;padding:9px 12px;border:1px solid var(--c-line);border-left-width:4px;border-radius:10px;background:var(--c-surface-2,transparent)}
.time-reconciliation-434 strong{font-size:13px;line-height:1.25;color:var(--c-ink)}
.time-reconciliation-434 small{font-size:12px;line-height:1.5;color:var(--c-ink-2);white-space:normal;overflow-wrap:normal;word-break:normal}
.time-reconciliation-434.success{border-left-color:var(--c-pos)}
.time-reconciliation-434.blue{border-left-color:var(--c-accent)}
.time-reconciliation-434.amber{border-left-color:var(--c-warn)}
.time-reconciliation-434.grey{border-left-color:var(--c-line)}
@media(max-width:760px){.insight-atera-status434{flex-direction:column;align-items:stretch}}

/* v2.20.436 – etiket og værdi skal flugte, også når etiketten er lang.
   Etiketkolonnen var 105px. «Senest opdateret», «Host / controller» og et par andre
   fylder mere end det i den store mono-versalskrift, så de brækkede over to linjer —
   og så stod værdien ud for den første linje i en celle, der var dobbelt så høj som
   naboen. To rettelser: kolonnen er bred nok til de etiketter, der faktisk findes, og
   brækker en alligevel en dag, flugter dens FØRSTE linje stadig med værdien. */
.customer-facts>div{grid-template-columns:132px minmax(0,1fr);align-items:baseline}
.customer-facts dt{overflow-wrap:normal;word-break:normal;hyphens:none}
.customer-facts:not(.network-site-facts)>div:last-child{border-bottom:0}
@media(max-width:760px){.customer-facts>div{grid-template-columns:110px minmax(0,1fr)}}

/* v2.20.442 - opsamlingskonti. En klasse uden CSS er noget, ingen ser; det har kostet
   denne serie fem releases at lære. */
.holding-sources442{display:grid;gap:12px}
.holding-source442{border:1px solid var(--c-line);border-radius:12px;padding:14px;display:grid;gap:10px}
.holding-source442 h3{margin:0;display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.holding-move442{display:grid;gap:6px;padding:10px 12px;border:1px solid var(--c-line);border-radius:10px}
.holding-from442{font-size:13px}
.holding-queue-host442:empty{display:none}
.holding-queue-host442{display:grid;gap:10px}
.holding-rules442{margin:8px 0 0;padding-left:18px;display:grid;gap:4px;font-size:13px}
.atera-link-row442{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:4px}

/* v2.20.444 - automatisk HLD. En klasse uden CSS er noget, ingen ser. */
.auto-hld444{display:grid;gap:12px}
.auto-hld-body444{display:grid;gap:12px}
.auto-hld-stats444{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px}
.auto-hld-stats444>div{border:1px solid var(--c-line);border-radius:10px;padding:10px 12px;display:grid;gap:2px}
.auto-hld-stats444 small{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--c-muted)}
.auto-hld-stats444 strong{font-size:22px}
.auto-hld-gaps444 ul{margin:6px 0 4px;padding-left:18px;display:grid;gap:3px}
@media(max-width:760px){.auto-hld-stats444{grid-template-columns:repeat(2,1fr)}}

/* v2.20.451 - Backup-kolonnen kan baere flere kilder paa én maskine: en server kan
   sagtens ligge i baade TSM og Veeam. Uden det her presses de to markeringer ud i
   én linje, og kolonnen bliver enten afskaaret eller urimeligt bred.

   v2.20.454 - «dem med TSM bliver lidt hoejere nu». Cellen er nu inline og har en
   fast, lav linjehoejde, saa markeringen ALTID er lavere end raekkens egen
   tekstlinje. Saa kan den ikke styre raekkehoejden, uanset hvad der ellers staar
   i raekken - en raekke med backup og en uden skal se ens ud.
   Bryder to kilder til to linjer, vokser raekken selvfoelgelig. Det er meningen;
   det er dét, pladsen er til. */
.vm-backup-cell451{display:flex;flex-wrap:wrap;align-items:center;gap:4px;max-width:230px;line-height:1}
.vm-backup-cell451 .pill{white-space:nowrap;padding:0 7px;font-size:var(--t-5);line-height:13px;margin:0;border-radius:20px}

/* v2.20.459 - laesetilstand. Baren staar nederst og ikke oeverst: en fast bjaelke
   i toppen ville skubbe hver eneste side ned og goere «se alt» til en anden
   skaerm end den, alle andre ser. */
.read-only-bar459{position:fixed;left:0;right:0;bottom:0;z-index:60;display:flex;justify-content:center;align-items:center;gap:8px;padding:6px 14px;font-size:12px;line-height:16px;background:var(--c-warn-soft);color:var(--c-warn);border-top:1px solid var(--c-line)}
.read-only-bar459 strong{font-weight:600}
body.read-only-459{padding-bottom:28px}
@media(max-width:700px){.read-only-bar459{font-size:11px;padding:5px 10px}}

/* ============================================================================
   v2.20.462 - ET TAL SKAL STAA UD FOR DET, DET HANDLER OM

   Maalt paa den rigtige stylesheet, 1366px: raekkehoejde 228px, og «121,92 kr.»
   stod 106px nede i raekken. Cellerne var `vertical-align:middle`, saa tallene
   blev centreret i en raekke, hvis hoejde blev sat af diagnosekolonnen - langt
   fra produktnavnet i toppen, og i hver raekke i sin egen dybde.

   To ting, og de er begge af den slags, man kun laegger maerke til, naar de
   mangler:

     vertical-align:top   tallet staar ud for produktnavnet
     text-align:right     en pengekolonne, der ikke er hoejrestillet, kan ikke
                          skimmes - cifrene skal staa under hinanden

   `tabular-nums` var der i forvejen; den gjorde ingen nytte, saa laenge tallene
   var venstrestillede og hver enkelt havde sin egen laengde.

   Handlingskolonnen bliver lodret centreret: en knap midt i en hoej raekke er
   lettere at ramme end en, der klaeber til toppen. */
.customer-license-table td{vertical-align:top}
.customer-license-table td:nth-child(n+5):nth-child(-n+9){text-align:right;white-space:nowrap}
.customer-license-table th:nth-child(n+5):nth-child(-n+9){text-align:right}
.customer-license-table td:nth-child(10){vertical-align:middle}
.customer-license-table .also-diag462{display:block;margin-top:2px}
.customer-license-table .also-billing-raw{margin-top:2px}
.customer-license-table .also-billing-raw summary{font-size:11px;color:var(--c-ink-3);cursor:pointer}
.customer-license-table .also-billing-raw strong{display:block;margin-top:6px;font-size:var(--t-5);letter-spacing:.04em;text-transform:uppercase;color:var(--c-ink-3)}

/* v2.20.470 - ET FELT MED TRE LINJER SIGER DET SELV.
   `.metric` er husets TO-linjers felt: `small` er block, men `strong` er inline.
   Laegger nogen en tredje linje i det, falder tallets boks ned over linjen under
   - maalt i Chromium: 18 px oven i hinanden, baade i ALSOs aarsopkraevning og paa
   Xink-kortet. `.customer-metric` er tre-linjers feltet; hoerer feltet hjemme i et
   `.metric-grid`, siger det det med `metric-3` i stedet for at se forkert ud. */
.metric.metric-3 strong{display:block;line-height:1.2;margin:4px 0 2px}
.metric.metric-3 span{display:block;color:var(--muted);font-size:11px}

/* v2.20.477 - kortet, man blev sendt hen til, skal kunne ses. To sekunder med en
   ramme er nok: uden den lander man paa en side med ni ens kort og leder igen. */
.integration-focus477{outline:2px solid var(--c-accent);outline-offset:3px;border-radius:14px;transition:outline-color .4s ease}

/* v2.20.480 - en raekke, Shell har konkluderet ikke findes mere, maa ikke ligne en levende
   raekke paa 0. Den slettes ikke - et produkt og en pris kan haenge paa den - men den skal
   kunne ses. Farverne er tokens (v2.20.426). */
.infra-inaktiv480>td{opacity:.62}
.infra-inaktiv480 .pill{background:var(--c-surface-2);color:var(--c-ink-2);border:1px solid var(--c-line);margin-left:8px}

/* v2.20.482 - knapperne staar UNDER teksten i banneret, saa saetningen ikke brydes op.
   De er smaa: de er en vej videre, ikke bannerets hovedbudskab. */
.time-reconciliation-actions482{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}

/* v2.20.485 - det fakturerede tal staar ved siden af den seneste observation. Naar de to er
   uenige, er det netop dér, man kigger - ikke i en note laengere nede. */
.billing-history-billed485 strong{color:var(--c-accent)}
.billing-history-billed485 span{display:block;font-size:var(--t-5);color:var(--c-ink-2);margin-top:2px}

/* v2.20.488 - planen staar under fristen, daempet: fristen er det, oejet skal falde paa. */
.customer-next-plan488{color:var(--c-ink-2)}

/* v2.20.512 - typeraekken paa HLD-fanen. Samme greb som fanerne ovenfor, saa
   den laeses som en fane og ikke som fire knapper. */
.hld-arter512{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0 0 14px;padding-bottom:10px;border-bottom:1px solid var(--border)}
.hld-arter512 button{font:inherit;font-size:13px;font-weight:600;color:var(--muted);background:none;border:1px solid transparent;border-radius:9px;padding:7px 13px;cursor:pointer}
.hld-arter512 button:hover{background:var(--bg);color:var(--text)}
.hld-arter512 button.active{background:var(--nav);color:var(--card)}
.hld-arter512 button span{display:inline-block;margin-left:6px;font-size:11px;font-weight:700;opacity:.7}
.hld-arter512 select{font:inherit;font-size:13px;padding:7px 10px;border:1px solid var(--border);border-radius:9px;background:var(--card);margin-left:6px}

/* v2.20.516 – HLD i månedsrapporten. Farverne kommer fra tokens; en hårdkodet
   farve her ville falde ved siden af resten i mørk visning (v2.20.426). */
/* Trinmærkatet er bygget til to cifre. «Bilag» brækkede midt over til «Bila/g» —
   målt på en skærmbillede, ikke gættet. Netop dét mærkat får lov at følge sin tekst. */
.mr-hld516 .monthly-step{width:auto;padding:0 10px;white-space:nowrap;border-radius:99px}
/* v2.20.516/.534 - overskriften og forklaringen stod paa samme linje uden mellemrum:
   «HLD i denne rapportFølger kundens valg…». `strong` og `small` er begge inline, og
   markuppen har ingen luft imellem dem. Fejlen har staaet siden .516 og blev kopieret
   ind i afsnitsblokken i .534, foer den blev set i browseren. Begge retter sig her. */
.hld-valg-blok516,.afsnit-valg-blok534{display:block}
.hld-valg-blok516>strong,.afsnit-valg-blok534>strong{display:block;margin-bottom:3px}
.hld-valg-blok516>small,.afsnit-valg-blok534>small{display:block;color:var(--c-ink-2);line-height:1.45}
.hld-valg-blok516 .hld-valg516{display:grid;gap:6px;margin-top:9px}
.hld-valg516 label{display:flex;align-items:center;gap:8px;font-weight:600;color:var(--text)}
.hld-valg516 label input{width:auto;margin:0}
.hld-valg516 small{color:var(--muted);font-weight:500}
.hld-valg-sites516{display:flex;flex-wrap:wrap;gap:6px 16px;padding:8px 10px;margin-left:24px;border-left:2px solid var(--border);border-radius:0 8px 8px 0;background:var(--bg)}
.hld-valg-sites516.laast{opacity:.45}
.mr-hld516 .mr-hld-kort516{border:1px solid var(--border);border-radius:12px;background:var(--card);padding:12px;margin-top:12px}
.mr-hld-kort516 figcaption{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 12px;margin-bottom:10px}
.mr-hld-kort516 figcaption span{color:var(--muted);font-size:12px}
.mr-hld-maerke516{font-size:11px}
.mr-hld-tegning516{overflow:auto}
.mr-hld-tegning516 svg{width:100%;height:auto;display:block}
.mr-hld-udeladt516,.mr-hld-mangler516{color:var(--muted);font-size:12px;margin:8px 0 0}
@media print{.mr-hld-kort516{break-inside:avoid;page-break-inside:avoid}.mr-hld-tegning516{overflow:visible}}

/* v2.20.518 – rækken med periodevælgeren væltede, da statuslinjen blev lang.
   Målt: ved 1680 px voksede notitsen til 1175 px, fordi den har `flex:1 1 320px` og
   intet loft, og så fik højre kolonne 251 px. Datorækken skal bruge 145+22+145+34 plus
   mellemrum ≈ 370, så den brækkede i tre. Det var ikke tekstens skyld alene: kolonnen
   kunne altid sultes: teksten gjorde det bare synligt.
   To ting: notitsen får et loft (og bliver læselig af det — samme bredde som hero'ens
   egen brødtekst), og periodevælgeren holder sin egen bredde. Under 760 px stakker
   alting i forvejen, og dér gælder loftet ikke. */
.insight-time-hero220308>div:first-child{min-width:0;flex:1 1 auto}
.insight-atera-status434{align-items:flex-start}
.time-reconciliation-434{max-width:820px}
.time-reconciliation-punkter518{list-style:disc;margin:4px 0 0;padding-left:17px;display:grid;gap:3px;font-size:12px;line-height:1.5;color:var(--c-ink-2)}
@media(min-width:761px){
 .insight-period-controls220322{flex:0 0 auto;min-width:380px}
}

/* v2.20.519 – «er Vis-knappen også blevet samme størrelse som datofelterne?»
   Nej. Målt ved 1680 px stod der fire forskellige højder oven på hinanden i den ene
   kolonne: ugeknapperne 30, «Flere perioder» 36, datofelterne 41 og «Vis» 30 — og
   fordi Vis var 11 px lavere end feltet ved siden af, sad den og flød midt i rækken.
   Huset har allerede ét mål for den slags: `--shell-toolbar-control-h` fra v2.20.168,
   som Min dag og Kunder bruger. Her er det taget i brug i stedet for at finde på nye tal.
   «Vis» får en mindstebredde, så den ikke står som en stump ved siden af to 145 px felter,
   og «til» må ikke krympe — den er en etiket, ikke en spalte. */
.insight-period-controls220322 .consumption-range-switch .btn,
.insight-period-controls220322 select,
.insight-custom-period220322 input,
.insight-custom-period220322 .btn{height:var(--shell-toolbar-control-h);min-height:var(--shell-toolbar-control-h);box-sizing:border-box;padding-top:0;padding-bottom:0;display:inline-flex;align-items:center;justify-content:center}
.insight-custom-period220322 .btn{min-width:56px}
/* Det globale `input{margin-top:5px}` er til formularer med en etiket ovenover. Her
   sad det og skubbede datofelterne 2-3 px ned i forhold til knappen ved siden af. */
.insight-custom-period220322 input{margin-top:0}
.insight-custom-period220322>span{flex:none}

/* v2.20.522 – lyset på «Faktura til godkendelse». Tre tilstande, læst fra tokens:
   grøn når alt er godkendt, gul når noget venter, rød når et grundlag kræver kontrol.
   Intet mærke, før tallet ER hentet — et grønt, vi ikke har målt, er en påstand. */
.nav-billing-522{width:9px;height:9px;border-radius:999px;margin-left:auto;flex:none}
.nav-billing-522.ok{background:var(--c-pos);box-shadow:0 0 0 3px var(--c-pos-soft)}
.nav-billing-522.warn{background:var(--c-warn);box-shadow:0 0 0 3px var(--c-warn-soft)}
.nav-billing-522.crit{background:var(--c-crit);box-shadow:0 0 0 3px var(--c-crit-soft)}

/* v2.20.525 – Microsoft Entra ID-kortet på Integrationer.
   Tre tal i én række, og det midterste er det, man kom for: hvornår virkede det sidst.
   Farverne læses fra tokens (husreglen fra v2.20.426); svaradressen er en teknisk streng
   og sættes derfor med den monospace, resten af Shell bruger til den slags — den skal
   kunne sammenlignes tegn for tegn med det, der står i Azure. */
.entra-sso-tal525{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:4px}
.entra-sso-tal525>div{display:flex;flex-direction:column;gap:2px;min-width:0;padding:10px 12px;border:1px solid var(--c-line);border-radius:var(--r-b,8px);background:var(--c-surface-2)}
.entra-sso-tal525 small{font-size:var(--t-5,11px);letter-spacing:.08em;text-transform:uppercase;color:var(--c-ink-3);font-weight:600}
.entra-sso-tal525 strong{font-size:var(--t-3,15px);color:var(--c-ink);line-height:1.3;word-break:break-word}
.entra-sso-tal525 span{font-size:var(--t-5,11px);color:var(--c-ink-3)}
.entra-sso-uri525{font-family:var(--f-mono);font-size:var(--t-5,11px)!important;word-break:break-all}
.entra-sso-intet525{margin:10px 0 0;font-size:var(--t-4,13px)}
@media(max-width:760px){.entra-sso-tal525{grid-template-columns:1fr}}

/* v2.20.528 - reglerne til sektion 07-10 stod her. De fire sektioner («Oppetid & SLA»,
   «Sikkerhed», «Recovery-test», «Patch Management») er fjernet fra rapporten, fordi de
   ikke havde data at vise. CSS til noget, der ikke tegnes, er en faelde for den naeste,
   der leder efter hvorfor et element ser ud som det goer. */

/* v2.20.530 - samme tal, samme udseende som i kundens rapport (v2.20.509). */
.monthly-report-stat.monthly-report-stat-lead{grid-column:1/-1;padding:18px 20px}
.monthly-report-stat.monthly-report-stat-lead strong{font-size:34px;line-height:1.1}
.monthly-report-stat.monthly-report-stat-lead:after{width:86px;height:86px;right:-24px;top:-30px}

/* v2.20.532 - status paa et styresystem. Defineret i BEGGE stylesheets med samme udseende:
   kundeportalen kender ikke Shells `.pill`, saa et `<span class="pill red">` dér ville
   vaere et maerke, der ikke blev tegnet - og den slags opdager man ikke, for der staar
   jo teksten. Det, der staar paa min skaerm, skal vaere det, kunden ser (v2.20.509).

   HER laeses farverne af tokens (v2.20.426). I kundeportalens stylesheet staar de samme
   farver som hex - og det er MED VILJE: portalen indlaeser ikke `shell-tokens.css`
   (v2.20.409), saa en `var(--c-crit)` dér ville vaere tom, og maerket ville staa som sort
   tekst paa ingenting. To filer, to rigtige svar. */
.mr-eos{display:inline-block;font-size:11.5px;font-weight:700;padding:3px 10px;border-radius:999px;
  border:1px solid transparent;white-space:nowrap}
.mr-eos.ended{background:var(--c-crit-soft);border-color:var(--c-crit);color:var(--c-crit)}
.mr-eos.ending{background:var(--c-warn-soft);border-color:var(--c-warn);color:var(--c-warn)}

/* ============================================================================
   v2.20.534 - UDSKRIV MAANEDSRAPPORTEN FRA SHELL

   «jeg vil gerne i mit view kunne lave den PDF som man også kan på portalen»

   Samme fremgangsmaade som kundeportalen (v2.20.380): browserens egen udskrift af
   det, der staar paa skaermen. Det, der SKAL vaek paa tryk, er redaktoerens egne
   dele - de findes ikke i kundens udgave, og saa hoerer de heller ikke i papiret.
   ============================================================================ */
@media print{
 /* v2.20.535 - PAPIR ER IKKE EN TELEFON, MEN DET ER SMALT NOK TIL AT LIGNE EN.

    A4 staaende er 794 px paa 96 dpi. `@media(max-width:820px)` laver hver tabel med
    mange kolonner om til kort - én kasse pr. raekke med overskriften som etiket. Paa en
    telefon er det rigtigt. Paa tryk blev 37 servere til 37 kasser, og maanedsrapporten
    til 24 sider.

    Reglerne her staar SENERE i filen end kortreglerne og med samme eller hoejere
    specificitet, saa tabellen bliver en tabel igen paa papir. */
 .modal-monthly-report table[data-cards420]{display:table!important;width:100%!important;table-layout:fixed!important}
 .modal-monthly-report table[data-cards420] thead{display:table-header-group!important}
 .modal-monthly-report table[data-cards420] tbody{display:table-row-group!important}
 .modal-monthly-report table[data-cards420] tr{display:table-row!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;box-shadow:none!important;background:none!important}
 .modal-monthly-report table[data-cards420] td,
 .modal-monthly-report table[data-cards420] th{display:table-cell!important;width:auto!important;padding:5px 7px!important;border:0!important;border-bottom:1px solid var(--c-line)!important;font-size:var(--t-5);vertical-align:top}
 .modal-monthly-report table[data-cards420] td::before{content:none!important;display:none!important}
 .modal-monthly-report table[data-cards420] td strong{font-size:var(--t-5);font-weight:600}
 .modal-monthly-report table[data-cards420] td small{display:inline;margin:0}
 /* Overskriften gentages paa hver side, saa en tabel over to sider stadig kan laeses. */
 .modal-monthly-report thead{break-inside:avoid;page-break-inside:avoid}
 .modal-monthly-report tr{break-inside:avoid;page-break-inside:avoid}
 /* Baggrundsfarver: uden det her tegnes den moerke forside som hvid, og den hvide tekst
    paa den forsvinder. Kundeportalen har haft linjen siden v2.20.380; Shells egen
    udskrift manglede den, og forsiden kom ud som graa tekst paa intet. */
 .modal-monthly-report,.modal-monthly-report *{-webkit-print-color-adjust:exact;print-color-adjust:exact}

 .modal-monthly-report .monthly-report-edit-grid,
 .modal-monthly-report .form-actions,
 .modal-monthly-report .row-actions,
 .modal-monthly-report .card-header .muted,
 .modal-monthly-report .hld-valg-blok516,
 .modal-monthly-report .afsnit-valg-blok534{display:none!important}
 .modal-monthly-report .monthly-report-editor{display:block!important}
 /* v2.20.573 - det her er en besked til DEN DER SKRIVER rapporten, ikke til kunden.
    Den stod i hans PDF. En intern bemaerkning i et kundedokument er ikke en skoenhedsfejl;
    det er en tekst, kunden ikke skulle have set. */
 .sprog-note570{display:none!important}
 .modal-monthly-report .monthly-report-document{background:var(--c-surface)!important;padding:0!important}
 /* Kun de smaa enheder holdes samlet. Holder man et helt afsnit samlet, skubbes et hoejt
    afsnit til naeste side og efterlader en halvtom side - samme afvejning som portalen. */
 .monthly-report-stats,.monthly-report-coverage,.mr-chart-card,.mr-resolution,
 .mr-resolution-table,.monthly-report-priority,.mr-net-block{break-inside:avoid;page-break-inside:avoid}
 .monthly-report-section-head{break-after:avoid;page-break-after:avoid}
 .monthly-report-hero{break-after:avoid;page-break-after:avoid}
 /* Diagrammerne faar hele sidebredden paa tryk - to spor bliver ulaeseligt smaa paa A4. */
 .mr-visual-grid{grid-template-columns:minmax(0,1fr)!important}
 /* Fire tal paa en raekke i stedet for tre plus ét ensomt: sidebredden paa tryk er 718 px,
    og et kort alene paa sin egen raekke koster en halv side hver gang. */
 .monthly-report-stats{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))!important;gap:7px!important}
 .monthly-report-stat{padding:9px 11px!important;min-height:0!important}
 .monthly-report-stat:after{display:none!important}
}

/* v2.20.534 - afkrydsning af afsnit. Samme udseende som HLD-valget ved siden af, fordi
   det er den samme slags beslutning - og to lister, der ser forskellige ud, laeses som
   to slags indstillinger. */
/* v2.20.537 - 230 px i stedet for 190: ved 190 blev der plads til fem spalter, og
   "Kapacitet & miljoeudvikling" braekkede over to linjer, saa raekken blev ujaevn. */
/* v2.20.628 - striben over rapporten. Alle valgbare afsnit paa én raekke, OGSAA de
   fravalgte: et fravalgt afsnit har ingen sektion at haenge en knap paa, saa en knap
   pr. sektion kunne aldrig taende det igen. Kun tokens - huset har ingen hex herinde. */
.afsnit-stribe627{border:1px solid var(--c-line);border-radius:10px;background:var(--c-surface-2);
  padding:14px 16px;margin:0 0 18px}
.afsnit-stribe627-hoved{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.afsnit-stribe627-hoved strong{font-size:13px}
.afsnit-stribe627-hoved .muted{font-size:12px;color:var(--c-ink-3)}
.afsnit-stribe627-knapper{display:flex;flex-wrap:wrap;gap:6px}
.afsnit-chip627{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--c-line-control);
  border-radius:999px;background:var(--c-surface);color:var(--c-ink);font:inherit;font-size:12px;
  font-weight:500;padding:5px 12px;cursor:pointer;line-height:1.3}
.afsnit-chip627:hover:not(:disabled){border-color:var(--c-line-strong)}
.afsnit-chip627:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px}
.afsnit-chip627-maerke{font-size:13px;line-height:1;color:var(--c-ink-3)}
/* Fravalgt: daempet og gennemstreget, saa tilstanden ogsaa kan ses uden farve. */
.afsnit-chip627.af{background:var(--c-surface-3);color:var(--c-ink-3);text-decoration:line-through;
  text-decoration-thickness:1px}
.afsnit-chip627.af .afsnit-chip627-maerke{text-decoration:none;display:inline-block}
.afsnit-chip627:disabled{cursor:default;opacity:.6}
.afsnit-stribe627-kvit{margin:10px 0 0;font-size:12px;font-weight:600;color:var(--c-accent)}
.afsnit-stribe627-note{display:block;margin-top:8px;font-size:11.5px;line-height:1.55;color:var(--c-ink-3)}
/* Paa tryk er valget ikke en del af rapporten - det er redaktoerens vaerktoej. */
@media print{.afsnit-stribe627{display:none}}
.afsnit-valg534{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:5px 16px;margin-top:8px}
.afsnit-valg534 label{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:500;color:var(--c-ink-2)}
.afsnit-valg534 input{width:auto;margin:0}

/* ============================================================================
   v2.20.537 - KUNDEPORTAL-VINDUET, TAENKT OM

   «kan du retaenke design under menuen kundeportal?»

   Foer: seks kort i et tre-spalters gitter med ujaevne hoejder og ét ensomt kort
   nederst. Alle seks saa ens ud, selv om to af dem kun betyder noget, naar et
   tredje er slaaet til - og forklaringerne stod i VERSALER, fem-seks linjer ad
   gangen, fordi Retning B saetter `label{text-transform:uppercase}`. Den regel er
   rigtig for en feltetiket paa ét ord. Den er forkert for et afsnit.

   EN ETIKET PAA ÉT ORD OG ET AFSNIT PAA SEKS LINJER ER IKKE DEN SAMME SLAGS TEKST.

   Nu: tre grupper med hver sin overskrift, og de afhaengige valg indrykket under
   det, de afhaenger af - med en lodret streg, saa man kan se hvor de hoerer til.
   ============================================================================ */
/* To spalter: Adgang og Bestilling ved siden af hinanden, Maanedsrapportering paa
   tvaers nedenunder, fordi den rummer to lister med hakker. Auto-fit gav en tom
   tredje spalte paa brede skaerme. */
.portal-indst537{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;
  padding:16px;border:1px solid var(--c-line);border-radius:14px;background:var(--c-surface-2);align-items:start}
.portal-gruppe537{display:grid;gap:2px;align-content:start;background:var(--c-surface);
  border:1px solid var(--c-line);border-radius:12px;padding:14px 15px}
.portal-gruppe-bred537{grid-column:1/-1}
.portal-gruppe537>h3{margin:0 0 8px;font-size:13.5px;letter-spacing:0;text-transform:none;color:var(--c-ink)}

/* Én raekke = ét valg. Hele raekken er klikbar, fordi den er et `label`. */
.portal-raekke537{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:start;
  margin:0;padding:8px 2px;text-transform:none;letter-spacing:0;font-size:inherit;color:inherit;font-weight:400}
.portal-raekke537+.portal-raekke537{border-top:1px solid var(--c-line)}
.portal-raekke537>input{width:auto;margin:2px 0 0}
.portal-raekke537>span{display:grid;gap:3px;min-width:0}
/* Titlen er stadig en etiket. Forklaringen er en saetning, og saettes som en. */
.portal-raekke537 strong{font-size:12.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--c-ink)}
.portal-raekke537 small{font-size:12px;font-weight:400;letter-spacing:0;text-transform:none;
  line-height:1.5;color:var(--c-ink-2);overflow-wrap:anywhere}

/* Et valg, der afhaenger af et andet, staar indrykket under det. */
.portal-under537{margin-left:11px;padding-left:12px;border-left:2px solid var(--c-line)}
/* To indrykkede valg efter hinanden skal stadig kunne skelnes - men stregen starter
   inde ved indrykket, saa den ikke skaerer den lodrette linje over. */
.portal-under537.portal-raekke537+.portal-under537.portal-raekke537{border-top:1px solid var(--c-line);margin-top:2px;padding-top:10px}
.portal-valg537{grid-template-columns:minmax(0,1fr)}

/* Slukket: laesbar, men tydeligt ude af kraft. Hakket bliver staaende. */
.portal-raekke537.slukket537{opacity:.5}
.portal-raekke537.slukket537 input{cursor:not-allowed}
.portal-grund537{color:var(--c-warn)!important;font-weight:600!important}
.portal-grund537:empty{display:none}

.portal-gem537{grid-column:1/-1;display:flex;justify-content:flex-end}

@media(max-width:820px){
  .portal-indst537{grid-template-columns:minmax(0,1fr);padding:12px}
  .portal-gem537 .btn{width:100%}
}

/* ===========================================================================
   v2.20.549 - SERVICEMAAL, DRIFTSREGISTRE OG SIKKERHED

   Maerket er det eneste nye, der baerer en FARVE med betydning: groen for
   overholdt, roed for brudt, graa for umaalt. Den graa er den vigtigste af de
   tre - et maal uden en maalt sag er ikke overholdt, og det maa ikke komme til
   at se saadan ud.
   =========================================================================== */
.sla-maerke549{display:inline-block;padding:2px 10px;border-radius:999px;font-size:var(--t-5);font-weight:600;white-space:nowrap}
.sla-maerke549.ok{background:var(--c-pos-soft);color:var(--c-pos)}
.sla-maerke549.brudt{background:var(--c-crit-soft);color:var(--c-crit)}
.sla-maerke549.umaalt{background:var(--c-surface-2);color:var(--c-ink-3)}
/* v2.20.661 - en node, hvis seneste kørsel fejlede: vi følger op - ikke en alarm */
.sla-maerke549.foelger661{background:var(--c-warn-soft);color:var(--c-warn)}

/* Detaljeraekken under en haendelse eller en risiko. Baggrunden skrives paa TD og
   ikke paa TR: design-b saetter en baggrund paa hver anden raekkes celler, og to
   regler med samme vaegt paa hver sin knude giver den sidst indlaeste - saa en
   raekke paa TR ville vaere usynlig i det ene af de to designs. */
.haendelse-detalje549>td{background:var(--c-surface-2);color:var(--c-ink-2);padding-top:4px;padding-bottom:10px}
.haendelse-detalje549>td p{margin:2px 0}

.billing-history-note602{margin:8px 2px 0;font-size:12px;line-height:1.5;color:var(--muted)}
.billing-history-note602 strong{color:var(--text)}
.vm-patch-venter599{margin:0 0 12px}
.vm-patch-venter599 p{margin:4px 0 0;font-size:12px;color:var(--muted)}
.log-soeg598{padding:14px 16px;margin-bottom:12px}
.log-soeg-hoved598 strong,.log-soeg-hoved598 small{display:block}
.log-soeg-hoved598 small{color:var(--muted);margin-top:3px}
/* Flex og ikke grid: `repeat(auto-fit,...)` maa IKKE staa sammen med fleksible eller
   intrinsiske spor, og saa kasserer browseren hele reglen - felterne faldt under hinanden
   i fuld bredde. Flex rummer ogsaa, at de to faner har hver sit antal felter. */
.log-soeg-felter598{display:flex;flex-wrap:wrap;gap:9px;padding:12px 0 0;align-items:center}
.log-soeg-felter598 input{flex:1 1 220px;min-width:200px;margin-top:0}
.log-soeg-felter598 select{flex:1 1 140px;min-width:130px;margin-top:0}
.log-soeg-felter598 .btn{flex:0 0 auto;white-space:nowrap}
.log-taelling598{margin:0 0 10px;color:var(--muted);font-size:12px}
@media(max-width:700px){.log-soeg-felter598 input,.log-soeg-felter598 select{flex:1 1 100%}}
.vm-navne597{margin-top:4px;font-size:11px;line-height:1.5;white-space:normal}
.vm-navne597>span:first-child{font-weight:700;color:var(--muted);margin-right:4px}
.vm-navne597.muted{font-style:italic}
.opmaerksomhed-hoved594{display:flex;align-items:baseline;gap:9px;margin:0 0 6px}
.opmaerksomhed-hoved594 strong{font-size:12px;letter-spacing:.06em;text-transform:uppercase}
.opmaerksomhed-hoved594 span{font-size:12px;color:var(--muted)}
.opmaerksomhed549{margin:0 0 12px;padding-left:18px}
.opmaerksomhed549 li{margin:2px 0;font-weight:600}

/* Registrene. Formularen er den samme for alle fire; felterne kommer fra serveren. */
.register-faner549{margin-bottom:12px}
.register-form549{margin-top:16px;border-top:1px solid var(--c-line);padding-top:12px}
.register-felter549{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
/* v2.20.557 - etiket og forklaring er to ting og staar paa hver sin linje. Foer
   var hjaelpeteksten inline lige efter etiketten, og saa stod der «AFSLUTTETLad
   feltet staa tomt…». */
.register-felter549 label{display:flex;flex-direction:column;gap:4px}
.register-etiket557{font-weight:600}
.register-hjaelp557{display:block;color:var(--c-ink-3);font-weight:400;line-height:1.35}
/* Registerets forklaring staar ÉT sted: under fanerne. */
.register-forklaring557{margin:0 0 12px;color:var(--c-ink-2);max-width:72ch}
.register-felter549 .register-bred549{grid-column:1/-1}
.register-flag549{grid-column:1/-1;display:flex;gap:10px;align-items:flex-start}
.register-flag549 input{margin-top:3px}
.register-flag549 small{display:block;color:var(--c-ink-3)}

.sla-felter549{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin-top:8px}
.sla-felter549 .sla-bred549{grid-column:1/-1}

/* v2.20.559 - markeringen i maskinelisten. Kolonnen er smal med vilje: den er et
   vaerktoej, ikke en oplysning, og den maa ikke skubbe maskinnavnet. Linjen over
   tabellen holder knap og antal sammen, saa ingen saetter 16 maskiner i den tro,
   at de saetter én. */
.vm-vaelg559{width:34px;text-align:center;padding-right:0}
.vm-niveau-linje559{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:8px 0}
.vm-niveau-linje559 small{margin:0}
/* Feltlisten er en diagnose. Den staar sammenfoldet, fordi den kun skal aabnes,
   naar nogen spoerger - og saa fylder den ikke paa alle andre kunder (v2.20.481). */
/* v2.20.564 - diagnosen staar kun, naar Ateras navne ikke rammer noget. Den er
   et opslag og skal kunne laeses som ét afsnit, ikke som en tabel. */
/* v2.20.567 - EGNE KOLONNER IGEN, OG STADIG UDEN VANDRET RULNING

   Bredden kom aldrig fra antallet af kolonner, men fra hvad der stod i dem.
   Enheden hoerer i overskriften og ikke paa 37 raekker, tallene staar
   hoejrestillet med ens cifferbredde, saa de kan sammenlignes lodret - det er dét,
   en talkolonne er til - og status er en prik med ordet i titlen. */
.vm-num567{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;width:1%}

.vm-prik-kol567{width:26px;padding-right:0;text-align:center}
.vm-prik567{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--muted)}
.vm-prik567.green{background:var(--green)}
.vm-prik567.red{background:var(--red)}
.vm-prik567.amber{background:var(--amber)}
.vm-prik567.grey{background:var(--border)}
/* Rapportens taltal staar hoejrestillet med ens cifferbredde, samme regel som paa
   kundekortet: en kolonne med tal er til for at kunne sammenlignes lodret. */
.rapport-tal567{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
/* Navnet er raekkens anker. Status, vaert og «senest set» staar under det og maa
   ikke braekke det over - derfor ingen ombrydning paa selve navnet. */
.vm-navn566 strong{white-space:nowrap}
.vm-navn566 small{white-space:normal}
/* Agent og backup er det samme spoergsmaal stillet to gange. Maerkerne staar under
   hinanden, saa kolonnen ikke bliver bredere end den behoever. */
.vm-beskyt566{min-width:124px}
.vm-beskyt566>*{display:block;margin-bottom:3px}
.vm-beskyt566>*:last-child{margin-bottom:0}
.vm-net566 small{display:block}
@media(max-width:1100px){
  .vm-tabel566 .vm-navn566 strong{white-space:normal}
}
.agent-diagnose564{margin:8px 0}
.agent-diagnose564 p{margin:6px 0 0}
.ticket-felter559{margin-top:10px}
.ticket-felter559 code{font-size:.85em}
.ticket-felter559 table{font-size:.9em}

/* v2.20.560 - tre tilstande skal kunne SES som tre. «Undtaget» er stiplet, fordi den
   er en beslutning om at staa udenfor - ikke et maal og ikke et hul. */
.pill.undtaget560{border:1px dashed var(--c-border-strong,var(--c-ink-3));background:transparent}
.vm-ubesluttede560{margin:8px 0}
/* Valget mellem de tre handlinger er det foerste, der skal laeses i dialogen - og
   etiket og forklaring staar hver for sig, saa de ikke loeber sammen (v2.20.557). */
.niveau-handling560{display:grid;gap:8px;margin:10px 0 14px}
.niveau-valg560{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border:1px solid var(--c-border);border-radius:var(--r-2,8px);cursor:pointer}
.niveau-valg560:hover{background:var(--c-surface-2)}
.niveau-valg560 input{margin-top:3px;flex:0 0 auto;width:auto}
/* v2.20.563 - «den ødelægger grafik når jeg vil sætte serviceniveau»

   Husets formularregel giver hvert `input` fuld bredde, og den gaelder ogsaa et
   RADIOFELT. Knappen blev derfor 688 px bred, teksten blev klemt ud i 9 px, og da
   `overflow-wrap:anywhere` arves ned, braekkede den per bogstav: en lodret
   bogstavsoejle ude i kanten af dialogen.

   `width:auto` paa knappen og `flex:1 1 0` paa teksten. Basis SKAL vaere 0 og ikke
   `auto`: med `auto` er basis hele saetningens bredde, linjen loeber over, og saa
   krymper teksten hele vejen til nul igen. Maalt i en rigtig browser, ikke gaettet. */
.niveau-valg560 span{display:block;flex:1 1 0;min-width:0}
.niveau-valg560 strong{display:block}
.niveau-valg560 small{display:block;color:var(--c-ink-3);margin-top:2px}

@media(max-width:820px){
  .register-felter549,.sla-felter549{grid-template-columns:minmax(0,1fr)}
}

/* v2.20.550 - disk uden profil er ikke en profil. Maerket er graat og staar
   sidst, saa det ikke laeses som en IOPS-klasse, kunden har koebt. */
.pill.iops-uden-profil550{font-style:italic}
/* Forklaringen paa en tom backupkolonne. Den staar KUN, naar kolonnen ikke kan
   sige noget - ikke som fast tekst under hver maskineliste (v2.20.481). */
.vm-daekning-grund550{margin:0 0 10px;color:var(--c-ink-2);font-size:var(--t-5)}
.tsm-felt-diagnose550{margin-top:10px}
.tsm-felt-diagnose550>summary{cursor:pointer;color:var(--c-ink-2);font-size:var(--t-5)}
.tsm-felt-diagnose550 code{font-size:var(--t-5)}

/* v2.20.551 - felterne, kilden sender pr. enhed. Staar kun hos en kilde, der har
   navne og ramte nul maskiner (v2.20.481: ikke paa hver eneste kunde). */
.vm-felt-diagnose551{margin:0 0 10px}
.vm-felt-diagnose551>summary{cursor:pointer;color:var(--c-ink-2);font-size:var(--t-5)}
.vm-felt-diagnose551 code{font-size:var(--t-5)}

/* v2.20.579 - Infrastruktur: serverne oeverst og aabne, ressourcetabellen i en <details>
   under dem. Raekkefoelgen er selve rettelsen; det her er kun, at den kan ses. */
.infra-servere579{margin-top:4px}
.infra-servere-hoved579{display:flex;align-items:baseline;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:0 0 10px}
.infra-servere-hoved579 h4{margin:0;font-size:15px}
.infra-servere-hoved579 .muted{font-size:12px}
.customer-infra-details.infra-ressourcer579{margin-top:22px;border-top:1px solid var(--border);padding-top:14px}
.customer-infra-details.infra-ressourcer579>summary{font-weight:700;font-size:13px;cursor:pointer;padding:6px 0}

/* v2.20.585 - maskinens eget panel. Navnet i serverlisten er en knap, ikke et link:
   den aabner et panel paa den samme side og skifter ikke visning. */
/* v2.20.587 - eksportknappen staar yderst i serverblokkens hoved, som paa UniFi-sitet. */
/* v2.20.589 - patchkolonnen er et flueben. Den skal fylde det, et flueben fylder. */
.vm-patch-kol589{width:1%;white-space:nowrap;text-align:center}
.vm-patch-dom589{margin:0 0 6px;font-size:12px}
.infra-servere-hoved579 .muted{margin-right:auto}
.infra-servere-hoved579 #vmEksportCsv587{flex:0 0 auto}
.vm-navn-knap585{border:0;background:none;padding:0;margin:0;text-align:left;color:inherit;font:inherit;cursor:pointer}
.vm-navn-knap585:hover strong,.vm-navn-knap585:focus-visible strong{text-decoration:underline;text-underline-offset:2px}
.vm-detalje585{display:grid;gap:14px}
.vm-blok585 h3{margin:0 0 6px;font-size:13px;display:flex;align-items:baseline;gap:8px}
.vm-blok585 h3 small{font-weight:500;font-size:11px}
.vm-felter585{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:2px 18px;margin:0}
.vm-felt585{display:grid;grid-template-columns:minmax(120px,38%) 1fr;gap:10px;padding:4px 0;border-bottom:1px solid var(--c-line)}
.vm-felt585 dt{color:var(--muted);font-size:11px;align-self:center;overflow-wrap:anywhere}
.vm-felt585 dd{margin:0;font-size:12px;overflow-wrap:anywhere}
.vm-raa585{border:1px solid var(--c-line);border-radius:9px;padding:8px 11px;background:var(--c-surface-2);color:var(--text)}
.vm-raa585>summary{cursor:pointer;font-weight:650;font-size:12px}
.vm-raa585 .vm-raa-felter585 dd{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}
.vm-diske585{width:100%;border-collapse:collapse;font-size:11px}
.vm-diske585 th,.vm-diske585 td{border-bottom:1px solid var(--c-line);padding:4px 7px;text-align:left;white-space:nowrap}
/* v2.20.593 - rapportens foerste stykke grafik. Én bjaelke, tre flader, og tallene i
   forklaringen under - saa den kan laeses i sort-hvid, naar nogen printer rapporten. */
/* v2.20.594 - to grupper med samme form. Overskriften baerer gruppens antal, saa en
   soejle aldrig staar uden at sige hvor mange den handler om. */
.mr-patch-gruppe594{margin:0 0 16px}
.mr-patch-gruppe594:last-child{margin-bottom:0}
.mr-patch-hoved594{display:flex;align-items:baseline;gap:9px;margin:0 0 7px}
.mr-patch-hoved594 strong{font-size:12px;letter-spacing:.06em;text-transform:uppercase}
.mr-patch-hoved594 span{font-size:12px;color:var(--muted)}
@media print{.mr-patch-gruppe594{break-inside:avoid;page-break-inside:avoid}}
.mr-patch-soejle593{margin:0 0 10px}
.mr-patch-bar593{display:flex;height:13px;border-radius:7px;overflow:hidden;background:var(--c-surface-3);border:1px solid var(--c-line)}
.mr-patch-bar593>span{display:block;height:100%}
.mr-patch-bar593>span.p-ok593{background:var(--c-pos)}
.mr-patch-bar593>span.p-nej593{background:var(--c-warn)}
.mr-patch-bar593>span.p-ukendt593{background:var(--c-line-strong)}
.mr-patch-tegn593{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:7px;font-size:11px;color:var(--muted)}
.mr-patch-tegn593 span{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.mr-patch-tegn593 i{width:9px;height:9px;border-radius:3px;display:inline-block;flex:0 0 auto}
.mr-patch-tegn593 .p-ok593 i{background:var(--c-pos)}
.mr-patch-tegn593 .p-nej593 i{background:var(--c-warn)}
.mr-patch-tegn593 .p-ukendt593 i{background:var(--c-line-strong)}
@media print{.mr-patch-soejle593{break-inside:avoid;page-break-inside:avoid}}

/* v2.20.607 - Portals. Panelet er en dropdown paa kundekortets header.
   Tokens er husets egne `--c-*` fra shell-tokens.css. Foerste udgave laante portalens
   navne (--line, --ink, --soft) - de findes ikke her, og reglerne ville vaere faldet paa
   gulvet i stilhed. Praecis den fejl, der kostede en release i v2.20.604. */
.portal-dropdown607{position:relative;display:inline-block}
.portal-panel607{position:absolute;right:0;top:calc(100% + 6px);z-index:60;min-width:320px;max-width:380px;
 background:var(--c-surface);border:1px solid var(--c-line);border-radius:12px;padding:12px;display:grid;gap:10px;
 box-shadow:0 12px 32px rgba(0,0,0,.14);text-align:left}
.portal-panel607[hidden]{display:none}
/* v2.20.638 - «⋯ Mere»-menuen paa kundekortet. Samme mekanik og samme udseende som
   Portals-panelet, saa de to ikke ser ud som to forskellige ting. Slet staar nederst,
   bag en streg, i husets fare-farve - det er den eneste advarsel, man ser, foer man
   trykker, og den maa ikke staa paa linje med «Hent alt». */
.hub-mere638{position:relative;display:inline-block}
#hubMereKnap638{min-width:40px;padding-left:10px;padding-right:10px;font-size:18px;line-height:1;letter-spacing:.05em}
.hub-mere-panel638{position:absolute;right:0;top:calc(100% + 6px);z-index:60;min-width:200px;background:var(--c-surface);border:1px solid var(--c-line);border-radius:12px;padding:6px;display:grid;gap:2px;box-shadow:0 12px 32px rgba(0,0,0,.14);text-align:left}
.hub-mere-panel638[hidden]{display:none}
.hub-mere-punkt638{appearance:none;border:0;background:transparent;border-radius:8px;padding:9px 12px;text-align:left;font:inherit;font-size:13px;color:var(--c-ink);cursor:pointer;width:100%}
.hub-mere-punkt638:hover,.hub-mere-punkt638:focus-visible{background:var(--c-surface-2);outline:none}
.hub-mere-punkt638.fare{margin-top:4px;padding-top:12px;border-top:1px solid var(--c-line);border-radius:0 0 8px 8px;color:var(--c-crit)}
.hub-mere-punkt638.fare:hover,.hub-mere-punkt638.fare:focus-visible{background:var(--c-crit-soft)}
.portal-kilde607{display:grid;gap:2px;padding-bottom:8px;border-bottom:1px solid var(--c-line)}
.portal-kilde607 strong{font-size:14px;word-break:break-all;color:var(--c-ink)}
.portal-kilde607 span{font-size:11px;color:var(--c-ink-3)}
.portal-kilde607.mangler strong{color:var(--c-ink-3);font-weight:600}
.portal-uenig607 small,.portal-valg607 small,.portal-hjaelp607,.portal-udeladte607{font-size:11px;color:var(--c-ink-3);line-height:1.45}
.portal-valg607{display:grid;gap:6px}
.portal-links607{display:grid;gap:4px}
.portal-link607{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:9px;text-decoration:none;
 color:var(--c-ink);font-size:13px;font-weight:600;border:1px solid transparent}
.portal-link607:hover{background:var(--c-surface-3);border-color:var(--c-line)}
.portal-link607 b{margin-left:auto;font-weight:400;color:var(--c-ink-3);font-size:12px}
.portal-ikon607{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:6px;
 background:var(--c-accent-soft);color:var(--c-accent-ink);font-size:11px;font-weight:800}
.portal-domaene607{display:flex;gap:6px;align-items:end;padding-top:8px;border-top:1px solid var(--c-line)}
.portal-domaene607 label{display:grid;gap:3px;flex:1;font-size:11px;color:var(--c-ink-3)}
.portal-domaene607 input{font:inherit;font-size:13px;padding:6px 8px;border:1px solid var(--c-line-control);border-radius:8px;
 background:var(--c-ground);color:var(--c-ink)}
.portal-hjaelp607,.portal-udeladte607{margin:0}

/* v2.20.618 - de tre tal, der IKKE kontrolleres. Foerste udgave laante
   `customer-license-table`, som er stylet til fire kolonner, og talkolonnen blev
   klippet af. Det var kun synligt paa et skaermbillede - som i v2.20.604. */
.sophos-orientering618{display:grid;gap:0;margin:10px 0 0;border:1px solid var(--c-line);border-radius:10px;overflow:hidden}
.sophos-orientering618>div{display:flex;justify-content:space-between;align-items:baseline;gap:16px;
 padding:9px 14px;border-top:1px solid var(--c-line);background:var(--c-surface)}
.sophos-orientering618>div:first-child{border-top:0}
.sophos-orientering618 dt{margin:0;font-size:13px;color:var(--c-ink-2)}
.sophos-orientering618 dd{margin:0;font-size:14px;font-weight:700;color:var(--c-ink);font-variant-numeric:tabular-nums}

/* v2.20.619 - soegefeltet over kontaktpersonerne. «kan vi ogsaa faa en soegefunktion
   under kontakter». Tokens, ikke hex - og admin-arkets `--c-*`, ikke portalens navne. */
.kontakt-soeg619{display:flex;align-items:center;gap:12px;margin:0 0 14px}
.kontakt-soeg619 input{flex:1 1 auto;min-width:0;padding:8px 12px;font:inherit;font-size:14px;
 color:var(--c-ink);background:var(--c-surface);border:1px solid var(--c-line-control);
 border-radius:var(--r-control)}
.kontakt-soeg619 input::placeholder{color:var(--c-ink-3)}
.kontakt-taelling619{flex:0 0 auto;font-size:12px;color:var(--c-ink-3);font-variant-numeric:tabular-nums}
.kontakt-tomt619{margin:0;padding:18px 14px;text-align:center;font-size:13px;color:var(--c-ink-3);
 background:var(--c-surface-2);border:1px dashed var(--c-line);border-radius:10px}

/* v2.20.619 - maskinnavnene under et opmaerksomhedspunkt. `.opmaerksomhed549 li` saetter
   font-weight:600 paa hele punktet, saa navnelinjen arvede den og stod lige saa fed som
   selve punktet. Med tolv navne under hinanden kunne oejet ikke finde overskriften igen.
   Kun synligt paa et skaermbillede - som .604, .607 og .618. */
.opmaerksomhed549 li small{display:inline-block;margin-top:1px;font-weight:400;line-height:1.5}

/* =============================================================================
   v2.20.643 - SKRIVEMASKINESKRIFTEN ER TALLENES (menu, etiketter, linjen under navnet)

   «hvad taenker du om font?» - og efter visningen: «okay, ja tak».

   Samme regel som tabeloverskrifterne i .636: monospace er for tal, koder og
   noegler. Maalt paa 12 sider i 1440 px - hvert synligt tekstelement i
   monospace, grupperet efter hvor det sidder. Fem steder var TEKST sat som tal:

     nav > button.nav-section          «Salg», «Løsning» …   versaler, .15em
     dl.customer-facts > dt            «CID», «Status» …     versaler, .10em
     .customer-metric > small          «Månedlig værdi» …    versaler, .12em
     .brand span                       «ShellV2.0»                     .10em
     .customer-hub-identity p          «CVR/VAT … · København N · Kundeansvarlig: …»

   Siden .637 hævede gulvet til 11 px, er de blevet brede - en kolonne af
   spatierede versaler, der fylder mere i øjet end punkterne under dem.

   De beholder deres plads og deres versaler; de faar broedskriften, halvfed, og
   en lille spatiering. `code` og `pre` (noegler, endpoints, JSON) er uroerte -
   de er praecis det, monospace er til. Og tallene under kundenavnet staar med
   ens brede cifre, saa de stadig flugter. */
.nav-section,button.nav-section{font-family:var(--f-sans);font-weight:600;letter-spacing:.06em}
.brand span{font-family:var(--f-sans);letter-spacing:.02em}
.customer-facts dt{font-family:var(--f-sans);font-weight:600;letter-spacing:.05em}
.customer-metric small{font-family:var(--f-sans);font-weight:600;letter-spacing:.05em}
.customer-hub-identity p{font-family:var(--f-sans);font-size:var(--t-meta-size);font-variant-numeric:tabular-nums}

/* =============================================================================
   v2.20.644 - MENUEN 224 -> 240 PX, OG GITTERET MED

   Med IBM Plex leveret (se shell-tokens.css) braekker «Licenser & abonnementer»
   paa to linjer i 224 px - den eneste af menuens punkter. Maalt:
     232 px: én linje i 1440x900, men to i 1280x800, hvor menuen ruller
             (757 i 672) og den tynde rullebjaelke tager sin bredde
     236 px: én linje begge steder - 240 giver lidt luft

   Og dét, maalingen viste undervejs: menuen var 224 px, men gitterets foerste
   kolonne var 245 (v2.20.320 laengere nede satte den igen og vandt over .app-
   reglen her). 21 px tom flade mellem menu og indhold - og topbjaelken, der
   startede ved 224, stod 21 px til venstre for siden under den: «Kunder» i
   x=248, «Alle kunder» i x=269. Alle fire regler, der baerer bredden, siger
   nu 240 (.app to steder, .sidebar, .topbar). Indholdet faar 5 px MERE end
   foer. Telefonens skuffe har sin egen bredde og er uroert. */

/* =============================================================================
   v2.20.645 - TIL GODKENDELSE (se billing.js: tilGodkendelse645)

   Kort med raekker i fire kolonner: periode · status og kontrolpunkter · beloeb ·
   knapper. Samme gitter for maaneder, uger, erstattede og arkivet, saa beloebene
   flugter op og ned igennem hele kortet. Den nyeste maaned er fremhaevet med
   advarselsfladen; resten er hvide. Beloeb i broedskriften med ens brede cifre -
   som tabellernes «Total» - ikke i monospace. */
.godk645,.godk645-arkiv{padding:0!important;overflow:hidden}
.godk645-hoved{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;padding:16px 20px 12px;border-bottom:1px solid var(--c-line)}
.godk645-hoved h3{margin:0}.godk645-hoved .muted{display:block;margin-top:3px}
/* Knapkolonnen har en FAST bredde: med `auto` fik hver raekke sin egen (maanedens
   «Kontrollér og godkend» er bredere end ugens «Se / redigér»), og beloebene flugtede
   ikke op og ned - maalt 1160/1243 px i 1440. */
.godk645-raekke,.godk645-uge,.godk645-erst-raekke{display:grid;grid-template-columns:minmax(190px,1.3fr) minmax(200px,1.6fr) minmax(140px,.9fr) 224px;gap:20px;align-items:center}
.godk645-raekke{padding:14px 20px;border-bottom:1px solid var(--c-line)}
.godk645-primaer{background:color-mix(in srgb,var(--c-warn-soft) 45%,var(--c-surface));padding-top:18px;padding-bottom:18px}
.godk645-k{display:block;font-size:var(--t-5);font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--c-ink-3)}
.godk645-periode strong{display:block;font-size:17px;margin:2px 0 1px}.godk645-primaer .godk645-periode strong{font-size:19px}
.godk645-periode small,.godk645-p small,.godk645-erst-raekke small{color:var(--c-ink-3)}
.godk645-status{display:flex;flex-direction:column;gap:6px;align-items:flex-start;min-width:0}
.godk645-maerkater{display:flex;gap:6px;flex-wrap:wrap}
.godk645-maerkater span{font-size:12px;padding:2px 8px;border-radius:999px;background:var(--c-surface);border:1px solid color-mix(in srgb,var(--c-warn) 30%,var(--c-surface));color:var(--c-warn);white-space:nowrap}
.godk645-alder{font-size:12px;color:var(--c-warn)}
.godk645-link{border:0;background:none;padding:0;font:inherit;font-size:12px;font-weight:600;color:var(--c-accent-ink);cursor:pointer}
.godk645-link:hover{text-decoration:underline}
.godk645-dest{display:block;color:var(--c-ink-3);font-size:12px;margin-top:2px}
.godk645-tal{text-align:right}
.godk645-tal strong{display:block;font-weight:700;font-variant-numeric:tabular-nums;font-size:18px;white-space:nowrap}
.godk645-tal small{color:var(--c-ink-3)}
.godk645-knapper{display:flex;gap:8px;justify-content:flex-end;align-items:center;white-space:nowrap}
.godk645-slet{border:0;background:none;color:var(--c-crit);font:inherit;font-size:12px;cursor:pointer;padding:4px 2px}
.godk645-slet:hover{text-decoration:underline}
.godk645-uger{padding:12px 20px 6px}
.godk645-uger h4{margin:0 0 6px;font-size:var(--t-5);font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--c-ink-3)}
.godk645-uge{padding:7px 0;border-top:1px solid var(--c-line)}
.godk645-uger h4+.godk645-uge{border-top:0}
.godk645-p{font-weight:600}.godk645-p small{font-weight:400;margin-left:6px}
.godk645-t{text-align:right;font-variant-numeric:tabular-nums;font-weight:700;white-space:nowrap}
.godk645-t small{font-weight:400;color:var(--c-ink-3);margin-right:10px}
.godk645-tom{margin:14px 20px}
.godk645-erstattet{margin:6px 20px 16px;border:1px dashed var(--c-line-strong);border-radius:10px;background:var(--c-surface-2)}
.godk645-erstattet summary{cursor:pointer;padding:10px 14px;display:flex;justify-content:space-between;align-items:center;gap:12px;list-style:none;font-size:13px}
.godk645-erstattet summary::-webkit-details-marker{display:none}
.godk645-erstattet summary b::before,.godk645-arkiv summary h3::before{content:'›';display:inline-block;margin-right:8px;transition:transform .15s}
.godk645-erstattet[open] summary b::before,.godk645-arkiv details[open] summary h3::before{transform:rotate(90deg)}
.godk645-erstattet summary span{color:var(--c-ink-3)}
.godk645-erst-raekke{padding:8px 14px;border-top:1px solid var(--c-line);color:var(--c-ink-3);font-size:13px}
.godk645-erst-raekke small{display:block}
.godk645-arkiv summary{padding:16px 20px;cursor:pointer;list-style:none}
.godk645-arkiv summary::-webkit-details-marker{display:none}
.godk645-arkiv summary h3{display:inline;margin:0}.godk645-arkiv summary .muted{display:block;margin-top:3px}
.godk645-arkiv .godk645-uger{border-top:1px solid var(--c-line)}
@media(max-width:900px){
  .godk645-raekke,.godk645-uge,.godk645-erst-raekke{grid-template-columns:minmax(0,1fr) auto;gap:8px 14px}
  .godk645-status{grid-column:1/-1;grid-row:2}
  .godk645-tal,.godk645-t{grid-column:2;grid-row:1}
  .godk645-knapper{grid-column:1/-1;justify-content:flex-start}
  .godk645-hoved{flex-wrap:wrap}
  .godk645-hoved .btn{white-space:nowrap}
  .godk645-p small{display:block;margin-left:0}
  /* ugen: maerkat og knapper paa samme linje - ellers fire linjer til én uge */
  .godk645-uge .godk645-status{grid-column:1;grid-row:2;flex-direction:row;align-items:center}
  .godk645-uge .godk645-knapper{grid-column:2;grid-row:2;justify-content:flex-end}
  .godk645-erstattet summary span{display:none}
  .godk645-erstattet summary .btn{white-space:nowrap}
}

/* =============================================================================
   v2.20.645 - SØJLEN ER EN DØR TIL SAGERNE (se customer.js: bindTrendCases645)
   Hele kolonnen er klikflade - ikke kun søjlen, ellers rammer ingen de 0,5 timer
   i en lav måned. Valgt søjle holder fokusfarven; de andre dæmpes. */
.customer-trend-bar-group645{cursor:pointer;outline:none}
.customer-trend-hit645{fill:transparent}
.customer-trend-bar-group645:hover .customer-trend-hit645,.customer-trend-bar-group645:focus-visible .customer-trend-hit645{fill:color-mix(in srgb,var(--c-accent) 7%,transparent)}
.customer-trend-bar-group645:focus-visible .customer-trend-hit645{stroke:var(--c-accent);stroke-width:1.5}
.customer-trend-chart:has(.valgt645) .customer-trend-bar-group645:not(.valgt645) .customer-trend-bar{opacity:.38}
.trend-sager645{margin:4px 0 18px;border:1px solid var(--c-line);border-radius:12px;background:var(--c-surface);overflow:hidden}
.trend-sager645-hoved{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:12px 16px;border-bottom:1px solid var(--c-line);background:var(--c-surface-2)}
.trend-sager645-hoved strong{display:block}.trend-sager645-hoved small{color:var(--c-ink-3)}
.trend-sager645-tabel td small{display:block;color:var(--c-ink-3)}
.trend-sager645-tabel td.num-cell,.trend-sager645-tabel th.num-cell{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.trend-sager645-tabel tfoot td{border-top:2px solid var(--c-line-strong)}
.trend-sag645-aaben{cursor:pointer}.trend-sag645-aaben:hover td{background:var(--c-surface-2)}

/* =============================================================================
   v2.20.646 - «MANGLER MATCH» SKUBBER IKKE RÆKKEN

   «mangler match står stadigt så det skubber sig lidt, kan du se hvad jeg mener??»

   Ja: mærkaten stod på sin egen linje UNDER prisen, så en linje uden produktmatch
   var 59 px høj og naboerne 43 (1440 px; 68/68 i 1280, hvor knapperne i forvejen
   står under hinanden). Den står nu på prislinjen, før prisen - og kun dér, hvor
   der er plads til begge: mærkaten er 93 px og prisen op til ca. 86, så under 190 px
   (cellen er 90 i 1440 og 74 i 1280) skjules mærkaten, og prisen selv står i
   advarselsfarven med en prikket streg og den fulde forklaring, når man holder
   musen over. Optællingen ved sektionens overskrift («3 mangler produktmatch»)
   og den foldede-ud række siger det stadig med ord.

   Grænsen er en container-forespørgsel på selve priscellen, ikke på skærmen:
   kolonnens bredde afhænger af tabellen, ikke af vinduet. */
.billing-source-table td.billing-col-price-master .billing-price-master{container-type:inline-size}
.billing-source-table tbody tr[data-raekke630] td.billing-col-price-master .billing-price-master-main>.pill.amber.billing-kort642{display:inline-flex!important;margin-top:0!important;align-self:center!important}
@container (max-width:189px){
  .billing-source-table tbody tr[data-raekke630] td.billing-col-price-master .billing-price-master-main>.pill.amber.billing-kort642{display:none!important}
  .billing-source-table td.billing-col-price-master .billing-uden-match646{color:var(--c-warn);text-decoration:underline dotted;text-decoration-color:color-mix(in srgb,var(--c-warn) 60%,transparent);text-underline-offset:3px;cursor:help}
}

/* =============================================================================
   v2.20.647 - EN FRAVALGT LINJE RÅBER IKKE (se billing.js: stillePris647)

   «hvis der står nej, skal der så stadig stå 0,00 i pris og "mangler"?»
   Nej. Tre tilstande:
     faktureres     - advarslerne er skarpe: «Mangler pris» i opkrævningen, når
                      mængden er over 0 og prisen 0 (samme betingelse som kladden),
                      og en gul kant på rækken, når den har en advarsel
     Nej            - dæmpet, grå kant, pris 0 som «—», ingen gule mærkater
     kun information- som Nej, og uden Ja/Nej: den kan ikke slås til */
.billing-source-table tbody tr.linje647-advarsel>td:first-child{box-shadow:inset 3px 0 0 var(--c-warn)}
.billing-source-table tbody tr.linje647-info>td:first-child{box-shadow:inset 3px 0 0 var(--c-line)}
.billing-source-table tr.billing-not-billable .billing-stille647,.billing-source-table tr.billing-not-billable .billing-price-master-main strong,.billing-source-table tr.billing-not-billable .billing-kundepris-vis641 strong{color:var(--c-ink-3);font-weight:500}
.billing-kun-info647{background:var(--c-surface-2);color:var(--c-ink-3);border:1px solid var(--c-line);white-space:nowrap;cursor:help;max-width:100%;line-height:16px;padding-top:2px;padding-bottom:2px;vertical-align:middle}
/* «Kun info», ikke «Kun information»: kolonnen er 76 px i 1440, og den lange stak ud over Fakturagruppe. Forklaringen staar i title. */
.billing-source-table .billing-mangler-pris647{white-space:nowrap}
.billing-source-table .billing-dobbelt647{color:var(--c-warn);text-decoration:underline dotted;text-decoration-color:color-mix(in srgb,var(--c-warn) 60%,transparent);text-underline-offset:3px;cursor:help}
/* og vaelgeren paa en Nej-linje var lyseroed - samme fejlfarve i mindre format. */
.billing-source-table tr.billing-not-billable .billing-billable-select{background:var(--c-surface-2)}
/* v2.20.649 - med tre valg skal «Info» kunne staa i vaelgeren: med 9 + 22 px polstring og browserens
   egen pil var der 29 px til teksten i 1440 og 16 i 1280, og der stod «Infc». Pilen har sin egen
   plads; polstringen til hoejre er kun luft. */
.billing-source-table td.billing-col-billable .billing-billable-select{padding:3px 4px 3px 7px!important}

/* =============================================================================
   v2.20.650 - KLIPPEKORT (se billing.js: tegnKlippekort650, klippekortIKladde650) */
.klippekort650-tabel td.num-cell,.klippekort650-tabel th.num-cell{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.klippekort650-tabel td small{color:var(--c-ink-3)}
.klippekort650-tom{color:var(--c-ink-3)}
.klippekort650-forbrug{margin:6px 16px 14px}
.klippekort650-forbrug summary{cursor:pointer;font-weight:600;padding:8px 0}
.klippekort650-kladde{border:1px solid var(--c-line);border-radius:12px;background:var(--c-surface-2);margin:0 0 14px;overflow:hidden}
.klippekort650-kladde-hoved{padding:10px 14px;border-bottom:1px solid var(--c-line)}
.klippekort650-kladde-hoved strong{display:block}.klippekort650-kladde-hoved small{color:var(--c-ink-3)}
.klippekort650-sager{display:grid}
.klippekort650-sag{text-transform:none;letter-spacing:normal;font-size:13px;font-weight:400;color:var(--c-ink);margin:0;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px 14px;border-top:1px solid var(--c-line);background:var(--c-surface);cursor:pointer}
.klippekort650-sager .klippekort650-sag:first-child{border-top:0}
.klippekort650-sag span strong{display:block;font-weight:600}.klippekort650-sag span small{color:var(--c-ink-3)}
.klippekort650-sag em{font-style:normal;font-size:12px;color:var(--c-ink-3);white-space:nowrap;font-variant-numeric:tabular-nums}
.klippekort650-sag.valgt650 em{color:var(--c-pos);font-weight:600}
.klippekort650-sag *{text-transform:none!important;letter-spacing:normal!important}
.klippekort650-sag span small,.klippekort650-sag em{font-size:12px!important}.klippekort650-sag span strong{font-size:13px!important}

/* =============================================================================
   v2.20.651 - FAKTURA TIL GODKENDELSE: KOLONNER, DER SORTERER, OG EN MÅNED AD GANGEN
   Kolonnehovedet staar i samme gitter som raekkerne. Den sidste kolonne har en FAST
   bredde: med `auto` fik hovedet (uden knap) en anden fordeling end raekkerne (med
   knap), og «Beløb» stod ikke over beloebene. Under 900 px skifter raekkerne layout,
   og vaelgeren overtager sorteringen. */
.billing-approval-page .home-billing-item,.billing-approval-kolonner651{grid-template-columns:86px minmax(180px,1.5fr) minmax(180px,1fr) minmax(110px,.55fr) 176px}
.billing-approval-kolonner651{display:grid;gap:14px;align-items:center;padding:8px 14px;background:var(--c-surface-2);border-bottom:1px solid var(--c-line)}
.billing-approval-kolonner651 button{border:0;background:none;padding:2px 0;font:inherit;font-size:var(--t-5);font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--c-ink-3);cursor:pointer;text-align:left;display:inline-flex;gap:4px;align-items:center;justify-self:start}
.billing-approval-kolonner651 button:hover,.billing-approval-kolonner651 button.aktiv651{color:var(--c-ink)}
.billing-approval-kolonner651 button[data-sorter651="amount"]{justify-self:end;flex-direction:row-reverse}
.billing-approval-kolonner651 i{font-style:normal;min-width:.8em}
.billing-approval-page .home-billing-review{justify-self:end}
.billing-approval-page .home-billing-list>.home-billing-item:first-child{border-top:0}
@media(max-width:900px){.billing-approval-kolonner651{display:none}.billing-approval-page .home-billing-item{grid-template-columns:70px minmax(160px,1fr) auto}}
@media(max-width:620px){.billing-approval-page .home-billing-item{grid-template-columns:1fr auto}}
/* v2.20.652 - klippekortet under sagsteksten (kladden og e-conomic-forhåndsvisningen) */
.billing-klippekort-tekst652{display:block;margin-top:2px;font-size:12px;font-weight:600;color:var(--c-pos)}
.economic-line-klippekort{display:block;font-weight:600}
/* ==========================================================================================
   v2.20.653 - MIN DAG ER STEDET: Tickets og fakturaer under Min dag
   ========================================================================================== */
/* Prioritet: farve kun dér, hvor den betyder noget */
.tk-prio653{flex:0 0 auto;display:inline-flex;justify-content:center;min-width:52px;padding:2px 6px;border-radius:var(--r-chip);background:var(--c-surface-3);color:var(--c-ink-3);font-size:var(--t-5);font-weight:600;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}
.tk-prio653.p4{background:var(--c-crit-soft);color:var(--c-crit)}
.tk-prio653.p3{background:var(--c-warn-soft);color:var(--c-warn)}
/* Tickets-siden */
@media(min-width:1101px){.tk-strip653{grid-template-columns:repeat(4,minmax(0,1fr))}}
.tk-tabel653{overflow-x:auto}
.tk-tabel653 table{min-width:900px}
.tk-tabel653 td strong{display:block;font-size:13px;font-weight:550}
.tk-tabel653 td small{display:block;margin-top:1px;color:var(--c-ink-3);font-size:11.5px}
.tk-tabel653 td:first-child{max-width:420px}
.tk-tabel653 td:first-child strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tk-tabel653 th.num,.tk-tabel653 td.num{text-align:right;font-family:inherit;font-variant-numeric:tabular-nums;white-space:nowrap}
.tk-tabel653 th button{border:0;background:none;padding:0;font:inherit;color:inherit;cursor:pointer;display:inline-flex;gap:4px;align-items:center;text-transform:inherit;letter-spacing:inherit}
.tk-tabel653 th.num button{flex-direction:row-reverse}
.tk-tabel653 th button:hover,.tk-tabel653 th button.aktiv651{color:var(--c-ink)}
.tk-tabel653 th i{font-style:normal;min-width:.8em}
.tk-uden653{color:var(--c-warn);font-size:12px}
.tk-antal653{margin-left:auto;font-size:12px}
.tickets653 .home-toolbar select{max-width:220px}
.tk-kunde653{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:10px 0 14px;padding:9px 12px;border:1px solid var(--c-line);border-radius:var(--r-control);background:var(--c-surface-2)}
.tk-kunde653>span{font-size:var(--t-5);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--c-ink-3)}
.tk-kunde653 small{color:var(--c-ink-3);font-size:12px}
.tk-kunde653 .btn{margin-left:auto}
/* ==========================================================================================
   v2.20.655 - MIN DAG ER ÉN SKÆRM MED KASSER
   Seks kasser fylder skærmen og ruller hver for sig. Højden måles i app.js fra der, hvor
   gitteret starter, og deles i to rækker (tre under 1100 px) - aldrig under 220 px.
   ========================================================================================== */
.md655{display:flex;flex-direction:column;gap:12px;min-width:0}
.md-hoved655{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.md-hoved655 h2{margin:0;font-size:22px;font-weight:600;letter-spacing:-.03em}
.md-hoved655 p{margin:2px 0 0;display:flex;gap:10px;align-items:center;font-size:12.5px;color:var(--c-ink-3)}
.md-haster655,.md-ro655{display:inline-flex;align-items:center;gap:5px;padding:1px 8px;border-radius:var(--r-chip);font-size:12px;font-weight:600}
.md-haster655{background:var(--c-crit-soft);color:var(--c-crit)}
.md-ro655{background:var(--c-pos-soft,var(--c-surface-3));color:var(--c-pos)}
.md-handlinger655{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.md-gitter655{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:var(--md-h655,max(300px,calc((100vh - 230px) / 2)));gap:12px;min-width:0}
.md-kasse655{position:relative;display:flex;flex-direction:column;min-width:0;min-height:0;border:1px solid var(--c-line);border-radius:var(--r-container);background:var(--c-surface);box-shadow:var(--shadow);overflow:hidden}
.md-kasse655:before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--c-line-strong)}
.md-kasse655.crit:before{background:var(--c-crit)}
.md-kasse655.warn:before{background:var(--c-warn)}
.md-kasse655.ok:before{background:var(--c-pos)}
.md-kasse655>header{display:flex;flex-direction:column;gap:6px;padding:11px 10px 6px 14px}
.md-titel655{display:flex;align-items:center;gap:7px;min-width:0}
.md-titel655 h3{flex:1 1 auto;margin:0;font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.md-prik655{width:7px;height:7px;border-radius:50%;background:var(--c-line-strong);flex:0 0 auto}
.md-kasse655.crit .md-prik655{background:var(--c-crit)}.md-kasse655.warn .md-prik655{background:var(--c-warn)}.md-kasse655.ok .md-prik655{background:var(--c-pos)}
.md-tal655{display:flex;align-items:baseline;gap:9px;min-width:0}
.md-tal655 strong{font-size:22px;line-height:1;font-weight:600;letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.md-tal655 small{flex:1 1 auto;min-width:0;font-size:11.5px;color:var(--c-ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.md-udvid655{width:26px;height:26px;border:1px solid var(--c-line);border-radius:var(--r-control);background:var(--c-surface);color:var(--c-ink-3);cursor:pointer;font-size:13px;line-height:1}
.md-udvid655:hover{color:var(--c-accent-ink);border-color:var(--c-accent)}
.md-vaelg655{display:flex;align-items:center;gap:8px;padding:2px 12px 8px 14px;border-bottom:1px solid var(--c-line);min-width:0}
.md-faner655{display:flex;gap:4px;flex:1 1 auto;min-width:0;overflow-x:auto;scrollbar-width:none}
.md-faner655::-webkit-scrollbar{display:none}
.md-faner655.flere655{-webkit-mask-image:linear-gradient(90deg,black 82%,transparent);mask-image:linear-gradient(90deg,black 82%,transparent)}
.md-faner655 button{flex:0 0 auto;border:1px solid transparent;background:transparent;border-radius:var(--r-chip);padding:3px 8px;font:inherit;font-size:12px;color:var(--c-ink-3);cursor:pointer;white-space:nowrap}
.md-faner655 button i{font-style:normal;font-variant-numeric:tabular-nums;color:var(--c-ink-3);margin-left:2px}
.md-faner655 button:hover{color:var(--c-ink)}
.md-faner655 button.active{background:var(--c-accent-soft);color:var(--c-accent-ink);border-color:color-mix(in srgb,var(--c-accent) 30%,transparent)}
.md-faner655 button.active i{color:inherit}
.md-soeg655{display:none;flex:1 1 auto;min-width:0;padding:4px 8px!important;font-size:12px!important;border:1px solid var(--c-line-control)!important;border-radius:var(--r-control)!important;background:var(--c-surface)!important}
.md-vaelg655.soeger .md-faner655{display:none}
.md-vaelg655.soeger .md-soeg655{display:block}
.md-lup655{flex:0 0 auto;width:26px;height:26px;border:1px solid transparent;border-radius:var(--r-control);background:transparent;color:var(--c-ink-3);cursor:pointer;font-size:14px;line-height:1}
.md-lup655:hover{color:var(--c-accent-ink);border-color:var(--c-line)}
.md-vaelg655.soeger .md-lup655{color:var(--c-accent-ink)}
.md-krop655{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain}
.md-gruppe655{position:sticky;top:0;z-index:1;padding:5px 14px;background:var(--c-surface-2);border-bottom:1px solid var(--c-line);font-size:var(--t-5);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--c-ink-3)}
.md-raekke655{position:relative;display:flex;align-items:center;gap:10px;padding:7px 12px 7px 14px;border-bottom:1px solid var(--c-line);cursor:pointer;min-width:0}
.md-raekke655:hover,.md-raekke655:focus-visible{background:var(--c-surface-2);outline:0}
.md-raekke655.crit{box-shadow:inset 3px 0 0 var(--c-crit)}
.md-raekke655.warn{box-shadow:inset 3px 0 0 var(--c-warn)}
.md-hvad655{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:1px}
.md-hvad655 strong{font-size:13px;font-weight:550;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.md-hvad655 small{font-size:11.5px;color:var(--c-ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.md-hvad655 small .home-signal{font-size:var(--t-5);padding:0 4px;vertical-align:1px}
.md-hoejre655{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.md-hoejre655 strong{font-size:12.5px;font-weight:600}
.md-hoejre655 small{font-size:11px;color:var(--c-ink-3)}
.md-hoejre655.forbi strong{color:var(--c-crit)}
.md-kurve655 small{display:none}
.md-kurve655 .cp-kurve654{display:block;color:var(--c-warn)}
.md-raekke655.crit .md-kurve655 .cp-kurve654{color:var(--c-crit)}
.cp-kurve654 path{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}
.cp-kurve654 circle{fill:currentColor}
.md-kal655{flex:0 0 34px;display:flex;flex-direction:column;align-items:center;justify-content:center;height:34px;border:1px solid var(--c-line);border-radius:var(--r-control);background:var(--c-surface-2);line-height:1}
.md-kal655 b{font-size:13px;font-weight:600;font-variant-numeric:tabular-nums}
.md-kal655 i{margin-top:2px;font-style:normal;font-size:var(--t-5);letter-spacing:.06em;text-transform:uppercase;color:var(--c-ink-3)}
.md-kal655.tom{visibility:hidden}
.md-raekke655.crit .md-kal655{border-color:color-mix(in srgb,var(--c-crit) 45%,transparent);background:var(--c-crit-soft)}
.md-raekke655.crit .md-kal655 b{color:var(--c-crit)}
.md-badge655{flex:0 0 auto;min-width:26px;padding:2px 6px;border-radius:var(--r-chip);background:var(--c-surface-3);color:var(--c-ink-3);font-size:11.5px;font-weight:600;text-align:center;font-variant-numeric:tabular-nums}
.md-badge655.warn{background:var(--c-warn-soft);color:var(--c-warn)}
.md-bar655{display:block;height:4px;margin-top:4px;border-radius:2px;background:var(--c-surface-3);overflow:hidden}
.md-bar655 i{display:block;height:100%;background:var(--c-accent)}
.md-udfoert655{flex:0 0 auto;width:26px;height:26px;border:1px solid var(--c-line-control);border-radius:50%;background:var(--c-surface);color:var(--c-ink-3);cursor:pointer;font-size:12px}
.md-udfoert655:hover{border-color:var(--c-pos);color:var(--c-pos);background:var(--c-surface-2)}
.md-tomt655{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;height:100%;min-height:120px;padding:20px;text-align:center;font-size:12.5px;color:var(--c-ink-3)}
.md-tomt655 span{width:28px;height:28px;display:grid;place-items:center;border-radius:50%;background:var(--c-surface-3);color:var(--c-pos);font-weight:700}
.md-mere655{padding:8px 14px;font-size:11.5px;color:var(--c-ink-3);background:var(--c-surface-2)}
.md-kasse655>footer{border-top:1px solid var(--c-line);background:var(--c-surface-2)}
.md-side655{display:block;width:100%;border:0;background:transparent;padding:7px 14px;text-align:left;font:inherit;font-size:12px;color:var(--c-accent-ink);cursor:pointer}
.md-side655:hover{text-decoration:underline}
/* Foldet ud: kassen tager hele fladen, de andre venter. */
.md655.fokus .md-kasse655:not(.aktiv){display:none}
.md655.fokus .md-kasse655.aktiv{grid-column:1/-1;grid-row:1/span 2}
@media(max-width:1100px){.md-gitter655{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:var(--md-h655,340px)}}
@media(max-width:760px){.md-gitter655{grid-template-columns:1fr;grid-auto-rows:auto}.md-kasse655{max-height:440px}.md-krop655{max-height:330px}.md655.fokus .md-kasse655.aktiv{max-height:none}.md655.fokus .md-kasse655.aktiv .md-krop655{max-height:none}}
/* ==========================================================================================
   v2.20.656 - «MANGLER KUNDE»: integrationernes kontrolkøer som en kasse på Min dag
   Med syv kasser: fire kolonner på en bred skærm (Faktura til godkendelse står i to rækker),
   ellers tre kolonner og «Mangler kunde» som en bred række nederst.
   ========================================================================================== */
.md-kilde656{flex:0 0 auto;min-width:0;padding:2px 6px;border-radius:var(--r-chip);background:var(--c-surface-3);color:var(--c-ink-2);font-size:var(--t-5);font-weight:600;letter-spacing:.04em;text-align:center;white-space:nowrap}
.md-map656{flex:0 0 auto;display:flex;gap:6px;align-items:center}
.md-map656 .btn{white-space:nowrap}
.md-forslag656{border-color:color-mix(in srgb,var(--c-pos) 45%,transparent)!important;color:var(--c-pos)!important}
.md-forslagtekst656{font-weight:600;color:var(--c-pos)}
.md-vaelg656{font-size:12px;color:var(--c-accent-ink);white-space:nowrap}
.md-raekke655:hover .md-vaelg656{text-decoration:underline}
.map-modal656{display:flex;flex-direction:column;gap:10px;min-width:min(560px,86vw)}
.map-modal656 h2{margin:0}
.map-modal656 p{margin:0}
.map-kilde656{display:flex;align-items:center;gap:8px;font-size:14px}
.map-liste656{display:flex;flex-direction:column;max-height:min(46vh,380px);overflow-y:auto;border:1px solid var(--c-line);border-radius:var(--r-control)}
.map-liste656>*{flex:0 0 auto}
.map-kunde656{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:1px;padding:8px 12px;border:0;border-bottom:1px solid var(--c-line);background:var(--c-surface);text-align:left;font:inherit;cursor:pointer}
.map-kunde656:last-child{border-bottom:0}
.map-kunde656:hover,.map-kunde656:focus-visible{background:var(--c-surface-2);outline:0}
.map-kunde656 strong{font-size:13px;font-weight:550}
.map-kunde656 small{font-size:11.5px;color:var(--c-ink-3)}
.map-kunde656 i{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-style:normal;font-size:var(--t-5);font-weight:600;color:var(--c-pos)}
.map-kunde656.forslag{background:color-mix(in srgb,var(--c-pos) 7%,var(--c-surface))}
.map-kunde656.kobler{opacity:.6}
.map-ingen656{padding:16px 12px;font-size:12.5px;color:var(--c-ink-3)}
.map-tip656{font-size:12px;color:var(--c-ink-3)}
@media(max-width:760px){.md-vaelg656{display:none}}
/* ==========================================================================================
   v2.20.656 - «FÅ DET NU TIL AT SE LÆKKERT UD»
   Samme seks (syv) kasser, nyt udtryk - kun husets toner, blandet:
   · en hilsen med pulsen for dagen som små piller, der folder den kasse ud, de handler om
   · hver kasse har sit tegn i en blød flise og en måler under tallet (hvad tallet består af)
   · hovedet får et svagt skær af kassens tone; kanten øverst er væk
   · fanerne er en segmenteret knap; rækkerne har initialer i en farvet cirkel
   · kalenderdatoen ligner en kalender; rullebjælkerne er tynde
   ========================================================================================== */
.md655{--md-skygge657:0 1px 2px color-mix(in srgb,var(--c-ink) 6%,transparent),0 10px 28px -16px color-mix(in srgb,var(--c-ink) 28%,transparent)}
.md-hoved655{align-items:flex-end;padding:2px 2px 2px}
.md-dato657{display:block;font-size:11.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--c-ink-3)}
.md-hilsen657 h2{margin:2px 0 9px;font-size:27px;font-weight:650;letter-spacing:-.035em}
.md-puls657{display:flex!important;flex-wrap:wrap;gap:6px!important;margin:0!important}
.md-puls657>*{display:inline-flex;align-items:center;gap:6px;padding:4px 11px;border:1px solid var(--c-line);border-radius:999px;background:var(--c-surface);font:inherit;font-size:12.5px!important;font-weight:450!important;color:var(--c-ink-2)!important;box-shadow:0 1px 1px color-mix(in srgb,var(--c-ink) 4%,transparent)}
.md-puls657>button{cursor:pointer;transition:border-color .15s,background .15s}
.md-puls657>button:hover{border-color:var(--c-accent);background:color-mix(in srgb,var(--c-accent) 6%,var(--c-surface))}
.md-puls657 b{font-weight:650;color:var(--c-ink);font-variant-numeric:tabular-nums}
.md-puls657 .md-haster655{border-color:transparent;background:var(--c-crit-soft);color:var(--c-crit)!important;font-weight:600!important}
.md-puls657 .md-ro655{border-color:transparent;background:var(--c-pos-soft);color:var(--c-pos)!important;font-weight:600!important}
.md-haster655>span,.md-ro655>span{width:7px;height:7px;border-radius:50%;background:currentColor}
.md-haster655>span{animation:md-puls657 1.8s ease-out infinite}
@keyframes md-puls657{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--c-crit) 55%,transparent)}70%{box-shadow:0 0 0 7px transparent}100%{box-shadow:0 0 0 0 transparent}}
.md-mrr657{background:transparent!important;border-style:dashed!important}
/* Kassen */
.md-kasse655{--tone:var(--c-accent);border-radius:14px;border-color:color-mix(in srgb,var(--c-line) 85%,transparent);box-shadow:var(--md-skygge657,0 1px 2px transparent);transition:box-shadow .2s ease}
.md-kasse655.crit{--tone:var(--c-crit)}.md-kasse655.warn{--tone:var(--c-warn)}.md-kasse655.ok{--tone:var(--c-pos)}
.md-kasse655:hover{box-shadow:0 1px 2px color-mix(in srgb,var(--c-ink) 8%,transparent),0 16px 36px -18px color-mix(in srgb,var(--c-ink) 36%,transparent)}
.md-kasse655:before{display:none}
.md-kasse655>header{gap:7px;padding:12px 12px 9px 14px;background:linear-gradient(180deg,color-mix(in srgb,var(--tone,var(--c-accent)) 8%,var(--c-surface)) 0%,var(--c-surface) 100%)}
.md-titel655{gap:9px}
.md-titel655 h3{font-size:14px;letter-spacing:-.01em}
.md-ikon657{flex:0 0 28px;height:28px;display:grid;place-items:center;border-radius:9px;background:color-mix(in srgb,var(--tone,var(--c-accent)) 15%,var(--c-surface));color:var(--tone,var(--c-accent));font-size:14px;font-weight:700;line-height:1}
.md-udvid655{border-color:transparent;background:transparent}
.md-kasse655:hover .md-udvid655{border-color:var(--c-line);background:var(--c-surface)}
.md-tal655 strong{font-size:28px;font-weight:650;letter-spacing:-.045em}
.md-tal655 small{font-size:12px}
.md-maaler657{display:flex;gap:2px;height:5px;margin-top:1px;border-radius:3px;overflow:hidden;background:var(--c-surface-3)}
.md-maaler657 i{display:block;min-width:4px;flex-basis:0;transition:flex-grow .4s ease}
.md-maaler657 .crit{background:var(--c-crit)}.md-maaler657 .warn{background:var(--c-warn)}.md-maaler657 .warn2{background:color-mix(in srgb,var(--c-warn) 50%,var(--c-surface))}
.md-maaler657 .accent{background:var(--c-accent)}.md-maaler657 .pos{background:var(--c-pos)}.md-maaler657 .rolig{background:var(--c-line-strong)}
.md-maaler657.tom{opacity:.6}
/* Faner som en segmenteret knap */
.md-vaelg655{padding:4px 10px 9px 14px;border-bottom-color:color-mix(in srgb,var(--c-line) 70%,transparent)}
.md-faner655{flex:0 1 auto;gap:2px;padding:2px;border-radius:9px;background:var(--c-surface-2)}
.md-faner655 button{padding:3px 9px;border:0;border-radius:7px;font-weight:500}
.md-faner655 button.active{background:var(--c-surface);color:var(--c-ink);border-color:transparent;box-shadow:0 1px 2px color-mix(in srgb,var(--c-ink) 14%,transparent)}
.md-faner655 button.active i{color:var(--tone,var(--c-accent))}
.md-lup655{margin-left:auto}
/* Rækkerne */
.md-krop655{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--c-ink) 18%,transparent) transparent}
.md-krop655::-webkit-scrollbar{width:8px}.md-krop655::-webkit-scrollbar-thumb{border-radius:8px;border:2px solid var(--c-surface);background:color-mix(in srgb,var(--c-ink) 18%,transparent)}
.md-raekke655{gap:11px;padding:8px 12px 8px 14px;border-bottom-color:color-mix(in srgb,var(--c-line) 60%,transparent);transition:background .12s ease}
.md-raekke655:hover,.md-raekke655:focus-visible{background:color-mix(in srgb,var(--c-accent) 5%,var(--c-surface))}
.md-raekke655:last-child{border-bottom:0}
.md-gruppe655{padding:6px 14px 5px;background:color-mix(in srgb,var(--c-surface-2) 90%,transparent);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);color:var(--c-ink-3)}
.md-avatar657{position:relative;flex:0 0 32px;height:32px;display:grid;place-items:center;border-radius:50%;font-size:11.5px;font-weight:700;letter-spacing:.02em}
.md-avatar657.v0{background:color-mix(in srgb,var(--c-accent) 16%,var(--c-surface));color:var(--c-accent-ink)}
.md-avatar657.v1{background:color-mix(in srgb,var(--c-pos) 16%,var(--c-surface));color:var(--c-pos)}
.md-avatar657.v2{background:color-mix(in srgb,var(--c-warn) 16%,var(--c-surface));color:var(--c-warn)}
.md-avatar657.v3{background:color-mix(in srgb,var(--c-accent) 30%,var(--c-surface));color:var(--c-accent-ink)}
.md-avatar657.v4{background:color-mix(in srgb,var(--c-ink) 9%,var(--c-surface));color:var(--c-ink-2)}
.md-avatar657.v5{background:color-mix(in srgb,var(--c-pos) 30%,var(--c-surface));color:var(--c-pos)}
.md-avatar657 b{position:absolute;top:-4px;right:-6px;min-width:17px;height:17px;padding:0 4px;display:grid;place-items:center;border:2px solid var(--c-surface);border-radius:9px;background:var(--c-warn);color:var(--c-surface);font-size:var(--t-5);font-weight:700;line-height:1}
/* Kalenderdatoen ligner en kalender */
.md-kal655{flex:0 0 36px;height:38px;flex-direction:column-reverse;justify-content:flex-end;overflow:hidden;padding:0;border-radius:8px;background:var(--c-surface)}
.md-kal655 i{width:100%;margin:0;padding:2px 0 1px;background:var(--c-surface-3);text-align:center;font-weight:600}
.md-kal655 b{padding-top:3px;font-size:14px}
.md-raekke655.crit .md-kal655{border-color:color-mix(in srgb,var(--c-crit) 40%,transparent);background:var(--c-surface)}
.md-raekke655.crit .md-kal655 i{background:var(--c-crit);color:var(--c-surface)}
.md-raekke655.warn .md-kal655 i{background:var(--c-warn-soft);color:var(--c-warn)}
.md-raekke655.crit,.md-raekke655.warn{box-shadow:none}
.md-tomt655 span{width:42px;height:42px;background:var(--c-pos-soft);font-size:18px}
.md-kasse655>footer{border-top-color:color-mix(in srgb,var(--c-line) 70%,transparent);background:transparent}
.md-side655{padding:8px 14px;font-weight:500}
/* Foldet ud: kassen træder frem */
.md655.fokus .md-kasse655.aktiv{box-shadow:0 2px 4px color-mix(in srgb,var(--c-ink) 8%,transparent),0 24px 60px -24px color-mix(in srgb,var(--c-ink) 45%,transparent);animation:md-frem657 .22s ease-out}
@keyframes md-frem657{from{opacity:.4;transform:scale(.985)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.md-haster655>span,.md655.fokus .md-kasse655.aktiv{animation:none}.md-maaler657 i{transition:none}}
/* Hovederne er lave, så listerne får pladsen: tegn, navn og linje til venstre, tallet til højre,
   måleren under. Hilsenen og pulsen står på én linje. */
.md-hilsen657{display:flex;align-items:flex-end;gap:18px;flex-wrap:wrap;min-width:0}
.md-hilsen657 h2{margin:1px 0 0}
.md-puls657{padding-bottom:3px}
.md-kasse655>header{gap:8px;padding:11px 10px 9px 12px;background:linear-gradient(180deg,color-mix(in srgb,var(--tone,var(--c-accent)) 5%,var(--c-surface)) 0%,var(--c-surface) 100%)}
.md-titel655{gap:10px;align-items:center}
.md-ikon657{flex-basis:32px;height:32px;border-radius:10px;font-size:15px}
.md-navn657{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:1px}
.md-navn657 h3{margin:0;font-size:14px;font-weight:600;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.md-navn657 small{font-size:11.5px;color:var(--c-ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.md-stort657{flex:0 0 auto;font-size:26px;line-height:1;font-weight:650;letter-spacing:-.045em;font-variant-numeric:tabular-nums;color:var(--c-ink)}
.md-kasse655.crit .md-stort657{color:var(--c-crit)}
.md-maaler657{height:4px}
/* Kasserne går helt ned: Min dag giver selv sin bundmargen. */
#content:has(>.md655){padding-bottom:14px}
@media(min-width:1101px){.md-hoved655{flex-wrap:nowrap}.md-hilsen657{flex:1 1 auto}.md-handlinger655{flex:0 0 auto}}
@media(min-width:1101px) and (max-width:1599px){.md-mrr657{display:none!important}}
@media(max-width:760px){.md-hilsen657{gap:8px}.md-hilsen657 h2{font-size:23px}}
/* ==========================================================================================
   v2.20.657 - DEN SIDSTE OMGANG: Start her, rolige tal, én række, én kundekasse, liv
   ========================================================================================== */
/* Seks kasser i 3×2; er der fem (ingen «Mangler kunde»), står Faktura til godkendelse i to rækker. */
@media(min-width:1101px){.md-gitter655.fem657>[data-kasse655="faktura"]{grid-row:span 2}}
/* 1. Start her */
.md-start657{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;min-width:0}
.md-kort657{--tone:var(--c-accent);position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"top top" "titel knap" "linje knap";column-gap:12px;row-gap:3px;align-items:center;min-width:0;padding:11px 14px 11px 18px;border:1px solid color-mix(in srgb,var(--tone,var(--c-accent)) 22%,var(--c-line));border-radius:14px;background:linear-gradient(120deg,color-mix(in srgb,var(--tone,var(--c-accent)) 9%,var(--c-surface)) 0%,var(--c-surface) 65%);box-shadow:0 1px 2px color-mix(in srgb,var(--c-ink) 6%,transparent),0 10px 26px -18px color-mix(in srgb,var(--tone,var(--c-accent)) 60%,transparent);font:inherit;text-align:left;color:var(--c-ink);cursor:pointer;overflow:hidden;transition:transform .15s ease,box-shadow .15s ease}
.md-kort657.crit{--tone:var(--c-crit)}.md-kort657.warn{--tone:var(--c-warn)}
.md-kort657:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--tone,var(--c-accent))}
.md-kort657:hover,.md-kort657:focus-visible{transform:translateY(-1px);outline:0;box-shadow:0 2px 4px color-mix(in srgb,var(--c-ink) 8%,transparent),0 16px 32px -18px color-mix(in srgb,var(--tone,var(--c-accent)) 75%,transparent)}
.md-kort-top657{grid-area:top;display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0}
.md-kort-etiket657{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--tone,var(--c-accent))}
.md-kort-etiket657 i{width:6px;height:6px;border-radius:50%;background:currentColor}
.md-kort-naar657{font-size:12px;font-weight:600;color:var(--c-ink-2);white-space:nowrap;font-variant-numeric:tabular-nums}
.md-kort-naar657.forbi{color:var(--c-crit)}
.md-kort657>strong{grid-area:titel;min-width:0;font-size:15px;font-weight:650;letter-spacing:-.015em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.md-kort657>small{grid-area:linje;min-width:0;font-size:12px;color:var(--c-ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.md-kort657>small b{font-weight:600;color:var(--c-ink-2)}
.md-kort-knap657{grid-area:knap;align-self:center;padding:6px 12px;border-radius:999px;border:1px solid color-mix(in srgb,var(--tone,var(--c-accent)) 40%,var(--c-line));background:var(--c-surface);font-size:12.5px;font-weight:600;color:var(--c-ink);white-space:nowrap}
.md-kort657:first-child .md-kort-knap657{border-color:transparent;background:var(--c-accent);color:var(--c-on-accent)}
.md-kort657:hover .md-kort-knap657{border-color:var(--tone,var(--c-accent))}
/* 2. Rolige tal - farven sidder i mærket */
.md-kasse655.crit .md-stort657{color:var(--c-ink)}
.md-maerke657{display:inline-block;margin-right:7px;padding:0 6px;border-radius:var(--r-chip);font-size:11px;font-weight:650;line-height:17px;vertical-align:1px}
.md-maerke657.crit{background:var(--c-crit-soft);color:var(--c-crit)}
.md-maerke657.warn{background:var(--c-warn-soft);color:var(--c-warn)}
.md-maaler657 .glemt{background:color-mix(in srgb,var(--c-line-strong) 45%,var(--c-surface))}
/* 3. Én række-skabelon: 36 px tegn · to linjer · værdi med forklaring */
.md-raekke655{min-height:54px}
.md-avatar657{flex-basis:36px;height:36px;font-size:12px}
.md-anker657{flex:0 0 36px;height:36px;display:grid;place-items:center;border-radius:10px;background:var(--c-surface-3);color:var(--c-ink-3);font-size:13px;font-weight:800;letter-spacing:-.02em;line-height:1}
.md-anker657.prio4{background:var(--c-crit-soft);color:var(--c-crit)}
.md-anker657.prio3{background:var(--c-warn-soft);color:var(--c-warn)}
.md-anker657.glemt657{background:transparent;border:1px dashed var(--c-line-strong);color:var(--c-ink-3)}
.md-anker657.kilde{background:color-mix(in srgb,var(--c-accent) 13%,var(--c-surface));color:var(--c-accent-ink);font-size:11.5px;letter-spacing:.04em}
.md-kildenavn657{font-weight:600;color:var(--c-ink-2)}
.md-hoejre655{min-width:76px}
.md-hoejre655 small{white-space:nowrap}
/* 4. Kundekassens historie */
.md-historie657{display:flex;align-items:flex-end;gap:14px;padding:9px 14px 11px;border-bottom:1px solid color-mix(in srgb,var(--c-line) 70%,transparent);min-width:0}
.md-historie657>div{flex:0 0 auto;display:flex;flex-direction:column;gap:1px;min-width:0}
.md-historie657 span{font-size:11px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--c-ink-3)}
.md-historie657 strong{font-size:19px;font-weight:650;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.md-historie657 small{font-size:11.5px;color:var(--c-ink-3);white-space:nowrap}
.md-historie657 small b.op{color:var(--c-pos)}.md-historie657 small b.ned{color:var(--c-crit)}
.md-historie657 svg{flex:1 1 auto;min-width:90px;height:44px}
.md-historie657 rect{fill:color-mix(in srgb,var(--c-accent) 32%,var(--c-surface))}
.md-historie657 rect.nu{fill:var(--c-accent)}
.md-historie657.tom{flex-direction:column;align-items:flex-start}
/* 5. Liv: ringen, skelettet, indgangen, «Alt klaret» */
.md-ring657{display:flex;align-items:center;gap:8px;padding:3px 12px 3px 4px;border:1px solid var(--c-line);border-radius:999px;background:var(--c-surface);font-size:12.5px;color:var(--c-ink-2);white-space:nowrap}
.md-ring657 svg{transform:rotate(-90deg)}
.md-ring657 circle{fill:none;stroke-width:4}
.md-ring657 .spor{stroke:var(--c-surface-3)}
.md-ring657 .fyld{stroke:var(--c-pos);stroke-linecap:round;transition:stroke-dashoffset .9s cubic-bezier(.2,.7,.2,1)}
.md-ring657 b{font-size:14px;font-weight:700;color:var(--c-ink);font-variant-numeric:tabular-nums}
.md-ring657 small{display:block;font-size:11px;color:var(--c-ink-3);line-height:1.1}
.md-ring657>div{line-height:1.2}
.sk657{display:block;border-radius:6px;background:linear-gradient(90deg,var(--c-surface-3) 25%,color-mix(in srgb,var(--c-surface-3) 45%,var(--c-surface)) 50%,var(--c-surface-3) 75%);background-size:200% 100%;animation:sk657 1.2s linear infinite}
@keyframes sk657{from{background-position:200% 0}to{background-position:-200% 0}}
.skelet657 .md-gitter655{grid-auto-rows:280px}
.sk-kort657{display:flex;flex-direction:column;gap:7px;cursor:default}
.sk-kasse657 .md-raekke655{cursor:default}
.md655.ind657 .md-kasse655,.md655.ind657 .md-kort657{animation:md-ind657 .45s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(var(--i,0) * 50ms)}
.md655.ind657 .md-kort657{animation-delay:calc(var(--i,0) * 70ms)}
@keyframes md-ind657{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.md-kasse655.klaret657{--tone:var(--c-pos)}
.md-tomt655.klaret{gap:4px;color:var(--c-ink-3)}
.md-tomt655.klaret strong{font-size:14px;font-weight:650;color:var(--c-pos)}
.md-tomt655.klaret span{width:46px;height:46px;margin-bottom:4px;font-size:20px;box-shadow:0 0 0 6px color-mix(in srgb,var(--c-pos) 10%,transparent),0 0 28px color-mix(in srgb,var(--c-pos) 35%,transparent)}
@media(max-width:1100px){.md-start657{grid-template-columns:1fr}.md-start657>.md-kort657:nth-child(n+2){display:none}}
@media(max-width:760px){.md-start657>.md-kort657:nth-child(n+2){display:grid}.md-ring657{order:3}}
@media(prefers-reduced-motion:reduce){.sk657,.md655.ind657 .md-kasse655,.md655.ind657 .md-kort657{animation:none}.md-kort657{transition:none}.md-ring657 .fyld{transition:none}}
/* Lave kasser (korte skærme): kundekassens historie bliver én linje, så kunderne kan ses. */
.md-gitter655.lav657 .md-historie657{padding:6px 14px 7px;gap:10px}
.md-gitter655.lav657 .md-historie657 strong{font-size:15px}
.md-gitter655.lav657 .md-historie657 span{display:none}
.md-gitter655.lav657 .md-historie657>div{flex-direction:row;align-items:baseline;gap:8px}
.md-gitter655.lav657 .md-historie657 svg{height:26px}
/* Historiens tekst giver plads til søjlerne; på mellemstore skærme bliver ringen kompakt, så hilsen,
   ring og puls står på én linje. */
.md-historie657>div{flex:0 1 auto}
.md-historie657 small{overflow:hidden;text-overflow:ellipsis}
.md-historie657 svg{flex:1 0 110px}
@media(min-width:1101px) and (max-width:1599px){.md-ring657 small{display:none}.md-ring657{padding-right:10px}.md-hilsen657{gap:12px}}

/* v2.20.659 - eksempeldata i forhåndsvisningen (kundekortets portalsektion) */
.eksempel-boks659:empty{display:none}
.eksempel-boks659{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);flex-wrap:wrap;margin:0 0 var(--s-4);padding:var(--s-3) var(--s-4);border:1px dashed var(--c-line-strong);border-radius:var(--r-container);background:var(--c-surface-2)}
.eksempel-tekst659{display:grid;gap:4px;min-width:0;flex:1 1 320px}
.eksempel-tekst659 strong{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.eksempel-tekst659 small{color:var(--c-ink-2);line-height:1.45}
.eksempel-chip659{padding:1px 9px;border-radius:var(--r-chip);font-size:var(--t-tag-size);font-weight:var(--t-tag-weight);letter-spacing:var(--t-tag-track)}
.eksempel-chip659.til{background:var(--c-pos-soft);color:var(--c-pos)}
.eksempel-chip659.slukket{background:var(--c-surface-3);color:var(--c-ink-2)}
.eksempel-valg659{display:flex;align-items:flex-end;gap:var(--s-3);flex-wrap:wrap}
.eksempel-valg659 label{display:grid;gap:4px;font-size:var(--t-meta-size);color:var(--c-ink-2)}

/* v2.20.661 - noder, der er taget ud af kundens jobopgørelse */
.tsm-undtagne661{display:grid;gap:6px;margin-top:var(--s-3);padding:var(--s-3);border:1px dashed var(--c-line-strong);border-radius:var(--r-container);background:var(--c-surface-2)}
.tsm-undtagne661>div{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);flex-wrap:wrap}

/* v2.20.662 - formularen til den generelle demo */
.eksempel-boks659.med-form662{display:grid;grid-template-columns:1fr;align-items:start}
.eksempel-form662{display:grid;gap:var(--s-2)}
.eksempel-tal662{display:contents}
.eksempel-tal662[hidden]{display:none}
.eksempel-form662 input,.eksempel-form662 select{min-width:0}
.eksempel-form662 input[type=number]{width:120px}

/* v2.20.666 - Mønstre i sager: kassen på Min dag og prøvekørslens side */
.mo-alvor666{display:inline-flex;padding:1px 6px;border-radius:var(--r-chip);font-size:var(--t-5);font-weight:600;letter-spacing:.06em;text-transform:uppercase;background:var(--c-surface-3);color:var(--c-ink-3);white-space:nowrap}
.mo-alvor666.crit{background:var(--c-crit-soft);color:var(--c-crit)}
.mo-alvor666.warn{background:var(--c-warn-soft);color:var(--c-warn)}
.mo-alvor666.info{background:var(--c-accent-soft);color:var(--c-accent-ink)}
.mo-strip666{grid-template-columns:repeat(5,minmax(0,1fr))}
.mo-graenser666{border:1px solid var(--c-line);border-radius:var(--r-container);background:var(--c-surface);padding:8px 12px}
.mo-graenser666 summary{cursor:pointer;font-size:12.5px;color:var(--c-ink-2)}
.mo-graenser666 summary b{color:var(--c-warn)}
.mo-graense-gitter666{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:var(--s-2) var(--s-3);margin-top:var(--s-3)}
.mo-graense-gitter666 label{font-weight:500;color:var(--c-ink-3)}
.mo-graense-gitter666 label.rettet{color:var(--c-warn)}
.mo-graense-gitter666 label.rettet input{border-color:var(--c-warn)}
.mo-graense-knapper666{grid-column:1 / -1;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.mo-alarmer666{display:flex;align-items:center;gap:6px;font-weight:500;color:var(--c-ink-2)}
.mo-alarmer666 input{width:auto;margin:0}
.mo-alarmer666 small{color:var(--c-ink-3)}
.mo-kilder666{margin:var(--s-2) 0 0;font-size:12px}
.mo-liste666{display:grid;gap:8px}
.mo-klynge666{border:1px solid var(--c-line);border-radius:var(--r-container);background:var(--c-surface);box-shadow:var(--shadow);min-width:0}
.mo-klynge666.aegte{border-left:3px solid var(--c-pos)}
.mo-klynge666.stoej{border-left:3px solid var(--c-line-strong)}
.mo-klynge666.stoej .mo-navn666 strong{color:var(--c-ink-3)}
.mo-hoved666{display:grid;grid-template-columns:minmax(0,1fr) 190px 170px auto;gap:var(--s-3);align-items:center;padding:10px 12px;cursor:pointer}
.mo-hoved666:hover{background:var(--c-surface-2)}
.mo-klynge666.aaben .mo-hoved666{border-bottom:1px solid var(--c-line)}
.mo-navn666{display:grid;gap:3px;min-width:0}
.mo-navn666>.mo-alvor666{justify-self:start}
.mo-navn666 strong{font-size:13.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mo-navn666 small,.mo-midt666 small,.mo-udl666 small{font-size:12px;color:var(--c-ink-3)}
.mo-ord666{display:flex;gap:4px;flex-wrap:wrap}
.mo-ord666 i{font-style:normal;font-family:var(--f-mono);font-size:var(--t-5);padding:1px 6px;border-radius:var(--r-chip);background:var(--c-surface-3);color:var(--c-ink-2)}
.mo-midt666{display:grid;gap:2px;min-width:0}
.mo-kurve666{width:100%;height:28px;display:block}
.mo-kurve666 rect{fill:var(--c-line-strong)}
.mo-kurve666 rect.nu{fill:var(--c-accent)}
.mo-udl666{display:grid;gap:2px;min-width:0}
.mo-udl666 strong{font-size:13px;font-weight:600}
.mo-vurder666{display:flex;border:1px solid var(--c-line-control);border-radius:var(--r-control);overflow:hidden}
.mo-vurder666 button{border:0;border-left:1px solid var(--c-line);background:var(--c-surface);padding:6px 12px;font-size:12.5px;color:var(--c-ink-3)}
.mo-vurder666 button:first-child{border-left:0}
.mo-vurder666 button[data-mo-v666="aegte"].valgt{background:var(--c-pos-soft);color:var(--c-pos);font-weight:600}
.mo-vurder666 button[data-mo-v666="stoej"].valgt{background:var(--c-surface-3);color:var(--c-ink);font-weight:600}
.mo-krop666{display:grid;gap:var(--s-2);padding:10px 12px 12px}
.mo-vurdering666,.mo-episoder666{margin:0;font-size:12.5px;color:var(--c-ink-2);display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.mo-ep666{padding:2px 8px;border-radius:var(--r-chip);background:var(--c-surface-3);font-size:12px}
.mo-ep666.crit{background:var(--c-crit-soft);color:var(--c-crit)}
.mo-ep666.warn{background:var(--c-warn-soft);color:var(--c-warn)}
.mo-ep666.info{background:var(--c-accent-soft);color:var(--c-accent-ink)}
.mo-krop666 td.mo-emne666{white-space:normal;min-width:260px}
.mo-alarm666{font-size:var(--t-5);padding:0 5px;border-radius:var(--r-chip);background:var(--c-warn-soft);color:var(--c-warn)}
.mo666 .home-view-switch button i{font-style:normal;opacity:.7;font-variant-numeric:tabular-nums}
@media(max-width:1100px){.mo-strip666{grid-template-columns:repeat(2,minmax(0,1fr))}.mo-hoved666{grid-template-columns:minmax(0,1fr) auto}.mo-midt666{display:none}}
@media(max-width:700px){.mo-strip666{grid-template-columns:1fr}.mo-hoved666{grid-template-columns:1fr}}
.mo666 .home-view-switch button i{margin-left:4px}
.mo-alarmer666{text-transform:none;letter-spacing:normal}
.mo666 .home-view-switch{max-width:100%;overflow-x:auto}

/* v2.20.666 - Min dag med syv kasser (admin: + Mangler kunde + Mønstre i sager).
   Brede skærme: 4 kolonner × 2 rækker, Faktura står høj - alt ses uden at scrolle.
   Smallere: 3 kolonner, og den sidste kasse ligger i fuld bredde under folden. */
@media(min-width:1400px){.md-gitter655.syv666,.md-gitter655.otte666{grid-template-columns:repeat(4,minmax(0,1fr))}.md-gitter655.syv666>[data-kasse655="faktura"]{grid-row:span 2}}
@media(min-width:1101px) and (max-width:1399px){.md-gitter655.syv666>.md-kasse655:last-child{grid-column:1/-1}}
.md655.fokus .md-gitter655 .md-kasse655.aktiv{grid-column:1/-1;grid-row:1/span 2}
.md-anker657.mo-anker666.crit{background:var(--c-crit-soft);color:var(--c-crit)}
.md-anker657.mo-anker666.warn{background:var(--c-warn-soft);color:var(--c-warn)}
.md-anker657.mo-anker666.info{background:var(--c-accent-soft);color:var(--c-accent-ink)}
.mo-vurd666{font-weight:600;color:var(--c-ink-2)}
.mo-vurd666.aegte{color:var(--c-pos)}

/* v2.20.667 - Mønstre i sager: advarsler, kvittering, tidslinje og kendte ændringer */
.mo-faner667{justify-self:start;width:max-content;max-width:100%;overflow-x:auto}
.mo-proeve667{display:grid;gap:14px}
.mo-proeve-hoved667{display:flex;align-items:center;gap:var(--s-4);flex-wrap:wrap}
.mo-proeve-hoved667 p{margin:0;flex:1 1 420px;color:var(--c-ink-3);font-size:12.5px}
.mo-motor667{display:flex;align-items:center;gap:8px 14px;flex-wrap:wrap;padding:8px 12px;border:1px solid var(--c-line);border-radius:var(--r-container);background:var(--c-surface);font-size:12.5px;color:var(--c-ink-2)}
.mo-motor667 small{color:var(--c-ink-3);font-size:12px;flex:1 1 320px}
.mo-motor667.fejl{border-color:var(--c-crit)}
.mo-motor-fejl667{color:var(--c-crit);flex-basis:100%}
.mo-sektion667{display:grid;gap:8px;margin-top:6px}
.mo-sektion667 h3{margin:4px 0 0;font-size:13px;font-weight:600;color:var(--c-ink-2)}
.mo-sektion667 h3 i{font-style:normal;color:var(--c-ink-3);font-weight:500;margin-left:4px}
.mo-tom667{padding:10px 12px;border:1px dashed var(--c-line-strong);border-radius:var(--r-container);color:var(--c-ink-3);font-size:12.5px}
.mo-adv667{border:1px solid var(--c-line);border-left:3px solid var(--c-line-strong);border-radius:var(--r-container);background:var(--c-surface);box-shadow:var(--shadow);min-width:0}
.mo-adv667.crit{border-left-color:var(--c-crit)}
.mo-adv667.warn{border-left-color:var(--c-warn)}
.mo-adv667.info{border-left-color:var(--c-accent)}
.mo-adv667.kvitteret,.mo-adv667.lukket{box-shadow:none}
.mo-adv667.lukket .mo-navn666 strong{color:var(--c-ink-3)}
.mo-adv-hoved667{display:grid;grid-template-columns:minmax(0,1fr) 190px auto;gap:var(--s-4);align-items:center;padding:10px 12px;cursor:pointer}
.mo-adv-hoved667:hover{background:var(--c-surface-2)}
.mo-adv667.aaben .mo-adv-hoved667{border-bottom:1px solid var(--c-line)}
.mo-maerker667{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.mo-gen667,.mo-prob667{display:inline-flex;padding:1px 7px;border-radius:var(--r-chip);font-size:var(--t-5);font-weight:600;letter-spacing:.04em}
.mo-gen667{background:var(--c-crit-soft);color:var(--c-crit)}
.mo-prob667{background:var(--c-accent-soft);color:var(--c-accent-ink)}
.mo-kv667{color:var(--c-ink-2)!important}
.mo-knapper667{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.mo-flag667{font-weight:600;color:var(--c-crit)}
.mo-detalje667{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:14px}
.mo-detalje667 section{min-width:0}
.mo-detalje667 h4{margin:0 0 6px;font-size:12px;font-weight:600;color:var(--c-ink-3);text-transform:uppercase;letter-spacing:.06em}
.mo-detalje667 p{margin:6px 0;font-size:12.5px}
.mo-bred667{grid-column:1/-1}
.mo-tid667{display:block;width:100%;height:64px;background:var(--c-surface-2);border-radius:var(--r-control)}
.mo-tid667 rect{fill:var(--c-accent)}
.mo-tid667 line.dag{stroke:var(--c-line-strong);stroke-width:1}
.mo-tid667 line.kendt{stroke:var(--c-warn);stroke-width:2;stroke-dasharray:3 2}
.mo-tid667 line.start{stroke:var(--c-crit);stroke-width:2}
.mo-tid-akse667{display:flex;justify-content:space-between;font-size:var(--t-5);color:var(--c-ink-3);margin-top:2px}
.mo-sammenfald667{font-size:12.5px;padding:6px 10px;border-radius:var(--r-control);background:var(--c-warn-soft)}
.mo-sammenfald667 ul{margin:4px 0 0;padding-left:18px}
.mo-sammenfald667 small{color:var(--c-ink-3)}
.mo-kunder667{display:grid;gap:4px}
.mo-kunder667>div{display:grid;grid-template-columns:minmax(0,1fr) 90px 28px;gap:8px;align-items:center;font-size:12.5px}
.mo-kunder667>div span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mo-kunder667>div i{display:block;height:8px;border-radius:4px;background:var(--c-accent)}
.mo-kunder667>div b{text-align:right;font-variant-numeric:tabular-nums}
.mo-ny667{background:var(--c-crit-soft)}
.mo-ny-maerke667{font-size:var(--t-5);padding:0 5px;border-radius:var(--r-chip);background:var(--c-crit);color:var(--c-surface);font-weight:600}
.mo-log667{margin:0;padding-left:18px;font-size:12.5px;display:grid;gap:3px}
.mo-udkast667{font-family:var(--f-mono);font-size:12px;white-space:pre}
.mo-aendringer667{display:grid;gap:12px}
.mo-aendringer667>p{margin:0;font-size:12.5px}
.mo-aendring-form667{display:grid;grid-template-columns:2fr 1fr 1fr;gap:var(--s-4) 12px;padding:12px;border:1px solid var(--c-line);border-radius:var(--r-container);background:var(--c-surface)}
.mo-aendring-form667 .form-actions{grid-column:1/-1;margin-top:0}
.mo-blok667{display:block}
@media(max-width:1100px){.mo-adv-hoved667{grid-template-columns:minmax(0,1fr) auto}.mo-adv-hoved667 .mo-midt666{display:none}.mo-detalje667{grid-template-columns:1fr}.mo-aendring-form667{grid-template-columns:1fr}}
@media(max-width:700px){.mo-adv-hoved667{grid-template-columns:1fr}.mo-knapper667{justify-content:flex-start}}
.mo-auto-titel667{margin:6px 0 0;font-size:13px;font-weight:600;color:var(--c-ink-2)}

/* v2.20.669 - Kundetilfredshed: prøvekørslen og kassen på Min dag */
@media(min-width:1101px) and (max-width:1399px){.md-gitter655.otte666>[data-kasse655="faktura"]{grid-row:span 2}}
.md-anker657.tf-anker669.crit{background:var(--c-crit-soft);color:var(--c-crit)}
.md-anker657.tf-anker669.warn{background:var(--c-warn-soft);color:var(--c-warn)}
.md-anker657.tf-anker669.pos{background:var(--c-pos-soft);color:var(--c-pos)}
.tf-etiket669{display:inline-flex;align-items:center;padding:1px 7px;border-radius:var(--r-chip);font-size:var(--t-5);font-weight:600;letter-spacing:.04em;background:var(--c-surface-3);color:var(--c-ink-3);white-space:nowrap}
.tf-etiket669.crit{background:var(--c-crit-soft);color:var(--c-crit)}
.tf-etiket669.warn{background:var(--c-warn-soft);color:var(--c-warn)}
.tf-etiket669.pos{background:var(--c-pos-soft);color:var(--c-pos)}
.tf-strip669{grid-template-columns:repeat(5,minmax(0,1fr))}
.tf-check669{display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:500;color:var(--c-ink-2);text-transform:none;letter-spacing:normal}
.tf-check669 input{width:auto;margin:0}
.tf-liste669{display:grid;gap:8px}
.tf-kort669{display:grid;gap:6px;padding:10px 12px;border:1px solid var(--c-line);border-left:3px solid var(--c-line-strong);border-radius:var(--r-container);background:var(--c-surface);min-width:0}
.tf-kort669.crit{border-left-color:var(--c-crit)}
.tf-kort669.warn{border-left-color:var(--c-warn)}
.tf-kort669.pos{border-left-color:var(--c-pos)}
.tf-kort-hoved669{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}
.tf-kort-hoved669 strong{font-size:13px;font-weight:600}
.tf-kort-hoved669 small{font-size:12px;color:var(--c-ink-3)}
.tf-tekst669{font-size:13px;line-height:1.5;color:var(--c-ink);white-space:pre-wrap;overflow-wrap:anywhere}
.tf-sig669{border-radius:3px;padding:0 2px;color:inherit}
.tf-sig669.neg{background:var(--c-crit-soft)}
.tf-sig669.pos{background:var(--c-pos-soft)}
.tf-sig669.nul{background:var(--c-surface-3)}
.tf-kort-fod669{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.tf-chip669{font-family:var(--f-mono);font-size:var(--t-5);padding:1px 6px;border-radius:var(--r-chip);background:var(--c-surface-3);color:var(--c-ink-2)}
.tf-chip669.neg{color:var(--c-crit)}
.tf-chip669.pos{color:var(--c-pos)}
.tf-vurder669{display:inline-flex;border:1px solid var(--c-line-control);border-radius:var(--r-control);overflow:hidden}
.tf-vurder669 button{border:0;border-left:1px solid var(--c-line);background:var(--c-surface);padding:4px 9px;font-size:12px;color:var(--c-ink-3)}
.tf-vurder669 button:first-child{border-left:0}
.tf-vurder669 button.valgt{background:var(--c-ink);color:var(--c-ground);font-weight:600}
.tf-tabel669 td small{display:block}
.tf-blok669{display:block}
.tf-aaben669{background:var(--c-accent-soft)}
.tf-ned669{color:var(--c-crit)}
.tf-op669{color:var(--c-pos)}
.tf-dialog669{display:grid;gap:8px}
.tf-dialog669 h2{margin:0}
.tf-dialog669 p{margin:0}
.tf-traad669{display:grid;gap:8px;max-height:60vh;overflow:auto;padding:4px}
.tf-besked669{display:grid;gap:4px;padding:8px 10px;border-radius:var(--r-container);border:1px solid var(--c-line);background:var(--c-surface);max-width:88%}
.tf-besked669.kunde{justify-self:start}
.tf-besked669.tekniker{justify-self:end;background:var(--c-accent-soft)}
.tf-besked669.system,.tf-besked669.intern,.tf-besked669.ukendt{justify-self:center;background:var(--c-surface-2);color:var(--c-ink-3)}
.tf-besked-hoved669{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tf-besked-hoved669 small{font-size:12px;color:var(--c-ink-3)}
.tf-leksikon669{display:grid;gap:12px}
.tf-leksikon669>p{margin:0;font-size:12.5px}
.tf-lek-form669{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:8px 12px;align-items:end;padding:12px;border:1px solid var(--c-line);border-radius:var(--r-container);background:var(--c-surface)}
.tf-lek-form669 .form-actions{grid-column:1/-1;margin-top:0}
.tf-lek-knapper669{display:flex;gap:6px;justify-content:flex-end}
.tf-dialogen669{display:grid;gap:12px}
.tf-to669{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.tf-to669 section{min-width:0;padding:12px;border:1px solid var(--c-line);border-radius:var(--r-container);background:var(--c-surface)}
.tf-to669 h3{margin:0 0 6px;font-size:14px}
.tf-dom669{display:flex;gap:8px;align-items:end}
.tf-dom669 label{flex:1}
.tf-grunde669{width:100%;font-size:12.5px}
.tf-eksempel669 pre{font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere;background:var(--c-surface-2);padding:8px;border-radius:var(--r-control)}
@media(max-width:1100px){.tf-strip669{grid-template-columns:repeat(2,minmax(0,1fr))}.tf-to669,.tf-lek-form669{grid-template-columns:1fr}}
@media(max-width:700px){.tf-strip669{grid-template-columns:1fr}.tf-besked669{max-width:100%}}
.tf-besked669 .tf-vurder669{justify-self:start}

/* v2.20.670 - Tjek kæden: fra B4Restore til kundekortet */
.kaede-hoved670{display:flex;align-items:center;justify-content:space-between;gap:8px}
.kaede670{display:grid;gap:10px}
.kaede670 h2{margin:0}
.kaede670>p{margin:0}
.kaede-led670{display:grid;grid-template-columns:32px minmax(0,1fr);gap:10px;padding:10px 12px;border:1px solid var(--c-line);border-left:3px solid var(--c-pos);border-radius:var(--r-container);background:var(--c-surface)}
.kaede-led670.warn{border-left-color:var(--c-warn)}
.kaede-led670.crit{border-left-color:var(--c-crit)}
.kaede-led670 h3{margin:2px 0 6px;font-size:14px}
.kaede-led670 p{margin:4px 0;font-size:12.5px}
.kaede-nr670{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--c-surface-3);font-weight:600;font-size:13px}
.kaede-fund670{padding:4px 8px;border-radius:var(--r-control);background:var(--c-surface-2)}
.kaede-fund670.warn{background:var(--c-warn-soft)}
.kaede-fund670.crit{background:var(--c-crit-soft)}
.kaede-kap670{margin:var(--s-2) 0;padding:4px 8px;border-radius:var(--r-control);background:var(--c-surface-2)}
.kaede-kap670.flad{background:var(--c-warn-soft)}
.kaede-node670{display:grid;gap:6px;margin-top:8px;padding:8px 10px;border:1px solid var(--c-line);border-radius:var(--r-control)}
.kaede-node670.crit{border-color:var(--c-crit)}
.kaede-node670.warn{border-color:var(--c-warn)}
.kaede-node-hoved670{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.kaede-node-hoved670 small{font-size:12px;color:var(--c-ink-3)}
.kaede-ikon670{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700;background:var(--c-pos-soft);color:var(--c-pos)}
.kaede-node670.warn .kaede-ikon670{background:var(--c-warn-soft);color:var(--c-warn)}
.kaede-node670.crit .kaede-ikon670{background:var(--c-crit-soft);color:var(--c-crit)}
.kaede-tal670{display:flex;gap:14px;flex-wrap:wrap;font-size:12.5px;color:var(--c-ink-2)}
.kaede-tabel670{width:100%;font-size:12px}
.kaede-skarp670{color:var(--c-warn);font-weight:600}
/* v2.20.673 - Kundetilfredshed · trin 2: kunder i risiko */
.tf-regel673{font-size:var(--t-5);font-weight:600;color:var(--c-ink-2)}
.tf-citat673{display:block;margin-top:2px;color:var(--c-ink-2);font-style:italic}
.tf-detalje673{display:grid;gap:var(--s-3)}
.tf-hvorfor673 p{margin:2px 0}
.tf-besked669.tf-udloeser673{outline:2px solid var(--c-warn-soft);outline-offset:2px}
.tf-tone673:empty{display:none}
.tf-tone673{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2);margin:var(--s-2) 0;padding:var(--s-2) var(--s-3);border-radius:var(--r-control);background:var(--c-surface-2)}
.tf-tone-titel673{font-size:var(--t-5);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--c-ink-3)}
.tf-prikker673{display:inline-flex;flex-wrap:wrap;gap:4px}
.tf-prik673{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--c-surface-3);border:1px solid var(--c-line)}
.tf-prik673.crit{background:var(--c-crit);border-color:var(--c-crit)}
.tf-prik673.warn{background:var(--c-warn);border-color:var(--c-warn)}
.tf-prik673.pos{background:var(--c-pos);border-color:var(--c-pos)}
.tf-risiko673{display:inline-flex;padding:1px 7px;border-radius:var(--r-chip);font-size:var(--t-5);font-weight:600;background:var(--c-surface-3);color:var(--c-ink-2)}
.tf-risiko673.crit{background:var(--c-crit-soft);color:var(--c-crit)}
.tf-risiko673.warn{background:var(--c-warn-soft);color:var(--c-warn)}
/* v2.20.675 - Atera-kunde, der også venter i den gamle Shell */
.atera-azure675{display:inline-block;margin-top:2px;color:var(--c-accent-ink)}
/* v2.20.676 - fakturering: skift uge/måned uden at oprette noget */
.billing-nav675{display:inline-flex;flex-wrap:wrap;gap:var(--s-2);align-items:center}
.billing-nav-note675{color:var(--c-ink-3)}
/* v2.20.677 - «ved ændring mangler der lidt»: TSM-noder på SOA People blev klippet i højre side på papir.
   Tabellen har fire kolonner, så den bliver ikke til kort (data-cards420 kræver fem) og fik ikke
   v2.20.535's tryk-regel. A4 er smal nok til at ramme mobilreglen `.table-wrap table{min-width:720px}`,
   og .table-wrap skærer det overskydende af. På papir fylder en tabel i rapporten siden - ikke mere. */
@media print{
 .modal-monthly-report .table-wrap{overflow:visible!important;max-width:100%!important}
 .modal-monthly-report .table-wrap table{min-width:0!important;width:100%!important}
 /* break-word, ikke anywhere: v2.20.580 lærte, at anywhere brækker almindelige ord («STA TUS») */
 .modal-monthly-report .table-wrap th,.modal-monthly-report .table-wrap td{white-space:normal!important;overflow-wrap:break-word}
}
/* v2.20.680 - timerne i Trends: klik på et tal og se registreringerne */
.trend-klik680{cursor:pointer}
.trend-klik680:hover,.trend-klik680:focus-visible{background:var(--c-surface-2);outline:none}
.trend-se680{font-size:var(--t-5);font-weight:600;color:var(--c-accent-ink)}
.trend-timer680{margin:var(--s-3) 0}
.trend-timer680-periode,.trend-timer680-filtre{display:flex;flex-wrap:wrap;gap:var(--s-2) var(--s-3);align-items:flex-end;margin:var(--s-2) 0}
.trend-timer680-periode label,.trend-timer680-filtre label{display:grid;gap:2px;font-size:var(--t-5);color:var(--c-ink-3)}
.trend-timer680-beskr{white-space:normal;max-width:38ch}
.trend-timer680-filtre .customer-status-filter b{margin-left:6px}
/* v2.20.681 - Sophos-advarslens detaljer */
.sophos-advarsel681{display:grid;gap:var(--s-2);margin:var(--s-3) 0}
.sophos-advarsel681 h3{margin:var(--s-2) 0 0}
.sophos-mangler681{color:var(--c-warn)}
.sophos-servere681{margin-top:var(--s-2)}
.sophos-tabel681 td{vertical-align:top}
