/* ============================================================================
 *  theme.css — Design System "Tácitos" · estilo SaaS/MSP, sóbrio e temável
 * ----------------------------------------------------------------------------
 *  Carregue por ÚLTIMO no <head>:  <link rel="stylesheet" href="theme.css">
 *  Temas: data-theme="claro" | "escuro" | "grafite"  (no <html>).
 *  Tokens namespaced --tac-*  ·  componentes .tac-*  (não colidem com o legado).
 *  Área temável completa: <body class="tac-app">.
 * ========================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap');

/* ---------------------------- TEMAS (tokens) ----------------------------- */
:root, :root[data-theme="claro"]{
    --tac-bg:#f4f6f9; --tac-surface:#ffffff; --tac-surface-2:#f7f9fc; --tac-surface-3:#eef2f7;
    --tac-line:#e4e8ef; --tac-line-2:#d5dbe5;
    --tac-text:#1e2733; --tac-text-2:#4a5566; --tac-text-3:#717d8e; --tac-text-4:#9aa4b2;
    --tac-accent:#3b5f8a; --tac-accent-hover:#314f74; --tac-accent-weak:#eaf0f7;
    --tac-accent-border:#c7d5e6; --tac-on-accent:#ffffff;
    --tac-success:#2f855a; --tac-success-weak:#e7f4ed; --tac-success-border:#bfe0cd;
    --tac-danger:#b3463c; --tac-danger-weak:#fbecea; --tac-danger-border:#f0cfc9;
    --tac-nav-bg:#1d2532; --tac-nav-text:#e6eaf0; --tac-nav-muted:#9aa6b8;
    --tac-nav-line:rgba(255,255,255,.08); --tac-nav-hover:rgba(255,255,255,.07);
    --tac-nav-active-bg:rgba(255,255,255,.12); --tac-nav-active-text:#ffffff;
    --tac-shadow:0 1px 2px rgba(16,24,40,.04),0 1px 3px rgba(16,24,40,.07);
    --tac-shadow-lg:0 4px 6px -2px rgba(16,24,40,.04),0 12px 24px -10px rgba(16,24,40,.12);
    --tac-ring:0 0 0 3px rgba(59,95,138,.18);
}
:root[data-theme="escuro"]{
    --tac-bg:#12161d; --tac-surface:#1a1f29; --tac-surface-2:#1f2530; --tac-surface-3:#262d3a;
    --tac-line:#2a313d; --tac-line-2:#39424f;
    --tac-text:#e7eaef; --tac-text-2:#aab3c0; --tac-text-3:#7f8a99; --tac-text-4:#677081;
    --tac-accent:#5b86b8; --tac-accent-hover:#6e97c6; --tac-accent-weak:rgba(91,134,184,.16);
    --tac-accent-border:rgba(91,134,184,.42); --tac-on-accent:#ffffff;
    --tac-success:#4caf82; --tac-success-weak:rgba(76,175,130,.14); --tac-success-border:rgba(76,175,130,.35);
    --tac-danger:#cf6a60; --tac-danger-weak:rgba(207,106,96,.14); --tac-danger-border:rgba(207,106,96,.35);
    --tac-nav-bg:#0f131a; --tac-nav-text:#e7eaef; --tac-nav-muted:#8893a3;
    --tac-nav-line:rgba(255,255,255,.07); --tac-nav-hover:rgba(255,255,255,.06);
    --tac-nav-active-bg:rgba(91,134,184,.20); --tac-nav-active-text:#ffffff;
    --tac-shadow:0 1px 2px rgba(0,0,0,.4); --tac-shadow-lg:0 12px 28px -12px rgba(0,0,0,.6);
    --tac-ring:0 0 0 3px rgba(91,134,184,.32);
}
:root[data-theme="grafite"]{
    --tac-bg:#f1f2f4; --tac-surface:#ffffff; --tac-surface-2:#f7f8f9; --tac-surface-3:#ebedf0;
    --tac-line:#e3e5e9; --tac-line-2:#d2d5db;
    --tac-text:#23272e; --tac-text-2:#4d535c; --tac-text-3:#767c85; --tac-text-4:#9aa0a8;
    --tac-accent:#4b5563; --tac-accent-hover:#3b424d; --tac-accent-weak:#ecedf0;
    --tac-accent-border:#cdd0d6; --tac-on-accent:#ffffff;
    --tac-success:#3f7d5e; --tac-success-weak:#eaf2ee; --tac-success-border:#c6ddd0;
    --tac-danger:#9e5048; --tac-danger-weak:#f6ecea; --tac-danger-border:#e3cdc9;
    --tac-nav-bg:#262a30; --tac-nav-text:#e9eaec; --tac-nav-muted:#9ba1a9;
    --tac-nav-line:rgba(255,255,255,.08); --tac-nav-hover:rgba(255,255,255,.06);
    --tac-nav-active-bg:rgba(255,255,255,.10); --tac-nav-active-text:#ffffff;
    --tac-shadow:0 1px 2px rgba(20,22,26,.05),0 1px 3px rgba(20,22,26,.08);
    --tac-shadow-lg:0 6px 16px -8px rgba(20,22,26,.14);
    --tac-ring:0 0 0 3px rgba(75,85,99,.2);
}
:root{
    --tac-font:'Inter',system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
    --tac-mono:'JetBrains Mono',ui-monospace,SFMono-Regular,monospace;
    --tac-r-lg:12px; --tac-r-md:8px; --tac-r-sm:6px; --tac-r-pill:999px;
}

