﻿:root{
  --bg:#0b0c0e;--bg1:#131416;--bg2:#1a1c1f;--bg3:#212428;
  --border:rgba(255,255,255,0.06);--border2:rgba(255,255,255,0.11);--border3:rgba(255,255,255,0.18);
  --text:#dfe1e6;--text2:#8a8f9a;--text3:#50545e;
  --accent:#4b8eff;--accent-dim:rgba(75,142,255,0.15);--accent-glow:rgba(75,142,255,0.3);
  --green:#3ecf8e;--amber:#f0ab3d;--red:#e05c5c;--purple:#a78bfa;--teal:#3ec8c0;
  --mono:'Consolas','IBM Plex Mono',monospace;--sans:'Segoe UI','IBM Plex Sans',sans-serif;
  --radius:8px;--radius-sm:5px;
  --chart-grid:rgba(255,255,255,0.05);--chart-tick:#8a8f9a;--chart-bg:#131416;
}
[data-theme="light"]{
  --bg:#f4f5f7;--bg1:#ffffff;--bg2:#eef0f3;--bg3:#e2e4e9;
  --border:rgba(0,0,0,0.07);--border2:rgba(0,0,0,0.12);--border3:rgba(0,0,0,0.20);
  --text:#1a1d23;--text2:#44495a;--text3:#8a8f9a;
  --accent:#2563eb;--accent-dim:rgba(37,99,235,0.12);--accent-glow:rgba(37,99,235,0.28);
  --green:#16a34a;--amber:#b45309;--red:#dc2626;
  --chart-grid:rgba(0,0,0,0.07);--chart-tick:#44495a;--chart-bg:#ffffff;
}
*{box-sizing:border-box;margin:0;padding:0;}
body{font-family:var(--sans);font-size:14px;background:var(--bg);color:var(--text);min-height:100vh;line-height:1.5;}

/* â”€â”€ TOPBAR â”€â”€ */
.topbar{display:flex;align-items:center;gap:0;background:var(--bg1);border-bottom:1px solid var(--border2);padding:0 1.5rem;position:sticky;top:0;z-index:100;}
.logo{font-family:var(--sans);font-size:14px;font-weight:700;color:var(--text);letter-spacing:-0.01em;padding:0.8rem 1rem 0.8rem 0;border-right:1px solid var(--border2);margin-right:1.25rem;white-space:nowrap;flex-shrink:0;}
.logo span{color:var(--accent);}
.tabs{display:flex;gap:0;}
.tab{font-family:var(--sans);font-size:13px;font-weight:500;color:var(--text2);padding:0.8rem 1rem;border:none;background:none;cursor:pointer;border-bottom:2px solid transparent;transition:color .15s,border-color .15s;white-space:nowrap;}
.tab:hover{color:var(--text);}
.tab.active{color:var(--accent);border-bottom-color:var(--accent);}
.topbar-spacer{flex:1;}
.topbar-note{font-family:var(--mono);font-size:11px;color:var(--text3);padding:0 0.5rem;}
.manual-btn{font-size:12px;font-weight:600;padding:5px 12px;border:1px solid var(--border2);border-radius:var(--radius-sm);background:var(--bg2);color:var(--text2);cursor:pointer;transition:background .15s,color .15s,border-color .15s;line-height:1;margin-right:8px;flex-shrink:0;}
.manual-btn:hover{background:var(--bg3);color:var(--text);border-color:var(--border3);}
.theme-btn{font-size:13px;padding:5px 10px;border:1px solid var(--border2);border-radius:var(--radius-sm);background:var(--bg2);color:var(--text2);cursor:pointer;transition:background .15s,color .15s;line-height:1;flex-shrink:0;}
.theme-btn:hover{background:var(--bg3);color:var(--text);}

