/* =============================================================
   GT.Web — Design System  (Bootstrap 5 + Material Design 3)
   Tokens mapeados do tailwind.config para CSS custom properties
   ============================================================= */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@100..900&family=Plus+Jakarta+Sans:wght@100..900&family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap');

/* Material Symbols Outlined — configuração padrão */
.material-symbols-outlined {
    font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
    font-style: normal;
    line-height: 1;
    letter-spacing: normal;
    text-transform: none;
    white-space: nowrap;
    word-wrap: normal;
    direction: ltr;
    -webkit-font-smoothing: antialiased;
    user-select: none;
}
/* Variantes de preenchimento */
.material-symbols-outlined.filled  { font-variation-settings: 'FILL' 1, 'wght' 400, 'GRAD' 0, 'opsz' 24; }
.material-symbols-outlined.sm      { font-size: var(--gt-text-icon-sm); font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 20; }
.material-symbols-outlined.lg      { font-size: var(--gt-text-icon-lg); font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 40; }

/* ---- Tokens completos ---------------------------------------------------- */
:root {
    /* Dimensões de layout */
    --pc-sidebar-width:            25rem;  
    --pc-sidebar-collapsed-width:  3.75rem;   /* 60px */
    --pc-topbar-height:            3.5rem;    /* 56px */

    /* Primários GT.Web ← primary / primary-container do tailwind.config */
    --gt-primary:            #005c55;   /* primary */
    --gt-primary-container:  #0f766e;   /* primary-container (hover/tints) */
    --gt-primary-fixed:      #9cf2e8;   /* primary-fixed */
    --gt-primary-dark:       #004040;   /* escuro para :hover */
    --gt-on-primary:         #ffffff;   /* on-primary */
    --gt-surface-tint:       #006a63;   /* surface-tint (focus rings) */
    --gt-inverse-primary:    #80d5cb;   /* inverse-primary */

    /* Semânticos */
    --gt-error:              #ba1a1a;   /* error */
    --gt-error-container:    #ffdad6;   /* error-container */
    --gt-on-error:           #ffffff;   /* on-error */
    --gt-warning:            #f59e0b;
    --gt-success:            #22c55e;
    --gt-info:               #3b82f6;

    /* Secondary / Tertiary */
    --gt-secondary:            #565e74;  /* secondary */
    --gt-secondary-container:  #dae2fd;  /* secondary-container */
    --gt-tertiary:             #6616d7;  /* tertiary */
    --gt-tertiary-container:   #7f3ef0;  /* tertiary-container */
    --gt-admin-violet:         #7c3aed;  /* admin-violet — Super Admin badge */

    /* Superfícies */
    --gt-background:              #f7f9fb;  /* background */
    --gt-surface:                 #f7f9fb;  /* surface */
    --gt-surface-main:            #f8fafc;  /* surface-main — conteúdo */
    --gt-surface-bright:          #f7f9fb;  /* surface-bright */
    --gt-surface-container:       #eceef0;  /* surface-container */
    --gt-surface-container-low:   #f2f4f6;  /* surface-container-low */
    --gt-surface-container-high:  #e6e8ea;  /* surface-container-high */
    --gt-surface-container-highest:#e0e3e5; /* surface-container-highest */
    --gt-surface-dim:             #d8dadc;  /* surface-dim */
    --gt-inverse-surface:         #2d3133;  /* inverse-surface — toasts */
    --gt-inverse-on-surface:      #eff1f3;  /* inverse-on-surface */

    /* Texto */
    --gt-text-primary:       #1e293b;  /* text-primary */
    --gt-on-surface:         #191c1e;  /* on-surface */
    --gt-on-surface-variant: #3e4947;  /* on-surface-variant */
    --gt-on-secondary:       #ffffff;  /* on-secondary */

    /* Bordas */
    --gt-outline:         #6e7977;   /* outline */
    --gt-outline-variant: #bdc9c6;   /* outline-variant */
    --pc-border:          #e2e8f0;   /* border-subtle */

    /* Sidebar ← sidebar-bg do tailwind.config */
    --pc-sidebar-bg:            #0f172a;   /* sidebar-bg */
    --pc-sidebar-fg:            #9ca3af;
    --pc-sidebar-fg-active:     #ffffff;
    --pc-sidebar-hover-bg:      rgba(255,255,255,0.05);
    --pc-sidebar-active-bg:     rgba(0,92,85,0.1);  /* active-nav Tailwind */
    --pc-sidebar-active-border: #005c55;            /* active-nav border */

    /* Tipografia — famílias + escala (--gt-text-*); evitar font-size em px nas telas GT.Web */
    --gt-font-body:      'Inter', system-ui, -apple-system, sans-serif;
    --gt-font-headline:  'Plus Jakarta Sans', 'Inter', system-ui, sans-serif;
    --gt-font-mono:      'Roboto Mono', 'Consolas', monospace;

    /* Escala tipográfica (rem) — MD3; ajuste global via --gt-font-scale */
    --gt-font-scale:           1;
    --gt-text-display-lg:      6rem;       /* ~96px */
    --gt-text-display-md:      5rem;       /* ~80px */
    --gt-text-display-sm:      4.5rem;     /* ~72px — erro mobile */
    --gt-text-headline-lg:     1.875rem;   /* ~30px */
    --gt-text-headline-md:     1.375rem;   /* ~22px */
    --gt-text-headline-sm:     1.25rem;    /* ~20px */
    --gt-text-title-lg:        1.0625rem;  /* ~17px */
    --gt-text-title-md:        1rem;       /* ~16px */
    --gt-text-body-lg:         1rem;       /* ~16px */
    --gt-text-body-md:         1rem;       /* ~16px — corpo padrão */
    --gt-text-body-sm:         0.875rem;   /* ~14px */
    --gt-text-label-lg:        0.8125rem;  /* ~13px */
    --gt-text-label-md:        0.8125rem;  /* ~13px */
    --gt-text-label-sm:        0.75rem;    /* ~12px */
    --gt-text-caption:         0.6875rem;  /* ~11px — mínimo legível */
    --gt-text-icon-sm:         1.125rem;   /* ~18px */
    --gt-text-icon-md:         1.25rem;    /* ~20px */
    --gt-text-icon-lg:         1.75rem;    /* ~28px */
    --gt-text-icon-xl:         3.75rem;    /* ~60px — empty state */
    --gt-leading-tight:        1.25;
    --gt-leading-normal:       1.5;
    --gt-leading-relaxed:      1.6;

    /* Espaçamento ← spacing do tailwind.config (8px grid) */
    --gt-space-base:    8px;
    --gt-space-gutter:  24px;
    --gt-space-desktop: 32px;
    --gt-space-mobile:  16px;

    /* Raio de borda ← borderRadius do tailwind.config */
    --gt-radius:      0.25rem;   /* 4px  DEFAULT */
    --gt-radius-lg:   0.5rem;    /* 8px  lg */
    --gt-radius-xl:   0.75rem;   /* 12px xl */
    --gt-radius-full: 9999px;    /* full */

    /* Compatibilidade com código existente */
    --pc-primary:       var(--gt-primary);
    --pc-content-bg:    var(--gt-surface-main);
    --gt-primary-light: var(--gt-primary-fixed);
    --gt-danger:        var(--gt-error);
}

/* ---- Scrollbar ---- */
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
    background: var(--gt-on-surface-variant);
    border-radius: var(--gt-radius-full);
}
::-webkit-scrollbar-thumb:hover { background: var(--gt-outline); }

/* ---- Base ---- */
html {
    font-size: calc(100% * var(--gt-font-scale));
}
html, body { height: 100%; margin: 0; }
body {
    font-family: var(--gt-font-body);
    background-color: var(--pc-content-bg);
    color: var(--gt-text-primary);
    font-size: var(--gt-text-body-md);
    line-height: var(--gt-leading-normal);
}

/* ---- Bootstrap — tipografia herdada dos tokens ---- */
.form-control,
.form-select,
.form-control-plaintext {
    font-size: var(--gt-text-body-md);
}
.form-label,
label.form-label {
    font-size: var(--gt-text-label-lg);
}
.btn {
    font-size: var(--gt-text-body-sm);
}
.table {
    font-size: var(--gt-text-body-sm);
}
.dropdown-menu {
    font-size: var(--gt-text-body-sm);
}
.breadcrumb {
    font-size: var(--gt-text-label-md);
}
.invalid-feedback,
.form-text {
    font-size: var(--gt-text-label-sm);
}
small, .small {
    font-size: var(--gt-text-label-sm);
}

