
/* ===== THEME SYSTEM ===== */
:root {
    --m2-font:'DM Sans',sans-serif;
    --m2-mono:'JetBrains Mono',monospace;
    --m2-topbar-h:48px;
    --m2-statusbar-h:26px;
    --m2-sidebar-w:300px;
    --m2-radius:4px;
    --m2-radius-lg:6px;
}

/* Dark theme (default) */
[data-theme="dark"]{
    --m2-bg-primary:#1e2028;--m2-bg-secondary:#181a21;--m2-bg-tertiary:#14161c;
    --m2-bg-surface:#23252e;--m2-bg-hover:#2a2c36;--m2-bg-active:#303240;
    --m2-border:#2e3038;--m2-border-light:#3a3c48;
    --m2-text-primary:#e2e6f0;--m2-text-secondary:#8b92a8;--m2-text-muted:#5c6380;
    --m2-success:#4ade80;--m2-warning:#fbbf24;--m2-error:#f87171;
    --m2-shadow:rgba(0,0,0,0.4);
}
/* Light theme */
[data-theme="light"]{
    --m2-bg-primary:#f0f2f5;--m2-bg-secondary:#ffffff;--m2-bg-tertiary:#e8eaef;
    --m2-bg-surface:#ffffff;--m2-bg-hover:#ebedf2;--m2-bg-active:#dfe1e8;
    --m2-border:#d4d7df;--m2-border-light:#c8ccd6;
    --m2-text-primary:#1a1f2e;--m2-text-secondary:#5c6380;--m2-text-muted:#8b92a8;
    --m2-success:#16a34a;--m2-warning:#d97706;--m2-error:#dc2626;
    --m2-shadow:rgba(0,0,0,0.1);
}