.manual-overlay{position:fixed;inset:0;background:rgba(0,0,0,.62);z-index:300;display:none;align-items:flex-start;justify-content:center;padding:64px 20px 28px;}
.manual-overlay.open{display:flex;}
body.manual-open{overflow:hidden;}
.manual-dialog{width:min(980px,100%);max-height:calc(100vh - 92px);background:var(--bg1);border:1px solid var(--border2);border-radius:var(--radius);box-shadow:0 24px 70px rgba(0,0,0,.45);display:flex;flex-direction:column;overflow:hidden;}
.manual-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:1.25rem 1.4rem;border-bottom:1px solid var(--border);background:var(--bg2);}
.manual-kicker{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--accent);margin-bottom:4px;}
.manual-head h2{font-size:20px;font-weight:700;color:var(--text);margin-bottom:4px;}
.manual-head p{font-size:12px;color:var(--text2);line-height:1.55;max-width:720px;}
.manual-close{width:30px;height:30px;border:1px solid var(--border2);border-radius:var(--radius-sm);background:var(--bg1);color:var(--text2);cursor:pointer;font-size:16px;line-height:1;flex-shrink:0;}
.manual-close:hover{background:var(--bg3);color:var(--text);}
.manual-body{padding:1.2rem 1.4rem 1.4rem;overflow:auto;}
.manual-section{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:1rem 1.05rem;margin-bottom:1rem;}
.manual-section h3,.manual-card h3{font-size:13px;font-weight:700;color:var(--text);margin-bottom:.55rem;}
.manual-section p,.manual-card p{font-size:12px;color:var(--text2);line-height:1.6;margin-bottom:.55rem;}
.manual-section p:last-child,.manual-card p:last-child{margin-bottom:0;}
.manual-section ol{margin-left:1.2rem;color:var(--text2);font-size:12px;line-height:1.65;}
.manual-section li{margin-bottom:.35rem;}
.manual-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:1rem;}
.manual-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:1rem 1.05rem;}
.manual-file-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
.manual-file-list div{background:var(--bg1);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.75rem .8rem;}
.manual-file-list b{display:block;font-size:11px;color:var(--text);margin-bottom:3px;}
.manual-file-list span{display:block;font-size:11px;color:var(--text2);line-height:1.45;}

/* â”€â”€ VIEWS â”€â”€ */
.view{display:none;animation:fadein .18s ease;}
.view.active{display:block;}
@keyframes fadein{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

/* â”€â”€ CONFIGURE VIEW â”€â”€ */
.config-wrap{max-width:900px;margin:0 auto;padding:1.5rem;}
.section-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--text3);margin-bottom:.75rem;}

.config-top{display:flex;align-items:flex-end;gap:1rem;flex-wrap:wrap;background:var(--bg1);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.25rem;margin-bottom:1.25rem;}
.field-group{display:flex;flex-direction:column;gap:4px;}
.field-lbl{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.07em;font-weight:500;}
.field-input{font-family:var(--mono);font-size:14px;padding:6px 10px;border:1px solid var(--border2);border-radius:var(--radius-sm);background:var(--bg2);color:var(--text);outline:none;transition:border-color .15s,box-shadow .15s;width:120px;}
.field-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim);}
.generate-btn{font-size:14px;font-weight:500;padding:10px 22px;border:none;border-radius:var(--radius);background:var(--accent);color:#fff;cursor:pointer;transition:opacity .15s,box-shadow .15s;white-space:nowrap;flex-shrink:0;box-shadow:0 0 0 0 var(--accent-glow);}
.generate-btn:hover{opacity:.88;box-shadow:0 0 16px var(--accent-glow);}
.generate-btn:active{transform:scale(.97);}
.combo-preview{font-family:var(--mono);font-size:12px;color:var(--text2);background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:7px 12px;margin-left:auto;flex-shrink:0;line-height:1.6;white-space:nowrap;}
.combo-preview b{color:var(--text);}
.combo-preview .eq{color:var(--accent);}

/* Sample selector */
.sample-panel{background:var(--bg1);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.25rem;margin-bottom:1.25rem;}
.sample-toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:.9rem;align-items:center;}
.preset-btn{font-size:11px;font-weight:500;padding:4px 11px;border-radius:99px;cursor:pointer;border:1px solid var(--border2);background:var(--bg2);color:var(--text2);transition:all .15s;}
.preset-btn:hover{border-color:var(--accent);color:var(--accent);}
.preset-btn.today{border-color:rgba(62,207,142,.35);color:var(--green);background:rgba(62,207,142,.08);}
.preset-btn.today:hover{background:rgba(62,207,142,.15);}
.type-groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px;}
.type-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;}
.type-hd{display:flex;align-items:center;gap:8px;padding:6px 10px;border-bottom:1px solid var(--border);}
.type-badge{font-family:var(--mono);font-size:10px;font-weight:600;padding:2px 8px;border-radius:99px;}
.type-name{font-size:11px;color:var(--text2);}
.type-sel-all{font-size:10px;margin-left:auto;color:var(--text3);cursor:pointer;padding:2px 6px;border:none;background:none;transition:color .15s;}
.type-sel-all:hover{color:var(--accent);}
.sample-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0;}
.sample-cb-wrap{display:flex;align-items:center;gap:5px;padding:4px 8px;border-bottom:1px solid var(--border);border-right:1px solid var(--border);}
.sample-cb-wrap:nth-child(3n){border-right:none;}
.sample-cb-wrap:nth-last-child(-n+3){border-bottom:none;}
.sample-cb-wrap input[type=checkbox]{accent-color:var(--accent);cursor:pointer;width:13px;height:13px;}
.sample-cb-lbl{font-family:var(--mono);font-size:11px;color:var(--text2);cursor:pointer;user-select:none;}
.sample-cb-wrap.checked .sample-cb-lbl{color:var(--text);}
.validation-bar{font-size:12px;padding:8px 1.25rem;border-radius:var(--radius-sm);background:rgba(224,92,92,.1);border:1px solid rgba(224,92,92,.25);color:var(--red);margin-bottom:1rem;display:none;}
.validation-bar.show{display:block;}