/* Tipografia + canvas */
body, body *{ font-family:var(--tac-font); }
.tac-app{ background:var(--tac-bg); color:var(--tac-text-2); min-height:100vh; }

/* =============================== NAVBAR =============================== */
.tac-topbar{ position:fixed; top:0; left:0; right:0; z-index:50; }
.tac-topbar-spacer{ height:56px; }
.tac-navbar{ position:relative; display:flex; align-items:center; justify-content:space-between;
    gap:14px; padding:0 22px; height:56px; background:var(--tac-nav-bg);
    border-bottom:1px solid var(--tac-nav-line);
    user-select:none; -webkit-user-select:none; }
.tac-navbar img{ -webkit-user-drag:none; user-drag:none; pointer-events:none; }
.tac-brand{ display:flex; align-items:center; gap:10px; margin:0; }
.tac-brand .nm{ font-weight:600; font-size:15.5px; color:var(--tac-nav-text); letter-spacing:-.01em; }
.tac-logo{ width:30px; height:30px; border-radius:7px; display:grid; place-items:center;
    color:var(--tac-on-accent); font-weight:700; font-size:14px; background:var(--tac-accent); }
.tac-logo-img{ height:32px; width:auto; max-width:170px; object-fit:contain; display:block;
    border-radius:4px; }

.tac-nav{ display:flex; align-items:center; gap:2px; }
.tac-nav a{ color:var(--tac-nav-muted); text-decoration:none; font-size:13.5px; font-weight:500;
    padding:8px 12px; border-radius:var(--tac-r-sm); transition:.12s; white-space:nowrap; }
.tac-nav a:hover{ color:var(--tac-nav-text); background:var(--tac-nav-hover); }
.tac-nav a.tac-active{ color:var(--tac-nav-active-text); background:var(--tac-nav-active-bg); }
.tac-nav a.tac-admin::before{ content:''; display:inline-block; width:5px; height:5px;
    border-radius:1px; background:var(--tac-nav-muted); margin-right:7px; vertical-align:middle; }