/* ---- Tipografia utilitária (usar em views; evitar font-size inline) ---- */
.gt-text-display-lg  { font-size: var(--gt-text-display-lg); line-height: var(--gt-leading-tight); }
.gt-text-display-md  { font-size: var(--gt-text-display-md); line-height: var(--gt-leading-tight); }
.gt-text-headline-lg { font-size: var(--gt-text-headline-lg); line-height: var(--gt-leading-tight); }
.gt-text-headline-md { font-size: var(--gt-text-headline-md); line-height: var(--gt-leading-tight); }
.gt-text-headline-sm { font-size: var(--gt-text-headline-sm); line-height: var(--gt-leading-tight); }
.gt-text-title-lg    { font-size: var(--gt-text-title-lg); }
.gt-text-title-md    { font-size: var(--gt-text-title-md); }
.gt-text-body-lg     { font-size: var(--gt-text-body-lg); line-height: var(--gt-leading-normal); }
.gt-text-body-md     { font-size: var(--gt-text-body-md); line-height: var(--gt-leading-normal); }
.gt-text-body-sm     { font-size: var(--gt-text-body-sm); line-height: var(--gt-leading-normal); }
.gt-text-label-lg    { font-size: var(--gt-text-label-lg); }
.gt-text-label-md    { font-size: var(--gt-text-label-md); }
.gt-text-label-sm    { font-size: var(--gt-text-label-sm); }
.gt-text-caption     { font-size: var(--gt-text-caption); }

/* ================================================================
   LAYOUT PRINCIPAL
   ================================================================ */
.pc-layout {
    display: flex;
    min-height: 100vh;
}

/* ================================================================
   SIDEBAR
   ================================================================ */
.pc-sidebar {
    width: var(--pc-sidebar-width);
    flex-shrink: 0;
    background-color: var(--pc-sidebar-bg);
    color: var(--pc-sidebar-fg);
    transition: width 0.2s ease;
    display: flex;
    flex-direction: column;
    position: sticky;
    top: 0;
    height: 100vh;
    overflow-y: auto;
    z-index: 1030;
}

/* Brand */
.pc-sidebar-brand {
    min-height: 68px;
    display: flex;
    align-items: center;
    padding: 0 16px;
    background-color: rgba(0,0,0,0.2);
    border-bottom: 1px solid rgba(255,255,255,0.06);
    text-decoration: none;
    gap: 10px;
    flex-shrink: 0;
}
.pc-sidebar-brand:hover { background-color: rgba(0,0,0,0.25); }

.gt-brand-logo img {
    height: 36px;
    width: auto;
    display: block;
    border-radius: var(--gt-radius);
}
.gt-brand-logo .gt-brand-initials {
    width: 36px;
    height: 36px;
    border-radius: var(--gt-radius-lg);
    background: var(--gt-primary);
    color: #fff;
    font-size: var(--gt-text-label-lg);
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    letter-spacing: -0.5px;
}
.gt-brand-text { display: flex; flex-direction: column; line-height: 1.2; }
.gt-brand-name {
    font-family: var(--gt-font-headline);
    font-size: var(--gt-text-title-md);
    font-weight: 700;
    color: #ffffff;
    letter-spacing: -0.02em;
}
.gt-brand-sub {
    font-size: var(--gt-text-caption);
    color: rgba(255,255,255,0.35);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    margin-top: 2px;
}
.pc-layout.pc-sidebar-collapsed .gt-brand-text { display: none; }

/* Menu */
.pc-sidebar-menu {
    list-style: none;
    padding: 8px 0;
    margin: 0;
}
.pc-sidebar-menu .pc-menu-section {
    font-size: var(--gt-text-caption);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: rgba(255,255,255,0.25);
    padding: 14px 16px 5px;
}
.pc-sidebar-menu li > a,
.pc-sidebar-menu li > span.pc-disabled {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 9px 16px;
    color: var(--pc-sidebar-fg);
    text-decoration: none;
    font-size: var(--gt-text-body-sm);          /* nav item */
    font-weight: 500;
    transition: all 0.2s;
    border-left: 4px solid transparent;
}
.pc-sidebar-menu li > a:hover {
    background-color: var(--pc-sidebar-hover-bg);
    color: var(--pc-sidebar-fg-active);
}
/* ← active-nav do tailwind.config */
.pc-sidebar-menu li > a.active {
    background-color: var(--pc-sidebar-active-bg);
    border-left-color: var(--pc-sidebar-active-border);
    color: var(--pc-sidebar-fg-active) !important;
    font-weight: 700;
    transform: translateX(4px);
}
.pc-sidebar-menu li > span.pc-disabled {
    color: rgba(255,255,255,0.2);
    cursor: not-allowed;
}
.pc-sidebar-menu li > span.pc-disabled .pc-badge-soon {
    margin-left: auto;
    font-size: var(--gt-text-caption);
    font-weight: 600;
    background-color: rgba(255,255,255,0.08);
    color: rgba(255,255,255,0.35);
    padding: 2px 6px;
    border-radius: var(--gt-radius-full);
    letter-spacing: 0.03em;
}
.pc-sidebar-menu i {
    width: 18px;
    text-align: center;
    flex-shrink: 0;
    font-size: var(--gt-text-title-md);
}

/* Sidebar colapsada */
.pc-layout.pc-sidebar-collapsed .pc-sidebar { width: var(--pc-sidebar-collapsed-width); }
.pc-layout.pc-sidebar-collapsed .pc-sidebar .pc-menu-label,
.pc-layout.pc-sidebar-collapsed .pc-sidebar .pc-menu-section,
.pc-layout.pc-sidebar-collapsed .pc-sidebar .pc-badge-soon { display: none; }
.pc-layout.pc-sidebar-collapsed .pc-sidebar-brand img { max-height: 28px; }
.pc-layout.pc-sidebar-collapsed .pc-sidebar-menu li > a,
.pc-layout.pc-sidebar-collapsed .pc-sidebar-menu li > span.pc-disabled {
    justify-content: center;
    padding: 10px 0;
    border-left: none;
    transform: none;
}

/* Sidebar off-canvas mobile */
@media (max-width: 768px) {
    .pc-sidebar {
        position: fixed;
        left: -100%;
        height: 100vh;
        transition: left 0.2s ease;
    }
    .pc-layout.pc-sidebar-mobile-open .pc-sidebar { left: 0; }
    .pc-layout.pc-sidebar-mobile-open::after {
        content: "";
        position: fixed;
        inset: 0;
        background-color: rgba(0,0,0,0.5);
        z-index: 1029;
    }
}

/* ================================================================
   TOPBAR
   ================================================================ */
.pc-main {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.pc-topbar {
    height: var(--pc-topbar-height);
    background-color: #ffffff;
    border-bottom: 1px solid var(--pc-border);
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 0 var(--gt-space-gutter);
    position: sticky;
    top: 0;
    z-index: 1020;
}
.pc-topbar .pc-toggle-btn {
    background: transparent;
    border: 0;
    font-size: var(--gt-text-headline-sm);
    color: var(--gt-secondary);
    cursor: pointer;
    padding: 6px 8px;
    border-radius: var(--gt-radius-lg);
    line-height: 1;
    flex-shrink: 0;
    transition: color 0.15s, background 0.15s;
}
.pc-topbar .pc-toggle-btn:hover {
    color: var(--gt-primary);
    background: var(--gt-surface-container-low);
}

/* Topbar search */
.gt-topbar-search {
    position: relative;
    flex: 1;
    max-width: 280px;
    margin-left: 4px;
}
.gt-topbar-search i {
    position: absolute;
    left: 10px;
    top: 50%;
    transform: translateY(-50%);
    font-size: var(--gt-text-body-sm);
    color: var(--gt-outline);
    pointer-events: none;
}
.gt-topbar-search input {
    width: 100%;
    height: 34px;
    padding: 0 12px 0 32px;
    border: 1px solid var(--pc-border);
    border-radius: var(--gt-radius-lg);
    font-size: var(--gt-text-label-lg);
    font-family: var(--gt-font-body);
    color: var(--gt-text-primary);
    background: var(--gt-surface-container-low);
    outline: none;
    transition: border-color 0.15s, background 0.15s;
}
.gt-topbar-search input::placeholder { color: var(--gt-outline); }
.gt-topbar-search input:focus {
    border-color: var(--gt-primary);
    background: #fff;
    box-shadow: 0 0 0 3px rgba(0,92,85,0.1);
}

/* Topbar icons (bell, gear) */
.gt-topbar-icon {
    position: relative;
    width: 34px;
    height: 34px;
    border-radius: var(--gt-radius-lg);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--gt-secondary);
    cursor: pointer;
    text-decoration: none;
    border: 0;
    background: transparent;
    font-size: var(--gt-text-title-lg);
    transition: color 0.15s, background 0.15s;
}
.gt-topbar-icon:hover {
    color: var(--gt-primary);
    background: var(--gt-surface-container-low);
}
.gt-topbar-icon .gt-notif-badge {
    position: absolute;
    top: 3px;
    right: 3px;
    width: 16px;
    height: 16px;
    border-radius: var(--gt-radius-full);
    background: var(--gt-error);
    color: var(--gt-on-error);
    font-size: var(--gt-text-caption);
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    border: 2px solid #fff;
}

