:root{--orange:#ED6F24;--orange-d:#c95a17;--ink:#1a1a1a;--body:#3a3a3a;--grey:#6e6e6e;--rule:#e3e3e3;--alt:#f7f7f7;--soft:#fdf1ea;--ok:#1b7f3b;--warn:#b7791f;--err:#b3261e;--bg:#f3f4f6}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font:15px/1.45 -apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:var(--body);background:var(--bg)}
a{color:var(--orange-d);text-decoration:none}a:hover{text-decoration:underline}
.top{background:#111;color:#fff;display:flex;align-items:center;gap:14px;padding:8px 16px;position:sticky;top:0;z-index:20}
.top .brand{display:flex;align-items:center;gap:10px;color:#fff;font-weight:700;letter-spacing:.3px}.top .brand img{height:30px}
.top nav{display:flex;gap:2px;flex-wrap:wrap;margin-left:auto}.top nav a{color:#ddd;padding:7px 10px;border-radius:6px;font-size:14px}.top nav a.on,.top nav a:hover{background:var(--orange);color:#fff;text-decoration:none}
.top .user{display:flex;align-items:center;gap:8px;font-size:13px;color:#bbb;margin-left:8px}.top .user form{margin:0}
.bell{position:relative;color:#ddd;padding:6px 8px;border-radius:6px}.bell .n{position:absolute;top:0;right:0;background:var(--orange);color:#fff;border-radius:10px;font-size:10px;padding:1px 5px;font-weight:700}
.wrap{max-width:1240px;margin:0 auto;padding:18px 16px 48px}
h1{font-size:22px;margin:0 0 12px;color:var(--ink)}h2{font-size:17px;margin:18px 0 8px;color:var(--ink)}h3{font-size:14px;margin:12px 0 6px;color:var(--ink)}
.row{display:flex;gap:14px;flex-wrap:wrap}.col{flex:1 1 300px}.card{background:#fff;border:1px solid var(--rule);border-radius:10px;padding:14px 16px;margin-bottom:14px}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:14px}.kpi{background:#fff;border:1px solid var(--rule);border-radius:10px;padding:12px 14px}
.kpi .l{font-size:12px;color:var(--grey);text-transform:uppercase;letter-spacing:.4px}.kpi .v{font-size:22px;font-weight:700;color:var(--ink);margin-top:2px}.kpi .s{font-size:12px;color:var(--grey)}
table{border-collapse:collapse;width:100%;font-size:13.5px;background:#fff}th,td{border-bottom:1px solid var(--rule);padding:7px 8px;text-align:left;vertical-align:top}th{background:#fafafa;font-weight:600;color:var(--ink);font-size:12.5px;white-space:nowrap}
td.r,th.r{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}tr.total td{font-weight:700;background:var(--soft)}.tbl{overflow-x:auto;background:#fff;border:1px solid var(--rule);border-radius:10px}
.tbl table{border:0}.tbl tr:hover td{background:#fffaf6}
.badge{display:inline-block;padding:2px 8px;border-radius:12px;font-size:12px;font-weight:600;background:#eee;color:#444;white-space:nowrap}
.badge.ok,.badge.paid,.badge.active,.badge.approved,.badge.sent,.badge.resolved,.badge.closed,.badge.received,.badge.won{background:#e3f4e8;color:var(--ok)}
.badge.warn,.badge.pending,.badge.to_pay,.badge.unpaid,.badge.open,.badge.draft,.badge.computed,.badge.issued,.badge.part_paid,.badge.in_progress,.badge.assigned,.badge.on_hold,.badge.billing{background:#fdf1d8;color:var(--warn)}
.badge.err,.badge.critical,.badge.high,.badge.cancelled,.badge.lost,.badge.failed{background:#fde3e1;color:var(--err)}
.btn{display:inline-block;background:var(--orange);color:#fff;border:0;border-radius:7px;padding:8px 14px;font-size:14px;font-weight:600;cursor:pointer;text-decoration:none}.btn:hover{background:var(--orange-d);text-decoration:none;color:#fff}
.btn.sec{background:#fff;color:var(--ink);border:1px solid #ccc}.btn.sec:hover{background:#f3f3f3;color:var(--ink)}.btn.sm{padding:5px 10px;font-size:13px}.btn.danger{background:var(--err)}
form.inline{display:inline}.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:10px 0}
label{display:block;font-size:12.5px;color:var(--grey);margin:8px 0 3px}input,select,textarea{width:100%;padding:8px 10px;border:1px solid #cfcfcf;border-radius:7px;font:inherit;font-size:14px;background:#fff}
input[type=checkbox]{width:auto}textarea{min-height:80px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0 14px}.grid.g3{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}
.msg{padding:10px 14px;border-radius:8px;margin-bottom:12px;background:#e3f4e8;color:var(--ok);border:1px solid #bfe3c8}.msg.err{background:#fde3e1;color:var(--err);border-color:#f3b9b5}.msg.warn{background:#fdf1d8;color:var(--warn);border-color:#f1dca8}
.muted{color:var(--grey);font-size:13px}.small{font-size:12.5px}.right{text-align:right}.nowrap{white-space:nowrap}.mt{margin-top:12px}.mb0{margin-bottom:0}
.login{max-width:380px;margin:60px auto;background:#fff;padding:26px 28px;border-radius:12px;border:1px solid var(--rule)}.login img{height:40px;margin-bottom:10px}
.bar{height:8px;background:#eee;border-radius:4px;overflow:hidden}.bar i{display:block;height:100%;background:var(--orange)}
.chart{display:flex;align-items:flex-end;gap:6px;height:120px;padding:6px 0;border-bottom:1px solid var(--rule)}.chart div{flex:1;background:var(--orange);border-radius:3px 3px 0 0;position:relative;min-width:8px}.chart div span{position:absolute;bottom:-18px;left:0;right:0;font-size:10px;color:var(--grey);text-align:center}
.timeline{list-style:none;padding:0;margin:0}.timeline li{border-left:3px solid var(--orange);padding:4px 10px;margin:6px 0;background:#fff}
.tabs{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:12px}.tabs a{padding:6px 12px;border-radius:8px;background:#fff;border:1px solid var(--rule);color:var(--ink);font-size:13.5px}.tabs a.on{background:var(--orange);color:#fff;border-color:var(--orange)}
.pill{display:inline-block;padding:1px 7px;border-radius:9px;background:var(--soft);color:var(--orange-d);font-size:12px}
.err-page{text-align:center;padding:60px 0}.foot{text-align:center;color:var(--grey);font-size:12px;margin-top:30px}
@media (max-width:760px){.strip-detail{display:none}.alert-strip{padding:6px 10px;font-size:13px}.card table{display:block;overflow-x:auto;max-width:100%}.btn.sm{min-height:34px}.top{flex-wrap:wrap}.top nav{width:100%;order:3;overflow-x:auto;flex-wrap:nowrap}.top nav a{white-space:nowrap}.wrap{padding:12px 10px}h1{font-size:19px}table{font-size:13px}th,td{padding:6px 6px}.kpi .v{font-size:19px}}
@media print{.top,.actions,.btn,form{display:none!important}.wrap{padding:0}.card{border:0}}

.lines table input{min-width:84px}.lines table select{min-width:110px}.card.lines{overflow-x:auto}#tariffs input{min-width:84px}#tariffs select{min-width:110px}#items input{min-width:70px}#items td:first-child input{min-width:260px}

.today td{padding:9px 8px;vertical-align:middle}.today tr.k-problem td:nth-child(2) b a{color:var(--err)}.today tr.k-money td:nth-child(2) b a{color:var(--ink)}

/* ---- alert strip (every staff page) and the dashboard pop-up ---- */
.alert-strip{background:var(--err);color:#fff;padding:9px 16px;font-size:14px;text-align:center;line-height:1.4}.alert-strip a{color:#ffe1dd;text-decoration:underline}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:70;display:flex;align-items:center;justify-content:center;padding:16px}.modal[hidden]{display:none}
.modal-box{background:#fff;border-radius:14px;max-width:680px;width:100%;max-height:90vh;overflow:auto;padding:20px 24px;box-shadow:0 20px 60px rgba(0,0,0,.35);border-top:6px solid var(--err)}.modal-box h2{margin:0 0 10px;color:var(--err);font-size:20px}
.modal-list{margin:0 0 10px;padding-left:20px}.modal-list li{margin:6px 0;font-size:15px}

/* ---- Ask AI side panel (every page): docked on the right, the page shifts left and stays fully usable ---- */
:root{--ai-w:420px}
.ai-toggle{background:var(--orange);color:#fff;border:0;border-radius:999px;padding:6px 12px;font-weight:700;font-size:13px;cursor:pointer;white-space:nowrap}.ai-toggle:hover{background:var(--orange-d)}
html.ai-docked .ai-toggle{background:#2a2a2a;color:#ffb98a;border:1px solid #444}
html.ai-docked body{padding-right:var(--ai-w)}
.ai-panel{display:none;position:fixed;top:0;right:0;bottom:0;z-index:61;width:var(--ai-w);background:#fff;border-left:1px solid #d6d6d6;box-shadow:-4px 0 18px rgba(0,0,0,.07);flex-direction:column;overflow:hidden}
html.ai-docked .ai-panel{display:flex}
.ai-resize{position:absolute;left:0;top:0;bottom:0;width:7px;cursor:col-resize;z-index:2}.ai-resize:hover,.ai-resize.on{background:rgba(237,111,36,.4)}
html.ai-resizing,html.ai-resizing *{cursor:col-resize!important;user-select:none}
.ai-head{display:flex;align-items:center;gap:10px;padding:8px 14px 8px 18px;background:#141414;color:#fff;min-height:46px}
.ai-head b{font-size:15px;margin-right:auto;white-space:nowrap}.ai-head a{color:#ffb98a;font-size:12.5px;white-space:nowrap}.ai-head #ai-mode{color:#bbb;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ai-icon{background:transparent;border:0;color:#fff;font-size:20px;line-height:1;cursor:pointer;padding:2px 6px}.ai-icon:hover{color:#ffb98a}
.ai-msgs{flex:1;overflow:auto;padding:12px 12px 12px 16px;background:#fafafa}
.ai-m{margin:8px 0;padding:10px 12px;border-radius:10px;white-space:pre-wrap;font-size:14px;line-height:1.45;word-break:break-word}
.ai-m.user{background:#fff1e8;margin-left:12%}.ai-m.bot{background:#fff;border:1px solid #eee;margin-right:8%}.ai-wait{opacity:.6}
.ai-chips{display:flex;gap:6px;flex-wrap:wrap;padding:8px 12px 8px 16px;border-top:1px solid #eee;background:#fff}
.ai-chips button{border:1px solid #ddd;background:#fff;border-radius:999px;padding:5px 10px;font-size:12px;cursor:pointer}.ai-chips button:hover{border-color:#ED6F24}
.ai-form{display:flex;gap:8px;padding:10px 12px 12px 16px;border-top:1px solid #eee;background:#fff}.ai-form input{flex:1;font-size:15px;padding:10px}
@media (max-width:900px){html.ai-docked body{padding-right:0}.ai-panel{width:100vw;left:0}.ai-resize{display:none}}
@media print{.ai-panel,.ai-toggle{display:none!important}html.ai-docked body{padding-right:0}}
/* ---- sales pipeline by deal (31 Oct 2026) ---- */
.board{display:flex;gap:10px;overflow-x:auto;align-items:flex-start;padding:4px 0 14px}
.lane{flex:1 1 200px;min-width:200px;background:#e9ebee;border-radius:10px;padding:8px;min-height:140px}.lane.accepted{background:#e4efe7}.lane.won{background:#dcefe2}
.lane h4{margin:0 0 2px;font-size:13px;color:var(--ink);display:flex;align-items:center;gap:6px}.lane h4 .n{background:#fff;border-radius:10px;padding:0 7px;font-size:12px}.lane h4 .t{margin-left:auto;font-weight:500;color:var(--grey);font-size:11.5px;white-space:nowrap}
.lane .hint{font-size:11px;margin-bottom:8px;line-height:1.3}.lane .empty{color:#aaa;text-align:center;padding:10px 0;font-size:12px}
.dcard{background:#fff;border:1px solid var(--rule);border-left:4px solid #cfd3d8;border-radius:8px;padding:8px 10px;margin-bottom:8px;font-size:13px;position:relative}
.dcard.late{border-left-color:var(--err)}.dcard.due{border-left-color:var(--warn)}
.dcard .who{display:flex;align-items:center;gap:6px}.dcard .who a{color:var(--ink)}.dcard .own{margin-left:auto;background:#eee;border-radius:50%;width:20px;height:20px;font-size:11px;display:inline-flex;align-items:center;justify-content:center;color:var(--grey)}
.dcard .meta{color:var(--grey);font-size:12px;margin-top:2px;line-height:1.35;word-break:break-word}.dcard .val{font-weight:600;color:var(--ink);margin-top:2px}
.dcard .acts{display:flex;gap:4px;flex-wrap:wrap;margin-top:7px}.dcard .acts .btn,.dcard .acts summary.btn{padding:3px 8px;font-size:12px}
details.inline{display:inline-block;position:relative}details.inline>summary{list-style:none;cursor:pointer}details.inline>summary::-webkit-details-marker{display:none}
.pop{position:absolute;z-index:30;min-width:270px;margin-top:4px;box-shadow:0 6px 24px rgba(0,0,0,.14);text-align:left}.pop label{font-size:12px;margin-top:6px}.pop input,.pop select{width:100%}
.steps{display:flex;gap:4px;flex-wrap:wrap;margin:6px 0 14px}.step{flex:1 1 110px;background:#eceef1;border-radius:6px;padding:6px 8px;font-size:12px;color:var(--grey);text-align:center;line-height:1.3}
.step.done{background:#e3f4e8;color:var(--ok)}.step.on{background:var(--orange);color:#fff;font-weight:600}.step.lost.on{background:var(--err)}.step .d{font-size:11px;opacity:.85}
.card.now{border-color:var(--orange);box-shadow:0 0 0 2px var(--soft)}
.tl{list-style:none;padding:0;margin:0}.tl li{border-left:2px solid var(--rule);padding:4px 0 10px 12px;margin-left:6px;position:relative;font-size:13px}.tl li::before{content:"";position:absolute;left:-6px;top:9px;width:8px;height:8px;border-radius:50%;background:#cfd3d8}
.tl li.stage::before{background:var(--orange)}.tl li.payment::before,.tl li.pi::before{background:var(--ok)}.tl li.lost::before{background:var(--err)}.tl li.sent::before,.tl li.proposal::before{background:#5b7fb8}
.tl .k{display:inline-block;font-size:10.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--grey);margin-right:6px}.tl .w{font-size:11.5px;color:var(--grey)}
.badge.new,.badge.contacted,.badge.survey{background:#e8edf5;color:#3b5a8a}.badge.proposal,.badge.negotiation{background:#fdf1d8;color:var(--warn)}.badge.accepted{background:#e3f4e8;color:var(--ok)}.badge.installing{background:#fdf1d8;color:var(--warn)}.badge.completed{background:#dcefe2;color:var(--ok)}.lane.installing{background:#f3ecdc}.lane.completed{background:#dcefe2}
.kpi .v.err{color:var(--err)}
.task{display:flex;gap:8px;align-items:flex-start;padding:6px 0;border-bottom:1px solid var(--rule)}.task:last-of-type{border-bottom:0}.task.done{opacity:.55}.task .t{flex:1;min-width:0}.task .t .small{line-height:1.3}
.hold{background:#fdf1d8;border:1px solid #f0d9a8;border-radius:8px;padding:10px 12px;margin-bottom:12px}
.badge.on_hold{background:#fdf1d8;color:var(--warn)}.badge.commissioned{background:#e3f4e8;color:var(--ok)}.badge.ordered{background:#eee;color:#444}
details.card>summary{cursor:pointer}select[multiple]{height:auto}
.vis{background:#fff;border:1px solid var(--rule);border-left:4px solid #cfd3d8;border-radius:8px;padding:10px 12px;margin-bottom:10px}.vis.late{border-left-color:var(--err)}.vis.done{opacity:.7;border-left-color:var(--ok)}.vis .vis-h{font-size:16px}
.board-t td.vcell{vertical-align:top;min-width:120px;padding:4px}.board-t th.today{background:var(--soft)}.vchip{display:block;background:#eef1f5;border-left:3px solid #9aa4b2;border-radius:6px;padding:4px 6px;margin-bottom:4px;font-size:12px;color:var(--ink)}.vchip .small{display:block;color:var(--grey)}.vchip.on_site{border-left-color:var(--warn);background:#fdf1d8}.vchip.done{border-left-color:var(--ok);background:#e3f4e8}
.thumbs{display:flex;gap:6px;flex-wrap:wrap}.thumbs img{height:90px;border-radius:6px;border:1px solid var(--rule)}
textarea{width:100%}
/* ---- the station wall ---- */
.wall-head{font-size:13px;color:var(--grey);margin:0 0 8px}.dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:#8a8f98;vertical-align:middle;margin-right:4px}
.dot.online{background:#1b7f3b}.dot.charging{background:#1d6fd1;box-shadow:0 0 0 0 rgba(29,111,209,.6);animation:pulse 1.6s infinite}.dot.partial,.dot.installing{background:#b7791f}.dot.offline{background:#b3261e}.dot.fault{background:var(--orange)}.dot.unknown,.dot.planned{background:#8a8f98}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(29,111,209,.55)}70%{box-shadow:0 0 0 8px rgba(29,111,209,0)}100%{box-shadow:0 0 0 0 rgba(29,111,209,0)}}
.wall{display:grid;grid-template-columns:repeat(auto-fill,minmax(205px,1fr));gap:10px;margin-bottom:14px}
.tile{display:block;background:#fff;border:1px solid var(--rule);border-top:4px solid #8a8f98;border-radius:10px;padding:10px 12px;color:var(--ink);text-decoration:none;transition:transform .12s,box-shadow .12s}.tile:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgba(0,0,0,.09);text-decoration:none}
.tile.online{border-top-color:#1b7f3b}.tile.charging{border-top-color:#1d6fd1;background:linear-gradient(180deg,#f3f8ff,#fff)}.tile.partial{border-top-color:#b7791f}.tile.offline{border-top-color:#b3261e;background:linear-gradient(180deg,#fff3f2,#fff)}.tile.fault{border-top-color:var(--orange);background:linear-gradient(180deg,#fff4ec,#fff)}.tile.planned,.tile.installing{border-style:dashed;opacity:.85}
.tile-top{display:flex;align-items:center;gap:6px;font-size:14px}.tile-top .kw{margin-left:auto;font-size:11px;color:var(--grey);background:#f1f2f4;border-radius:8px;padding:1px 6px}
.tile-state{font-size:12px;color:var(--ink);margin:2px 0 4px}.tile-state .muted{color:var(--grey)}
.spark{width:100%;height:26px;display:block}.spark rect{fill:#d9dde3}.spark rect.now{fill:var(--orange)}.tile.online .spark rect{fill:#cfe8d6}.tile.charging .spark rect{fill:#cfe0f8}.tile.offline .spark rect{fill:#f3cfcc}
.tile-foot{display:flex;gap:8px;flex-wrap:wrap;font-size:11.5px;color:var(--grey);margin-top:4px}.tile-foot .warn{color:var(--warn)}.tile-foot .ok{color:var(--ok)}
.wallmap{height:340px;border:1px solid var(--rule);border-radius:10px;margin-bottom:14px;background:#eef1f5}

/* Today v2 (31 Oct 2026): one line per thing, the action on the line */
.titem{border-top:1px solid var(--rule);padding:10px 2px}.titem:first-of-type{border-top:0}.titem .tmain b a{font-size:15px}.titem.k-problem .tmain b a{color:var(--err)}.titem.k-money .tmain b a{color:var(--ink)}
.titem .act{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:7px 0 0}.titem .act .note{flex:1 1 220px;min-width:160px;padding:6px 8px;font-size:13px}.titem .act select,.titem .act input[type=date]{padding:6px 8px;font-size:13px}
.titem .hint{flex-basis:100%;margin-bottom:2px}.titem details.inl{display:inline-block}.titem details.inl summary{list-style:none;display:inline-block}.titem details.inl[open] summary{margin-bottom:6px}
details.more summary{cursor:pointer;padding:8px 0}

/* every charger, live (31 Oct 2026) */
.cb-head{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:10px}.cb-head .cb-filter{margin-left:auto;cursor:pointer}
.cgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:12px}
.cstation{background:#fff;border:1px solid var(--rule);border-left:5px solid #8a8f98;border-radius:10px;padding:10px 12px}.cstation.online{border-left-color:#1b7f3b}.cstation.charging{border-left-color:#1d6fd1;background:linear-gradient(90deg,#f3f8ff,#fff 40%)}.cstation.partial,.cstation.installing{border-left-color:#b7791f}.cstation.offline{border-left-color:#b3261e;background:linear-gradient(90deg,#fff3f2,#fff 40%)}.cstation.fault{border-left-color:#ED6F24;background:linear-gradient(90deg,#fff5ee,#fff 40%)}
.cs-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:4px}.cs-head .cs-today{margin-left:auto;color:var(--grey)}
.crow{display:grid;grid-template-columns:18px minmax(0,1fr) 130px 86px;gap:10px;align-items:center;padding:7px 0;border-top:1px dashed var(--rule)}.crow .cinfo{min-width:0}.crow .cinfo b{font-size:14px}
.led{width:14px;height:14px;border-radius:50%;background:#8a8f98;box-shadow:inset 0 0 2px rgba(0,0,0,.3)}.led.online{background:#1b7f3b;box-shadow:0 0 6px rgba(27,127,59,.6)}.led.charging{background:#1d6fd1;animation:pulse 1.6s infinite}.led.offline{background:#b3261e;animation:blink 1.4s infinite}.led.fault{background:#ED6F24;animation:blink .9s infinite}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.35}}
.ctl{display:flex;height:12px;border-radius:6px;overflow:hidden;background:#eceef1}.ctl i{display:block;height:100%}.ctl i.online{background:#2e9e52}.ctl i.charging{background:#1d6fd1}.ctl i.offline{background:#d6453a}.ctl i.fault{background:#ED6F24}.ctl i.unknown{background:#c9ccd1}
.cnum{text-align:right;color:var(--grey);line-height:1.25}.err{color:var(--err)}
@media(max-width:520px){.crow{grid-template-columns:16px minmax(0,1fr) 90px}.cnum{grid-column:2/4;text-align:left}}

.badge.amc{background:#e8edf5;color:#3b5a8a}
.badge.muted{background:#f1f1f1;color:var(--grey)}

/* list tools: search, filters, sort (tables.js) */
.push-card{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px 14px}.push-card.push-ok{background:#f3faf4;border-color:#cfe8d3}.push-card.push-ok .push-off{opacity:.7}
.tbl-tools{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:6px 0}.tbl-tools input[type=search]{flex:1 1 180px;min-width:140px;max-width:320px;padding:6px 10px;border:1px solid var(--rule);border-radius:8px;font-size:13px}.tbl-tools select{padding:5px 8px;border:1px solid var(--rule);border-radius:8px;font-size:12.5px;background:#fff;max-width:220px}.tbl-tools .tbl-count{font-size:12px;color:var(--grey);margin-left:auto;white-space:nowrap}
table.sortable th{cursor:pointer;user-select:none}table.sortable th[data-sort="asc"]::after{content:" \25B2";font-size:9px;color:var(--orange)}table.sortable th[data-sort="desc"]::after{content:" \25BC";font-size:9px;color:var(--orange)}

.badge.chan{background:#e8edf5;color:#3b5a8a;font-weight:600}

.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin:8px 0}.cal-head{font-size:11px;color:var(--grey);text-align:center;padding:2px 0}
.cal-day{display:block;min-height:58px;border:1px solid var(--rule);border-radius:8px;padding:4px 6px;text-decoration:none;color:inherit;background:#fff}.cal-day:hover{background:#fffaf6}.cal-day.out{opacity:.45}.cal-day.today{border-color:#ED6F24;box-shadow:inset 0 0 0 1px #ED6F24}.cal-day.sel{background:#fff4ec}
.cal-num{font-weight:600;font-size:13px}.cal-dots{display:block;margin-top:3px;line-height:1}.cal-dots i,i[class^=k-]{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:3px;vertical-align:middle}
.k-overdue{background:#c62828}.k-task{background:#ED6F24}.k-visit{background:#1976d2}.k-bill{background:#6a1b9a}.k-renewal{background:#2e7d32}.k-call{background:#f9a825}.cal-n{display:block;font-size:11px;color:var(--grey)}
@media (max-width:760px){.cal-day{min-height:44px;padding:3px 4px}.cal-n{display:none}}