/* Accent colours */
[data-accent="blue"]{--m2-accent:#3b9eff;--m2-accent-hover:#5bb0ff;--m2-accent-dim:rgba(59,158,255,0.15);}
[data-accent="teal"]{--m2-accent:#2dd4bf;--m2-accent-hover:#5eead4;--m2-accent-dim:rgba(45,212,191,0.15);}
[data-accent="violet"]{--m2-accent:#a78bfa;--m2-accent-hover:#c4b5fd;--m2-accent-dim:rgba(167,139,250,0.15);}
[data-accent="amber"]{--m2-accent:#f59e0b;--m2-accent-hover:#fbbf24;--m2-accent-dim:rgba(245,158,11,0.15);}
[data-accent="rose"]{--m2-accent:#fb7185;--m2-accent-hover:#fda4af;--m2-accent-dim:rgba(251,113,133,0.15);}
[data-accent="green"]{--m2-accent:#4ade80;--m2-accent-hover:#86efac;--m2-accent-dim:rgba(74,222,128,0.15);}

*{margin:0;padding:0;box-sizing:border-box;}
html,body{height:100%;overflow:hidden;}
body{font-family:var(--m2-font);font-size:13px;color:var(--m2-text-primary);background:var(--m2-bg-primary);display:flex;flex-direction:column;user-select:none;}

/* ===== TOPBAR ===== */
.topbar{height:var(--m2-topbar-h);background:var(--m2-bg-secondary);border-bottom:1px solid var(--m2-border);display:flex;align-items:center;padding:0 12px;gap:4px;flex-shrink:0;z-index:100;}
.topbar-brand{display:flex;align-items:center;gap:8px;margin-right:8px;cursor:pointer;}
.topbar-brand svg{width:22px;height:22px;}
.topbar-brand span{font-weight:600;font-size:13px;color:var(--m2-text-primary);}
.menu-btn{background:none;border:none;color:var(--m2-text-secondary);font-family:var(--m2-font);font-size:13px;padding:6px 10px;border-radius:var(--m2-radius);cursor:pointer;position:relative;transition:background 0.12s,color 0.12s,transform 0.1s;}
.menu-btn:hover{background:var(--m2-bg-hover);color:var(--m2-text-primary);}
.menu-btn:active{transform:scale(0.95);}
.menu-btn.active{background:var(--m2-bg-active);color:var(--m2-text-primary);}
.topbar-spacer{flex:1;}
.topbar-actions{display:flex;align-items:center;gap:2px;}
.icon-btn{background:none;border:none;color:var(--m2-text-secondary);width:32px;height:32px;border-radius:var(--m2-radius);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background 0.12s,color 0.12s,transform 0.1s;}
.icon-btn:hover{background:var(--m2-bg-hover);color:var(--m2-text-primary);}
.icon-btn:active{transform:scale(0.85);}
.icon-btn svg{width:16px;height:16px;}
.back-btn{background:none;border:none;color:var(--m2-text-secondary);font-family:var(--m2-font);font-size:13px;padding:6px 10px;border-radius:var(--m2-radius);cursor:pointer;display:flex;align-items:center;gap:6px;}
.back-btn:hover{background:var(--m2-bg-hover);color:var(--m2-text-primary);}
.back-btn svg{width:14px;height:14px;}

/* ===== DROPDOWNS ===== */
.dropdown{position:absolute;top:100%;left:0;min-width:200px;background:var(--m2-bg-surface);border:1px solid var(--m2-border-light);border-radius:var(--m2-radius-lg);padding:4px;box-shadow:0 8px 24px var(--m2-shadow);z-index:200;display:none;}
.dropdown.open{display:block;animation:dropIn 0.15s ease;}
.dropdown-item{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:var(--m2-radius);cursor:pointer;color:var(--m2-text-primary);font-size:13px;white-space:nowrap;}
.dropdown-item:hover{background:var(--m2-bg-hover);}
.dropdown-item svg{width:15px;height:15px;color:var(--m2-text-secondary);flex-shrink:0;}
.dropdown-item .shortcut{margin-left:auto;color:var(--m2-text-muted);font-size:11px;font-family:var(--m2-mono);}
.dropdown-sep{height:1px;background:var(--m2-border);margin:4px 6px;}
.dropdown-item.has-sub{position:relative;}
.dropdown-item.has-sub::after{content:'';margin-left:auto;border:4px solid transparent;border-left-color:var(--m2-text-muted);}
.dropdown-item.has-sub .sub-menu{position:absolute;left:100%;top:-4px;min-width:180px;background:var(--m2-bg-surface);border:1px solid var(--m2-border-light);border-radius:var(--m2-radius-lg);padding:4px;box-shadow:0 8px 24px var(--m2-shadow);display:none;}
.dropdown-item.has-sub:hover .sub-menu{display:block;animation:dropIn 0.12s ease;}
.dropdown-item.disabled{opacity:0.4;pointer-events:none;}

/* Theme picker in dropdown */
.theme-row{display:flex;align-items:center;gap:6px;padding:7px 10px;}
.theme-row .tl{font-size:11px;color:var(--m2-text-muted);margin-right:4px;}
.theme-dot{width:18px;height:18px;border-radius:50%;cursor:pointer;border:2px solid transparent;transition:border-color 0.15s;}
.theme-dot:hover{border-color:var(--m2-text-secondary);}
.theme-dot.active{border-color:var(--m2-text-primary);}

/* ===== SCREENS ===== */
.screen{display:none;flex:1;overflow:hidden;}
.screen.active{display:flex;flex-direction:column;animation:fadeIn 0.15s ease;}
@keyframes fadeIn{from{opacity:0;}to{opacity:1;}}
@keyframes dropIn{from{opacity:0;transform:translateY(-6px);}to{opacity:1;transform:translateY(0);}}
@keyframes panelFadeIn{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:translateY(0);}}
@keyframes ganttBarIn{from{transform:scaleX(0);}to{transform:scaleX(1);}}
@keyframes qaBadgePop{0%{transform:scale(1);}40%{transform:scale(1.45);}100%{transform:scale(1);}}
.panel-anim{animation:panelFadeIn 0.18s ease;}
.gantt-bar{transform-origin:left center;animation:ganttBarIn 0.35s ease forwards;}

/* ===== LANDING ===== */
.landing{align-items:stretch;justify-content:flex-start;padding:0;overflow:hidden;}
.landing-hd{display:flex;align-items:center;gap:14px;padding:13px 28px;border-bottom:1px solid var(--m2-border);flex-shrink:0;background:var(--m2-bg-secondary);}
.landing-hd-logo{width:30px;height:30px;flex-shrink:0;}
.landing-hd-text{flex:1;}
.landing-hd-text h1{font-size:15px;font-weight:700;color:var(--m2-text-primary);}
.landing-hd-text p{font-size:12px;color:var(--m2-text-muted);margin-top:2px;}
.landing-cols{flex:1;display:flex;flex-direction:column;overflow:hidden;min-height:0;}
.landing-right{display:flex;flex-direction:column;gap:14px;padding:20px 28px;overflow-y:auto;flex:1;}

.section-label{width:100%;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.06em;color:var(--m2-text-muted);}
/* Card browser (Formats / Samples tabs) */
.card-browser{display:flex;flex-direction:column;gap:10px;}
.cb-tabs{display:flex;border-bottom:1px solid var(--m2-border);margin-bottom:2px;}
.cb-tab{font-size:12px;font-weight:500;padding:6px 16px;border:none;background:none;color:var(--m2-text-muted);cursor:pointer;font-family:var(--m2-font);border-bottom:2px solid transparent;margin-bottom:-1px;transition:color 0.12s,border-color 0.12s;}
.cb-tab:hover{color:var(--m2-text-secondary);}
.cb-tab.active{color:var(--m2-accent);border-bottom-color:var(--m2-accent);}
.cb-panel{display:flex;flex-direction:column;gap:8px;}
/* Format category pills */
.fmt-cat-bar{display:flex;gap:4px;flex-wrap:wrap;align-items:center;}
.fmt-search{margin-left:auto;font-size:11px;font-family:var(--m2-font);padding:3px 8px;border-radius:var(--m2-radius);border:1px solid var(--m2-border);background:var(--m2-bg-input);color:var(--m2-text-primary);outline:none;width:140px;}
.fmt-search:focus{border-color:var(--m2-accent);}
.fmt-search::placeholder{color:var(--m2-text-muted);}
.fmt-cat-tab{font-size:10px;font-weight:500;padding:3px 10px;border-radius:20px;border:1px solid var(--m2-border);background:none;color:var(--m2-text-muted);cursor:pointer;font-family:var(--m2-font);transition:border-color 0.12s,color 0.12s,background 0.12s;}
.fmt-cat-tab:hover{border-color:var(--m2-accent);color:var(--m2-text-secondary);}
.fmt-cat-tab.active{background:var(--m2-accent-dim);border-color:var(--m2-accent);color:var(--m2-accent);}
/* Format grid */
.format-grid{width:100%;display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:6px;}
.format-card{background:var(--m2-bg-surface);border:1px solid var(--m2-border);border-radius:var(--m2-radius-lg);padding:8px 12px;display:flex;align-items:flex-start;gap:10px;cursor:default;transition:border-color 0.15s,background 0.15s,transform 0.15s,box-shadow 0.15s;}
.format-card.supported{cursor:pointer;}
.format-card.supported:hover{border-color:var(--m2-accent);background:var(--m2-bg-hover);transform:translateY(-2px);box-shadow:0 4px 14px rgba(0,0,0,0.18);}
.format-card .fc-icon{width:52px;height:36px;border-radius:5px;display:flex;align-items:center;justify-content:center;font-family:var(--m2-mono);font-size:8px;font-weight:700;flex-shrink:0;letter-spacing:-0.02em;margin-top:1px;}
.format-card .fc-info{display:flex;flex-direction:column;gap:2px;min-width:0;}
.format-card .fc-name{font-size:12px;font-weight:500;color:var(--m2-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.format-card .fc-desc{font-size:10px;color:var(--m2-text-muted);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;line-height:1.4;white-space:normal;}
.format-card.coming-soon{opacity:0.45;}
.format-card .fc-badge{margin-left:auto;font-size:9px;font-family:var(--m2-mono);padding:2px 6px;border-radius:8px;background:var(--m2-bg-hover);color:var(--m2-text-muted);flex-shrink:0;}
/* Sample cards */
.sample-grid{width:100%;display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:6px;}
.sample-card{background:var(--m2-bg-surface);border:1px solid var(--m2-border);border-radius:var(--m2-radius-lg);padding:8px 12px;display:flex;align-items:flex-start;gap:10px;cursor:pointer;transition:border-color 0.15s,background 0.15s,transform 0.15s,box-shadow 0.15s;}
.sample-card:hover{border-color:var(--m2-accent);background:var(--m2-bg-hover);transform:translateY(-2px);box-shadow:0 4px 14px rgba(0,0,0,0.18);}
.sample-card .sc-icon{width:52px;height:36px;border-radius:5px;display:flex;align-items:center;justify-content:center;font-family:var(--m2-mono);font-size:8px;font-weight:700;flex-shrink:0;letter-spacing:-0.02em;margin-top:1px;}
.sample-card .sc-info{display:flex;flex-direction:column;gap:2px;min-width:0;}
.sample-card .sc-name{font-size:12px;font-weight:500;color:var(--m2-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sample-card .sc-desc{font-size:10px;color:var(--m2-text-muted);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;line-height:1.4;white-space:normal;}
/* Card tooltip */
.format-card,.sample-card{position:relative;overflow:visible;}
#card-tip{position:fixed;background:#1a2332;border:1px solid rgba(255,255,255,0.1);border-radius:8px;padding:12px 18px;width:360px;pointer-events:none;z-index:1000;box-shadow:0 6px 20px rgba(0,0,0,0.4);display:none;text-align:center;}
#card-tip-title{font-size:12.5px;font-weight:700;color:#fff;margin-bottom:5px;letter-spacing:0.01em;}
#card-tip-desc{font-size:11.5px;line-height:1.5;color:#94a3b8;}


.cb-no-results{padding:28px 16px;text-align:center;color:var(--m2-text-muted);font-size:12px;grid-column:1/-1;}
/* What's new link on home */
.wn-link{font-size:12px;color:var(--m2-accent);cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:4px;}
.wn-link:hover{text-decoration:underline;}

/* Cost Summary Dashboard */
.dash-panel{display:flex;flex-direction:column;overflow:auto;padding:20px 24px;gap:20px;}
.dash-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;}
.dash-card{background:var(--m2-bg-surface);border:1px solid var(--m2-border);border-radius:var(--m2-radius-lg);padding:14px 16px;display:flex;flex-direction:column;gap:4px;transition:border-color 0.15s,transform 0.15s,box-shadow 0.15s;}
.dash-card:hover{border-color:var(--m2-accent);transform:translateY(-2px);box-shadow:0 4px 14px rgba(0,0,0,0.18);}
.dash-card .dc-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:0.07em;color:var(--m2-text-muted);}
.dash-card .dc-value{font-size:20px;font-weight:600;color:var(--m2-text-primary);font-family:var(--m2-mono);}
.dash-card .dc-sub{font-size:11px;color:var(--m2-text-muted);}
.dash-section-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.06em;color:var(--m2-text-muted);}
.dash-breakdown{display:flex;flex-direction:column;gap:6px;}
.dash-row{display:flex;align-items:center;gap:10px;cursor:pointer;padding:4px 0;}
.dash-row:hover .dr-name{color:var(--m2-accent);}
.dash-row .dr-name{flex:1;font-size:12px;color:var(--m2-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;}
.dash-row .dr-bar-wrap{width:120px;height:8px;background:var(--m2-bg-hover);border-radius:4px;flex-shrink:0;overflow:hidden;}
.dash-row .dr-bar{height:100%;border-radius:4px;transition:width 0.35s ease;}
.dash-row .dr-pct{font-size:11px;font-family:var(--m2-mono);color:var(--m2-text-muted);width:36px;text-align:right;flex-shrink:0;}
.dash-row .dr-amt{font-size:11px;font-family:var(--m2-mono);color:var(--m2-text-primary);width:90px;text-align:right;flex-shrink:0;}

.recent-section{width:100%;display:flex;flex-direction:column;gap:8px;}
.recent-list{display:flex;flex-direction:column;gap:4px;}
.recent-item{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:var(--m2-radius);cursor:pointer;background:var(--m2-bg-surface);border:1px solid var(--m2-border);}
.recent-item:hover{border-color:var(--m2-accent);background:var(--m2-bg-hover);}
.recent-item .ri-ext{font-family:var(--m2-mono);font-size:10px;font-weight:600;color:var(--m2-accent);background:var(--m2-accent-dim);padding:3px 0;border-radius:4px;width:52px;text-align:center;flex-shrink:0;}
.recent-item .ri-name{font-size:12px;color:var(--m2-text-primary);flex:1;}
.recent-item .ri-info{font-size:11px;color:var(--m2-text-muted);}

/* ===== WORKSPACE (BOQ) ===== */
.workspace{flex-direction:column !important;}
.ws-main{flex:1;display:flex;overflow:hidden;}
.sidebar{width:var(--m2-sidebar-w);background:var(--m2-bg-secondary);border-right:1px solid var(--m2-border);display:flex;flex-direction:column;flex-shrink:0;overflow:hidden;}
.sidebar-panel{display:flex;flex-direction:column;min-height:0;overflow:hidden;}
.sidebar-panel.collapsed .panel-body{max-height:0 !important;}
.sidebar-panel:first-child{flex:1;}
.sidebar-panel:last-child{flex:0 0 auto;max-height:50%;}
.sidebar-panel:last-child:not(.collapsed){flex:1;}
.panel-header{display:flex;align-items:center;padding:0 12px;height:34px;background:var(--m2-bg-tertiary);border-bottom:1px solid var(--m2-border);cursor:pointer;flex-shrink:0;}
.panel-header:hover{background:var(--m2-bg-hover);}
.panel-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.06em;color:var(--m2-text-secondary);flex:1;}
.panel-chevron{width:14px;height:14px;color:var(--m2-text-muted);transition:transform 0.15s;}
.sidebar-panel.collapsed .panel-chevron{transform:rotate(-90deg);}
.panel-body{flex:1;display:flex;flex-direction:column;overflow:hidden;max-height:2000px;transition:max-height 0.25s ease;}

.filter-bar{display:flex;align-items:center;padding:6px 8px;gap:6px;}
.filter-bar label{font-size:11px;color:var(--m2-text-muted);flex-shrink:0;}
.filter-bar input{flex:1;background:var(--m2-bg-primary);border:1px solid var(--m2-border);border-radius:var(--m2-radius);padding:4px 8px;font-family:var(--m2-font);font-size:12px;color:var(--m2-text-primary);outline:none;}
.filter-bar input:focus{border-color:var(--m2-accent);}
.sidebar-list{flex:1;overflow-y:auto;padding:2px 4px;}
.sidebar-list::-webkit-scrollbar{width:6px;}
.sidebar-list::-webkit-scrollbar-track{background:transparent;}
.sidebar-list::-webkit-scrollbar-thumb{background:var(--m2-border);border-radius:3px;}
.sidebar-item{padding:6px 10px;border-radius:var(--m2-radius);cursor:pointer;font-size:12px;color:var(--m2-text-secondary);display:flex;align-items:center;gap:8px;}
.sidebar-item:hover{background:var(--m2-bg-hover);color:var(--m2-text-primary);}
.sidebar-item.selected{background:var(--m2-accent-dim);color:var(--m2-accent);}
.sidebar-item .ic{width:14px;height:14px;flex-shrink:0;}
.sidebar-item .cnt{margin-left:auto;font-size:10px;font-family:var(--m2-mono);color:var(--m2-text-muted);background:var(--m2-bg-primary);padding:1px 6px;border-radius:8px;}

.ws-content{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--m2-bg-primary);}
.content-tabs{display:flex;align-items:center;padding:0 12px;height:36px;background:var(--m2-bg-secondary);border-bottom:1px solid var(--m2-border);flex-shrink:0;}
.content-tab{font-size:12px;font-weight:500;padding:0 14px;height:100%;display:flex;align-items:center;cursor:pointer;color:var(--m2-text-muted);border-bottom:2px solid transparent;background:none;border-top:none;border-left:none;border-right:none;font-family:var(--m2-font);}
.content-tab:hover{color:var(--m2-text-secondary);}
.content-tab.active{color:var(--m2-accent);border-bottom-color:var(--m2-accent);}
.content-filter{display:flex;align-items:center;padding:8px 12px;gap:8px;border-bottom:1px solid var(--m2-border);flex-shrink:0;}
.content-filter label{font-size:11px;color:var(--m2-text-muted);}
.content-filter input{flex:1;background:var(--m2-bg-secondary);border:1px solid var(--m2-border);border-radius:var(--m2-radius);padding:5px 10px;font-family:var(--m2-font);font-size:12px;color:var(--m2-text-primary);outline:none;}
.content-filter input:focus{border-color:var(--m2-accent);}

.grid-container{flex:1;overflow:auto;}
.grid-container::-webkit-scrollbar{width:8px;height:8px;}
.grid-container::-webkit-scrollbar-track{background:var(--m2-bg-secondary);}
.grid-container::-webkit-scrollbar-thumb{background:var(--m2-border-light);border-radius:4px;}
.data-grid{width:100%;border-collapse:collapse;table-layout:fixed;}
.data-grid .gh td{background:var(--m2-bg-tertiary);padding:6px 12px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;color:var(--m2-text-secondary);border-bottom:1px solid var(--m2-border);text-align:left;}
.data-grid .gh.subtotal-row td{background:var(--m2-bg-secondary);border-top:1px solid var(--m2-border);font-weight:600;letter-spacing:0;text-transform:none;font-size:11px;color:var(--m2-text-muted);}
.data-grid thead th{position:sticky;top:0;background:var(--m2-bg-secondary);padding:0 12px;height:32px;font-size:11px;font-weight:600;color:var(--m2-text-muted);text-align:left;border-bottom:1px solid var(--m2-border);white-space:nowrap;z-index:10;}
.data-grid thead th.num{text-align:right;}
.data-grid tbody tr{border-bottom:1px solid var(--m2-border);cursor:pointer;}
.data-grid tbody tr:hover{background:var(--m2-bg-hover);}
.data-grid tbody tr.selected{background:var(--m2-accent-dim);}
.data-grid tbody tr.rh{background:var(--m2-bg-secondary);}
.data-grid tbody tr.rh td{font-weight:600;color:var(--m2-text-secondary);}
.data-grid tbody tr.rl1 td.cd{padding-left:12px;font-weight:600;font-size:13px;}
.data-grid tbody tr.rl2 td.cd{padding-left:24px;font-weight:500;}
.data-grid tbody tr.rl3 td.cd{padding-left:36px;font-style:italic;color:var(--m2-text-secondary);}
.data-grid tbody tr.rl4 td.cd{padding-left:48px;color:var(--m2-text-secondary);}
.data-grid tbody tr.rl9 td.cd{padding-left:48px;}
.data-grid tbody td{padding:5px 12px;font-size:12px;color:var(--m2-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:top;}
.data-grid tbody td.num{text-align:right;font-family:var(--m2-mono);font-size:11px;}
.data-grid tbody td.cd{white-space:normal;line-height:1.4;}
.data-grid tbody td.cr{font-family:var(--m2-mono);font-size:11px;color:var(--m2-accent);}
.data-grid tbody td.cl{font-family:var(--m2-mono);font-size:11px;text-align:center;}
.data-grid tbody td.cu{color:var(--m2-text-secondary);}
.data-grid thead th.sortable{cursor:pointer;user-select:none;}
.data-grid thead th.sortable:hover{color:var(--m2-text-primary);background:var(--m2-bg-hover);}
.data-grid thead th .sort-icon{display:inline-block;margin-left:4px;opacity:0.35;font-size:9px;vertical-align:middle;}
.data-grid thead th.sort-asc .sort-icon,.data-grid thead th.sort-desc .sort-icon{opacity:1;color:var(--m2-accent);}
.data-grid tbody td.editable{cursor:text;}
.data-grid tbody td.editable:hover{outline:1px dashed var(--m2-border-light);outline-offset:-1px;}
.data-grid tbody td.editing{padding:0;overflow:visible;}
.data-grid tbody td.editing input,.data-grid tbody td.editing textarea{width:100%;height:100%;min-height:28px;padding:4px 11px;border:2px solid var(--m2-accent);border-radius:2px;background:var(--m2-bg-primary);color:var(--m2-text-primary);font-family:inherit;font-size:inherit;outline:none;box-sizing:border-box;}
.data-grid tbody td.editing input.num-edit{text-align:right;font-family:var(--m2-mono);font-size:11px;}
.data-grid tbody td.editing textarea{resize:vertical;min-height:40px;line-height:1.4;white-space:pre-wrap;}
.data-grid tbody tr.dirty td:first-child{border-left:3px solid var(--m2-warning);}
.edit-indicator{display:none;align-items:center;gap:6px;padding:4px 12px;background:var(--m2-bg-tertiary);border-bottom:1px solid var(--m2-border);font-size:11px;color:var(--m2-text-muted);flex-shrink:0;}
.edit-indicator.visible{display:flex;}
.edit-indicator .ei-count{color:var(--m2-warning);font-family:var(--m2-mono);font-weight:600;}
.edit-indicator .ei-btn{padding:3px 10px;border:1px solid var(--m2-border);border-radius:var(--m2-radius);background:none;color:var(--m2-text-secondary);font-family:var(--m2-font);font-size:11px;cursor:pointer;}
.edit-indicator .ei-btn:hover{background:var(--m2-bg-hover);color:var(--m2-text-primary);}

.file-info{display:flex;align-items:center;gap:12px;padding:6px 12px;background:var(--m2-bg-tertiary);border-bottom:1px solid var(--m2-border);flex-shrink:0;flex-wrap:wrap;}
.fi-item{display:flex;align-items:center;gap:4px;font-size:11px;}
.fi-label{color:var(--m2-text-muted);}
.fi-value{color:var(--m2-text-secondary);font-family:var(--m2-mono);font-size:10px;}
.fi-sep{width:1px;height:12px;background:var(--m2-border);}

.summary-bar{display:flex;align-items:center;padding:6px 12px;gap:16px;background:var(--m2-bg-secondary);border-top:1px solid var(--m2-border);flex-shrink:0;font-size:11px;}
.summary-bar .sl{color:var(--m2-text-muted);}
.summary-bar .sv{color:var(--m2-accent);font-family:var(--m2-mono);font-weight:600;}

/* ===== STATUSBAR ===== */
.statusbar{height:var(--m2-statusbar-h);background:var(--m2-bg-tertiary);border-top:1px solid var(--m2-border);display:flex;align-items:center;padding:0 12px;gap:12px;font-size:11px;color:var(--m2-text-muted);flex-shrink:0;}
.statusbar .sb-item{display:flex;align-items:center;gap:5px;}
.statusbar .sl{color:var(--m2-text-muted);}
.statusbar .sv{color:var(--m2-accent);font-family:var(--m2-mono);font-size:10px;}
.statusbar .ss{width:1px;height:12px;background:var(--m2-border);}

/* BOQ Toolbar */
.boq-toolbar{display:flex;align-items:center;gap:6px;padding:5px 10px;border-bottom:1px solid var(--m2-border);background:var(--m2-bg-secondary);flex-shrink:0;flex-wrap:wrap;}
.btb-btn{font-size:11px;padding:3px 9px;border-radius:var(--m2-radius);border:1px solid var(--m2-border);background:none;color:var(--m2-text-secondary);cursor:pointer;font-family:var(--m2-font);display:inline-flex;align-items:center;gap:4px;white-space:nowrap;transition:border-color 0.12s,color 0.12s,transform 0.1s;}
.btb-btn:hover{border-color:var(--m2-accent);color:var(--m2-accent);}
.btb-btn:active{transform:scale(0.94);}
.btb-btn.active{background:var(--m2-accent-dim);border-color:var(--m2-accent);color:var(--m2-accent);}
.btb-search{font-size:11px;font-family:var(--m2-font);background:var(--m2-bg-primary);border:1px solid var(--m2-border);border-radius:var(--m2-radius);padding:3px 8px;color:var(--m2-text-primary);outline:none;width:180px;transition:border-color 0.12s;}
.btb-search:focus{border-color:var(--m2-accent);}
.btb-search::placeholder{color:var(--m2-text-muted);}
.btb-count{font-size:10px;color:var(--m2-text-muted);white-space:nowrap;}
.btb-dropdown{position:absolute;top:calc(100% + 4px);left:0;z-index:99;background:var(--m2-bg-surface);border:1px solid var(--m2-border);border-radius:var(--m2-radius-lg);padding:6px;display:none;min-width:160px;box-shadow:0 4px 16px rgba(0,0,0,0.2);}
.btb-dropdown.open{display:block;animation:dropIn 0.15s ease;}
.btb-chk-item{display:flex;align-items:center;gap:8px;padding:4px 8px;border-radius:var(--m2-radius);cursor:pointer;font-size:11px;color:var(--m2-text-secondary);user-select:none;}
.btb-chk-item:hover{background:var(--m2-bg-hover);color:var(--m2-text-primary);}
.btb-chk-box{width:13px;height:13px;border-radius:3px;border:1.5px solid var(--m2-border);flex-shrink:0;display:flex;align-items:center;justify-content:center;}
.btb-chk-box.checked{background:var(--m2-accent);border-color:var(--m2-accent);}
/* Rate benchmark cell highlights */
td.bench-high{background:rgba(239,68,68,0.13)!important;}
td.bench-low{background:rgba(245,158,11,0.12)!important;}
/* S-curve container */
.scurve-view{flex:1;overflow-y:auto;background:var(--m2-bg-primary);}

/* Resize */
.resize-handle{width:4px;cursor:col-resize;background:transparent;flex-shrink:0;}
.resize-handle:hover,.resize-handle.active{background:var(--m2-accent);}

/* ===== MODAL ===== */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:500;display:none;align-items:center;justify-content:center;}
.modal-overlay.open{display:flex;}
.modal{background:var(--m2-bg-surface);border:1px solid var(--m2-border-light);border-radius:12px;padding:28px 32px;max-width:440px;width:90%;max-height:88vh;display:flex;flex-direction:column;box-shadow:0 16px 48px var(--m2-shadow);animation:modalIn 0.2s ease;}
.modal-body{overflow-y:auto;flex:1;min-height:0;margin:0 -4px;padding:0 4px;}
@keyframes modalIn{from{opacity:0;transform:translateY(12px);}to{opacity:1;transform:translateY(0);}}
.modal h2{font-size:17px;font-weight:700;color:var(--m2-text-primary);margin-bottom:4px;}
.modal .modal-ver{font-size:12px;color:var(--m2-accent);font-family:var(--m2-mono);margin-bottom:16px;}
.modal ul{list-style:none;display:flex;flex-direction:column;gap:8px;margin-bottom:20px;}
.modal ul li{font-size:13px;color:var(--m2-text-secondary);line-height:1.5;padding-left:16px;position:relative;}
.modal ul li::before{content:'•';position:absolute;left:0;color:var(--m2-accent);}
.modal .modal-close{padding:8px 24px;background:var(--m2-accent);color:#fff;border:none;border-radius:var(--m2-radius);font-family:var(--m2-font);font-size:13px;font-weight:500;cursor:pointer;align-self:flex-end;margin-top:20px;flex-shrink:0;}
.modal .modal-close:hover{background:var(--m2-accent-hover);}

/* QA Modal */
.modal-lg{max-width:640px;}

/* Help Modal */
.help-modal{max-width:860px;width:95vw;height:82vh;max-height:720px;display:flex;flex-direction:column;padding:0;overflow:hidden;}
.help-modal-head{padding:20px 24px 0;flex-shrink:0;}
.help-modal-head h2{margin:0 0 0;font-size:17px;font-weight:700;}
.help-modal-body{display:flex;flex:1;min-height:0;gap:0;}
.help-tabs{width:168px;flex-shrink:0;border-right:1px solid var(--m2-border);padding:8px 0;overflow-y:auto;background:var(--m2-bg-alt,var(--m2-bg-hover));}
.help-tab{display:block;width:100%;text-align:left;background:none;border:none;padding:9px 16px;font-size:12px;font-family:var(--m2-font);color:var(--m2-text-secondary);cursor:pointer;border-left:3px solid transparent;transition:background 0.1s,color 0.1s;}
.help-tab:hover{background:var(--m2-bg-hover);color:var(--m2-text-primary);}
.help-tab.active{background:var(--m2-accent-dim);color:var(--m2-accent);border-left-color:var(--m2-accent);font-weight:600;}
.help-content{flex:1;overflow-y:auto;padding:20px 24px;}
.help-panel{display:none;}
.help-panel.active{display:block;}
.help-panel h3{font-size:14px;font-weight:700;margin:0 0 12px;color:var(--m2-text-primary);}
.help-panel h4{font-size:12px;font-weight:700;margin:18px 0 6px;color:var(--m2-accent);text-transform:uppercase;letter-spacing:.04em;}
.help-panel p{font-size:13px;color:var(--m2-text-secondary);line-height:1.65;margin:0 0 10px;}
.help-panel ul{list-style:none;margin:0 0 10px;padding:0;display:flex;flex-direction:column;gap:5px;}
.help-panel ul li{font-size:12.5px;color:var(--m2-text-secondary);line-height:1.55;padding-left:14px;position:relative;}
.help-panel ul li::before{content:'•';position:absolute;left:0;color:var(--m2-accent);}
.help-panel .help-kbd{display:inline-block;background:var(--m2-bg-hover);border:1px solid var(--m2-border);border-radius:4px;padding:1px 6px;font-size:11px;font-family:var(--m2-mono);margin:0 2px;}
.help-panel .help-tag{display:inline-block;background:var(--m2-accent-dim);color:var(--m2-accent);border-radius:4px;padding:1px 7px;font-size:11px;font-weight:600;font-family:var(--m2-mono);margin-right:4px;}
.help-panel .help-tip{background:var(--m2-bg-hover);border-left:3px solid var(--m2-accent);border-radius:4px;padding:9px 12px;margin:10px 0;font-size:12px;color:var(--m2-text-secondary);line-height:1.55;}
.help-modal-foot{padding:12px 24px;border-top:1px solid var(--m2-border);flex-shrink:0;text-align:right;}
/* Excel / XLSX workspace */
.xlsx-formula-bar{display:flex;align-items:center;border-bottom:1px solid var(--m2-border);background:var(--m2-bg-alt,var(--m2-bg-hover));flex-shrink:0;height:30px;}
.xlsx-cell-ref{width:72px;min-width:72px;padding:0 10px;font-size:12px;font-family:var(--m2-mono);color:var(--m2-text-secondary);border-right:1px solid var(--m2-border);text-align:center;height:100%;display:flex;align-items:center;justify-content:center;background:var(--m2-bg-hover);}
.xlsx-formula-input{flex:1;border:none;outline:none;padding:0 10px;font-size:12px;font-family:var(--m2-mono);background:transparent;color:var(--m2-text-primary);height:100%;}
.xlsx-formula-input:focus{background:var(--m2-accent-dim);}
.xlsx-formula-input.has-formula{color:var(--m2-accent);}
.xlsx-fx-label{padding:0 8px;font-size:11px;font-style:italic;color:var(--m2-text-muted);user-select:none;white-space:nowrap;border-right:1px solid var(--m2-border);height:100%;display:flex;align-items:center;}
.xlsx-grid .rn-hd,.xlsx-grid .rn{position:sticky;left:0;z-index:1;width:44px;min-width:44px;background:var(--m2-bg-hover);color:var(--m2-text-muted);font-size:11px;border-right:1px solid var(--m2-border);text-align:center;user-select:none;padding:0 4px;}
.xlsx-grid thead .rn-hd{z-index:3;}
.xlsx-grid tbody .rn{cursor:pointer;}
.xlsx-grid tbody .rn:hover{background:var(--m2-accent-dim);color:var(--m2-accent);}
.xlsx-grid tbody .rn.row-selected{background:var(--m2-accent);color:#fff;}
.xlsx-grid thead th{position:sticky;top:0;z-index:2;}
.xlsx-grid th.col-hd{background:var(--m2-bg-hover);font-size:11px;font-weight:700;text-align:center;min-width:90px;padding:4px 8px;color:var(--m2-text-secondary);line-height:1.3;position:relative;}
.xlsx-grid th.col-hd.col-selected{background:var(--m2-accent-dim);color:var(--m2-accent);}
.col-letter{display:inline-block;cursor:pointer;border-radius:2px;padding:0 3px;}
.col-letter:hover{background:var(--m2-accent);color:#fff;}
.xlsx-grid th.col-hd.col-selected .col-letter{background:var(--m2-accent);color:#fff;}
.xlsx-grid th.col-hd .col-resize{position:absolute;right:0;top:15%;bottom:15%;width:5px;cursor:col-resize;background:transparent;z-index:3;border-left:2px solid var(--m2-border);transition:border-color 0.15s,background 0.15s;}
.xlsx-grid th.col-hd .col-resize:hover,.xlsx-grid th.col-hd .col-resize.resizing{background:var(--m2-accent);border-left-color:var(--m2-accent);opacity:0.7;}
.xlsx-grid td.xl-cell{cursor:default;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:300px;padding:3px 6px;}
.xlsx-grid td.xl-cell.xl-num{text-align:right;font-family:var(--m2-mono);font-size:12px;}
.xlsx-grid td.xl-cell.xl-fml{position:relative;}
.xlsx-grid td.xl-cell.xl-fml::after{content:'';position:absolute;top:0;right:0;width:0;height:0;border-style:solid;border-width:0 5px 5px 0;border-color:transparent var(--m2-accent) transparent transparent;pointer-events:none;}
.xlsx-grid td.xl-cell.col-sel{background:var(--m2-accent-dim);}
.xlsx-grid td.xl-cell.row-sel{background:var(--m2-accent-dim);}
.xlsx-grid td.xl-cell.selected{outline:2px solid var(--m2-accent);outline-offset:-2px;background:var(--m2-accent-dim);}
.xlsx-sheet-bar{display:flex;align-items:center;gap:2px;padding:3px 8px 0;border-top:1px solid var(--m2-border);background:var(--m2-bg-alt,var(--m2-bg-hover));overflow-x:auto;flex-shrink:0;min-height:32px;}
.xlsx-sheet-tab{padding:4px 14px;font-size:11.5px;border:1px solid transparent;border-radius:4px 4px 0 0;cursor:pointer;white-space:nowrap;color:var(--m2-text-secondary);background:none;font-family:var(--m2-font);}
.xlsx-sheet-tab:hover{background:var(--m2-bg-surface);color:var(--m2-text-primary);}
.xlsx-sheet-tab.active{background:var(--m2-bg-surface);color:var(--m2-accent);border-color:var(--m2-border);border-bottom-color:var(--m2-bg-surface);font-weight:600;}
/* Insights panel */
.xlsx-insights{display:flex;flex-wrap:wrap;gap:10px;padding:12px 0 6px;}
.xli-card{background:var(--m2-bg-surface);border:1px solid var(--m2-border);border-radius:var(--m2-radius-lg);padding:10px 14px;min-width:140px;display:flex;flex-direction:column;gap:4px;}
.xli-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:0.06em;color:var(--m2-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.xli-value{font-size:18px;font-weight:700;color:var(--m2-text-primary);font-family:var(--m2-mono);}
.xli-sub{font-size:10px;color:var(--m2-text-muted);}
/* Search & Replace modal */
.sr-row{display:flex;gap:8px;align-items:center;margin-bottom:10px;}
.sr-row label{width:80px;font-size:12px;color:var(--m2-text-muted);flex-shrink:0;}
.sr-row input{flex:1;padding:6px 10px;font-size:12px;border:1px solid var(--m2-border);border-radius:var(--m2-radius);background:var(--m2-bg-hover);color:var(--m2-text-primary);outline:none;}
.sr-row input:focus{border-color:var(--m2-accent);}
.sr-opts{display:flex;gap:16px;margin-bottom:14px;font-size:12px;color:var(--m2-text-secondary);}
.sr-opts label{display:flex;align-items:center;gap:6px;cursor:pointer;}
.sr-result{font-size:12px;color:var(--m2-text-muted);min-height:20px;margin-bottom:8px;}
.qa-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;border-radius:9px;background:var(--m2-error);color:#fff;font-size:10px;font-weight:700;padding:0 5px;margin-left:6px;font-family:var(--m2-mono);}
.qa-badge.warn{background:var(--m2-warning);color:#000;}
.qa-badge.ok{background:var(--m2-success);color:#fff;}
.qa-list{display:flex;flex-direction:column;gap:4px;max-height:380px;overflow-y:auto;margin-bottom:16px;}
.qa-item{display:flex;align-items:flex-start;gap:10px;padding:8px 10px;border-radius:var(--m2-radius);background:var(--m2-bg-hover);}
.qa-item .qi-sev{width:8px;height:8px;border-radius:50%;flex-shrink:0;margin-top:4px;}
.qa-item .qi-sev.error{background:var(--m2-error);}
.qa-item .qi-sev.warn{background:var(--m2-warning);}
.qa-item .qi-sev.info{background:var(--m2-accent);}
.qa-item .qi-msg{flex:1;font-size:12px;color:var(--m2-text-primary);line-height:1.5;}
.qa-item .qi-loc{font-size:10px;font-family:var(--m2-mono);color:var(--m2-text-muted);margin-top:2px;}
.qa-summary{display:flex;gap:12px;margin-bottom:14px;font-size:12px;}
.qa-summary .qs-item{display:flex;align-items:center;gap:6px;}
.qa-empty{padding:24px;text-align:center;color:var(--m2-text-muted);font-size:13px;}

/* Sortable table headers */
.data-grid thead th.sortable{cursor:pointer;user-select:none;}
.data-grid thead th.sortable:hover{color:var(--m2-accent);}
.data-grid thead th.sortable::after{content:'';display:inline-block;width:8px;height:8px;margin-left:4px;opacity:0.3;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 10'%3E%3Cpath fill='%236b7280' d='M4 0L7 4H1z'/%3E%3Cpath fill='%236b7280' d='M4 10L1 6h6z'/%3E%3C/svg%3E") no-repeat center;}
.data-grid thead th.sort-asc::after,.data-grid thead th.sort-desc::after{opacity:1;}
.data-grid thead th.sort-asc::after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 6'%3E%3Cpath fill='%233b9eff' d='M4 0L8 6H0z'/%3E%3C/svg%3E");}
.data-grid thead th.sort-desc::after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 6'%3E%3Cpath fill='%233b9eff' d='M4 6L0 0h8z'/%3E%3C/svg%3E");}

/* Copy button */
.copy-btn{background:none;border:1px solid var(--m2-border);color:var(--m2-text-secondary);font-family:var(--m2-font);font-size:11px;padding:3px 10px;border-radius:var(--m2-radius);cursor:pointer;display:flex;align-items:center;gap:5px;flex-shrink:0;}
.copy-btn:hover{background:var(--m2-bg-hover);color:var(--m2-text-primary);border-color:var(--m2-border-light);}
.copy-btn svg{width:12px;height:12px;}

/* Keyboard shortcut overlay */
.kbd-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:500;display:none;align-items:center;justify-content:center;}
.kbd-overlay.open{display:flex;}
.kbd-modal{background:var(--m2-bg-surface);border:1px solid var(--m2-border-light);border-radius:12px;padding:24px 28px;max-width:420px;width:90%;box-shadow:0 16px 48px var(--m2-shadow);}
.kbd-modal h2{font-size:15px;font-weight:700;margin-bottom:16px;color:var(--m2-text-primary);}
.kbd-table{width:100%;border-collapse:collapse;margin-bottom:16px;}
.kbd-table tr{border-bottom:1px solid var(--m2-border);}
.kbd-table tr:last-child{border-bottom:none;}
.kbd-table td{padding:7px 4px;font-size:12px;color:var(--m2-text-secondary);}
.kbd-table td:last-child{text-align:right;}
kbd{display:inline-block;padding:2px 6px;background:var(--m2-bg-tertiary);border:1px solid var(--m2-border-light);border-radius:3px;font-family:var(--m2-mono);font-size:10px;color:var(--m2-text-primary);}

/* Appearance panel (home screen) */
.ap-btn{background:none;border:none;color:var(--m2-text-secondary);width:32px;height:32px;border-radius:var(--m2-radius);cursor:pointer;display:flex;align-items:center;justify-content:center;position:relative;}
.ap-btn:hover{background:var(--m2-bg-hover);color:var(--m2-text-primary);}
.ap-btn svg{width:16px;height:16px;}
.ap-panel{position:absolute;top:calc(100% + 8px);right:0;width:220px;background:var(--m2-bg-surface);border:1px solid var(--m2-border-light);border-radius:var(--m2-radius-lg);padding:14px 16px;box-shadow:0 8px 28px var(--m2-shadow);z-index:300;display:none;}
.ap-panel.open{display:block;animation:fadeIn 0.12s ease;}
.ap-panel-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:0.07em;color:var(--m2-text-muted);margin-bottom:8px;}
.ap-toggle{display:flex;align-items:center;gap:8px;margin-bottom:14px;}
.ap-toggle-track{width:36px;height:20px;border-radius:10px;background:var(--m2-bg-hover);border:1px solid var(--m2-border-light);cursor:pointer;position:relative;flex-shrink:0;transition:background 0.15s;}
.ap-toggle-track.on{background:var(--m2-accent);border-color:var(--m2-accent);}
.ap-toggle-thumb{position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,0.3);transition:transform 0.15s;}
.ap-toggle-track.on .ap-toggle-thumb{transform:translateX(16px);}
.ap-toggle-label{font-size:12px;color:var(--m2-text-primary);}
.ap-swatches{display:flex;gap:7px;flex-wrap:wrap;}
.ap-swatch{width:22px;height:22px;border-radius:50%;cursor:pointer;border:2px solid transparent;transition:border-color 0.12s,transform 0.12s;}
.ap-swatch:hover{transform:scale(1.15);}
.ap-swatch.active{border-color:var(--m2-text-primary);}

/* Toast */
/* Loading overlay */
.loader-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.55);z-index:900;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;opacity:0;pointer-events:none;transition:opacity 0.15s;}
.loader-overlay.visible{opacity:1;pointer-events:all;}
.loader-spinner{width:40px;height:40px;border:3px solid rgba(255,255,255,0.15);border-top-color:var(--m2-accent);border-radius:50%;animation:loader-spin 0.7s linear infinite;}
.loader-label{font-size:13px;color:rgba(255,255,255,0.7);letter-spacing:0.02em;}
@keyframes loader-spin{to{transform:rotate(360deg);}}
.toast-container{position:fixed;bottom:36px;right:16px;z-index:600;display:flex;flex-direction:column;gap:8px;}
.toast{background:var(--m2-bg-surface);border:1px solid var(--m2-border-light);border-radius:var(--m2-radius-lg);padding:10px 16px;font-size:12px;color:var(--m2-text-primary);box-shadow:0 4px 16px var(--m2-shadow);display:flex;align-items:center;gap:8px;animation:toastIn 0.2s ease;}
.toast.success{border-left:3px solid var(--m2-success);}
.toast.error{border-left:3px solid var(--m2-error);}
.toast.info{border-left:3px solid var(--m2-accent);}
@keyframes toastIn{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:translateY(0);}}

/* ===== RESPONSIVE ===== */

/* Sidebar toggle (mobile only) */
.sidebar-toggle{display:none;}

/* Sidebar backdrop */
.sidebar-backdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.45);z-index:48;}
.sidebar-backdrop.open{display:block;}

/* Tablet */
@media (max-width:960px){
    .landing-hd{padding:12px 20px;}
}

/* Mobile: single-column layout */
@media (max-width:700px){
    /* Topbar */
    .topbar{padding:0 8px;gap:2px;}
    .topbar-brand span{display:none;}
    .sidebar-toggle{display:flex !important;}

    /* Landing */
    .landing{overflow:hidden;}
    .landing-hd{padding:10px 14px;flex-wrap:wrap;gap:10px;}
    .landing-hd-text p{display:none;}
    .landing-cols{overflow-y:auto;}
    .landing-right{overflow:visible;flex:0 0 auto;padding:16px;}
    .format-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));}
    .sample-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));}
    .cb-tab{padding:5px 12px;font-size:11px;}

    /* Workspace sidebar drawer */
    .ws-main{position:relative;overflow:hidden;}
    .sidebar{position:absolute;top:0;left:0;bottom:0;z-index:49;transform:translateX(-105%);transition:transform 0.22s ease;width:min(85vw,300px) !important;}
    .sidebar.mobile-open{transform:translateX(0);box-shadow:4px 0 24px var(--m2-shadow);}
    .resize-handle{display:none;}

    /* Modal */
    .modal{width:95%;padding:20px 16px;border-radius:8px;}

    /* Data grid: allow h-scroll */
    .grid-container{overflow-x:auto;-webkit-overflow-scrolling:touch;}

    /* Summary / file-info wrapping */
    .summary-bar{flex-wrap:wrap;gap:8px;}
    .file-info{flex-wrap:wrap;}

    /* Statusbar */
    .statusbar{padding:0 8px;gap:6px;}
}

