/* Central presentation tokens. System fonts and local assets only. */
:root{
  --bg:#f4f6f8;
  --surface:#fff;
  --ink:#172b36;
  --muted:#526572;
  --line:#dce4e9;
  --accent:#17666b;
  --accent-hover:#104e53;
  --accent-soft:#e8f3f2;
  --danger:#a12c35;
  --warning:#7d541c;
  --radius:14px;
  --radius-sm:9px;
  --sidebar:248px;
  --space-1:.25rem;
  --space-2:.5rem;
  --space-3:.75rem;
  --space-4:1rem;
  --space-5:1.5rem;
  --space-6:2rem;
  --shadow:0 4px 22px #172b3606
}
*{
  box-sizing:border-box
}
html{
  scroll-behavior:smooth;
  scroll-padding-top:6rem
}
body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font:1rem/1.6 system-ui,-apple-system,"Segoe UI",sans-serif
}
a{
  color:var(--accent);
  text-decoration-thickness:1px;
  text-underline-offset:3px
}
a:hover{
  color:var(--accent-hover)
}
button,input,select,textarea{
  font:inherit
}
button,a,summary{
  -webkit-tap-highlight-color:transparent
}
button,summary{
  cursor:pointer
}
button:disabled{
  cursor:not-allowed;
  opacity:.65
}
:focus-visible{
  outline:3px solid #986000;
  outline-offset:3px
}
h1,h2,h3,h4,p{
  overflow-wrap:anywhere
}
h1,h2,h3,h4{
  line-height:1.3;
  margin:0 0 var(--space-3);
  letter-spacing:-.025em
}
h1{
  font-size:clamp(1.55rem,2.4vw,2rem);
  font-weight:700
}
h2{
  font-size:1.4rem
}
h3{
  font-size:1.13rem;
  margin-top:var(--space-5)
}
h4{
  font-size:1rem
}
p{
  margin:0 0 var(--space-4)
}
small,.helptext{
  color:var(--muted)
}
.icon{
  display:inline-block;
  flex:0 0 auto;
  vertical-align:middle
}
.icon-defs{
  position:absolute;
  width:0;
  height:0;
  overflow:hidden
}
.skip{
  position:fixed;
  z-index:100;
  top:-6rem;
  left:1rem;
  padding:.7rem 1rem;
  background:var(--ink);
  color:white;
  border-radius:var(--radius-sm)
}
.skip:focus{
  top:1rem
}
.eyebrow{
  display:block;
  color:var(--muted);
  font-size:.72rem;
  font-weight:700;
  letter-spacing:.08em;
  text-transform:uppercase;
  margin:0 0 .25rem
}
.brand{
  display:flex;
  align-items:center;
  gap:.65rem;
  text-decoration:none;
  color:var(--ink);
  font-size:1.35rem;
  font-weight:750;
  letter-spacing:-.045em
}
.brand-mark{
  display:grid;
  place-items:center;
  width:34px;
  height:36px;
  border-radius:10px;
  background:var(--accent);
  color:white;
  font-size:1.1rem;
  letter-spacing:0
}
.sidebar{
  position:fixed;
  inset:0 auto 0 0;
  width:var(--sidebar);
  background:var(--surface);
  border-right:1px solid var(--line);
  z-index:30;
  overflow-y:auto
}
.sidebar-body{
  padding:1.75rem 1rem
}
.sidebar .brand{
  padding:0 .6rem
}
.sidebar-caption{
  font-size:.75rem;
  color:var(--muted);
  margin:.65rem .6rem 2rem
}
.sidebar .mobile-menu{
  display:none
}
.nav-link{
  display:flex;
  align-items:center;
  gap:.8rem;
  padding:.8rem .85rem;
  margin:.2rem 0;
  border-radius:var(--radius-sm);
  text-decoration:none;
  font-size:.88rem;
  font-weight:550;
  color:var(--muted)
}
.nav-link:hover{
  background:var(--bg);
  color:var(--ink)
}
.nav-link.is-active{
  background:var(--accent-soft);
  color:var(--accent);
  font-weight:700;
  box-shadow:inset 3px 0 var(--accent)
}
.sidebar-footer{
  margin:2rem .6rem 0;
  padding-top:1.5rem;
  border-top:1px solid var(--line);
  font-size:.8rem
}
.sidebar-footer p{
  font-weight:650;
  overflow-wrap:anywhere
}
.sidebar-footer a{
  display:flex;
  align-items:center;
  gap:.5rem;
  text-decoration:none
}
.app-body{
  margin-left:var(--sidebar);
  min-width:0
}
.auth-shell .app-body{
  margin:0
}
.topbar{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:1rem;
  min-height:84px;
  padding:1rem clamp(1rem,3vw,2.5rem);
  background:var(--surface);
  border-bottom:1px solid var(--line)
}
.family-context{
  min-width:0;
  max-width:60%
}
.family-context>a{
  font-size:.9rem;
  font-weight:650;
  text-decoration:none;
  overflow-wrap:anywhere
}
.user-context{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:1rem;
  font-size:.8rem;
  min-width:0
}
.user-context>span{
  max-width:14rem;
  overflow-wrap:anywhere
}
.topbar-note{
  color:var(--muted);
  font-size:.85rem
}
.user-context form{
  padding:0;
  margin:0;
  border:0;
  background:none;
  box-shadow:none;
  flex:0 0 auto
}
main{
  max-width:1480px;
  margin:0 auto;
  padding:2rem clamp(1rem,3vw,2.5rem) 1rem;
  min-width:0
}
.page-header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  margin-bottom:1.75rem
}
.page-header>div{
  min-width:0
}
.page-actions{
  display:flex;
  align-items:center;
  gap:.7rem;
  flex-wrap:wrap;
  justify-content:flex-end
}
.page-actions .button{
  white-space:nowrap
}
.page-footer{
  font-size:.75rem;
  color:var(--muted);
  margin-top:3rem;
  padding-top:1.5rem;
  border-top:1px solid var(--line)
}
.auth-main{
  max-width:520px;
  padding-top:clamp(2rem,7vh,5rem)
}
.auth-main .panel{
  padding:2rem
}
.auth-main .form-fields{
  grid-template-columns:1fr
}
.auth-main form{
  padding:0;
  border:0;
  background:transparent;
  box-shadow:none
}
.auth-main button{
  width:100%;
  justify-content:center
}
.auth-main .page-footer{
  text-align:center
}
.panel,.surface,.dashboard-section{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:1.5rem;
  box-shadow:var(--shadow)
}
.panel>h1{
  font-size:1.55rem
}
.app-shell .panel>h1{
  font-size:1.35rem
}
.section-nav,.dashboard-nav{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:.45rem;
  margin-bottom:1.5rem;
  padding:.4rem;
  background:#e9eef1;
  border-radius:11px
}
.section-nav a,.dashboard-nav a{
  display:flex;
  align-items:center;
  gap:.5rem;
  border-radius:8px;
  color:var(--muted);
  font-size:.85rem;
  font-weight:600;
  text-decoration:none;
  padding:.55rem .8rem
}
.section-nav a[aria-current],.section-nav a:hover,.dashboard-nav a:hover{
  background:white;
  color:var(--accent);
  box-shadow:var(--shadow)
}
button,.button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.5rem;
  min-height:44px;
  padding:.65rem 1rem;
  border:1px solid transparent;
  border-radius:var(--radius-sm);
  background:var(--accent);
  color:white;
  text-decoration:none;
  font-size:.87rem;
  font-weight:650;
  line-height:1.4
}
button:hover,.button:hover{
  background:var(--accent-hover);
  color:white
}
.button-secondary{
  background:var(--surface);
  color:var(--accent);
  border-color:var(--line)
}
.button-secondary:hover{
  background:var(--accent-soft);
  color:var(--accent)
}
.button-quiet{
  background:none;
  color:var(--muted);
  border:1px solid var(--line);
  padding:.5rem .7rem;
  font-size:.8rem
}
.button-quiet:hover{
  background:var(--bg);
  color:var(--ink)
}
.button-danger{
  background:var(--surface);
  color:var(--danger);
  border-color:#d5aab0
}
.button-danger:hover{
  background:#fff0f1;
  color:var(--danger)
}
.action-menu{
  position:relative;
  padding:0;
  border:0;
  margin:0;
  max-width:100%
}
.action-menu summary{
  list-style:none
}
.action-menu summary::-webkit-details-marker{
  display:none
}
.action-options{
  position:absolute;
  right:0;
  top:calc(100% + .5rem);
  z-index:40;
  width:300px;
  max-width:calc(100vw - 2rem);
  padding:.4rem;
  background:white;
  border:1px solid var(--line);
  border-radius:var(--radius);
  box-shadow:0 12px 36px #172b361c
}
.action-options a{
  display:block;
  padding:.85rem;
  text-decoration:none;
  border-radius:8px;
  color:var(--ink)
}
.action-options a:hover{
  background:var(--accent-soft)
}
.action-options strong,.action-options span{
  display:block
}
.action-options span{
  color:var(--muted);
  font-size:.78rem
}
.action-options strong{
  font-size:.9rem
}
form{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:1.25rem;
  margin:1rem 0 1.5rem;
  min-width:0
}
form>button{
  margin-top:1rem
}
.form-fields{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));
  gap:1rem 1.25rem;
  max-width:1100px
}
.field{
  min-width:0
}
.field:has(textarea),.field:has(.helptext ul){
  grid-column:1/-1
}
label{
  display:block;
  font-size:.85rem;
  font-weight:650;
  margin-bottom:.4rem;
  color:var(--ink)
}
input:not([type=checkbox]):not([type=radio]):not([type=hidden]),select,textarea{
  display:block;
  width:100%;
  max-width:100%;
  min-height:44px;
  border:1px solid #a8b8c3;
  border-radius:8px;
  background:white;
  color:var(--ink);
  padding:.6rem .7rem;
  font-size:1rem;
  line-height:1.5
}
input[type=file]{
  font-size:.85rem!important;
  padding:.5rem!important
}
input:disabled,input[readonly]{
  background:var(--bg)
}
input[type=checkbox],input[type=radio]{
  width:19px;
  height:19px;
  vertical-align:middle;
  accent-color:var(--accent);
  flex-shrink:0
}
.field-checkbox{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:.5rem;
  align-self:start;
  padding-top:1.75rem
}
.field-checkbox label{
  display:inline;
  margin:0
}
.helptext{
  font-size:.77rem;
  line-height:1.5;
  margin-top:.4rem
}
.helptext ul{
  margin:.4rem 0;
  padding-left:1.3rem
}
.field-invalid input,.field-invalid select{
  border-color:var(--danger)
}
.field-errors,.errorlist{
  color:var(--danger);
  font-size:.82rem
}
.errorlist{
  margin:.4rem 0;
  padding-left:1.2rem
}
.form-errors{
  background:#fff3f3;
  color:var(--danger);
  border-left:3px solid var(--danger);
  border-radius:8px;
  padding:.8rem;
  margin-bottom:1rem
}
.filter-form .form-fields{
  grid-template-columns:repeat(auto-fit,minmax(min(100%,165px),1fr))
}
.filter-form{
  background:var(--surface)
}
.family-switch{
  display:flex;
  flex-wrap:wrap;
  align-items:end;
  gap:1rem;
  background:var(--bg);
  padding:1rem
}
.family-switch label{
  width:100%;
  margin:0
}
.family-switch select{
  flex:1 1 200px;
  width:auto
}
.family-switch button{
  margin:0
}
.message,.notice,[role=alert]{
  border:1px solid var(--line);
  border-left:3px solid var(--accent);
  background:var(--accent-soft);
  padding:1rem 1.25rem;
  border-radius:10px;
  margin:1rem 0;
  color:var(--ink);
  font-size:.88rem
}
.message.error,[role=alert]{
  background:#fff3f3;
  border-left-color:var(--danger)
}
.message-label{
  display:block;
  font-size:.73rem;
  font-weight:750;
  letter-spacing:.06em;
  text-transform:uppercase;
  margin-bottom:.2rem
}
.field-errors[role=alert]{
  padding:0;
  border:0;
  background:none;
  margin:.4rem 0;
  color:var(--danger)
}
.notice strong{
  display:block
}
article{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:1.3rem;
  margin:1rem 0;
  overflow-wrap:anywhere
}
article h3{
  margin-top:0
}
article p{
  font-size:.88rem;
  color:var(--muted)
}
article p:last-child{
  margin-bottom:0
}
article form{
  border:0;
  padding:0;
  box-shadow:none;
  background:transparent;
  margin:1rem 0 0
}
article a{
  font-weight:600
}
.record-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));
  gap:1rem;
  margin:1.5rem 0
}
.record-grid article{
  margin:0
}
.money{
  font-variant-numeric:tabular-nums lining-nums;
  white-space:nowrap;
  font-weight:600;
  color:var(--ink)
}
.table-wrap{
  position:relative;
  max-width:100%;
  overflow-x:auto;
  overscroll-behavior-x:contain;
  border:1px solid var(--line);
  border-radius:11px;
  margin:1rem 0 1.5rem;
  background:white
}
table{
  width:100%;
  border-collapse:collapse;
  text-align:left;
  font-size:.82rem;
  line-height:1.5
}
caption{
  text-align:left;
  padding:.85rem 1rem;
  color:var(--muted);
  font-size:.8rem;
  font-weight:600
}
th,td{
  padding:.9rem 1rem;
  border-bottom:1px solid var(--line);
  vertical-align:top
}
th{
  background:#f7f9fa;
  color:var(--muted);
  font-size:.75rem;
  font-weight:700
}
td:has(.money),th.numeric{
  text-align:right
}
td .money{
  font-size:.84rem
}
td a{
  white-space:normal
}
tr:last-child td{
  border-bottom:0
}
tbody tr:hover{
  background:#fafcfc
}
td{
  min-width:100px;
  max-width:380px;
  overflow-wrap:anywhere
}
td:first-child{
  min-width:170px
}
.table-wrap input,.table-wrap select{
  min-width:140px
}
.empty-state{
  padding:2rem 1rem;
  background:white;
  border:1px dashed #b9c8d2;
  border-radius:var(--radius);
  text-align:center;
  color:var(--muted);
  font-size:.9rem
}
.pagination{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:1rem;
  margin:1.5rem 0;
  font-size:.85rem
}
.pagination a{
  border:1px solid var(--line);
  background:white;
  padding:.55rem .8rem;
  border-radius:8px;
  text-decoration:none
}
.pagination .current-page{
  color:var(--muted)
}
details:not(.sidebar):not(.action-menu){
  background:white;
  border:1px solid var(--line);
  border-radius:var(--radius-sm);
  padding:1rem;
  margin:1rem 0
}
details>summary{
  font-size:.87rem;
  font-weight:650
}
details[open]>summary{
  margin-bottom:.8rem
}
.action-menu[open]>summary{
  margin-bottom:0
}
.financial-notes{
  margin-top:2rem!important;
  color:var(--muted)
}
.financial-notes p{
  font-size:.82rem;
  margin:1rem 0 0
}
.metric-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:1rem;
  margin:1.5rem 0
}
.metric{
  background:white;
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:1.25rem;
  box-shadow:var(--shadow);
  min-width:0
}
.metric-label{
  font-size:.78rem;
  font-weight:600;
  color:var(--muted);
  margin-bottom:.6rem
}
.metric-value{
  font-size:clamp(1.2rem,2vw,1.7rem);
  line-height:1.35;
  letter-spacing:-.03em;
  font-weight:700;
  font-variant-numeric:tabular-nums;
  white-space:normal;
  overflow-wrap:anywhere
}
.metric-note{
  font-size:.72rem;
  color:var(--muted);
  margin:.6rem 0 0
}
.dashboard-section{
  margin:1.5rem 0;
  scroll-margin-top:1.5rem
}
.dashboard-section>h2,.dashboard-section>h3:first-child{
  margin-top:0
}
.chart-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:1.5rem
}
.chart-card{
  min-width:0
}
.chart-box{
  height:22rem;
  position:relative;
  margin:1rem 0;
  max-width:100%
}
.section-links{
  display:flex;
  flex-wrap:wrap;
  gap:.6rem 1rem;
  font-size:.83rem
}
.status-badge{
  display:inline-flex;
  align-items:center;
  gap:.3rem;
  font-size:.75rem;
  line-height:1.4;
  padding:.3rem .55rem;
  border:1px solid var(--line);
  border-radius:6px;
  background:var(--bg);
  font-weight:650;
  color:var(--ink)
}
.form-actions{
  display:flex;
  flex-wrap:wrap;
  gap:.6rem;
  margin-top:1rem
}
.form-actions button{
  margin:0
}
@media(max-width:1150px){
  :root{
    --sidebar:224px
  }
  .metric-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))
  }
  .page-header{
    align-items:flex-start
  }
  .page-actions{
    justify-content:flex-start
  }
  .chart-grid{
    grid-template-columns:1fr
  }
}
@media(max-width:800px){
  html{
    scroll-padding-top:1rem
  }
  .sidebar{
    position:static;
    inset:auto;
    width:100%;
    border-right:0;
    border-bottom:1px solid var(--line);
    overflow:visible
  }
  .sidebar .mobile-menu{
    display:flex;
    align-items:center;
    gap:.6rem;
    min-height:56px;
    padding:.8rem 1rem;
    font-size:.9rem;
    list-style:none;
    font-weight:650;
    background:white
  }
  .mobile-menu::-webkit-details-marker{
    display:none
  }
  .menu-state{
    margin-left:auto;
    color:var(--muted);
    font-size:.75rem;
    font-weight:500
  }
  .sidebar-body{
    padding:1rem
  }
  .sidebar-caption{
    margin-bottom:1rem
  }
  .sidebar nav{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:.25rem
  }
  .sidebar-footer{
    margin-top:1rem;
    padding-top:1rem
  }
  .sidebar-footer p{
    margin-bottom:.5rem
  }
  .app-body{
    margin-left:0
  }
  .topbar{
    min-height:72px;
    padding:.85rem 1rem;
    gap:.75rem
  }
  .family-context{
    max-width:65%
  }
  .user-context>span{
    display:none
  }
  .user-context{
    gap:0
  }
  .topbar-note{
    display:none
  }
  main{
    padding:1.25rem 1rem
  }
  .page-header{
    display:block;
    margin-bottom:1.25rem
  }
  .page-actions{
    margin-top:1rem;
    justify-content:flex-start;
    gap:.5rem
  }
  .page-actions .button{
    font-size:.8rem;
    padding:.6rem .75rem
  }
  .auth-main{
    padding-top:2rem
  }
  .auth-main .panel{
    padding:1.5rem
  }
  .panel,.dashboard-section{
    padding:1rem
  }
  .section-nav,.dashboard-nav{
    gap:.2rem;
    padding:.25rem
  }
  .section-nav a,.dashboard-nav a{
    font-size:.78rem;
    padding:.55rem .6rem
  }
  .metric-grid{
    gap:.7rem;
    margin:1rem 0
  }
  .metric{
    padding:1rem
  }
  .metric-value{
    font-size:1.25rem
  }
  .metric-label{
    font-size:.72rem
  }
  .metric-note{
    font-size:.69rem
  }
  .form-fields{
    grid-template-columns:1fr
  }
  .filter-form .form-fields{
    grid-template-columns:repeat(2,minmax(0,1fr))
  }
  .field-checkbox{
    padding-top:.4rem
  }
  form{
    padding:1rem
  }
  form>button{
    max-width:100%
  }
  .table-wrap:before{
    content:"Tabela completa: deslize ou use as setas com foco nesta área";
    display:block;
    padding:.6rem .8rem;
    font-size:.7rem;
    color:var(--muted);
    background:#f7f9fa;
    position:sticky;
    left:0;
    width:100%;
    min-width:0
  }
  .table-wrap th,.table-wrap td{
    padding:.75rem .8rem
  }
  .table-wrap td:first-child{
    min-width:150px
  }
  .chart-box{
    height:19rem
  }
  .dashboard-section h3{
    font-size:1rem
  }
  .record-grid{
    grid-template-columns:1fr
  }
  .page-footer{
    margin-top:2rem
  }
  .action-options{
    left:0;
    right:auto
  }
}
@media(max-width:420px){
  .sidebar nav{
    grid-template-columns:1fr
  }
  .filter-form .form-fields{
    grid-template-columns:1fr
  }
  .metric-value{
    font-size:1.1rem
  }
  .metric{
    padding:.85rem
  }
  .family-context>a{
    font-size:.8rem
  }
  .section-nav a,.dashboard-nav a{
    font-size:.75rem
  }
  .button-quiet{
    padding:.45rem .55rem
  }
}
@media(prefers-reduced-motion:reduce){
  html{
    scroll-behavior:auto
  }
  *,*::before,*::after{
    animation:none!important;
    transition:none!important
  }
}
@media print{
  .sidebar,.topbar,.page-actions,.section-nav,.dashboard-nav,.financial-notes,.page-footer,form{
    display:none!important
  }
  .app-body{
    margin:0
  }
  main{
    max-width:none;
    padding:0
  }
  .dashboard-section,.metric{
    break-inside:avoid;
    box-shadow:none
  }
  .table-wrap{
    overflow:visible
  }
  body{
    background:white
  }
}
.app-shell .panel>h1{
  display:none
}
.section-intro{
  color:var(--muted);
  font-size:.9rem;
  margin-bottom:1.5rem
}
.form-errors>.errorlist{
  margin:0
}
.field-checkbox .helptext{
  width:100%
}
.filter-form>button{
  margin-top:1rem
}

