/* Genebra Seguros — Componentes em CSS puro
   Requer tokens.css. Prefixo gs-. Sem dependência de JS exceto onde indicado. */

/* ── Reset mínimo ───────────────────────────────── */
*,*::before,*::after{box-sizing:border-box}
body{margin:0;font-family:var(--font-body);font-size:var(--text-body-size);line-height:var(--line-height-body);color:var(--color-text);background:var(--color-surface);-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{font-family:var(--font-display);color:var(--color-heading);line-height:var(--line-height-heading);margin:0 0 var(--space-4)}
h1{font-size:var(--text-h1-size);font-weight:var(--text-h1-weight)}
h2{font-size:var(--text-h2-size);font-weight:var(--text-h2-weight)}
h3{font-size:var(--text-h3-size);font-weight:var(--text-h3-weight)}
h4{font-size:var(--text-h4-size);font-weight:var(--text-h4-weight)}
p{margin:0 0 var(--space-4)}
a{color:var(--color-primary);text-decoration:none;transition:color var(--transition-fast)}
a:hover{color:var(--color-primary-hover);text-decoration:underline}
:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset)}

/* ── Layout ─────────────────────────────────────── */
.gs-container{max-width:var(--container-max);margin:0 auto;padding:0 var(--section-padding-x)}
.gs-section{padding:var(--section-padding-y) var(--section-padding-x)}
.gs-section--alt{background:var(--color-surface-alt)}
.gs-section--dark{background:var(--color-dark-bg);color:var(--color-on-dark-body)}
.gs-section--dark h1,.gs-section--dark h2,.gs-section--dark h3{color:var(--color-on-dark)}
.gs-section+.gs-section{border-top:var(--divider)}
.gs-panel-dark{background:var(--color-on-dark-panel-bg);border:1px solid var(--color-on-dark-panel-border);border-radius:var(--radius-md);padding:var(--panel-padding)}
@media(max-width:768px){.gs-container,.gs-section{padding-left:var(--section-padding-mobile);padding-right:var(--section-padding-mobile)}.gs-section{padding-top:var(--space-10);padding-bottom:var(--space-10)}}

/* ── Texto utilitário ───────────────────────────── */
.gs-text-secondary{color:var(--color-text-secondary)}
.gs-text-subtle{color:var(--color-text-subtle)}
.gs-small{font-size:var(--text-small-size)}
.gs-caption{font-size:var(--text-caption-size)}
.gs-overline{font-size:var(--text-overline-size);font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary)}
.gs-mono{font-family:var(--font-mono);font-size:var(--text-caption-size);color:var(--color-text-subtle)}

/* ── Button ─────────────────────────────────────── */
.gs-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font-family:var(--font-body);font-size:16px;font-weight:500;line-height:1.2;padding:13px 29px;border-radius:var(--radius-sm);border:2px solid var(--color-primary);background:var(--color-primary);color:#fff;cursor:pointer;text-decoration:none;transition:background-color var(--transition-fast),color var(--transition-fast),border-color var(--transition-fast)}
.gs-btn:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover);color:#fff;text-decoration:none}
.gs-btn:focus-visible{outline:none;box-shadow:var(--focus-ring);border-color:var(--color-primary-hover)}
.gs-btn--secondary{background:transparent;color:var(--color-primary)}
.gs-btn--secondary:hover{background:var(--color-primary);color:#fff}
.gs-btn--ghost-dark{background:transparent;color:#fff;border-color:rgba(255,255,255,.4)}
.gs-btn--ghost-dark:hover{background:rgba(255,255,255,.08);border-color:#fff}
.gs-btn--sm{padding:8px 18px;font-size:14px}
.gs-btn--lg{padding:16px 36px;font-size:17px}
.gs-btn--block{width:100%}
.gs-btn:disabled,.gs-btn[aria-disabled="true"]{background:var(--gs-neutral-300);border-color:var(--gs-neutral-300);color:var(--color-text-secondary);opacity:.7;pointer-events:none}

/* ── IconButton (produto) ───────────────────────── */
.gs-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:var(--control-height-sm);height:var(--control-height-sm);padding:0;flex-shrink:0;background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-secondary);cursor:pointer;transition:background-color var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast)}
.gs-icon-btn:hover{background:var(--color-surface-alt);border-color:var(--color-text-secondary);color:var(--color-text)}
.gs-icon-btn--primary:hover{background:var(--color-primary-tint);border-color:var(--color-primary);color:var(--color-primary)}
.gs-icon-btn--danger:hover{background:var(--tone-error-bg);border-color:var(--tone-error-fg);color:var(--tone-error-fg)}
.gs-icon-btn--success:hover{background:var(--tone-success-bg);border-color:var(--tone-success-border);color:var(--tone-success-fg)}
.gs-icon-btn:disabled{opacity:.6;cursor:not-allowed}