/* Super Admin badge ← admin-violet do tailwind.config */
.gt-badge-super {
    font-size: var(--gt-text-label-sm);
    font-weight: 600;
    letter-spacing: 0.04em;
    padding: 3px 10px;
    border-radius: var(--gt-radius-full);
    background: rgba(124,58,237,0.08);
    color: var(--gt-admin-violet);
    border: 1px solid rgba(124,58,237,0.2);
    white-space: nowrap;
    text-transform: uppercase;
}

.pc-agencia-foco {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 8px;
}

.pc-user-menu .dropdown-toggle::after { display: none; }
.pc-user-menu img,
.pc-user-menu .pc-avatar-placeholder {
    width: 32px;
    height: 32px;
    border-radius: var(--gt-radius-full);
    object-fit: cover;
    background-color: var(--gt-surface-container-high);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--gt-secondary);
    font-size: var(--gt-text-label-lg);
    font-weight: 700;
}

/* ================================================================
   CONTEÚDO / CARDS
   ================================================================ */
.pc-content {
    flex: 1;
    padding: var(--gt-space-gutter);
    overflow-x: auto;
    background-color: var(--gt-surface);
}

.pc-content .breadcrumb {
    background-color: transparent;
    padding: 0;
    margin-bottom: 16px;
    font-size: var(--gt-text-label-md);
    font-weight: 500;
}
.pc-content .breadcrumb-item + .breadcrumb-item::before { color: var(--gt-outline); }
.pc-content .breadcrumb-item.active { color: var(--gt-on-surface-variant); }

.pc-card {
    background-color: #ffffff;
    border: 1px solid var(--pc-border);
    border-radius: var(--gt-radius-xl);   /* 12px xl */
    padding: var(--gt-space-gutter);
    box-shadow: 0 1px 3px rgba(0,0,0,0.04);
}

.pc-footer {
    padding: 10px var(--gt-space-gutter);
    background-color: #ffffff;
    border-top: 1px solid var(--pc-border);
    font-size: var(--gt-text-label-md);
    font-weight: 500;
    color: var(--gt-outline);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    flex-wrap: wrap;
}
.pc-footer a {
    color: var(--gt-outline);
    text-decoration: none;
}
.pc-footer a:hover { color: var(--gt-primary); }

/* ================================================================
   ALERTAS SEMÂNTICOS
   ================================================================ */
.gt-alert {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 14px 16px;
    border-radius: var(--gt-radius-lg);
    border: 1px solid transparent;
    border-left-width: 4px;
    position: relative;
    margin-bottom: 10px;
    font-size: var(--gt-text-body-md);    /* body-md */
}
.gt-alert-icon   { font-size: var(--gt-text-icon-sm); flex-shrink: 0; margin-top: 1px; }
.gt-alert-body   { flex: 1; min-width: 0; }
.gt-alert-title  { font-weight: 600; font-size: var(--gt-text-body-md); margin-bottom: 2px; line-height: 1.3; }
.gt-alert-desc   { font-size: var(--gt-text-label-lg); line-height: 1.5; margin: 0; opacity: 0.85; }
.gt-alert-close  {
    background: transparent; border: 0; padding: 2px 4px;
    cursor: pointer; opacity: 0.5; font-size: var(--gt-text-title-md); line-height: 1;
    color: inherit; flex-shrink: 0; margin-top: -2px;
}
.gt-alert-close:hover { opacity: 1; }

.gt-alert-success {
    background: #f0fdf4; border-color: #bbf7d0;
    border-left-color: var(--gt-success); color: #166534;
}
.gt-alert-warning {
    background: #fffbeb; border-color: #fde68a;
    border-left-color: var(--gt-warning); color: #92400e;
}
.gt-alert-danger {
    background: var(--gt-error-container);
    border-color: #ffb4ab;
    border-left-color: var(--gt-error);
    color: var(--gt-error);
}
.gt-alert-info {
    background: #eff6ff; border-color: #bfdbfe;
    border-left-color: var(--gt-info); color: #1e40af;
}

/* ================================================================
   TOAST
   ================================================================ */