/* â”€â”€ TABLE VIEW â”€â”€ */
.tbl-view-wrap{padding:1rem 1.5rem 2rem;}
.stats-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;margin-bottom:1rem;}
.stat-card{background:var(--bg1);border:1px solid var(--border);border-radius:var(--radius);padding:10px 14px;}
.stat-lbl{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.07em;margin-bottom:3px;}
.stat-val{font-family:var(--mono);font-size:20px;font-weight:500;color:var(--text);}
.stat-sub{font-family:var(--mono);font-size:10px;color:var(--text3);margin-top:1px;}

.filters-wrap{background:var(--bg1);border:1px solid var(--border);border-radius:var(--radius);padding:.75rem 1rem;margin-bottom:.75rem;}
.filters-inner{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;}
.flt-group{display:flex;flex-direction:column;gap:3px;}
.flt-lbl{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.06em;}
.flt-sel,.flt-inp{font-family:var(--mono);font-size:12px;padding:5px 8px;border:1px solid var(--border2);border-radius:var(--radius-sm);background:var(--bg2);color:var(--text);outline:none;max-width:180px;}
.flt-inp{width:90px;}
.flt-reset{font-size:12px;padding:5px 12px;border:1px solid var(--border2);border-radius:var(--radius-sm);background:transparent;color:var(--text2);cursor:pointer;}
.flt-reset:hover{background:var(--bg2);}
.info-line{font-size:12px;color:var(--text3);margin-bottom:6px;font-family:var(--mono);}
.tbl-wrap{overflow:auto;}
table{width:100%;border-collapse:collapse;font-size:13px;}
th{font-family:var(--mono);font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.06em;color:var(--text3);padding:8px 10px;border-bottom:1px solid var(--border2);text-align:left;white-space:nowrap;background:var(--bg1);position:sticky;top:0;z-index:10;}
td{padding:7px 10px;border-bottom:1px solid var(--border);color:var(--text);white-space:nowrap;}
tr:last-child td{border-bottom:none;}
tr:hover td{background:rgba(255,255,255,.025);}
.td-run{font-family:var(--mono);font-weight:500;color:var(--text3);text-align:right;width:56px;}
.td-sid{font-family:var(--mono);font-size:12px;font-weight:600;}
.badge{display:inline-block;font-family:var(--mono);font-size:11px;font-weight:500;padding:2px 9px;border-radius:99px;}
.seed-note{font-family:var(--mono);font-size:11px;color:var(--text3);margin-top:.5rem;}
.no-runs{font-family:var(--mono);font-size:12px;color:var(--text3);text-align:center;padding:2rem;}
.empty-state{text-align:center;padding:4rem 2rem;color:var(--text3);}
.empty-state h3{font-size:16px;font-weight:600;color:var(--text2);margin-bottom:.5rem;}
.empty-go{display:inline-block;margin-top:1rem;font-size:13px;font-weight:500;color:var(--accent);cursor:pointer;border:none;background:none;text-decoration:underline;}