/* ── Badge ──────────────────────────────────────── */
.gs-badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:4px 12px;border-radius:var(--radius-pill);font-family:var(--font-body);font-size:13px;font-weight:500;background:var(--color-surface-soft);color:var(--color-heading);white-space:nowrap}
.gs-badge--primary{background:var(--color-primary-tint);color:var(--color-primary)}
.gs-badge--dark{background:rgba(255,255,255,.1);color:#fff;border:1px solid rgba(255,255,255,.2)}
.gs-badge--success{background:var(--tone-success-bg);color:var(--tone-success-fg)}
.gs-badge--error{background:var(--tone-error-bg);color:var(--tone-error-fg)}
.gs-badge--warning{background:var(--tone-warning-bg);color:var(--tone-warning-fg)}

/* ── Card ───────────────────────────────────────── */
.gs-card{display:flex;flex-direction:column;gap:var(--space-3);height:100%;background:var(--color-surface);border:var(--border-thin);border-radius:var(--radius-md);padding:28px;box-shadow:var(--shadow-card);transition:box-shadow var(--transition-base)}
.gs-card:hover{box-shadow:var(--shadow-card-hover)}
.gs-card--dense{padding:var(--panel-padding-dense)}
.gs-card--flat{box-shadow:none}.gs-card--flat:hover{box-shadow:none}
.gs-card__icon{width:44px;height:44px;border-radius:var(--radius-icon);background:var(--color-primary-tint);color:var(--color-primary);display:inline-flex;align-items:center;justify-content:center;font-size:22px}
.gs-card__title{font-family:var(--font-display);font-size:20px;font-weight:600;color:var(--color-primary);margin:0}
.gs-card__body{flex:1;color:var(--color-text)}
.gs-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-6)}

/* ── Forms ──────────────────────────────────────── */
.gs-field{display:block}
.gs-field+.gs-field{margin-top:var(--space-4)}
.gs-label{display:block;margin-bottom:6px;font-size:14px;font-weight:500;color:var(--color-heading)}
.gs-label .gs-req{color:var(--color-primary)}
.gs-input,.gs-select,.gs-textarea{width:100%;font-family:var(--font-body);font-size:16px;color:var(--color-text);padding:12px 14px;border-radius:var(--radius-sm);border:var(--border-thin);background:var(--color-surface);outline:none;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}
.gs-input::placeholder,.gs-textarea::placeholder{color:var(--color-text-subtle)}
.gs-input:focus,.gs-select:focus,.gs-textarea:focus{border-color:var(--color-primary);box-shadow:var(--focus-ring)}
.gs-select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%235E5E5E' stroke-width='1.6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:38px}
.gs-textarea{min-height:120px;resize:vertical}
.gs-input[aria-invalid="true"],.gs-select[aria-invalid="true"],.gs-textarea[aria-invalid="true"]{border-color:var(--tone-error-fg)}
.gs-input:disabled,.gs-select:disabled,.gs-textarea:disabled{background:var(--color-surface-alt);color:var(--color-text-secondary);cursor:not-allowed}
.gs-hint{display:block;margin-top:6px;font-size:var(--text-caption-size);color:var(--color-text-subtle)}
.gs-hint--error{color:var(--tone-error-fg)}
.gs-input--sm{padding:0 12px;height:var(--control-height-md);font-size:14px}
.gs-form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-4)}
.gs-check{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-small-size);cursor:pointer}
.gs-check input{width:18px;height:18px;accent-color:var(--color-primary);margin:0}

/* ── Alert ──────────────────────────────────────── */
.gs-alert{padding:16px 20px;border-radius:var(--radius-sm);border:1px solid var(--tone-info-border);background:var(--tone-info-bg);color:var(--tone-info-fg);font-size:15px;line-height:var(--line-height-body)}
.gs-alert--success{background:var(--tone-success-bg);color:var(--tone-success-fg);border-color:var(--tone-success-border)}
.gs-alert--error{background:var(--tone-error-bg);color:var(--tone-error-fg);border-color:var(--tone-error-border)}
.gs-alert--warning{background:var(--tone-warning-bg);color:var(--tone-warning-fg);border-color:var(--tone-warning-border)}

/* ── Toast (produto) ────────────────────────────── */
.gs-toast{position:fixed;z-index:var(--z-toast);right:var(--space-6);bottom:var(--space-6);display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);border-radius:var(--radius-sm);border:1px solid var(--tone-success-border);background:var(--tone-success-bg);color:var(--tone-success-fg);box-shadow:var(--shadow-card-hover);font-size:var(--text-small-size);font-weight:500}
.gs-toast--top{top:var(--space-6);bottom:auto}
.gs-toast--left{left:var(--space-6);right:auto}
.gs-toast--error{background:var(--tone-error-bg);color:var(--tone-error-fg);border-color:var(--tone-error-border)}
.gs-toast--warning{background:var(--tone-warning-bg);color:var(--tone-warning-fg);border-color:var(--tone-warning-border)}
.gs-toast--info{background:var(--tone-info-bg);color:var(--tone-info-fg);border-color:var(--tone-info-border)}