/* ── Workspace insights widgets ──────────────────────────────────────── */
.ws-insights{flex-shrink:0;padding:8px 12px 10px;border-bottom:1px solid var(--m2-border);background:var(--m2-bg-secondary);position:relative;}
.wsi-pin-btn{position:absolute;right:6px;top:6px;background:none;border:none;cursor:pointer;color:var(--m2-text-muted);padding:2px 4px;border-radius:3px;font-size:11px;line-height:1;opacity:0.55;transition:opacity 0.15s;}
.wsi-pin-btn:hover{opacity:1;background:var(--m2-bg-hover);}
.ws-insights.collapsed{padding-bottom:4px;}
.ws-insights.collapsed .wsi-row{display:none;}
.wsi-row{display:flex;align-items:flex-start;gap:20px;flex-wrap:wrap;}
.wsi-block{display:flex;flex-direction:column;gap:4px;min-width:120px;}
.wsi-block.stretch{flex:1;min-width:160px;}
.wsi-lbl{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:0.06em;color:var(--m2-text-muted);}
.wsi-stat-val{font-size:18px;font-weight:700;color:var(--m2-accent);line-height:1;}
.wsi-stat-sub{font-size:11px;color:var(--m2-text-secondary);margin-top:2px;}
.wsi-bar{height:8px;border-radius:4px;background:var(--m2-bg-primary);display:flex;overflow:hidden;width:100%;}
.wsi-seg{height:100%;transition:flex 0.3s;}
.wsi-bar-track{height:8px;border-radius:4px;background:var(--m2-bg-primary);overflow:hidden;width:100%;}
.wsi-bar-fill{height:100%;border-radius:4px;transition:width 0.4s;}
.wsi-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:2px;}
.wsi-pill{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:10px;font-size:10px;font-weight:600;white-space:nowrap;}
.wsi-pill-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;}