.open-analyzer-bar{display:flex;align-items:center;gap:12px;background:rgba(62,207,142,.07);border:1px solid rgba(62,207,142,.2);border-radius:var(--radius);padding:.7rem 1.1rem;margin-bottom:1rem;}
.open-analyzer-bar span{font-size:12px;color:var(--text2);flex:1;}
.btn-go-analyzer{font-size:13px;font-weight:500;padding:7px 18px;border:none;border-radius:var(--radius-sm);background:var(--green);color:#0b0c0e;cursor:pointer;transition:opacity .15s;}
.btn-go-analyzer:hover{opacity:.85;}

/* RECIPE VIEW */
.recipe-view-wrap{padding:1.25rem 1.5rem 2rem;max-width:1180px;margin:0 auto;}
.recipe-shell{display:grid;grid-template-columns:320px 1fr;gap:18px;align-items:start;}
.recipe-sidebar,.recipe-main-panel{background:var(--bg1);border:1px solid var(--border);border-radius:var(--radius);}
.recipe-sidebar{padding:1rem;position:sticky;top:58px;transition:padding .18s ease, min-height .18s ease;overflow:hidden;}
.recipe-shell.recipe-loaded{grid-template-columns:78px 1fr;transition:grid-template-columns .18s ease;}
.recipe-shell.recipe-loaded.recipe-open{grid-template-columns:320px 1fr;}
.recipe-shell.recipe-loaded .recipe-sidebar{padding:.8rem .55rem;min-height:210px;cursor:pointer;}
.recipe-sidebar-rail{display:none;align-items:center;justify-content:center;flex-direction:column;gap:8px;height:100%;min-height:190px;color:var(--text2);text-align:center;}
.recipe-sidebar-rail-icon{font-size:24px;line-height:1;}
.recipe-sidebar-rail-label{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;writing-mode:vertical-rl;transform:rotate(180deg);}
.recipe-sidebar-rail-sub{font-size:10px;color:var(--text3);max-width:40px;line-height:1.3;}
.recipe-sidebar-content{transition:opacity .14s ease;}
.recipe-shell.recipe-loaded .recipe-sidebar-rail{display:flex;}
.recipe-shell.recipe-loaded .recipe-sidebar-content{opacity:0;pointer-events:none;height:0;overflow:hidden;}
.recipe-shell.recipe-loaded.recipe-open .recipe-sidebar-content{opacity:1;pointer-events:auto;height:auto;overflow:visible;}
.recipe-shell.recipe-loaded.recipe-open .recipe-sidebar-rail{display:none;}
.recipe-main-panel{padding:1.2rem 1.25rem;}
.recipe-main-panel h2{font-size:18px;margin-bottom:.4rem;color:var(--text);}
.recipe-main-panel h3{font-size:13px;font-weight:600;color:var(--text);margin-bottom:.75rem;}
.recipe-file-name{font-family:var(--mono);font-size:12px;color:var(--text2);margin-bottom:.9rem;word-break:break-all;}
.recipe-lead{font-size:12px;color:var(--text2);line-height:1.6;margin-bottom:1rem;}
.recipe-dual{display:grid;grid-template-columns:minmax(360px,.95fr) minmax(460px,1.05fr);gap:14px;align-items:start;}
.recipe-pane{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.95rem 1rem;}
.recipe-pane-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:.8rem;}
.recipe-pane-title h3{margin:0;}
.recipe-pane-sub{font-size:10px;color:var(--text3);}
.recipe-code-list,.recipe-explain-scroll{display:flex;flex-direction:column;gap:.7rem;max-height:calc(100vh - 210px);overflow:auto;padding-right:2px;scroll-behavior:smooth;}
.recipe-code-block{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg1);padding:.7rem .8rem;transition:border-color .14s ease, box-shadow .14s ease, background .14s ease;}
.recipe-code-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:.4rem;}
.recipe-code-tag{font-family:var(--mono);font-size:10px;color:var(--accent);}
.recipe-code-link{font-size:10px;color:var(--text3);}
.recipe-code-pre{margin:0;font-family:var(--mono);font-size:11px;line-height:1.45;color:var(--text);white-space:pre-wrap;word-break:break-word;}
.recipe-explain-scroll{gap:.9rem;}
.recipe-explain-pane .recipe-stack{gap:.8rem;}
.recipe-linked-active{border-color:var(--accent) !important;box-shadow:0 0 0 2px var(--accent-dim);background:rgba(75,142,255,0.08);}
.recipe-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:1rem;}
.recipe-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.8rem .9rem;}
.recipe-card .big{font-family:var(--mono);font-size:18px;color:var(--accent);margin-bottom:4px;}
.recipe-card .sub{font-size:11px;color:var(--text2);line-height:1.45;}
.recipe-stack{display:flex;flex-direction:column;gap:.9rem;}
.recipe-section{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.9rem 1rem;}
.recipe-validation-section{border-color:var(--border2);}
.recipe-validation-list{display:flex;flex-direction:column;gap:.55rem;}
.recipe-validation-item{display:grid;grid-template-columns:70px 1fr;gap:10px;align-items:start;border:1px solid var(--border);border-radius:var(--radius-sm);padding:.7rem .8rem;background:var(--bg1);}
.recipe-validation-item b{display:block;font-size:12px;color:var(--text);margin-bottom:3px;}
.recipe-validation-item p{margin:0;font-size:11px;line-height:1.5;color:var(--text2);}
.recipe-validation-level{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.08em;border-radius:99px;text-align:center;padding:3px 6px;border:1px solid var(--border2);color:var(--text2);background:var(--bg3);}
.recipe-validation-item.danger{border-color:rgba(239,68,68,.45);background:rgba(239,68,68,.08);}
.recipe-validation-item.danger .recipe-validation-level{border-color:rgba(239,68,68,.55);color:var(--red);background:rgba(239,68,68,.12);}
.recipe-validation-item.warn{border-color:rgba(245,158,11,.45);background:rgba(245,158,11,.08);}
.recipe-validation-item.warn .recipe-validation-level{border-color:rgba(245,158,11,.55);color:#b7791f;background:rgba(245,158,11,.14);}
.recipe-validation-item.info{border-color:rgba(75,142,255,.35);background:rgba(75,142,255,.08);}
.recipe-validation-item.info .recipe-validation-level{border-color:rgba(75,142,255,.45);color:var(--accent);background:var(--accent-dim);}
.recipe-validation-item.ok{border-color:rgba(34,197,94,.35);background:rgba(34,197,94,.08);}
.recipe-validation-item.ok .recipe-validation-level{border-color:rgba(34,197,94,.45);color:var(--green);background:rgba(34,197,94,.12);}
.recipe-flow{display:flex;flex-direction:column;gap:.7rem;}
.recipe-flow-item{display:grid;grid-template-columns:120px 1fr;gap:12px;align-items:start;}
.recipe-flow-k{font-family:var(--mono);font-size:11px;color:var(--accent);}
.recipe-flow-v{font-size:12px;color:var(--text2);line-height:1.55;}
.recipe-flow-v b{color:var(--text);}
.recipe-flowchart{display:flex;flex-direction:column;align-items:stretch;gap:.15rem;}
.recipe-fc-row{display:flex;flex-direction:column;align-items:center;}
.recipe-fc-node{width:min(100%,560px);display:grid;grid-template-columns:34px 1fr;gap:10px;align-items:start;border:1px solid var(--border2);border-radius:16px;background:var(--bg1);padding:.72rem .85rem;transition:border-color .14s ease, box-shadow .14s ease, background .14s ease;}
.recipe-fc-node.setup{border-color:rgba(75,142,255,.36);background:rgba(75,142,255,.08);}
.recipe-fc-node.preload{border-color:rgba(240,171,61,.45);background:rgba(240,171,61,.09);}
.recipe-fc-node.scan{border-color:rgba(132,92,245,.42);background:rgba(132,92,245,.08);}
.recipe-fc-node.end{border-color:rgba(34,197,94,.38);background:rgba(34,197,94,.08);}
.recipe-fc-index{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:11px;color:var(--text);background:var(--bg3);border:1px solid var(--border2);}
.recipe-fc-copy b{display:block;font-size:12px;color:var(--text);margin-bottom:3px;}
.recipe-fc-copy span{display:block;font-size:11px;color:var(--text2);line-height:1.45;}
.recipe-fc-copy em{display:block;font-style:normal;font-size:10px;color:var(--text3);line-height:1.45;margin-top:3px;}
.recipe-fc-arrow{font-family:var(--mono);font-size:18px;line-height:1;color:var(--text3);padding:.25rem 0;}
.recipe-note{font-size:11px;color:var(--text3);line-height:1.55;margin-top:.65rem;}
.recipe-table-wrap{overflow:auto;border:1px solid var(--border);border-radius:var(--radius-sm);}
.recipe-table{min-width:960px;background:var(--bg1);}
.recipe-table th{position:static;background:var(--bg2);}
.recipe-table td{vertical-align:top;line-height:1.45;font-size:12px;}
.recipe-list{display:flex;flex-direction:column;gap:.5rem;}
.recipe-pill{display:inline-block;font-family:var(--mono);font-size:10px;padding:2px 8px;border-radius:99px;border:1px solid var(--border2);background:var(--bg3);color:var(--text2);}
.recipe-kv{display:grid;grid-template-columns:170px 1fr;gap:10px;font-size:12px;padding:6px 0;border-bottom:1px solid var(--border);}
.recipe-kv:last-child{border-bottom:none;}
.recipe-kv dt{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--text3);}
.recipe-kv dd{font-family:var(--mono);color:var(--text);}
.recipe-empty{text-align:center;padding:3.3rem 1.2rem;color:var(--text3);}
.recipe-empty h3{font-size:16px;color:var(--text2);margin-bottom:.45rem;}