/* ── Accordion (usa <details>, sem JS) ─────────── */
.gs-accordion{border:var(--border-thin);border-radius:var(--radius-md);overflow:hidden;background:var(--color-surface)}
.gs-accordion__item+.gs-accordion__item{border-top:var(--border-thin)}
.gs-accordion__item summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:18px 22px;cursor:pointer;font-family:var(--font-display);font-size:17px;font-weight:600;color:var(--color-heading)}
.gs-accordion__item summary::-webkit-details-marker{display:none}
.gs-accordion__item summary::after{content:"+";color:var(--color-primary);font-size:20px;line-height:1;transition:transform var(--transition-fast)}
.gs-accordion__item[open] summary::after{transform:rotate(45deg)}
.gs-accordion__body{padding:0 22px 20px;color:var(--color-text-secondary)}

/* ── Table (produto) ────────────────────────────── */
.gs-table-wrap{background:var(--color-surface);border:var(--border-thin);border-radius:var(--radius-md);box-shadow:var(--shadow-card);overflow:hidden}
.gs-table-wrap__scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.gs-table{width:100%;border-collapse:collapse;font-size:var(--text-small-size)}
.gs-table th{text-align:left;padding:var(--table-header-padding-y) var(--table-cell-padding-x);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary);background:var(--color-surface-alt);border-bottom:1px solid var(--color-border);white-space:nowrap}
.gs-table td{padding:var(--table-cell-padding-y) var(--table-cell-padding-x);color:var(--color-text);border-bottom:1px solid var(--color-border);vertical-align:middle}
.gs-table tbody tr:last-child td{border-bottom:none}
.gs-table tbody tr{transition:background-color var(--transition-fast)}
.gs-table tbody tr:hover{background:var(--color-surface-alt)}
.gs-table--dense td{padding-top:10px;padding-bottom:10px}
.gs-table .gs-num{text-align:right;font-variant-numeric:tabular-nums}
.gs-table__empty{text-align:center;padding:var(--space-12);color:var(--color-text-secondary)}
.gs-toolbar{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-4)}
.gs-toolbar__spacer{flex:1}

/* ── Modal (produto; visibilidade via [hidden] ou JS) ── */
.gs-modal-backdrop{position:fixed;inset:0;z-index:var(--z-modal);background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;padding:var(--space-4)}
.gs-modal{width:100%;max-width:380px;background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-card-hover);padding:var(--panel-padding)}
.gs-modal--wide{max-width:640px}
.gs-modal__head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-5)}
.gs-modal__title{font-family:var(--font-display);font-size:var(--text-body-size);font-weight:600;color:var(--color-heading);margin:0}
.gs-modal__subtitle{font-size:var(--text-caption-size);color:var(--color-text-secondary);margin:calc(-1 * var(--space-3)) 0 var(--space-5);word-break:break-all}
.gs-modal__close{background:none;border:none;cursor:pointer;color:var(--color-text-secondary);font-size:16px;line-height:1;padding:var(--space-1)}
.gs-modal__footer{display:flex;gap:var(--space-3);justify-content:flex-end;margin-top:var(--space-5)}