/* ── Per-workspace accent theming ─────────────────────────────────────── */
/* Overrides --m2-accent and friends so every accent usage (tab underlines,
   selected sidebar items, focus rings, edit bar indicators, etc.) adopts
   the workspace's own colour automatically. */
#screen-workspace         {--m2-accent:#0891b2;--m2-accent-hover:#0ea5e9;--m2-accent-dim:rgba(8,145,178,0.15);}
#screen-csv-workspace     {--m2-accent:#22c55e;--m2-accent-hover:#4ade80;--m2-accent-dim:rgba(34,197,94,0.15);}
#screen-prg-workspace     {--m2-accent:#f59e0b;--m2-accent-hover:#fbbf24;--m2-accent-dim:rgba(245,158,11,0.15);}
#screen-ifc-workspace     {--m2-accent:#8b5cf6;--m2-accent-hover:#a78bfa;--m2-accent-dim:rgba(139,92,246,0.15);}
#screen-bcxml-workspace   {--m2-accent:#ef4444;--m2-accent-hover:#f87171;--m2-accent-dim:rgba(239,68,68,0.15);}
#screen-cobie-workspace   {--m2-accent:#06b6d4;--m2-accent-hover:#22d3ee;--m2-accent-dim:rgba(6,182,212,0.15);}
#screen-gia-workspace     {--m2-accent:#10b981;--m2-accent-hover:#34d399;--m2-accent-dim:rgba(16,185,129,0.15);}
#screen-bcf-workspace     {--m2-accent:#f97316;--m2-accent-hover:#fb923c;--m2-accent-dim:rgba(249,115,22,0.15);}
#screen-xer-workspace     {--m2-accent:#a855f7;--m2-accent-hover:#c084fc;--m2-accent-dim:rgba(168,85,247,0.15);}
#screen-landxml-workspace {--m2-accent:#84cc16;--m2-accent-hover:#a3e635;--m2-accent-dim:rgba(132,204,22,0.15);}
/* 3 px colour stripe spanning the full width of each workspace */
#screen-workspace .ws-main,#screen-csv-workspace .ws-main,#screen-prg-workspace .ws-main,
#screen-ifc-workspace .ws-main,#screen-bcxml-workspace .ws-main,#screen-cobie-workspace .ws-main,
#screen-gia-workspace .ws-main,#screen-bcf-workspace .ws-main,
#screen-xer-workspace .ws-main,#screen-landxml-workspace .ws-main{border-top:3px solid var(--m2-accent);}
/* Subtle tint on sidebar panel headers */
#screen-workspace .panel-header,#screen-ifc-workspace .panel-header,
#screen-bcxml-workspace .panel-header,#screen-cobie-workspace .panel-header,
#screen-gia-workspace .panel-header,#screen-bcf-workspace .panel-header,
#screen-xer-workspace .panel-header,#screen-landxml-workspace .panel-header{background:var(--m2-accent-dim);}