/* â”€â”€ ANALYZER VIEW â”€â”€ */
.analyzer-wrap{display:grid;grid-template-columns:320px 1fr;height:calc(100vh - 45px);overflow:hidden;}
.az-sidebar{background:var(--bg1);border-right:1px solid var(--border2);padding:1rem;overflow-y:auto;display:flex;flex-direction:column;gap:1rem;}
.az-main{padding:1.25rem;display:flex;flex-direction:column;overflow-y:auto;}
.az-section{margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid var(--border);}
.az-section:last-child{border-bottom:none;}
.az-section-title{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text3);margin-bottom:.6rem;}
.upload-zone{border:1.5px dashed var(--border2);border-radius:var(--radius);padding:1.2rem 1rem;text-align:center;cursor:pointer;transition:border-color .15s,background .15s;display:flex;flex-direction:column;align-items:center;gap:6px;}
.upload-zone:hover{border-color:var(--accent);background:var(--accent-dim);}
.upload-zone-icon{font-size:22px;line-height:1;}
.upload-zone-label{font-size:12px;color:var(--text2);}
.upload-zone-sub{font-size:10px;color:var(--text3);}
.file-loaded{font-family:var(--mono);font-size:11px;color:var(--green);margin-top:4px;word-break:break-all;}
.upload-err{font-size:11px;color:var(--red);margin-top:4px;}
.csv-recipe-bridge{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--bg1);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.7rem .85rem;margin:0 0 .75rem 0;}
.csv-recipe-bridge b{display:block;font-size:12px;color:var(--text);margin-bottom:3px;}
.csv-recipe-bridge span{display:block;font-family:var(--mono);font-size:11px;color:var(--text2);line-height:1.45;word-break:break-all;}
.csv-recipe-bridge.matched{border-color:rgba(34,197,94,.42);background:rgba(34,197,94,.07);}
.csv-recipe-bridge.missing{border-color:rgba(245,158,11,.45);background:rgba(245,158,11,.08);}