/* ── Header (site público) ──────────────────────── */
.gs-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-6);padding:18px var(--section-padding-x);background:var(--color-surface);border-bottom:var(--border-thin)}
.gs-header__logo{height:36px;width:auto;display:block}
.gs-header__nav{display:flex;align-items:center;gap:28px}
.gs-header__nav a{color:var(--color-heading);font-size:15px;font-weight:500;white-space:nowrap}
.gs-header__nav a:hover{color:var(--color-primary);text-decoration:none}
.gs-header__nav a.gs-header__cta,.gs-header__cta{background:var(--color-primary);color:#fff;padding:10px 22px;border-radius:var(--radius-sm);font-size:14px;font-weight:500;white-space:nowrap}
.gs-header__nav a.gs-header__cta:hover,.gs-header__cta:hover{background:var(--color-primary-hover);color:#fff;text-decoration:none}
@media(max-width:900px){.gs-header__nav{gap:16px}.gs-header__nav a:not(.gs-header__cta){display:none}}

/* ── AppBar (produto autenticado) ───────────────── */
.gs-appbar{display:flex;align-items:center;gap:var(--space-6);height:var(--appbar-height);padding:0 var(--space-8);background:var(--color-surface);border-bottom:var(--divider)}
.gs-appbar__logo{height:36px;width:auto;display:block;flex-shrink:0}
.gs-appbar__nav{display:flex;align-items:center;gap:var(--space-1);flex:1}
.gs-appbar__nav a{white-space:nowrap;padding:6px 14px;border-radius:var(--radius-sm);font-size:var(--text-small-size);font-weight:500;color:var(--color-text-secondary);transition:background-color var(--transition-fast),color var(--transition-fast)}
.gs-appbar__nav a:hover{background:var(--color-surface-alt);color:var(--color-text);text-decoration:none}
.gs-appbar__nav a[aria-current="page"]{background:var(--color-primary-tint);color:var(--color-primary)}
.gs-appbar__actions{margin-left:auto;display:flex;align-items:center;gap:var(--space-2)}

/* ── Sidebar (plataforma, opcional) ─────────────── */
.gs-app{display:grid;grid-template-columns:240px minmax(0,1fr);min-height:100vh}
.gs-sidebar{background:var(--color-surface-alt);border-right:var(--border-thin);padding:var(--space-6) var(--space-4);display:flex;flex-direction:column;gap:var(--space-1)}
.gs-sidebar a{display:flex;align-items:center;gap:var(--space-3);padding:10px 14px;border-radius:var(--radius-sm);font-size:var(--text-small-size);font-weight:500;color:var(--color-text-secondary)}
.gs-sidebar a:hover{background:var(--color-surface-soft);color:var(--color-text);text-decoration:none}
.gs-sidebar a[aria-current="page"]{background:var(--color-primary-tint);color:var(--color-primary)}
.gs-main{padding:var(--space-8)}
@media(max-width:900px){.gs-app{grid-template-columns:1fr}.gs-sidebar{display:none}.gs-main{padding:var(--space-4)}}

/* ── Footer ─────────────────────────────────────── */
.gs-footer{background:var(--color-dark-bg);color:var(--color-on-dark-body);padding:50px var(--section-padding-x) 30px}
.gs-footer__grid{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:var(--space-10);margin-bottom:var(--space-8)}
.gs-footer__logo{height:32px;filter:brightness(0) invert(1);margin-bottom:14px}
.gs-footer h4{color:var(--color-on-dark-secondary);font-size:15px;margin-bottom:var(--space-3)}
.gs-footer p{font-size:14px;line-height:1.7}
.gs-footer__bottom{border-top:1px solid var(--color-on-dark-panel-border);padding-top:18px;font-size:13px;color:var(--color-on-dark-secondary)}
@media(max-width:768px){.gs-footer__grid{grid-template-columns:1fr}}

/* ── WhatsApp ───────────────────────────────────── */
.gs-whatsapp{position:fixed;right:24px;bottom:24px;z-index:var(--z-whatsapp);width:56px;height:56px;border-radius:50%;border:none;background:var(--gs-whatsapp);color:#fff;display:inline-flex;align-items:center;justify-content:center;box-shadow:var(--shadow-float);cursor:pointer}

/* ── Stat / KPI (plataforma) ────────────────────── */
.gs-stat{background:var(--color-surface);border:var(--border-thin);border-radius:var(--radius-md);padding:var(--panel-padding-dense);display:flex;flex-direction:column;gap:var(--space-1)}
.gs-stat__label{font-size:var(--text-caption-size);color:var(--color-text-secondary)}
.gs-stat__value{font-family:var(--font-display);font-size:28px;font-weight:600;color:var(--color-heading);line-height:1.1;font-variant-numeric:tabular-nums}
.gs-stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-4)}

/* ── Stepper (cotação) ──────────────────────────── */
.gs-stepper{display:flex;gap:var(--space-2);counter-reset:step;margin-bottom:var(--space-8)}
.gs-stepper__step{flex:1;display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-small-size);color:var(--color-text-secondary);padding-bottom:var(--space-3);border-bottom:3px solid var(--color-border)}
.gs-stepper__step::before{counter-increment:step;content:counter(step);width:24px;height:24px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;background:var(--color-surface-soft);color:var(--color-heading)}
.gs-stepper__step[aria-current="step"]{color:var(--color-primary);border-bottom-color:var(--color-primary);font-weight:500}
.gs-stepper__step[aria-current="step"]::before{background:var(--color-primary);color:#fff}
.gs-stepper__step[data-done]{color:var(--color-heading);border-bottom-color:var(--color-heading)}
.gs-stepper__step[data-done]::before{content:"✓";background:var(--color-heading);color:#fff}

/* ── Empty state ────────────────────────────────── */
.gs-empty{text-align:center;padding:var(--space-12) var(--space-6);color:var(--color-text-secondary)}
.gs-empty__title{font-family:var(--font-display);font-size:var(--text-h4-size);font-weight:600;color:var(--color-heading);margin-bottom:var(--space-2)}