/* Anchor the launch menu to the full header row so it never extends past a phone edge. */
@media(max-width:800px){
  .page-actions{position:relative}
  .page-actions>.action-menu{position:static}
  .page-actions .action-options{left:0;right:auto;width:min(300px,100%);max-width:100%}
}

.analysis-controls select[multiple]{min-height:10rem}.chart-horizontal{height:28rem}.analysis-controls .field:last-child{grid-column:1/-1}

/* Exclusive dashboard panels; native hidden removes descendants from keyboard navigation. */
.dashboard-section[hidden] { display: none !important; }
.dashboard-tabs { position: relative; flex-wrap: nowrap; overflow-x: auto; max-width: 100%; gap: .35rem; padding: .5rem; }
.dashboard-tabs [role="tab"] { flex: 0 0 auto; white-space: nowrap; border: 2px solid transparent; text-decoration: none; }
.dashboard-tabs [aria-selected="true"] { background: var(--surface, #fff); color: var(--accent); border-bottom-color: currentColor; font-weight: 700; }
.dashboard-tabs [role="tab"]:focus-visible, .dashboard-section:focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; }

/* Explicit evolution choices; automatic top-five is never pre-checked. */
.category-choices { display: grid; gap: .5rem; max-height: 18rem; overflow-y: auto; padding: .5rem; border: 1px solid var(--line); border-radius: var(--radius-sm); }
.category-choices label { display: flex; align-items: baseline; gap: .5rem; font-weight: 400; }

.field-choice-set { min-width: 0; border: 0; margin: 0; padding: 0; }
.field-choice-set legend { font-weight: 600; margin-bottom: .4rem; }