.gt-toast-container {
    position: fixed;
    bottom: 24px;
    right: 24px;
    z-index: 9999;
    display: flex;
    flex-direction: column;
    gap: 10px;
    pointer-events: none;
}
.gt-toast {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 16px;
    border-radius: var(--gt-radius-xl);
    min-width: 260px;
    max-width: 380px;
    background: var(--gt-inverse-surface);   /* #2d3133 */
    color: var(--gt-inverse-on-surface);     /* #eff1f3 */
    font-size: var(--gt-text-body-md);
    box-shadow: 0 8px 24px rgba(0,0,0,0.2);
    pointer-events: all;
    animation: gt-toast-in 0.25s ease;
}
.gt-toast.gt-toast-success .gt-toast-icon { color: var(--gt-success); }
.gt-toast.gt-toast-danger  .gt-toast-icon { color: var(--gt-error); }
.gt-toast.gt-toast-warning .gt-toast-icon { color: var(--gt-warning); }
.gt-toast-icon  { font-size: var(--gt-text-icon-sm); flex-shrink: 0; }
.gt-toast-msg   { flex: 1; line-height: 1.4; }
.gt-toast-close {
    background: transparent; border: 0;
    color: var(--gt-outline-variant); cursor: pointer;
    font-size: var(--gt-text-title-md); padding: 0 2px; line-height: 1;
}
.gt-toast-close:hover { color: var(--gt-inverse-on-surface); }
@keyframes gt-toast-in {
    from { opacity: 0; transform: translateY(12px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* ================================================================
   EMPTY STATE
   ================================================================ */
.gt-empty-state {
    display: flex; flex-direction: column;
    align-items: center; justify-content: center;
    padding: 48px 24px; text-align: center;
}
.gt-empty-state-img  { width: 120px; height: 120px; object-fit: contain; margin-bottom: 20px; opacity: 0.6; }
.gt-empty-state-icon { font-size: var(--gt-text-icon-xl); color: var(--gt-surface-container-highest); margin-bottom: 16px; line-height: 1; }
.gt-empty-state-title {
    font-family: var(--gt-font-headline);
    font-size: var(--gt-text-headline-sm);    /* headline-sm */
    font-weight: 600;
    color: var(--gt-on-surface);
    margin-bottom: 8px;
}
.gt-empty-state-desc {
    font-size: var(--gt-text-body-md);
    color: var(--gt-on-surface-variant);
    max-width: 320px; line-height: 1.5; margin-bottom: 20px;
}
.gt-empty-state .btn-gt-action {
    font-size: var(--gt-text-body-md); font-weight: 600; padding: 9px 20px;
    border-radius: var(--gt-radius-lg); border: 0;
    background: var(--gt-primary); color: var(--gt-on-primary);
    display: inline-flex; align-items: center; gap: 6px;
    text-decoration: none; cursor: pointer; transition: background 0.15s;
}
.gt-empty-state .btn-gt-action:hover { background: var(--gt-primary-dark); color: #fff; }

/* ================================================================
   ERRO DE SISTEMA (404 / 5xx)
   ================================================================ */
.gt-error-wrap {
    min-height: 420px;
    border-radius: var(--gt-radius-xl);
    background: linear-gradient(135deg, var(--pc-sidebar-bg) 0%, #0f2b28 60%, rgba(0,92,85,0.08) 100%);
    display: flex; align-items: center; gap: 48px;
    padding: 48px; color: var(--gt-inverse-on-surface);
    position: relative; overflow: hidden;
}
.gt-error-wrap::before {
    content: ''; position: absolute; inset: 0;
    background: radial-gradient(ellipse 60% 80% at 80% 50%, rgba(0,92,85,0.15) 0%, transparent 70%);
    pointer-events: none;
}
.gt-error-content { flex: 1; position: relative; z-index: 1; }
.gt-error-label {
    font-size: var(--gt-text-caption); font-weight: 700; letter-spacing: 0.2em;
    text-transform: uppercase; color: var(--gt-inverse-primary); margin-bottom: 12px;
}
.gt-error-code {
    font-family: var(--gt-font-headline);
    font-size: var(--gt-text-display-lg); font-weight: 700; line-height: 1;
    color: #ffffff; letter-spacing: -4px; margin-bottom: 12px;
}
.gt-error-title  { font-family: var(--gt-font-headline); font-size: var(--gt-text-headline-md); font-weight: 600; color: #e2e8f0; margin-bottom: 10px; }
.gt-error-desc   { font-size: var(--gt-text-body-md); color: var(--gt-outline-variant); line-height: 1.6; max-width: 380px; margin-bottom: 28px; }
.gt-error-actions { display: flex; flex-wrap: wrap; gap: 12px; }

.gt-btn-primary {
    display: inline-flex; align-items: center; gap: 8px;
    padding: 10px 20px; border-radius: var(--gt-radius-lg);
    font-size: var(--gt-text-body-md); font-weight: 600;
    background: var(--gt-primary); color: var(--gt-on-primary);
    border: 0; text-decoration: none; cursor: pointer; transition: background 0.15s;
}
.gt-btn-primary:hover { background: var(--gt-primary-dark); color: #fff; }

.gt-btn-outline-light {
    display: inline-flex; align-items: center; gap: 8px;
    padding: 10px 20px; border-radius: var(--gt-radius-lg);
    font-size: var(--gt-text-body-md); font-weight: 600;
    background: transparent; color: #cbd5e0;
    border: 1px solid rgba(255,255,255,0.2);
    text-decoration: none; cursor: pointer; transition: border-color 0.15s, color 0.15s;
}
.gt-btn-outline-light:hover { border-color: rgba(255,255,255,0.5); color: #fff; }

.gt-error-illustration {
    flex-shrink: 0; width: 240px; position: relative; z-index: 1;
    display: flex; align-items: center; justify-content: center;
}
.gt-error-illustration-inner {
    width: 200px; height: 200px; border-radius: var(--gt-radius-full);
    background: rgba(0,92,85,0.12); border: 1px solid rgba(0,92,85,0.25);
    display: flex; align-items: center; justify-content: center;
    font-size: var(--gt-text-display-md); color: rgba(0,92,85,0.5);
}
@media (max-width: 640px) {
    .gt-error-wrap { flex-direction: column; padding: 32px 24px; }
    .gt-error-illustration { display: none; }
    .gt-error-code { font-size: var(--gt-text-display-sm); }
}

/* ================================================================
   SIDEBAR BOTTOM — Novo Chamado
   ================================================================ */
.gt-sidebar-bottom {
    margin-top: auto;
    padding: 12px;
    border-top: 1px solid rgba(255,255,255,0.06);
}
.gt-btn-novo-chamado {
    display: flex; align-items: center; justify-content: center;
    gap: 6px; width: 100%; padding: 10px 12px;
    border-radius: var(--gt-radius-lg);
    background: var(--gt-primary); color: var(--gt-on-primary);
    font-size: var(--gt-text-label-lg); font-weight: 600;
    text-decoration: none; border: 0; cursor: pointer; transition: background 0.15s;
}
.gt-btn-novo-chamado:hover { background: var(--gt-primary-dark); color: #fff; }
.gt-btn-novo-chamado i { font-size: var(--gt-text-title-md); }
.pc-layout.pc-sidebar-collapsed .gt-btn-novo-chamado span { display: none; }
.pc-layout.pc-sidebar-collapsed .gt-btn-novo-chamado { padding: 10px; }

/* ================================================================
   LOGIN  (GT.Web)
   ================================================================ */
.gt-login-page {
    min-height: 100vh; height: auto;
    display: flex; flex-direction: column;
    align-items: center; justify-content: center;
    padding: 40px 24px 24px;
    font-size: var(--gt-text-body-md);
    font-family: var(--gt-font-body);
    background: radial-gradient(ellipse 85% 80% at 75% 48%, #0e7060 0%, #0b4a40 42%, #091c1c 70%, #040c0c 100%);
    color: var(--gt-text-primary);
}
.gt-login-card {
    background-color: #ffffff;
    border-radius: var(--gt-radius-xl);
    box-shadow: 0 20px 60px rgba(0,0,0,0.4);
    padding: 40px 36px 28px;
    width: 100%; max-width: 440px;
}
.gt-login-card .alert { font-size: var(--gt-text-label-lg); margin-bottom: 12px; }
.gt-login-header {
    text-align: center; margin-bottom: 28px;
    padding-bottom: 20px; border-bottom: 1px solid var(--pc-border);
}
.gt-login-logo {
    display: inline-flex; align-items: center; justify-content: center;
    margin-bottom: 14px; min-height: 56px;
}
.gt-login-logo img    { max-height: 64px; max-width: 180px; display: block; }
.gt-login-logo-text   { font-family: var(--gt-font-headline); font-size: var(--gt-text-headline-md); font-weight: 700; letter-spacing: -0.02em; color: var(--gt-primary); }
.gt-login-logo-text .gt-dot { color: var(--gt-primary-container); }
.gt-login-title       { font-size: var(--gt-text-label-sm); font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--gt-on-surface-variant); margin: 0; }

.gt-login-form .form-label  { font-size: var(--gt-text-label-lg); font-weight: 600; color: var(--gt-on-surface); margin-bottom: 6px; }
.gt-login-form .form-group,
.gt-login-form .mb-3        { margin-bottom: 18px; }
.gt-login-form .invalid-feedback { font-size: var(--gt-text-label-sm); margin-top: 4px; }

.gt-input-group { position: relative; display: flex; align-items: center; }
.gt-input-icon  { position: absolute; left: 14px; z-index: 2; font-size: var(--gt-text-title-md); color: var(--gt-outline); pointer-events: none; }
.gt-input-group .form-control {
    padding-left: 40px; padding-right: 40px; height: 44px;
    border: 1px solid var(--gt-outline-variant);
    border-radius: var(--gt-radius-lg); font-size: var(--gt-text-title-md); color: var(--gt-on-surface); width: 100%;
}
.gt-input-group .form-control:focus {
    border-color: var(--gt-primary);
    box-shadow: 0 0 0 3px rgba(0,92,85,0.15); outline: none;
}
.gt-input-group .form-control.gt-input-no-toggle { padding-right: 14px; }

.gt-password-toggle {
    position: absolute; right: 8px; z-index: 2;
    border: 0; background: transparent; padding: 6px 8px;
    color: var(--gt-outline); cursor: pointer; line-height: 1; font-size: var(--gt-text-title-md);
}
.gt-password-toggle:hover { color: var(--gt-primary); }

.gt-login-actions {
    display: flex; align-items: center; justify-content: space-between;
    flex-wrap: wrap; gap: 8px; margin-bottom: 20px;
}
.gt-login-actions .form-check        { margin-bottom: 0; }
.gt-login-actions .form-check-input  { width: 16px; height: 16px; }
.gt-login-actions .form-check-label  { font-size: var(--gt-text-body-md); color: var(--gt-secondary); }

.gt-login-recover { font-size: var(--gt-text-body-md); font-weight: 500; color: var(--gt-primary); text-decoration: none; }
.gt-login-recover:hover { color: var(--gt-primary-container); text-decoration: underline; }

.gt-login-submit {
    width: 100%; height: 46px; font-size: var(--gt-text-title-md); font-weight: 600;
    border: 0; border-radius: var(--gt-radius-lg);
    background-color: var(--gt-primary); color: var(--gt-on-primary);
    display: inline-flex; align-items: center; justify-content: center;
    gap: 8px; transition: background-color 0.15s; cursor: pointer;
}
.gt-login-submit:hover,
.gt-login-submit:focus { background-color: var(--gt-primary-dark); color: #fff; }

.gt-login-card-footer {
    margin-top: 24px; padding-top: 16px; border-top: 1px solid var(--pc-border);
    text-align: center; font-size: var(--gt-text-label-sm); color: var(--gt-outline);
}
.gt-login-page-footer {
    margin-top: 28px; display: flex; align-items: center; justify-content: center;
    flex-wrap: wrap; gap: 8px 12px; font-size: var(--gt-text-label-lg);
}
.gt-login-page-footer a           { color: rgba(255,255,255,0.65); text-decoration: none; }
.gt-login-page-footer a:hover     { color: #ffffff; }
.gt-login-page-footer .gt-status-dot {
    display: inline-block; width: 8px; height: 8px;
    border-radius: var(--gt-radius-full); background-color: var(--gt-success);
    margin-right: 5px; box-shadow: 0 0 6px rgba(34,197,94,0.6);
}
.gt-login-page-footer .gt-footer-sep { color: rgba(255,255,255,0.25); user-select: none; }

/* ================================================================
   COMPATIBILIDADE — widgets BS3 (Kartik)
   ================================================================ */
.kv-grid-table { font-size: var(--gt-text-body-md); }

/* ================================================================
   COMPONENTES DE LISTAGEM
   ================================================================ */

/* Remove wrapper pc-card em views com layout próprio */
.gt-no-card {
    background: none !important; border: none !important;
    padding: 0 !important; box-shadow: none !important; border-radius: 0 !important;
}

/* Page Header */
.gt-page-header {
    display: flex; align-items: flex-start; justify-content: space-between;
    gap: 16px; margin-bottom: 20px; flex-wrap: wrap;
}
.gt-page-title {
    font-family: var(--gt-font-headline);
    font-size: var(--gt-text-headline-lg);       /* headline-lg: 30px / 38px / -0.02em / 700 */
    font-weight: 700;
    letter-spacing: -0.02em;
    line-height: 1.27;
    color: var(--gt-on-surface);
    margin: 0 0 4px;
}
.gt-page-subtitle { font-size: var(--gt-text-body-md); color: var(--gt-on-surface-variant); margin: 0; }

.gt-btn-create {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 10px 20px; background: var(--gt-primary); color: var(--gt-on-primary);
    border-radius: var(--gt-radius-lg); font-size: var(--gt-text-body-md); font-weight: 600;
    text-decoration: none; border: 0; cursor: pointer; white-space: nowrap;
    transition: background 0.15s; flex-shrink: 0;
}
.gt-btn-create:hover { background: var(--gt-primary-dark); color: #fff; }

/* Table Card */
.gt-table-card {
    background: #fff;
    border: 1px solid var(--pc-border);
    border-radius: var(--gt-radius-xl);
    overflow: hidden;
    margin-bottom: 20px;
}

/* Filter Bar */
.gt-filter-bar        { padding: 14px 20px; border-bottom: 1px solid var(--pc-border); }
.gt-filter-form       { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.gt-filter-left       { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; flex: 1; }
.gt-filter-right      { display: flex; align-items: center; gap: 10px; margin-left: auto; flex-shrink: 0; }
.gt-filter-search     { position: relative; min-width: 200px; }
.gt-filter-search i   {
    position: absolute; left: 10px; top: 50%; transform: translateY(-50%);
    font-size: var(--gt-text-body-sm); color: var(--gt-outline); pointer-events: none;
}
.gt-filter-search input {
    width: 100%; height: 36px; padding: 0 12px 0 32px;
    border: 1px solid var(--pc-border); border-radius: var(--gt-radius-lg);
    font-size: var(--gt-text-label-lg); font-family: var(--gt-font-body);
    color: var(--gt-text-primary); background: var(--gt-surface-container-low); outline: none;
}
.gt-filter-search input:focus { border-color: var(--gt-primary); background: #fff; }
.gt-filter-select,
.gt-filter-date {
    height: 36px; padding: 0 10px;
    border: 1px solid var(--pc-border); border-radius: var(--gt-radius-lg);
    font-size: var(--gt-text-label-lg); font-family: var(--gt-font-body);
    color: var(--gt-text-primary); background: var(--gt-surface-container-low); outline: none; cursor: pointer;
}
.gt-filter-select:focus,
.gt-filter-date:focus     { border-color: var(--gt-primary); }
.gt-filter-select         { padding-right: 28px; }
.gt-filter-info           { font-size: var(--gt-text-label-sm); color: var(--gt-outline); white-space: nowrap; }

.gt-icon-btn {
    width: 34px; height: 34px; border-radius: var(--gt-radius-lg);
    border: 1px solid var(--pc-border); background: var(--gt-surface-container-low);
    display: inline-flex; align-items: center; justify-content: center;
    color: var(--gt-secondary); cursor: pointer; font-size: var(--gt-text-title-md);
    transition: background 0.15s, color 0.15s;
}
.gt-icon-btn:hover { background: var(--gt-surface-container); color: var(--gt-primary); }

/* Data Table */
.gt-data-table { width: 100%; border-collapse: collapse; font-size: var(--gt-text-body-md); }
.gt-data-table thead tr   { border-bottom: 1px solid var(--gt-surface-container-low); }
.gt-data-table thead th   {
    padding: 11px 20px; font-size: var(--gt-text-label-sm); font-weight: 700;
    text-transform: uppercase; letter-spacing: 0.07em;
    color: var(--gt-outline); white-space: nowrap;
    background: var(--gt-surface-container-low);
}
.gt-data-table tbody tr   { border-bottom: 1px solid var(--gt-surface-container-low); transition: background 0.1s; }
.gt-data-table tbody tr:last-child { border-bottom: none; }
.gt-data-table tbody tr:hover      { background: var(--gt-surface-container-low); }
.gt-data-table td         { padding: 14px 20px; vertical-align: middle; color: var(--gt-text-primary); }

/* Project cell */
.gt-project-cell  { display: flex; align-items: center; gap: 12px; }
.gt-project-avatar {
    width: 38px; height: 38px; border-radius: var(--gt-radius-lg);
    color: #fff; font-size: var(--gt-text-label-lg); font-weight: 700;
    display: flex; align-items: center; justify-content: center;
    flex-shrink: 0; letter-spacing: 0.02em;
}
.gt-project-name { font-weight: 600; color: var(--gt-on-surface); font-size: var(--gt-text-body-md); line-height: 1.3; }
.gt-project-id   { font-size: var(--gt-text-label-sm); color: var(--gt-outline); margin-top: 2px; font-family: var(--gt-font-mono); }
.gt-cell-agency  { color: var(--gt-text-primary); }
.gt-cell-date    { color: var(--gt-on-surface-variant); white-space: nowrap; }
.gt-cell-actions { text-align: right; white-space: nowrap; }

/* Status badges */
.gt-status-badge {
    display: inline-flex; align-items: center; gap: 5px;
    padding: 3px 10px; border-radius: var(--gt-radius-full);
    font-size: var(--gt-text-label-sm); font-weight: 600; white-space: nowrap;
}
.gt-status-dot   { width: 6px; height: 6px; border-radius: var(--gt-radius-full); flex-shrink: 0; }
.gt-status-success { background: #f0fdf4; color: #15803d; }
.gt-status-success .gt-status-dot { background: var(--gt-success); }
.gt-status-warning { background: #fffbeb; color: #92400e; }
.gt-status-warning .gt-status-dot { background: var(--gt-warning); }
.gt-status-danger  { background: var(--gt-error-container); color: var(--gt-error); }
.gt-status-danger .gt-status-dot  { background: var(--gt-error); }
.gt-status-info    { background: #eff6ff; color: #1e40af; }
.gt-status-info .gt-status-dot    { background: var(--gt-info); }

/* Action buttons */
.gt-action-btn {
    display: inline-flex; align-items: center; justify-content: center;
    width: 32px; height: 32px; border-radius: var(--gt-radius-lg);
    border: 1px solid var(--pc-border); background: #fff;
    color: var(--gt-secondary); font-size: var(--gt-text-body-sm); text-decoration: none;
    cursor: pointer; transition: all 0.15s; margin-left: 4px;
}
.gt-action-btn:hover { border-color: var(--gt-primary); color: var(--gt-primary); background: rgba(0,92,85,0.05); }
.gt-action-btn-danger:hover { border-color: var(--gt-error); color: var(--gt-error); background: var(--gt-error-container); }

/* Pagination */
.gt-pagination-bar {
    display: flex; align-items: center; justify-content: space-between;
    padding: 12px 20px; border-top: 1px solid var(--gt-surface-container-low);
    gap: 12px; flex-wrap: wrap;
}
.gt-pagination-left  { display: flex; align-items: center; gap: 6px; }
.gt-pagination-size  {
    height: 30px; padding: 0 8px; border: 1px solid var(--pc-border);
    border-radius: var(--gt-radius-lg); font-size: var(--gt-text-label-lg);
    background: var(--gt-surface-container-low); color: var(--gt-text-primary); cursor: pointer;
}
.gt-pagination-label { color: var(--gt-on-surface-variant); font-size: var(--gt-text-label-lg); }
.gt-pagination-controls { display: flex; align-items: center; gap: 4px; }
.gt-page-btn {
    min-width: 32px; height: 32px; padding: 0 4px;
    border-radius: var(--gt-radius-lg); border: 1px solid var(--pc-border);
    background: #fff; color: var(--gt-text-primary); font-size: var(--gt-text-label-lg); font-weight: 500;
    display: inline-flex; align-items: center; justify-content: center;
    text-decoration: none; cursor: pointer; transition: all 0.15s;
}
.gt-page-btn:hover:not(:disabled) { border-color: var(--gt-primary); color: var(--gt-primary); }
.gt-page-btn:disabled             { opacity: 0.35; cursor: not-allowed; }
.gt-page-btn-active               { background: var(--gt-primary); border-color: var(--gt-primary); color: #fff !important; }
.gt-page-ellipsis                 { color: var(--gt-outline); font-size: var(--gt-text-label-lg); padding: 0 4px; }

/* Stat Cards */
.gt-stat-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 16px; margin-bottom: 8px;
}
.gt-stat-card {
    background: #fff; border: 1px solid var(--pc-border);
    border-radius: var(--gt-radius-xl); padding: 20px;
    display: flex; align-items: center; gap: 16px;
}
.gt-stat-icon  {
    width: 48px; height: 48px; border-radius: var(--gt-radius-full);
    display: flex; align-items: center; justify-content: center;
    font-size: var(--gt-text-headline-md); flex-shrink: 0;
}
.gt-stat-body  { flex: 1; min-width: 0; }
.gt-stat-label { font-size: var(--gt-text-label-sm); color: var(--gt-on-surface-variant); font-weight: 500; margin-bottom: 4px; }
.gt-stat-value {
    font-family: var(--gt-font-headline);
    font-size: var(--gt-text-icon-lg); font-weight: 700; color: var(--gt-on-surface); line-height: 1;
}

/* Utilitário: link dentro de célula sem estilo */
.gt-project-name a,
.stretched-link-inner {
    color: inherit;
    text-decoration: none;
}
.gt-project-name a:hover { color: var(--gt-primary); }

/* ================================================================
   FORMULÁRIO DE PROJETO (Configuração / Orçamento)
   ================================================================ */
.gt-projeto-form .gt-page-header { margin-bottom: 24px; }

.gt-form-grid {
    display: grid;
    gap: 20px;
    margin-bottom: 20px;
}
.gt-form-grid-top {
    grid-template-columns: 1fr 380px;
}
@media (max-width: 992px) {
    .gt-form-grid-top { grid-template-columns: 1fr; }
}

.gt-form-card {
    background: #fff;
    border: 1px solid var(--pc-border);
    border-radius: var(--gt-radius-xl);
    box-shadow: 0 1px 3px rgba(0,0,0,0.04);
    overflow: hidden;
}
.gt-form-card-full { margin-bottom: 20px; }

.gt-form-card-header {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 16px 24px;
    border-bottom: 1px solid var(--gt-surface-container-low);
    background: var(--gt-surface-container-low);
}
.gt-form-card-header i {
    font-size: var(--gt-text-icon-sm);
    color: var(--gt-primary);
}
.gt-form-card-header h3 {
    margin: 0;
    font-family: var(--gt-font-headline);
    font-size: var(--gt-text-title-md);
    font-weight: 700;
    color: var(--gt-on-surface);
    letter-spacing: -0.01em;
}

.gt-form-card-body {
    padding: 24px;
}
.gt-form-card-body .form-group,
.gt-form-card-body .mb-3 {
    margin-bottom: 18px;
}
.gt-form-card-body .form-group:last-child,
.gt-form-card-body .mb-3:last-child {
    margin-bottom: 0;
}
.gt-form-card-body label.control-label,
.gt-form-card-body .form-label {
    font-size: var(--gt-text-label-lg);
    font-weight: 600;
    color: var(--gt-on-surface-variant);
    margin-bottom: 6px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.gt-form-card-body .form-control,
.gt-form-card-body .form-select,
.gt-form-card-body .input-group .form-control {
    height: 42px;
    border: 1px solid var(--pc-border);
    border-radius: var(--gt-radius-lg);
    font-size: var(--gt-text-body-md);
    color: var(--gt-on-surface);
    background: #fff;
    box-shadow: none;
}
.gt-form-card-body textarea.form-control {
    height: auto;
    min-height: 96px;
    resize: vertical;
}
.gt-form-card-body .form-control:focus,
.gt-form-card-body .form-select:focus {
    border-color: var(--gt-primary);
    box-shadow: 0 0 0 3px rgba(0,92,85,0.1);
}

.gt-form-row-2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
}
.gt-form-row-2--spaced {
    margin-top: 0.5rem;
}
@media (max-width: 576px) {
    .gt-form-row-2 { grid-template-columns: 1fr; }
}

/* ================================================================
   PÁGINA PÚBLICA DE CAPTAÇÃO
   ================================================================ */
.gt-public-page {
    min-height: 100vh;
    margin: 0;
    background: var(--gt-surface-container-low);
    color: var(--gt-on-surface);
    font-family: var(--gt-font-body);
    font-size: var(--gt-text-body-md);
}

.gt-public-shell {
    width: min(72rem, calc(100% - 2rem));
    margin: 0 auto;
    padding: 4rem 0;
}

.gt-public-alert {
    margin: 0 0 1rem;
    border-radius: var(--gt-radius-lg);
}

.gt-public-card {
    display: grid;
    grid-template-columns: minmax(18rem, 0.85fr) minmax(0, 1.35fr);
    min-height: 38rem;
    background: #fff;
    border: 1px solid var(--pc-border);
    border-radius: var(--gt-radius-xl);
    overflow: hidden;
    box-shadow: 0 1.25rem 3.5rem rgba(15, 23, 42, 0.12);
}

.gt-public-intro {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 3rem;
    background: var(--gt-surface);
    border-right: 1px solid var(--pc-border);
}

.gt-public-brand {
    width: 4rem;
    height: 4rem;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 2rem;
    border-radius: var(--gt-radius-xl);
    background: var(--gt-primary);
    color: var(--gt-on-primary);
    font-family: var(--gt-font-headline);
    font-size: var(--gt-text-title-lg);
    font-weight: 800;
    overflow: hidden;
}

.gt-public-brand img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    background: #fff;
}

.gt-public-eyebrow {
    margin: 0 0 0.75rem;
    color: var(--gt-primary);
    font-size: var(--gt-text-label-lg);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.gt-public-intro h1 {
    margin: 0;
    color: var(--gt-on-surface);
    font-family: var(--gt-font-headline);
    font-size: 2rem;
    font-weight: 800;
    line-height: 1.2;
}

.gt-public-copy {
    margin: 1rem 0 0;
    max-width: 30rem;
    color: var(--gt-on-surface-variant);
    font-size: var(--gt-text-body-lg);
    line-height: var(--gt-leading-relaxed);
}

.gt-public-contact-list {
    display: grid;
    gap: 0.75rem;
    margin-top: 2rem;
}

.gt-public-contact-list div {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    color: var(--gt-on-surface-variant);
    font-size: var(--gt-text-body-sm);
    overflow-wrap: anywhere;
}

.gt-public-contact-list i {
    color: var(--gt-primary);
    font-size: var(--gt-text-icon-sm);
}

.gt-public-form-card {
    padding: 3rem;
}

.gt-public-form-header {
    margin-bottom: 2rem;
}

.gt-public-form-header h2 {
    margin: 0;
    font-family: var(--gt-font-headline);
    font-size: var(--gt-text-headline-sm);
    font-weight: 800;
    color: var(--gt-on-surface);
}

.gt-public-form-header p {
    margin: 0.5rem 0 0;
    color: var(--gt-on-surface-variant);
}

.gt-public-form {
    display: grid;
    gap: 1rem;
}

.gt-public-form .form-label {
    margin-bottom: 0.375rem;
    color: var(--gt-on-surface-variant);
    font-size: var(--gt-text-label-lg);
    font-weight: 700;
}

.gt-public-form .form-control {
    min-height: 2.75rem;
    border: 1px solid var(--pc-border);
    border-radius: var(--gt-radius-lg);
    color: var(--gt-on-surface);
    font-size: var(--gt-text-body-md);
    box-shadow: none;
}

.gt-public-form textarea.form-control {
    min-height: 9rem;
}

.gt-public-form .form-control:focus {
    border-color: var(--gt-primary);
    box-shadow: 0 0 0 0.1875rem rgba(0, 92, 85, 0.1);
}

.gt-public-form-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-top: 0.5rem;
}

.gt-public-form-footer span {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--gt-on-surface-variant);
    font-size: var(--gt-text-body-sm);
}

.gt-public-form-footer i {
    color: var(--gt-success);
}

@media (max-width: 992px) {
    .gt-public-shell {
        width: min(100% - 1rem, 44rem);
        padding: 1rem 0;
    }

    .gt-public-card {
        grid-template-columns: 1fr;
    }

    .gt-public-intro {
        padding: 2rem;
        border-right: 0;
        border-bottom: 1px solid var(--pc-border);
    }

    .gt-public-form-card {
        padding: 2rem;
    }
}

@media (max-width: 576px) {
    .gt-public-shell {
        width: 100%;
        padding: 0;
    }

    .gt-public-card {
        min-height: 100vh;
        border: 0;
        border-radius: 0;
        box-shadow: none;
    }

    .gt-public-intro,
    .gt-public-form-card {
        padding: 1.5rem;
    }

    .gt-public-form-footer {
        align-items: stretch;
        flex-direction: column;
    }

    .gt-public-form-footer .gt-btn-create {
        justify-content: center;
        width: 100%;
    }
}

.gt-form-status-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 14px;
    border-radius: var(--gt-radius-lg);
    background: #fffbeb;
    border: 1px solid #fde68a;
    color: #92400e;
    font-size: var(--gt-text-label-lg);
    font-weight: 600;
}
.gt-form-status-badge .gt-status-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--gt-warning);
}

.gt-form-meta-box {
    margin-top: 20px;
    padding: 14px 16px;
    border-radius: var(--gt-radius-lg);
    background: var(--gt-surface-container-low);
    border: 1px solid var(--gt-surface-container);
}
.gt-form-meta-box--flush {
    margin-top: 0;
}
.gt-form-meta-box-label {
    font-size: var(--gt-text-label-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--gt-outline);
    margin-bottom: 4px;
}
.gt-form-meta-box-value {
    font-size: var(--gt-text-label-lg);
    color: var(--gt-on-surface-variant);
    line-height: 1.5;
}
.gt-icon-primary {
    color: var(--gt-primary);
}

.gt-progress-width-0 {
    width: 0;
}
.gt-progress-width-60 {
    width: 60%;
}

.gt-form-section-toggle {
    margin-top: 8px;
}
.gt-form-section-toggle summary {
    cursor: pointer;
    font-size: var(--gt-text-label-lg);
    font-weight: 600;
    color: var(--gt-primary);
    list-style: none;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.gt-form-section-toggle summary::-webkit-details-marker { display: none; }
.gt-form-section-toggle[open] summary { margin-bottom: 16px; }

.gt-form-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 12px;
    padding: 16px 24px;
    background: #fff;
    border: 1px solid var(--pc-border);
    border-radius: var(--gt-radius-xl);
    margin-top: 4px;
}
.gt-btn-cancel {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 10px 20px;
    border-radius: var(--gt-radius-lg);
    font-size: var(--gt-text-body-md);
    font-weight: 600;
    background: #fff;
    color: var(--gt-on-surface-variant);
    border: 1px solid var(--pc-border);
    text-decoration: none;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s;
}
.gt-btn-cancel:hover {
    background: var(--gt-surface-container-low);
    color: var(--gt-on-surface);
    border-color: var(--gt-outline-variant);
}
.gt-btn-save {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 22px;
    border-radius: var(--gt-radius-lg);
    font-size: var(--gt-text-body-md);
    font-weight: 600;
    background: var(--gt-primary);
    color: var(--gt-on-primary);
    border: 0;
    cursor: pointer;
    transition: background 0.15s;
}
.gt-btn-save:hover { background: var(--gt-primary-dark); color: #fff; }

/* Radio / checkbox lists dentro dos cards */
.gt-form-card-body .radio-list,
.gt-form-card-body .checkbox-list {
    display: flex;
    gap: 16px;
    flex-wrap: wrap;
}
.gt-form-card-body .radio-list label,
.gt-form-card-body .checkbox-list label {
    font-size: var(--gt-text-body-md);
    font-weight: 500;
    text-transform: none;
    letter-spacing: normal;
    color: var(--gt-on-surface);
}

/* ---- Ajuda contextual (offcanvas) ---------------------------------------- */
:root {
    --pc-help-panel-width: 26rem;
}

.offcanvas.gt-help-offcanvas {
    --bs-offcanvas-width: var(--pc-help-panel-width);
    width: var(--pc-help-panel-width);
    max-width: 100vw;
    border-left: 1px solid var(--pc-border);
    background: var(--gt-surface);
    box-shadow: -8px 0 32px rgba(15, 23, 42, 0.08);
}

.gt-help-offcanvas .offcanvas-header.gt-help-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    padding: 1.125rem 1.25rem;
    border-bottom: 1px solid var(--pc-border);
    background: linear-gradient(180deg, var(--gt-surface-container-low) 0%, var(--gt-surface-container-lowest) 100%);
}

.gt-help-header-main {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    min-width: 0;
}

.gt-help-header-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: var(--gt-radius-lg);
    background: rgba(0, 92, 85, 0.1);
    color: var(--gt-primary);
    flex-shrink: 0;
}

.gt-help-header-icon .bi {
    font-size: var(--gt-text-icon-sm);
}

.gt-help-kicker {
    margin: 0 0 2px;
    font-size: var(--gt-text-caption);
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--gt-primary);
}

.gt-help-offcanvas .gt-help-title {
    margin: 0;
    font-size: var(--gt-text-icon-sm);
    font-weight: 700;
    line-height: 1.3;
    color: var(--gt-on-surface);
}

.gt-help-offcanvas .gt-help-close {
    margin-top: 2px;
    opacity: 0.55;
}

.gt-help-offcanvas .gt-help-close:hover {
    opacity: 1;
}

.gt-help-offcanvas .offcanvas-body.gt-help-body {
    padding: 0;
    overflow-y: auto;
}

.gt-help-content {
    padding: 1rem 1.25rem 1.5rem;
}

.gt-help-lead {
    margin: 0 0 1rem;
    padding: 0.875rem 1rem;
    border-radius: var(--gt-radius-lg);
    border: 1px solid rgba(0, 92, 85, 0.12);
    background: rgba(0, 92, 85, 0.05);
    font-size: var(--gt-text-body-md);
    line-height: 1.6;
    color: var(--gt-on-surface);
}

.gt-help-blocks {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    margin-bottom: 1rem;
}

.gt-help-block {
    margin: 0;
    padding: 0.875rem 1rem;
    border: 1px solid var(--pc-border);
    border-radius: var(--gt-radius-lg);
    background: #fff;
}

.gt-help-block-title {
    margin: 0 0 0.5rem;
    font-size: var(--gt-text-label-lg);
    font-weight: 700;
    color: var(--gt-on-surface);
}

.gt-help-block .gt-help-section-body {
    margin: 0;
    font-size: var(--gt-text-label-lg);
    line-height: 1.6;
    color: var(--gt-on-surface-variant);
}

.gt-help-section-body--flow {
    padding: 0.625rem 0.75rem;
    border-radius: var(--gt-radius-md);
    background: var(--gt-surface-container-low);
    color: var(--gt-on-surface);
    font-weight: 500;
}

.gt-help-group {
    margin-bottom: 1rem;
}

.gt-help-group-title {
    display: flex;
    align-items: center;
    gap: 0.375rem;
    margin: 0 0 0.625rem;
    font-size: var(--gt-text-caption);
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--gt-primary);
}

.gt-help-group-title .bi {
    font-size: var(--gt-text-body-sm);
}

.gt-help-fields {
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.gt-help-field-row {
    padding: 0.625rem 0.75rem;
    border: 1px solid var(--pc-border);
    border-radius: var(--gt-radius-md);
    background: #fff;
}

.gt-help-field-label {
    margin: 0 0 0.25rem;
    font-size: var(--gt-text-label-lg);
    font-weight: 700;
    color: var(--gt-on-surface);
}

.gt-help-field-help {
    margin: 0;
    font-size: var(--gt-text-label-sm);
    line-height: 1.55;
    color: var(--gt-on-surface-variant);
}

.gt-help-group--related .gt-help-related {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.gt-help-related-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.625rem 0.75rem;
    border: 1px solid var(--pc-border);
    border-radius: var(--gt-radius-md);
    background: #fff;
    color: var(--gt-on-surface);
    text-decoration: none;
    transition: border-color 0.15s, background 0.15s, color 0.15s;
}

.gt-help-related-item:hover {
    border-color: rgba(0, 92, 85, 0.25);
    background: rgba(0, 92, 85, 0.04);
    color: var(--gt-primary);
    text-decoration: none;
}

.gt-help-related-label {
    font-size: var(--gt-text-label-lg);
    font-weight: 600;
}

.gt-help-related-icon {
    color: var(--gt-primary);
    font-size: var(--gt-text-body-sm);
    flex-shrink: 0;
}

.gt-help-meta {
    margin: 0.5rem 0 0;
    padding-top: 0.75rem;
    border-top: 1px solid var(--pc-border);
    font-size: var(--gt-text-caption);
    color: var(--gt-on-surface-variant);
}

.gt-help-trigger {
    position: relative;
}

.gt-topbar-icon.gt-help-trigger .bi-question-circle {
    font-size: var(--gt-text-icon-sm);
}

.gt-topbar-icon.gt-help-trigger:hover,
.gt-topbar-icon.gt-help-trigger:focus-visible {
    color: var(--gt-primary);
}

.gt-hidden {
    display: none !important;
}

.gt-footer-links {
    display: flex;
    align-items: center;
    gap: 1rem;
}

.gt-login-html {
    background: #040c0c !important;
    height: auto;
    min-height: 100vh;
}

body.gt-login-page--standalone {
    background: radial-gradient(ellipse 85% 80% at 75% 48%, #0e7060 0%, #0b4a40 42%, #091c1c 70%, #040c0c 100%) !important;
    font-size: 1rem !important;
    height: auto !important;
    min-height: 100vh;
}

.gt-error-debug {
    font-size: var(--gt-text-caption);
    color: #94a3b8;
}

.gt-error-debug-summary {
    cursor: pointer;
    user-select: none;
}

.gt-error-debug-message {
    margin-top: 0.5rem;
    font-size: var(--gt-text-label-sm);
    color: #64748b;
    white-space: pre-wrap;
    word-break: break-all;
}

/* ================================================================
   DETALHE DO ORÇAMENTO IA
   ================================================================ */
.orc-view-flow {
    display: flex;
    flex-direction: column;
}

.orc-view-metrics {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 1rem;
    margin-bottom: 1.5rem;
    order: 1;
}

.orc-metric-card {
    min-height: 8.75rem;
    padding: 1.25rem;
    border: 1px solid var(--pc-border);
    border-radius: var(--gt-radius-xl);
    background: #fff;
    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.05);
}

.orc-metric-label {
    margin-bottom: 0.25rem;
    color: var(--gt-on-surface-variant);
    font-size: var(--gt-text-label-lg);
    font-weight: 600;
    text-transform: uppercase;
}

.orc-metric-value {
    color: var(--gt-on-surface);
    font-family: var(--gt-font-headline);
    font-size: var(--gt-text-title-lg);
    font-weight: 700;
}

.orc-metric-card--margin {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    border-color: #86efac;
    background: #dcfce7;
}

.orc-metric-card--margin .orc-metric-label,
.orc-metric-card--margin .orc-metric-value,
.orc-metric-card--margin .orc-margin-meta {
    color: #166534;
}

.orc-metric-card--warning {
    border-color: #fcd34d;
    background: #fef3c7;
}

.orc-metric-card--warning .orc-metric-label,
.orc-metric-card--warning .orc-metric-value,
.orc-metric-card--warning .orc-margin-meta {
    color: #92400e;
}

.orc-metric-card--alert {
    border-color: #fca5a5;
    background: #fee2e2;
}

.orc-metric-card--alert .orc-metric-label,
.orc-metric-card--alert .orc-metric-value,
.orc-metric-card--alert .orc-margin-meta {
    color: #991b1b;
}

.orc-margin-meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-top: 0.75rem;
    font-size: var(--gt-text-label-lg);
}

.orc-margin-edit {
    padding: 0.25rem;
    border: 0;
    background: transparent;
    color: inherit;
}

.orc-additive-banner {
    margin-bottom: 1.5rem;
    padding: 1rem 1.25rem;
    border: 0;
    border-left: 0.25rem solid var(--gt-primary);
    border-radius: var(--gt-radius-lg);
    background: #c9e6e0;
    color: #4e6864;
}

.orc-additive-banner a {
    color: var(--gt-primary-dark);
    font-weight: 600;
}

.orc-main-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
    grid-template-areas:
        "summary items"
        "template quotes"
        ". comparison";
    gap: 1.5rem;
    align-items: start;
    order: 2;
}

.orc-main-contents {
    display: contents;
}

.orc-sidebar {
    display: contents;
}

.orc-content {
    display: contents;
}

.orc-commercial-summary {
    grid-area: summary;
}

.orc-line-items {
    grid-area: items;
}

.orc-budget-template {
    grid-area: template;
}

.orc-supplier-quotes {
    grid-area: quotes;
}

.orc-quote-comparison {
    grid-area: comparison;
}

.orc-budget-review {
    margin-top: 1.5rem;
    order: 3;
}

.orc-card {
    overflow: hidden;
    border: 1px solid var(--pc-border) !important;
    border-radius: var(--gt-radius-xl);
}

.orc-card-header {
    padding: 1rem 1.5rem;
    border-bottom: 1px solid var(--pc-border);
    background: var(--gt-surface-container-low);
}

.orc-summary-list {
    margin: 0;
}

.orc-summary-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 0.75rem;
    padding: 0.75rem 0;
    border-bottom: 1px solid var(--pc-border);
}

.orc-summary-row:last-child {
    border-bottom: 0;
}

.orc-summary-row dt {
    color: var(--gt-on-surface-variant);
    font-weight: 400;
}

.orc-summary-row dd {
    margin: 0;
    overflow-wrap: anywhere;
    color: var(--gt-on-surface);
    font-weight: 500;
    text-align: right;
}

.orc-summary-undefined {
    color: var(--gt-on-surface-variant);
    font-style: italic;
    font-weight: 400;
}

.orc-add-item {
    margin-top: 1rem;
    padding: 1rem;
    border-top: 1px solid var(--pc-border);
    background: var(--gt-surface-container-low);
}

.orc-add-item-button {
    min-height: 2rem;
}

@media (max-width: 1199.98px) {
    .orc-view-metrics {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .orc-main-layout {
        grid-template-columns: 1fr;
        grid-template-areas:
            "summary"
            "template"
            "items"
            "quotes"
            "comparison";
    }
}

@media (max-width: 575.98px) {
    .orc-view-metrics {
        grid-template-columns: 1fr;
    }

    .orc-metric-card {
        min-height: auto;
    }

    .orc-summary-row {
        grid-template-columns: 1fr;
        gap: 0.25rem;
    }

    .orc-summary-row dd {
        text-align: left;
    }
}