/* =====================================================================
   SESSION CUSTOMIZATIONS (2026-07-29) - deliberate deviations from the
   original design, requested explicitly by Rob during the Keystone
   migration. Kept as a separate override block (rather than edited
   in-place above) so future reconciliation passes against a fresh copy
   of the original source can diff cleanly against everything above this
   line, and only need to re-check this block for continued relevance.
   ===================================================================== */

/* Icon row in the landing header was originally sized to sit next to a much
   larger 30x30 logo + title/description block. Both were removed ("remove
   this from inside the app" / oversized blue-block SVG), so this bar is now
   just a slim toolbar and its buttons were asked to be "smaller". */
.landing-hd .ap-btn {
    height: 22px;
    width: 22px;
}

.landing-hd .ap-btn svg {
    height: 13px;
    width: 13px;
}

/* Load File / Samples tabs were moved from inside .card-browser into this
   header row ("move the load file and samples options to the same row as
   the appearance icon row"). .cb-tabs normally carries its own border-bottom
   for use inside .card-browser; that would duplicate .landing-hd's own
   border-bottom once inlined here, so it's suppressed in this context only. */
.landing-hd .cb-tabs {
    background: transparent;
    border-bottom: none;
}

/* Workspace topbar previously carried a brand logo + "Construction File
   Converter" title (both removed), plus Help/About/mobile-sidebar-toggle
   buttons (also removed - "remove help", "remove about", "remove toggle
   sidebar option"). What's left was asked to read as one consistent slim
   toolbar rather than a second full-size header, matching .landing-hd's
   sizing above rather than the app-wide 32px default. */
.topbar .icon-btn,
.topbar .ap-btn {
    height: 22px;
    width: 22px;
}

.topbar .icon-btn svg,
.topbar .ap-btn svg {
    height: 13px;
    width: 13px;
}
