Spaces:
Sleeping
Sleeping
| """builder/css.py — Extra CSS injected by the dashboard builder.""" | |
| def extra_css() -> str: | |
| return """ | |
| .vtm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:14px;margin-bottom:20px} | |
| .vtm-card{background:#fff;border:1px solid var(--bd);border-radius:10px;overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.05)} | |
| .vtm-card-header{padding:11px 14px;background:var(--sf);border-bottom:2px solid var(--bd)} | |
| .vtm-tbl{width:100%;border-collapse:collapse}.vtm-tbl thead tr{background:#f5f0e8} | |
| .vtm-tbl th{padding:6px 10px;font-size:8.5px;font-weight:700;color:var(--gn);text-transform:uppercase;letter-spacing:.4px;font-family:var(--mono);border-bottom:1px solid var(--bd)} | |
| .vtm-tbl td{padding:5px 10px;border-bottom:1px solid var(--bd);vertical-align:middle} | |
| .vtm-tbl tr:last-child td{border-bottom:none}.vtm-tbl tr:hover{background:rgba(26,107,47,.03)} | |
| .ix-legend-bar{background:#fff;border:1px solid var(--bd);border-radius:8px;padding:9px 13px;margin-bottom:14px} | |
| .rec-section-hdr{display:flex;align-items:flex-start;gap:10px;margin-bottom:14px;padding:12px 16px;border-radius:10px} | |
| .rec-section-hdr.inc{background:linear-gradient(135deg,#e8f5e9,#f1f8e9);border:1px solid #c8e6c9} | |
| .rec-section-hdr.dec{background:linear-gradient(135deg,#fff3e0,#fbe9e7);border:1px solid #ffcc80} | |
| .rec-section-title{font-family:'DM Serif Display',serif;font-size:16px} | |
| .rec-section-sub{font-size:10.5px;color:var(--mt);margin-top:2px;line-height:1.5} | |
| .rec-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:12px;margin-bottom:28px} | |
| .rec-card{background:#fff;border:1px solid var(--bd);border-radius:10px;overflow:hidden;box-shadow:0 1px 6px rgba(0,0,0,.06);transition:box-shadow .2s} | |
| .rec-card:hover{box-shadow:0 4px 16px rgba(0,0,0,.1)} | |
| .rec-card.inc-card.feasible{border-top:3px solid #2e7d32}.rec-card.dec-card{border-top:3px solid #e64a19} | |
| .rec-card-head{padding:12px 14px;border-bottom:1px solid var(--bd);background:var(--sf)} | |
| .rec-card-body{padding:12px 14px} | |
| .rec-pack-lbl{font-size:13px;font-weight:700;display:flex;align-items:center;gap:6px;flex-wrap:wrap} | |
| .rec-price-box{display:flex;align-items:center;gap:10px;margin:10px 0;padding:10px 12px;border-radius:8px;flex-wrap:wrap} | |
| .rec-price-box.inc{background:#e8f5e9;border:1px solid #c8e6c9}.rec-price-box.dec{background:#fff3e0;border:1px solid #ffcc80} | |
| .rec-mrp-old{font-size:11px;color:var(--mt);text-decoration:line-through;font-family:var(--mono)} | |
| .rec-mrp-arrow{font-size:16px;color:var(--mt)} | |
| .rec-mrp-new{font-size:17px;font-weight:700;font-family:'DM Serif Display',serif} | |
| .rec-mrp-new.inc{color:#2e7d32}.rec-mrp-new.dec{color:#e64a19} | |
| .rec-dp-badge{padding:3px 9px;border-radius:12px;font-size:11px;font-weight:700;font-family:var(--mono)} | |
| .rec-dp-badge.inc{background:#c8e6c9;color:#1b5e20}.rec-dp-badge.dec{background:#ffe0b2;color:#bf360c} | |
| .rec-impact-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;margin:10px 0} | |
| .rec-impact-cell{background:var(--sf);border:1px solid var(--bd);border-radius:6px;padding:7px 9px;text-align:center} | |
| .rec-impact-lbl{font-size:8px;color:var(--mt);text-transform:uppercase;letter-spacing:.4px;font-family:var(--mono)} | |
| .rec-impact-val{font-family:var(--mono);font-size:11px;font-weight:700;margin-top:2px} | |
| .rec-cond-row{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px} | |
| .rec-cond{display:flex;align-items:center;gap:3px;font-size:9px;padding:2px 7px;border-radius:10px;font-weight:500} | |
| .rec-cond.pass{background:rgba(46,125,50,.1);color:#1b5e20;border:1px solid rgba(46,125,50,.25)} | |
| .rec-cond.fail{background:rgba(0,0,0,.04);color:var(--mt);border:1px solid rgba(0,0,0,.08)} | |
| .rec-tabs{display:flex;border:1px solid var(--bd);border-radius:8px;overflow:hidden;width:fit-content;margin-bottom:18px} | |
| .rec-tab{padding:9px 22px;font-size:12px;font-weight:600;cursor:pointer;background:#fff;color:var(--mt);transition:all .18s;border:none;border-right:1px solid var(--bd)} | |
| .rec-tab:last-child{border-right:none} | |
| .rec-tab.active.inc{background:#e8f5e9;color:#2e7d32}.rec-tab.active.dec{background:#fff3e0;color:#e64a19} | |
| .gd-layout{display:grid;grid-template-columns:1fr 360px;gap:18px;align-items:start} | |
| @media(max-width:960px){.gd-layout{grid-template-columns:1fr}} | |
| .gd-card{background:#fff;border:1px solid var(--bd);border-radius:12px;overflow:hidden;box-shadow:0 1px 6px rgba(0,0,0,.06)} | |
| .gd-hdr{padding:12px 16px;border-bottom:1px solid var(--bd);background:#f5f0e8;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px} | |
| .gd-ttl{font-size:13px;font-weight:700}.gd-sub{font-size:10px;color:var(--mt);margin-top:1px} | |
| .gd-body{padding:16px}.gd-controls{display:flex;gap:8px;flex-wrap:wrap} | |
| .gd-select{font-size:11px;padding:4px 8px;border:1px solid var(--bd2);border-radius:6px;background:#fff;color:var(--tx);cursor:pointer} | |
| .gd-chart-wrap{position:relative}.gd-tbl-wrap{overflow-y:auto;max-height:560px} | |
| .gd-tooltip{position:fixed;background:#1a1a1a;color:#fff;border-radius:8px;padding:10px 14px;font-size:11px;pointer-events:none;z-index:9999;display:none;max-width:230px;line-height:1.6;box-shadow:0 4px 20px rgba(0,0,0,.3)} | |
| .gd-legend{display:flex;gap:12px;flex-wrap:wrap;font-size:9.5px;color:var(--mt);margin-top:10px} | |
| .gd-lg{display:flex;align-items:center;gap:4px}.gd-sw{width:13px;height:13px;border-radius:3px;flex-shrink:0} | |
| .gi-kpi-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:20px} | |
| .gi-kpi{background:#fff;border:1px solid var(--bd);border-radius:10px;padding:13px 16px} | |
| .gi-kpi-lbl{font-size:9px;color:var(--mt);text-transform:uppercase;letter-spacing:.6px;font-family:var(--mono);margin-bottom:4px} | |
| .gi-kpi-val{font-family:'DM Serif Display',serif;font-size:22px;margin-bottom:2px} | |
| .gi-kpi-sub{font-size:9.5px;color:var(--mt)} | |
| .gi-tbl{width:100%;border-collapse:collapse;font-size:12px} | |
| .gi-tbl thead tr{background:#f0ead8} | |
| .gi-tbl th{padding:8px 11px;text-align:left;font-size:8.5px;font-weight:700;color:var(--gn);text-transform:uppercase;letter-spacing:.4px;font-family:var(--mono);border-bottom:2px solid var(--bd2);white-space:nowrap} | |
| .gi-tbl td{padding:9px 11px;border-bottom:1px solid var(--bd);vertical-align:middle;white-space:nowrap;font-family:var(--mono)} | |
| .gi-tbl tr:last-child td{border-bottom:none}.gi-row-changed{background:rgba(250,236,231,.35)} | |
| .gi-mrp-up{color:#993C1D;font-weight:700}.gi-mrp-dn{color:#3B6D11;font-weight:700} | |
| .gi-delta{padding:2px 8px;border-radius:10px;font-size:11px;font-weight:700} | |
| .gi-delta-up{background:#FAECE7;color:#993C1D}.gi-delta-dn{background:#EAF3DE;color:#3B6D11} | |
| .gi-rg{display:inline-flex;align-items:center;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:500} | |
| .gi-rg-good{background:#EAF3DE;color:#3B6D11}.gi-rg-bad{background:#FCEBEB;color:#A32D2D}.gi-rg-neu{background:var(--sf);color:var(--mt)} | |
| .gi-flag{display:flex;align-items:flex-start;gap:8px;padding:10px 13px;border-radius:8px;font-size:11.5px;line-height:1.55} | |
| .gi-flag-warn{background:#FAEEDA;border:1px solid #FAC775;color:#633806} | |
| .gi-flag-ok{background:#EAF3DE;border:1px solid #C0DD97;color:#27500A} | |
| .gi-flag-icon{font-size:14px;flex-shrink:0;margin-top:1px} | |
| """ | |