.toggle-row{display:flex;gap:6px;flex-wrap:wrap;}
.toggle-btn{font-size:11px;font-weight:500;padding:4px 12px;border-radius:99px;border:1px solid var(--border2);background:var(--bg2);color:var(--text2);cursor:pointer;transition:all .15s;}
.toggle-btn.active{border-color:var(--accent);background:var(--accent-dim);color:var(--accent);}
.toggle-btn:hover:not(.active){border-color:var(--border3);color:var(--text);}
.toggle-btn:disabled{opacity:.45;cursor:not-allowed;}

.ctrl-row{display:flex;align-items:center;gap:8px;margin-bottom:6px;}
.ctrl-lbl{font-size:11px;color:var(--text2);min-width:80px;}
.ctrl-sel{font-family:var(--mono);font-size:12px;padding:4px 7px;border:1px solid var(--border2);border-radius:var(--radius-sm);background:var(--bg2);color:var(--text);outline:none;flex:1;}

.chart-box{background:var(--chart-bg);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;flex:1;min-height:360px;position:relative;}
.chart-title{font-size:12px;color:var(--text2);margin-bottom:.5rem;}
canvas{display:block;}

.results-box{background:var(--bg1);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.25rem;margin-top:1rem;}
.results-box h3{font-size:13px;font-weight:600;color:var(--text);margin-bottom:.75rem;}
.stats-tbl{width:100%;border-collapse:collapse;font-size:12px;}
.stats-tbl th{text-align:left;padding:5px 8px;border-bottom:1px solid var(--border2);color:var(--text3);font-weight:500;font-size:10px;text-transform:uppercase;letter-spacing:.05em;}
.stats-tbl td{padding:5px 8px;border-bottom:1px solid var(--border);color:var(--text);font-family:var(--mono);}
.stats-tbl tr:last-child td{border-bottom:none;}
.conclusion-box{margin-top:.75rem;padding:.7rem .9rem;border-radius:var(--radius-sm);border-left:3px solid var(--accent);background:var(--accent-dim);font-size:12px;color:var(--text2);line-height:1.5;}
.conclusion-box b{color:var(--text);}
.conclusion-box.good{border-color:var(--green);background:rgba(62,207,142,.07);}
.conclusion-box.warn{border-color:var(--amber);background:rgba(240,171,61,.07);}
.conclusion-box.bad{border-color:var(--red);background:rgba(224,92,92,.07);}

