    /* Oculto visualmente, mas acessível a leitores de tela e mecanismos de busca (SEO) */
    .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
    /* ───────── Material Design 3 (tokens) ───────── */
    :root{
        --md-primary:#2e58d6; --md-primary-dark:#1f3fa8; --md-on-primary:#FFFFFF;
        --md-primary-container:#D9E2FF; --md-on-primary-container:#001A41;
        --md-secondary-container:#E0E2EC; --md-on-secondary-container:#2A3038;
        --md-surface:#FFFFFF; --md-surface-1:#FFFFFF; --md-surface-2:#F2F2F2; --md-surface-3:#EAEAEA;
        --md-on-surface:#000000; --md-on-surface-var:#333333;
        --md-outline:#000000; --md-outline-var:#000000; --md-outline-soft:#000000;
        --md-error:#BA1A1A; --md-error-container:#FFDAD6; --md-on-error-container:#410002;
        --form-control-color:#2e58d6;
        --ctrl-h:40px; --radius-sm:0; --radius-md:0; --radius-lg:0; --nav-h:60px;
        --shadow-1:none; --shadow-2:none;
    }
    *,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
    [hidden]{display:none!important}   /* garante que classes com display não anulem o atributo hidden */
    body{font-family:'Roboto Mono','Inter',sans-serif;font-weight:500;background:#fff;color:var(--md-on-surface);-webkit-font-smoothing:antialiased}

    /* ───────── Top app bar ───────── */
    .navbar{position:fixed;top:0;left:0;right:0;z-index:100;height:var(--nav-h);background:#fff;
        border-bottom:1px solid #000;display:flex;align-items:center;padding:0 20px;gap:16px}
    .navbar a.navbar-brand{display:inline-flex;align-items:center;padding:0;font-family:'Press Start 2P','Inter',sans-serif;font-size:15px;font-weight:400;line-height:1;color:var(--md-on-surface);letter-spacing:0;text-decoration:none}
    .navbar a.navbar-brand:hover{background:none}
    .navbar-brand .brand-dot{color:var(--md-primary)}
    .navbar .spacer{flex:1}
    .navbar a{font-size:14px;color:var(--md-primary);text-decoration:none;padding:9px 16px;border-radius:0;font-weight:500;transition:all .2s ease}
    .navbar a:hover{background:var(--md-primary-container)}
    .nav-actions{display:flex;gap:8px}
    .nav-btn{width:var(--ctrl-h);height:var(--ctrl-h);display:grid;place-items:center;background:#fff;border:1px solid #000;border-radius:0;color:var(--md-on-surface);cursor:pointer;padding:0;transition:all .2s ease}
    .nav-btn svg{width:20px;height:20px}
    .nav-btn:hover:not(:disabled){background:var(--md-primary);border-color:var(--md-primary);color:#fff}
    .nav-btn:disabled{opacity:.35;cursor:default}

    /* ───────── Layout: dois scrolls (lateral independente) ───────── */
    .layout{display:grid;grid-template-columns:418px 1fr;height:100vh;padding-top:var(--nav-h)}
    @media(max-width:900px){.layout{grid-template-columns:1fr;height:auto}}

    /* ───────── Painel de controles (scroll próprio) ───────── */
    .controls{overflow-y:auto;height:calc(100vh - var(--nav-h));background:#fff;padding:16px 14px 60px;border-right:1px solid #000}
    .controls::-webkit-scrollbar{width:9px}
    .controls::-webkit-scrollbar-thumb{background:#bbb}

    /* Seções da barra lateral — borda preta 1px, radius 0 */
    .group{background:#fff;border:1px solid #000;border-radius:0;margin-bottom:10px;overflow:hidden}
    .group-head{display:flex;align-items:center;gap:10px;padding:14px 16px;cursor:pointer;user-select:none;
        font-family:'Roboto Mono','Inter',sans-serif;font-size:16px;font-weight:600;letter-spacing:.3px;color:var(--md-on-surface)}
    .group-head{transition:background .2s ease,color .2s ease}
    .group-head:hover{background:var(--md-primary);color:#fff}
    .group-head:hover .gi,.group-head:hover .chev{color:#fff}
    /* seção aberta: título destacado em azul */
    .group:not(.collapsed) > .group-head{color:#2e58d6}
    .group:not(.collapsed) > .group-head .gi,.group:not(.collapsed) > .group-head .chev{color:#2e58d6}
    .group:not(.collapsed) > .group-head:hover{color:#fff}
    .group:not(.collapsed) > .group-head:hover .gi,.group:not(.collapsed) > .group-head:hover .chev{color:#fff}
    .group-head .gi{width:20px;height:20px;color:var(--md-primary);flex-shrink:0;transition:color .2s ease;transform:translateY(-1px)}
    .group-head .chev{margin-left:auto;transition:transform .18s,color .2s ease;color:var(--md-on-surface-var)}
    .group.collapsed .chev{transform:rotate(-90deg)}
    .group-body{padding:4px 16px 16px;display:flex;flex-direction:column;gap:13px}
    .group.collapsed .group-body{display:none}

    .field{display:flex;flex-direction:column;gap:5px}
    /* sub-wraps de "Combine data sources": seguem o mesmo espaçamento entre campos do .group-body */
    #combine-concat-wrap,#combine-merge-wrap{display:flex;flex-direction:column;gap:13px}
    .field-row{display:grid;grid-template-columns:1fr 1fr;gap:9px}
    .field-inline{display:flex;gap:8px;align-items:stretch}
    .field-inline > select{flex:1;min-width:0}
    .btn.plus{font-size:20px;line-height:1;flex-shrink:0}
    .field-row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:7px}
    /* placeholder para input[type=date] vazio (só quando NÃO focado): mostra a data dos dados.
       Usa um <span> real (não ::after no input) porque o Safari não coordena o ::after com o
       ::-webkit-datetime-edit transparente, fazendo o texto nativo e o custom se sobreporem. */
    .date-wrap{position:relative;display:block}
    .date-wrap > input{width:100%}
    .date-ph:not(.filled):not(:focus)::-webkit-datetime-edit{color:transparent}
    .date-ph-ovl{position:absolute;left:1px;top:1px;bottom:1px;right:30px;display:none;align-items:center;padding-left:9px;color:var(--md-on-surface-var);pointer-events:none;font-size:13px;white-space:nowrap;overflow:hidden;background:var(--md-surface);border-radius:6px}
    .date-ph:not(.filled):not(:focus) ~ .date-ph-ovl{display:flex}
    label.lbl{font-size:11.5px;font-weight:500;color:var(--md-on-surface-var);letter-spacing:.1px}

    /* Campos de entrada — todos com a MESMA altura (--ctrl-h) */
    input,select,textarea,.btn{height:var(--ctrl-h)}
    input,select,textarea{font-family:inherit;font-size:13px;color:var(--md-on-surface);background:var(--md-surface);
        border:1px solid var(--md-outline-var);border-radius:0;padding:0 12px;width:100%;outline:none;transition:all .2s ease}
    select{appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%2344474E' stroke-width='2' stroke-linecap='round'><polyline points='6 9 12 15 18 9'/></svg>");
        background-repeat:no-repeat;background-position:right 8px center;padding-right:34px}
    input:hover,select:hover,textarea:hover{border-color:var(--md-outline)}
    input:focus,select:focus,textarea:focus{border-color:var(--md-primary);border-width:2px;padding:0 11px}
    select:focus{padding-right:33px}
    textarea{height:auto;min-height:var(--ctrl-h);padding:10px 12px;resize:vertical}
    /* Dropdown custom (mesmo estilo da página, em qualquer navegador) */
    .cs-open{border-color:var(--md-primary)!important}
    .cs-panel{position:fixed;z-index:500;background:#fff;border:1px solid #000;max-height:300px;overflow-y:auto}
    .cs-opt{padding:8px 12px;font-size:13px;color:#000;background:#fff;border-bottom:1px solid #000;cursor:pointer;transition:background .15s ease,color .15s ease;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .cs-opt:last-child{border-bottom:none}
    .cs-opt:hover,.cs-opt.sel{background:var(--md-primary);color:#fff}
    .cs-group{padding:6px 12px 3px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--md-on-surface-var);background:var(--md-surface-2);border-bottom:1px solid #000}
    input[type=color]{padding:3px;cursor:pointer;width:46px;flex-shrink:0;border-radius:0}
    /* checkbox estilizado (custom) */
    .check{display:flex;align-items:center;gap:9px;font-size:12.5px;color:var(--md-on-surface-var);min-height:30px;cursor:pointer}
    input[type="checkbox"]{
        -webkit-appearance:none;appearance:none;background-color:#fff;margin:0;padding:0;font:inherit;color:currentColor;
        width:1.15em;height:1.15em;border:0.15em solid currentColor;border-radius:0;transform:translateY(-0.075em);
        display:grid;place-content:center;cursor:pointer;flex-shrink:0}
    input[type="checkbox"]::before{content:"";width:0.65em;height:0.65em;transform:scale(0);
        transition:120ms transform ease-in-out;box-shadow:inset 1em 1em var(--form-control-color)}
    input[type="checkbox"]:checked::before{transform:scale(1)}
    .color-combo{display:flex;gap:8px;align-items:center}

    /* Linhas de categoria / repetidores */
    .cat-row{display:grid;grid-template-columns:auto 40px 1fr;gap:9px;align-items:center;padding:6px 0;border-bottom:1px solid var(--md-surface-2)}
    .cat-row input[type=color]{width:40px;height:30px}
    .cat-row .cat-name{font-size:12px;color:var(--md-on-surface);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .cat-row.off .cat-name{opacity:.4;text-decoration:line-through}
    .repeater-row{display:grid;grid-template-columns:1fr 1fr 1.4fr 34px;gap:7px;align-items:center;margin-bottom:7px}
    .anot-item{margin-bottom:11px;padding-bottom:9px;border-bottom:1px solid var(--md-surface-2)}
    .anot-item:last-child{border-bottom:none}
    .anot-top{display:grid;grid-template-columns:1fr 1fr 1fr 1fr var(--ctrl-h);gap:7px;align-items:center;margin-bottom:7px}
    .anot-top .del{height:var(--ctrl-h);width:100%;border:1px solid #000;background:#fff;color:var(--md-error);border-radius:0;cursor:pointer;padding:0;display:grid;place-items:center;transition:all .2s ease}
    .anot-top .del svg{width:20px;height:20px}
    .anot-top .del:hover{background:var(--md-error);color:#fff;border-color:var(--md-error)}
    .hl-top{display:grid;grid-template-columns:1fr var(--ctrl-h) var(--ctrl-h);gap:7px;align-items:center;margin-bottom:7px}
    .hl-top .del{height:var(--ctrl-h);width:100%;border:1px solid #000;background:#fff;color:var(--md-error);border-radius:0;cursor:pointer;padding:0;display:grid;place-items:center;transition:all .2s ease}
    .hl-top .del svg{width:20px;height:20px}
    .hl-top .del:hover{background:var(--md-error);color:#fff;border-color:var(--md-error)}
    .hl-top input[type="color"]{height:var(--ctrl-h);width:100%;padding:2px;border:1px solid #000}
    .hl-coord{display:grid;grid-template-columns:1fr 1fr 1fr;gap:7px;margin-bottom:7px}
    .repeater-row.six{grid-template-columns:1fr 1fr .85fr .85fr 1.4fr 34px}
    .repeater-row .del{height:var(--ctrl-h);border:none;background:var(--md-error-container);color:var(--md-error);border-radius:0;cursor:pointer;font-size:16px;padding:0}
    .repeater-row .del:hover{filter:brightness(.96)}
    /* botão de excluir filtro de label: quadrado do tamanho do controle (não encolhe na linha flex) */
    #lab-filter-list .del{flex:0 0 var(--ctrl-h);height:var(--ctrl-h);width:var(--ctrl-h);border:1px solid #000;background:#fff;color:var(--md-error);border-radius:0;cursor:pointer;padding:0;display:grid;place-items:center;transition:all .2s ease}
    #lab-filter-list .del svg{width:18px;height:18px}
    #lab-filter-list .del:hover{background:var(--md-error);color:#fff;border-color:var(--md-error)}
    /* lista de camadas (marcas no gráfico) */
    .layer-row2{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:0;background:var(--md-surface-1);margin-bottom:6px;font-size:12px;cursor:pointer;border:1px solid transparent}
    .layer-row2:hover{background:var(--md-surface-2)}
    .layer-row2.active{border-color:var(--md-primary);background:var(--md-primary-container)}
    .layer-row2 .dot{width:10px;height:10px;border-radius:0;flex-shrink:0}
    .layer-row2 .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--md-on-surface)}
    .layer-row2 .mk{color:var(--md-on-surface-var);font-size:11px}
    .layer-row2 .rm,.layer-row2 .mv{height:var(--ctrl-h);width:var(--ctrl-h);flex:0 0 var(--ctrl-h);display:grid;place-items:center;border:none;background:transparent;cursor:pointer;padding:0;border-radius:0;transition:all .15s ease}
    .layer-row2 .rm svg,.layer-row2 .mv svg{width:18px;height:18px}
    .layer-row2 .mv{color:#000}
    .layer-row2 .mv:hover:not(:disabled){background:rgba(0,0,0,.08)}
    .layer-row2 .mv:disabled{opacity:.25;cursor:default}
    .layer-row2 .rm{color:var(--md-error)}
    .layer-row2 .rm:hover{background:rgba(186,26,26,.12)}

    .hint{font-size:11px;color:var(--md-on-surface-var);line-height:1.4}
    .warn{background:#FFF4E5;border:1px solid #FFD699;color:#7A4F01;border-radius:0;padding:10px 13px;margin-bottom:10px;font-size:12.5px;line-height:1.6}
    .warn .btn{margin:0 2px;height:30px;padding:0 12px}
    .divider{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--md-primary);margin:4px 0 -2px}
    /* Destaques: espaço entre o divisor e os campos/botões */
    #hl-list .divider{margin:16px 0 11px}
    #hl-list .divider:first-child{margin-top:2px}

    /* Galeria de tipos de gráfico */
    .gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}
    .tpl{display:flex;flex-direction:column;align-items:center;gap:6px;padding:11px 4px;border-radius:0;
        border:1px solid var(--md-outline-var);background:var(--md-surface);cursor:pointer;transition:all .2s ease;text-align:center}
    .tpl:hover{background:var(--md-primary);border-color:var(--md-primary);color:#fff}
    .tpl:hover svg{color:#fff}
    .tpl.active{background:var(--md-primary-container);border-color:var(--md-primary);color:var(--md-on-primary-container)}
    .tpl svg{width:26px;height:26px;color:var(--md-primary);fill:currentColor;transition:color .2s ease}
    .tpl.active svg{color:var(--md-primary)}
    .tpl span{font-size:10.5px;line-height:1.15;word-break:break-word;hyphens:auto}
    /* tipo incompatível com os dados carregados: desativado, com o motivo no tooltip/aviso */
    .tpl.off{opacity:.35;filter:grayscale(1);cursor:not-allowed}
    .tpl.off:hover{background:var(--md-surface);border-color:var(--md-outline-var);color:inherit}
    .tpl.off:hover svg{color:var(--md-primary)}

    /* Dropzone */
    .dropzone{border:1.5px dashed var(--md-outline-var);border-radius:0;padding:18px 14px;text-align:center;
        font-size:12.5px;color:var(--md-on-surface-var);cursor:pointer;transition:.15s}
    .dropzone:hover,.dropzone.drag{border-color:var(--md-primary);background:var(--md-primary-container);color:var(--md-on-primary-container)}

    /* Busca de dados externos */
    .ext-results{display:flex;flex-direction:column;gap:0;max-height:280px;overflow-y:auto}
    .ext-results:not(:empty){border:1px solid var(--md-outline-var);margin-top:-6px}
    .ext-item{display:flex;align-items:center;gap:8px;justify-content:space-between;width:100%;text-align:left;
        padding:8px 10px;border:none;border-bottom:1px solid var(--md-surface-2);background:var(--md-surface);
        color:var(--md-on-surface);cursor:pointer;font-size:12px;transition:background .12s}
    .ext-item:last-child{border-bottom:none}
    .ext-item:hover{background:var(--md-primary-container)}
    .ext-item.loading{opacity:.55;cursor:progress}
    .ext-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .ext-src{flex:0 0 auto;font-size:9.5px;font-weight:600;text-transform:uppercase;letter-spacing:.3px;
        padding:2px 6px;border:1px solid;border-radius:0;white-space:nowrap}
    .ext-src-sgs{color:#1a7f37;border-color:#1a7f37;background:rgba(26,127,55,.10)}
    .ext-src-owid{color:#a83232;border-color:#a83232;background:rgba(168,50,50,.10)}
    .ext-src-eurostat{color:#2e58d6;border-color:#2e58d6;background:rgba(46,88,214,.10)}
    .ext-src-bls{color:#8a5a00;border-color:#8a5a00;background:rgba(138,90,0,.10)}
    .ext-error{font-size:11.5px;color:var(--md-on-error-container);background:var(--md-error-container);
        border:1px solid var(--md-error);padding:8px 10px;line-height:1.5}

    .data-meta{display:flex;flex-direction:column;gap:6px}
    .dm-card{display:flex;align-items:stretch;width:100%;height:var(--ctrl-h);border:1px solid;border-radius:0;font-size:12px;overflow:hidden}
    .dm-card.file{border-color:#000;background:#fff;color:var(--md-on-surface)}
    .dm-card.file .dm-fileinfo{flex:1;display:flex;align-items:center;gap:8px;padding:0 12px;min-width:0}
    .dm-card.file b{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .dm-card.file .dm-sub{margin-left:auto;color:var(--md-on-surface-var);font-size:11px;white-space:nowrap}
    .dm-card .dm-name{flex:1;display:flex;align-items:center;gap:6px;padding:0 12px;font-weight:600;white-space:nowrap;overflow:hidden;min-width:0}
    .dm-card .dm-name .dm-nm-txt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
    .dm-card .dm-name .dm-subtype{flex:0 0 auto;font-weight:500;font-size:10.5px;opacity:.7}
    .dm-card .dm-type{flex:0 0 22%;height:100%;margin:0;border:none;border-left:1px solid currentColor;border-radius:0;
        background-color:transparent;background-repeat:no-repeat;background-position:right 6px center;
        color:inherit;font-weight:600;font-size:11px;padding:0 22px 0 8px;cursor:pointer;-webkit-appearance:none;appearance:none;outline:none}
    .dm-card .dm-del{flex:0 0 var(--ctrl-h);height:100%;width:var(--ctrl-h);display:grid;place-items:center;margin:0;padding:0;border:none;
        border-left:1px solid currentColor;border-radius:0;background:transparent;color:inherit;cursor:pointer;transition:background .15s ease}
    .dm-card .dm-del svg{width:18px;height:18px}
    .dm-card.col .dm-del:hover{background:rgba(0,0,0,.08)}
    .dm-card.file .dm-del{border-left:1px solid var(--md-outline-var);color:var(--md-error)}
    .dm-card.file .dm-del:hover{background:var(--md-error);color:#fff}
    .tbl-wrap{margin-top:8px;overflow-x:auto;border:1px solid var(--md-outline-soft);border-radius:0}
    .prev-tbl{border-collapse:collapse;font-size:10.5px;width:100%;white-space:nowrap}
    .prev-tbl th{position:sticky;top:0;background:var(--md-surface-2);text-align:left;padding:5px 8px;font-weight:600;color:var(--md-on-surface);border-bottom:1px solid var(--md-outline-soft)}
    .prev-tbl th .ty{display:block;font-weight:400;font-size:9px;margin-top:1px}
    .prev-tbl th .ty.number{color:#1565C0}.prev-tbl th .ty.date{color:#2E7D32}.prev-tbl th .ty.string{color:#6A1B9A}
    .prev-tbl td{padding:4px 8px;border-bottom:1px solid var(--md-surface-2);color:var(--md-on-surface-var)}
    .prev-tbl td i{opacity:.4}
    .prev-tbl tbody tr:last-child td{border-bottom:none}


    /* Botões — <button> não herda font-family por padrão (UA usa Arial); força Inter.
       O peso fica SÓ aqui (fonte única): editar este valor muda TODOS os botões. */
    button{font-family:'Roboto Mono','Inter',sans-serif;font-weight:500}
    .btn{font-family:'Roboto Mono','Inter',sans-serif;font-weight:500;font-size:13px;border:1px solid var(--md-outline-var);border-radius:0;
        padding:0 16px;background:var(--md-surface);color:var(--md-primary);cursor:pointer;transition:all .2s ease;display:inline-flex;align-items:center;justify-content:center;gap:6px}
    .btn:hover{background:var(--md-primary);color:#fff;border-color:var(--md-primary)}
    .btn:hover svg{color:#fff;stroke:#fff}
    .btn.filled{background:var(--md-primary);color:var(--md-on-primary);border-color:var(--md-primary)}
    .btn.filled:hover{background:var(--md-primary-dark);color:#fff;border-color:var(--md-primary-dark)}
    .btn.tonal{background:var(--md-secondary-container);color:var(--md-on-secondary-container);border-color:#000}
    .btn.tonal:hover{background:var(--md-primary);color:#fff;border-color:var(--md-primary)}
    .btn.sm{height:36px;padding:0 13px;font-size:12.5px}
    .btn.icon{padding:0;width:36px}
    .btn.icon svg{width:18px;height:18px}
    .btn.icon[aria-pressed="true"],.btn[aria-pressed="true"]{background:var(--md-primary);color:var(--md-on-primary);border-color:var(--md-primary)}
    .btn-row{display:flex;gap:9px;flex-wrap:wrap}
    .btn-row.fill > .btn{flex:1}
    /* menu suspenso (DPI ao salvar) */
    .menu-wrap{position:relative;display:inline-flex}
    .menu{position:absolute;top:calc(100% + 4px);right:0;z-index:50;background:var(--md-surface);border:1px solid var(--md-outline-var);
        border-radius:0;box-shadow:var(--shadow-2);padding:4px;min-width:170px;display:flex;flex-direction:column;gap:2px}
    .menu button{font:inherit;font-size:12.5px;text-align:left;border:none;background:transparent;color:var(--md-on-surface);padding:8px 10px;border-radius:0;cursor:pointer}
    .menu button:hover{background:var(--md-primary);color:#fff}
    /* painel de tabela (toggle) acima do gráfico */
    .tbl-panel{border:1px solid var(--md-outline-soft);border-radius:0;margin-bottom:14px;overflow:hidden;background:var(--md-surface)}
    .tbl-panel-bar{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--md-surface-2);font-size:12.5px;font-weight:600}
    .tbl-panel-bar span{flex:1}
    .tbl-panel-body{max-height:340px;overflow:auto}
    /* tabela estilo Observable */
    table.obs{border-collapse:collapse;font-family:'Roboto Mono','Inter',sans-serif;font-weight:500;font-size:12px;width:auto;table-layout:fixed;font-variant-numeric:tabular-nums}
    table.obs thead th{position:sticky;top:0;background:var(--md-surface);text-align:left;vertical-align:top;padding:6px 10px;font-weight:600;color:var(--md-on-surface);border-bottom:1px solid var(--md-outline-var);white-space:nowrap;overflow:hidden}
    table.obs thead th .ty{display:block;font-weight:500;font-size:9.5px;opacity:.85}
    table.obs thead th .ty.string{color:#8F47B3}
    table.obs thead th .ty.number{color:#2e58d6}
    table.obs thead th .ty.date{color:#44D7A8}
    table.obs td{padding:4px 10px;border-bottom:1px solid var(--md-surface-2);text-align:right;white-space:nowrap;color:var(--md-on-surface-var);overflow:hidden;text-overflow:ellipsis}
    table.obs td.txt,table.obs th.txt{text-align:left}
    table.obs tbody tr:hover td{background:var(--md-surface-1)}
    table.obs td i{opacity:.35}
    .tbl-more{padding:8px 12px;font-size:11px;color:var(--md-on-surface-var)}
    /* redimensionar coluna (arrastar) */
    table.obs thead th{position:sticky}
    .col-resizer{position:absolute;top:0;right:0;width:6px;height:100%;cursor:col-resize;user-select:none;z-index:4}
    .col-resizer:hover{background:var(--md-primary)}
    /* mini de categorias (clicável p/ filtrar) */
    .cat-mini{display:flex;flex-direction:column;gap:2px;width:100%;font-weight:400}
    .cat-bar{position:relative;display:flex;align-items:center;gap:5px;height:13px;padding:0 4px;cursor:pointer;font-size:9px;overflow:hidden;border:1px solid transparent}
    .cat-bar .cat-fill{position:absolute;left:0;top:0;bottom:0;background:currentColor;opacity:.5;z-index:0}
    .cat-bar .cat-lbl{position:relative;z-index:1;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--md-on-surface)}
    .cat-bar .cat-ct{position:relative;z-index:1;color:var(--md-on-surface-var)}
    .cat-bar:hover{border-color:currentColor}
    .cat-bar.off{opacity:.45}
    .cat-bar.off .cat-fill{opacity:.16}
    /* brush do histograma */
    .mini-brush .selection{fill:var(--md-primary);fill-opacity:.18;stroke:var(--md-primary);stroke-width:1}
    /* cabeçalho de resumo da tabela (badge de tipo + mini-gráfico) */
    #tbl-panel-body table{font-size:12px;font-variant-numeric:tabular-nums}
    #tbl-panel-body thead th{vertical-align:top}
    .th-summary{display:flex;flex-direction:column;gap:4px;align-items:stretch;text-align:left;min-width:0;width:100%}
    .th-name{font-weight:600;font-size:11.5px;color:var(--md-on-surface);display:flex;align-items:center;gap:6px;white-space:nowrap}
    table.obs thead th .th-search{width:100%;height:auto;font-size:10.5px;font-weight:400;line-height:1.3;padding:2px 5px;margin:1px 0 2px;
        border:1px solid var(--md-outline-var);border-radius:0;background:var(--md-surface);color:var(--md-on-surface);font-family:inherit}
    table.obs thead th .th-search::placeholder{color:var(--md-on-surface-var);opacity:.7}
    /* badge quadrado do tipo (mesmo estilo do dm-card), só a 1ª letra */
    .th-type{display:inline-grid;place-items:center;width:18px;height:18px;flex:0 0 18px;font-weight:700;font-size:10px;line-height:1;
        border:1px solid;border-radius:0;text-transform:uppercase;color:#000}
    .th-type.string{color:#8F47B3;border-color:#8F47B3;background:rgba(143,71,179,.12)}
    .th-type.number{color:#2e58d6;border-color:#2e58d6;background:rgba(46,88,214,.12)}
    .th-type.date{color:#44D7A8;border-color:#44D7A8;background:rgba(68,215,168,.12)}
    .th-summary svg{display:block}

    /* Palco / gráfico — scroll próprio */
    .stage{overflow-y:auto;height:calc(100vh - var(--nav-h));padding:26px}
    .stage::-webkit-scrollbar{width:9px}
    .stage::-webkit-scrollbar-thumb{background:#bbb}
    .card{background:#fff;border:1px solid #000;border-radius:0;padding:24px;max-width:1000px;margin:0 auto 20px}
    .card-toolbar{display:flex;gap:9px;flex-wrap:wrap;align-items:center;justify-content:flex-end;margin-bottom:16px;
        padding-bottom:16px;border-bottom:1px solid var(--md-outline-soft)}
    .card-toolbar .ttl{margin-right:auto;font-size:15px;font-weight:500;color:var(--md-on-surface)}
    #legend{margin-bottom:8px}
    #plot{min-height:200px;display:flex;justify-content:center}
    .empty{color:var(--md-on-surface-var);font-size:13px;text-align:center;padding:70px 20px}
    .err{color:var(--md-on-error-container);font-size:12.5px;background:var(--md-error-container);border-radius:0;padding:12px 14px;margin-top:10px;white-space:pre-wrap;font-family:'Roboto Mono',ui-monospace,monospace}

    .code-card{max-width:1000px;margin:0 auto}

    /* ───────── Rodapé ───────── */
    .site-footer{max-width:1000px;margin:56px auto 24px;border-top:1px solid #000}
    .foot-cols{display:grid;grid-template-columns:1.6fr 1fr 1.2fr;gap:32px;padding:28px 0 24px}
    .foot-brand .navbar-brand{font-family:'Press Start 2P','Inter',sans-serif;font-size:14px;font-weight:400;line-height:1;color:var(--md-on-surface);text-decoration:none}
    .foot-brand .navbar-brand .brand-dot{color:var(--md-primary)}
    .foot-brand p{margin-top:12px;font-size:12px;line-height:1.6;color:var(--md-on-surface-var);max-width:38ch}
    .foot-brand .foot-privacy{margin-top:10px;color:var(--md-on-surface)}
    .foot-col{display:flex;flex-direction:column;gap:8px}
    .foot-col h2{font-family:'Roboto Mono','Inter',sans-serif;font-size:11px;font-weight:600;letter-spacing:.6px;text-transform:uppercase;color:var(--md-on-surface);margin-bottom:4px}
    .foot-col a{font-size:12px;color:var(--md-primary);text-decoration:none;width:fit-content;border-bottom:1px solid transparent;transition:border-color .15s ease}
    .foot-col a:hover{border-bottom-color:var(--md-primary)}
    .foot-bar{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;
        border-top:1px solid #000;padding:14px 0;font-size:11px;color:var(--md-on-surface-var);letter-spacing:.3px}
    @media(max-width:720px){
        .foot-cols{grid-template-columns:1fr;gap:24px}
        .foot-brand p{max-width:none}
    }

    pre{background:#0E1726;color:#D6E2F0;border-radius:0;padding:18px;overflow-x:auto;font-size:12px;
        font-family:'Roboto Mono',ui-monospace,SFMono-Regular,Menlo,monospace;line-height:1.55}
    #code-ta{display:block;width:100%;height:auto;min-height:340px;background:#0E1726;color:#D6E2F0;border:1px solid var(--md-primary);
        border-radius:0;padding:18px;font-size:12px;font-family:'Roboto Mono',ui-monospace,SFMono-Regular,Menlo,monospace;line-height:1.55;
        resize:vertical;outline:none;white-space:pre;overflow:auto;tab-size:2}
    #code-ta:focus{border-color:var(--md-primary);border-width:1px;padding:18px}
    /* editor de código (Ace) — tema Monokai vem do próprio Ace */
    #code-ed{display:block;width:100%;height:400px;border:1px solid var(--md-primary);font-size:12.5px;line-height:1.5}
    #code-ed .ace_gutter{background:#1e1f1c}
    /* ícone (Material Symbols) dentro de botões .btn com texto */
    .btn-ico{width:16px;height:16px;flex:0 0 auto;fill:currentColor;display:block}
    .btn:hover .btn-ico{fill:#fff}
    .calc-red{display:grid;grid-template-columns:1fr 34px 83px 87px;gap:6px;align-items:center}
    .calc-red .check{min-height:34px}
    .calc-red input[type="color"]{width:34px;height:34px;padding:2px;border:1px solid #000}
    .calc-red .calc-sw,.calc-red .calc-dash{height:34px;padding:0 6px;font-size:11px}
    .calc-redhdr{display:grid;grid-template-columns:1fr 34px 83px 87px;gap:6px;font-size:9.5px;color:var(--md-on-surface-var);letter-spacing:.03em;padding:0 2px}
    .calc-redhdr span{text-align:center}.calc-redhdr span:first-child{text-align:left}
    /* edição no preview */
    #plot{position:relative}
    .pv-tools{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0 0 8px;padding:6px 0}
    .pv-tools .pv-lbl{font-size:11px;color:var(--md-on-surface-var);margin-right:2px}
    .pvm{height:30px;padding:0 10px;font-size:12px;border:1px solid #000;background:#fff;color:var(--md-on-surface);cursor:pointer;border-radius:0;transition:all .15s ease;display:inline-flex;align-items:center;gap:5px}
    .pvm:hover{background:rgba(0,0,0,.06)}
    .pvm.active{background:var(--md-primary);border-color:var(--md-primary);color:#fff}
    .pvm.ghost{border-style:dashed;font-size:15px;line-height:1;padding:0 9px}
    .pvm-ico{width:16px;height:16px;flex:0 0 auto;fill:currentColor;display:block}
    .pv-edit-input{position:absolute;z-index:60;font:inherit;font-size:14px;border:1px solid var(--md-primary);border-radius:0;background:#fff;color:#000;padding:2px 6px;box-shadow:0 2px 8px rgba(0,0,0,.18)}
    textarea.pv-edit-input{min-height:48px;resize:both}
    .pv-brush .selection{fill:var(--md-primary);fill-opacity:.12;stroke:var(--md-primary);stroke-width:1;shape-rendering:crispEdges}
    g[aria-label="x-axis label"] text, g[aria-label="y-axis label"] text{cursor:text}
    /* overlay de arrastar arquivo (página toda) */
    .drop-overlay{position:fixed;inset:0;z-index:300;background:rgba(17,70,140,.14);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;padding:40px;pointer-events:none}
    .drop-box{display:flex;flex-direction:column;align-items:center;gap:16px;padding:48px 64px;border-radius:0;
        border:2.5px dashed var(--md-primary);background:var(--md-surface);color:var(--md-primary);font-size:16px;font-weight:600;box-shadow:var(--shadow-2)}
    .drop-box svg{width:54px;height:54px}
    /* modal de pré-visualização */
    .pv-modal{position:fixed;inset:0;z-index:200;background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center;padding:24px}
    .pv-box{background:var(--md-surface);border-radius:0;box-shadow:var(--shadow-2);max-width:95vw;max-height:92vh;display:flex;flex-direction:column;overflow:hidden}
    .pv-bar{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--md-outline-soft);font-size:13px;font-weight:500}
    .pv-bar span{flex:1}
    .pv-stage{overflow:auto;padding:20px;display:flex;justify-content:center;align-items:center;
        background-image:linear-gradient(45deg,#eee 25%,transparent 25%),linear-gradient(-45deg,#eee 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#eee 75%),linear-gradient(-45deg,transparent 75%,#eee 75%);
        background-size:18px 18px;background-position:0 0,0 9px,9px -9px,-9px 0}
    #pv-content{border:1px solid #000}