.tac-nav a.tac-sair{ color:#e9b4ad; }
.tac-nav a.tac-sair:hover{ color:#fff; background:rgba(207,106,96,.2); }

.tac-user{ display:flex; align-items:center; gap:9px; padding-right:12px; margin-right:4px;
    border-right:1px solid var(--tac-nav-line); font-size:13px; }
.tac-user .who b{ color:var(--tac-nav-text); font-weight:600; font-size:13px; }
.tac-badge{ font-size:10px; font-weight:600; padding:3px 8px; border-radius:var(--tac-r-sm);
    letter-spacing:.4px; text-transform:uppercase; }
.tac-badge.admin{ color:var(--tac-nav-text); background:var(--tac-nav-active-bg);
    box-shadow:inset 0 0 0 1px var(--tac-nav-line); }
.tac-badge.user{ color:var(--tac-nav-muted); background:var(--tac-nav-hover); }

/* Botão de tema */
.tac-themebtn{ display:inline-flex; align-items:center; gap:7px; cursor:pointer;
    background:var(--tac-nav-hover); border:1px solid var(--tac-nav-line); color:var(--tac-nav-text);
    font-size:12.5px; font-weight:500; padding:7px 11px; border-radius:var(--tac-r-sm); }
.tac-themebtn:hover{ background:var(--tac-nav-active-bg); }
.tac-themebtn svg{ width:15px; height:15px; }

.tac-burger{ display:none; background:var(--tac-nav-hover); border:1px solid var(--tac-nav-line);
    color:var(--tac-nav-text); width:40px; height:40px; border-radius:var(--tac-r-sm); cursor:pointer;
    align-items:center; justify-content:center; }
.tac-burger svg{ width:20px; height:20px; }
.tac-scrim{ display:none; position:fixed; inset:0; background:rgba(10,14,20,.45); z-index:60; }

@media (max-width:880px){
    .tac-burger{ display:inline-flex; }
    .tac-nav{ position:fixed; top:0; right:0; height:100dvh; width:min(80vw,300px);
        flex-direction:column; align-items:stretch; gap:2px; z-index:70; padding:16px;
        background:var(--tac-nav-bg); border-left:1px solid var(--tac-nav-line);
        transform:translateX(100%); transition:transform .24s ease; overflow-y:auto;
        box-shadow:-16px 0 40px -16px rgba(0,0,0,.5); }
    .tac-nav.open{ transform:translateX(0); }
    .tac-nav a{ font-size:15px; padding:12px 13px; }
    .tac-user{ border:0; border-bottom:1px solid var(--tac-nav-line); padding:4px 4px 13px;
        margin:0 0 8px; }
    .tac-themebtn{ justify-content:center; margin-top:6px; }
    .tac-scrim.open{ display:block; }
}

/* =============================== PÁGINA =============================== */
.tac-wrap{ max-width:780px; margin:0 auto; padding:30px 22px 80px; }
.tac-pagehead{ margin-bottom:24px; }
.tac-eyebrow{ font-size:12px; font-weight:600; letter-spacing:.04em; text-transform:uppercase;
    color:var(--tac-text-3); margin-bottom:7px; }
.tac-h1{ font-weight:600; font-size:24px; line-height:1.15; color:var(--tac-text);
    letter-spacing:-.02em; margin:0 0 6px; }
.tac-lead{ font-size:14px; color:var(--tac-text-3); margin:0; max-width:60ch; line-height:1.5; }

/* =============================== ABAS =============================== */
.tac-tabs{ display:flex; gap:2px; border-bottom:1px solid var(--tac-line); margin-bottom:24px; }
.tac-tab{ appearance:none; background:none; border:0; cursor:pointer; font-size:13.5px; font-weight:500;
    color:var(--tac-text-3); padding:11px 15px; border-bottom:2px solid transparent; margin-bottom:-1px;
    display:inline-flex; align-items:center; gap:7px; transition:.12s; }
.tac-tab:hover{ color:var(--tac-text); }
.tac-tab.active{ color:var(--tac-accent); border-bottom-color:var(--tac-accent); }
.tac-tab svg{ width:16px; height:16px; }
.tac-panel{ display:none; } .tac-panel.active{ display:block; }

/* =============================== CARTÕES =============================== */
.tac-card{ background:var(--tac-surface); border:1px solid var(--tac-line); border-radius:var(--tac-r-lg);
    box-shadow:var(--tac-shadow); padding:22px; margin-bottom:18px; }
.tac-card-head{ margin-bottom:18px; }
.tac-card-head h2{ font-weight:600; font-size:15px; color:var(--tac-text); margin:0 0 3px; }
.tac-card-head p{ font-size:12.5px; color:var(--tac-text-3); margin:0; }

/* =============================== CAMPOS =============================== */
.tac-field{ margin-bottom:16px; } .tac-field:last-child{ margin-bottom:0; }
.tac-label{ display:block; font-size:12.5px; font-weight:600; color:var(--tac-text-2); margin-bottom:7px; }
.tac-hint{ font-size:11.5px; color:var(--tac-text-4); margin-top:6px; }
.tac-input, .tac-select{ width:100%; box-sizing:border-box; padding:10px 12px; font-size:13.5px;
    color:var(--tac-text); background:var(--tac-surface); border:1px solid var(--tac-line-2);
    border-radius:var(--tac-r-md); outline:none; transition:.12s; }
.tac-input::placeholder{ color:var(--tac-text-4); }
.tac-input:focus, .tac-select:focus{ border-color:var(--tac-accent); box-shadow:var(--tac-ring); }
.tac-input.mono{ font-family:var(--tac-mono); letter-spacing:.01em; }
.tac-inputwrap{ position:relative; display:flex; align-items:center; }
.tac-inputwrap .tac-input{ padding-right:80px; }
.tac-iconbtns{ position:absolute; right:5px; display:flex; gap:2px; }
.tac-iconbtn{ background:transparent; border:0; color:var(--tac-text-3); cursor:pointer;
    width:32px; height:32px; border-radius:var(--tac-r-sm); display:grid; place-items:center; transition:.12s; }
.tac-iconbtn:hover{ color:var(--tac-text); background:var(--tac-surface-3); }
.tac-iconbtn svg{ width:16px; height:16px; }

/* =============================== SELEÇÃO EM CARTÃO =============================== */
.tac-segment{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.tac-seg{ position:relative; cursor:pointer; }
.tac-seg input{ position:absolute; opacity:0; pointer-events:none; }
.tac-seg-body{ display:flex; flex-direction:column; gap:3px; padding:13px 14px;
    border:1px solid var(--tac-line-2); border-radius:var(--tac-r-md); background:var(--tac-surface);
    transition:.12s; }
.tac-seg-top{ display:flex; align-items:center; justify-content:space-between; }
.tac-seg-name{ font-weight:600; font-size:13.5px; color:var(--tac-text); }
.tac-seg-tag{ font-family:var(--tac-mono); font-size:11px; color:var(--tac-text-3); }
.tac-seg-desc{ font-size:11.5px; color:var(--tac-text-4); }
.tac-seg-radio{ width:16px; height:16px; border-radius:50%; border:2px solid var(--tac-text-4);
    display:grid; place-items:center; transition:.12s; flex:none; }
.tac-seg-radio::after{ content:''; width:7px; height:7px; border-radius:50%; transform:scale(0);
    background:var(--tac-on-accent); transition:.12s; }
.tac-seg:hover .tac-seg-body{ border-color:var(--tac-accent-border); }
.tac-seg input:checked + .tac-seg-body{ border-color:var(--tac-accent); background:var(--tac-accent-weak);
    box-shadow:0 0 0 1px var(--tac-accent) inset; }
.tac-seg input:checked + .tac-seg-body .tac-seg-radio{ border-color:var(--tac-accent); background:var(--tac-accent); }
.tac-seg input:checked + .tac-seg-body .tac-seg-radio::after{ transform:scale(1); }
.tac-seg input:focus-visible + .tac-seg-body{ box-shadow:var(--tac-ring); }

.tac-status{ display:inline-flex; align-items:center; gap:7px; margin-top:13px; font-size:12px;
    font-weight:600; color:var(--tac-success); background:var(--tac-success-weak);
    border:1px solid var(--tac-success-border); padding:6px 11px; border-radius:var(--tac-r-md); }
.tac-status .dot{ width:6px; height:6px; border-radius:50%; background:var(--tac-success); }

/* =============================== TEMA: amostras =============================== */
.tac-themes{ display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
.tac-themecard{ position:relative; cursor:pointer; }
.tac-themecard input{ position:absolute; opacity:0; pointer-events:none; }
.tac-themecard .body{ border:1px solid var(--tac-line-2); border-radius:var(--tac-r-md); overflow:hidden;
    transition:.12s; }
.tac-themecard .swatch{ height:54px; display:flex; }
.tac-themecard .swatch span{ flex:1; }
.tac-themecard .cap{ display:flex; align-items:center; justify-content:space-between; padding:9px 11px;
    font-size:12.5px; font-weight:600; color:var(--tac-text); background:var(--tac-surface); }
.tac-themecard .tick{ width:15px; height:15px; border-radius:50%; border:2px solid var(--tac-text-4);
    display:grid; place-items:center; }
.tac-themecard input:checked + .body{ border-color:var(--tac-accent); box-shadow:0 0 0 1px var(--tac-accent) inset; }
.tac-themecard input:checked + .body .tick{ border-color:var(--tac-accent); background:var(--tac-accent); }
.tac-themecard input:checked + .body .tick::after{ content:''; width:6px; height:6px; border-radius:50%; background:var(--tac-on-accent); }

/* =============================== LOGO PREVIEW =============================== */
.tac-logobox{ display:flex; align-items:center; gap:14px; padding:14px; border:1px solid var(--tac-line);
    border-radius:var(--tac-r-md); background:var(--tac-surface-2); }
.tac-logobox .prev{ width:46px; height:46px; border-radius:9px; display:grid; place-items:center;
    background:var(--tac-accent); color:var(--tac-on-accent); font-weight:700; font-size:20px; overflow:hidden; flex:none; }
.tac-logobox .prev img{ width:100%; height:100%; object-fit:cover; }

/* =============================== BOTÕES =============================== */
.tac-actions{ display:flex; gap:10px; margin-top:22px; }
.tac-btn{ font-weight:600; font-size:13.5px; cursor:pointer; border:1px solid transparent;
    border-radius:var(--tac-r-md); padding:10px 18px; transition:.12s; display:inline-flex;
    align-items:center; justify-content:center; gap:7px; }
.tac-btn:focus-visible{ outline:none; box-shadow:var(--tac-ring); }
.tac-btn svg{ width:16px; height:16px; }
.tac-btn-primary{ color:var(--tac-on-accent); background:var(--tac-accent); }
.tac-btn-primary:hover{ background:var(--tac-accent-hover); }
.tac-btn-ghost{ color:var(--tac-text-2); background:var(--tac-surface); border-color:var(--tac-line-2); }
.tac-btn-ghost:hover{ background:var(--tac-surface-3); color:var(--tac-text); }
.tac-btn-danger{ color:var(--tac-danger); background:var(--tac-danger-weak); border-color:var(--tac-danger-border); }
.tac-btn-danger:hover{ color:#fff; background:var(--tac-danger); }
.tac-btn-sm{ padding:7px 12px; font-size:12.5px; border-radius:var(--tac-r-sm); }

/* =============================== ALERTAS =============================== */
.tac-alert{ display:flex; align-items:center; gap:10px; padding:12px 14px; border-radius:var(--tac-r-md);
    font-size:13px; font-weight:500; margin-bottom:20px; border:1px solid transparent; }
.tac-alert svg{ width:17px; height:17px; flex:none; }
.tac-alert-sucesso{ color:var(--tac-success); background:var(--tac-success-weak); border-color:var(--tac-success-border); }
.tac-alert-erro{ color:var(--tac-danger); background:var(--tac-danger-weak); border-color:var(--tac-danger-border); }

/* =============================== TABELA =============================== */
.tac-table{ width:100%; border-collapse:collapse; font-size:13px; }
.tac-table th{ text-align:left; padding:11px 12px; font-size:11px; text-transform:uppercase;
    letter-spacing:.05em; color:var(--tac-text-4); border-bottom:1px solid var(--tac-line); font-weight:600; }
.tac-table td{ padding:13px 12px; border-bottom:1px solid var(--tac-line); color:var(--tac-text-2); }
.tac-table tr:last-child td{ border-bottom:0; }
.tac-table td b{ color:var(--tac-text); font-weight:600; }

.tac-grid{ display:grid; grid-template-columns:1fr 1fr 1fr auto; gap:12px; align-items:end; }

@media (max-width:680px){ .tac-grid{ grid-template-columns:1fr; } .tac-themes{ grid-template-columns:1fr; } }
@media (max-width:560px){
    .tac-segment{ grid-template-columns:1fr; } .tac-actions{ flex-direction:column; }
    .tac-card{ padding:18px; } .tac-wrap{ padding:24px 16px 70px; } .tac-tabs{ overflow-x:auto; }
}
@media (prefers-reduced-motion:reduce){ *{ animation:none!important; transition:none!important; } }