.within-group-box{margin-top:.75rem;background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.6rem .9rem;}
.within-group-box .wg-title{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--text3);margin-bottom:.5rem;}
.within-group-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;}
.wg-stat{display:flex;flex-direction:column;gap:2px;}
.wg-stat .val{font-family:var(--mono);font-size:13px;color:var(--text);}
.wg-stat .lbl{font-size:10px;color:var(--text3);}

.clean-data-box{margin-bottom:1rem;}
.clean-head{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start;margin-bottom:.75rem;}
.clean-head h3{margin-bottom:.2rem;}
.clean-head p,.clean-note{font-size:11px;color:var(--text3);line-height:1.45;}
.clean-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:.75rem;}
.clean-stats div{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.55rem .65rem;}
.clean-stats b{display:block;font-family:var(--mono);font-size:14px;color:var(--text);}
.clean-stats span{font-size:10px;color:var(--text3);}
.clean-table-wrap{max-height:280px;overflow:auto;border:1px solid var(--border);border-radius:var(--radius-sm);margin-top:.65rem;}
.clean-table{min-width:860px;background:var(--bg1);}
.clean-table th{position:sticky;top:0;background:var(--bg2);z-index:1;}
.clean-table th,.clean-table td{font-size:11px;padding:6px 8px;border-bottom:1px solid var(--border);font-family:var(--mono);white-space:nowrap;}
.clean-table th{color:var(--text3);text-align:left;text-transform:uppercase;letter-spacing:.04em;}
.clean-table td{color:var(--text2);}

.az-await{text-align:center;padding:3rem 1rem;color:var(--text3);}
.az-await h3{font-size:14px;color:var(--text2);margin-bottom:.5rem;}

.export-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:1rem;}
.btn-export{font-size:12px;padding:6px 14px;border:1px solid var(--border2);border-radius:var(--radius-sm);background:transparent;color:var(--text2);cursor:pointer;transition:all .15s;}
.btn-export:hover{background:var(--bg2);color:var(--text);}

@media (max-width:960px){
  .topbar{padding:0 .8rem;overflow-x:auto;}
  .topbar-note{display:none;}
  .manual-overlay{padding:52px 10px 14px;}
  .manual-dialog{max-height:calc(100vh - 66px);}
  .manual-head{padding:1rem;}
  .manual-body{padding:1rem;}
  .manual-grid,.manual-file-list{grid-template-columns:1fr;}
  .recipe-shell{grid-template-columns:1fr;}
  .recipe-sidebar{position:static;}
  .recipe-dual{grid-template-columns:1fr;}
  .recipe-code-list,.recipe-explain-scroll{max-height:none;}
  .recipe-shell.recipe-loaded{grid-template-columns:1fr;}
  .recipe-shell.recipe-loaded .recipe-sidebar{padding:1rem;cursor:default;}
  .recipe-shell.recipe-loaded .recipe-sidebar-rail{display:none;}
  .recipe-shell.recipe-loaded .recipe-sidebar-content{opacity:1;pointer-events:auto;height:auto;overflow:visible;}
  .recipe-flow-item,.recipe-kv{grid-template-columns:1fr;}
  .clean-head{flex-direction:column;}
  .clean-stats{grid-template-columns:repeat(2,minmax(0,1fr));}
}
