/* Norte: interface compartilhada, sem dependência de dados ou de provedor. */
:root {
  --bg:#0c131c; --surface:#131e2b; --surface-2:#192637; --surface-3:#223247;
  --border:#2b3a4d; --border-soft:#233144;
  --text:#edf3fa; --text-dim:#afbdce; --text-faint:#91a2b8;
  --accent:#75dfc4; --accent-soft:#193c39; --accent-dim:#49baa0;
  --green:#75dfac; --green-soft:#17392c;
  --blue:#93bbf4; --blue-soft:#20344f; --amber:#eac087; --amber-soft:#3c3024;
  --radius:20px; --radius-sm:12px; --shadow:0 8px 28px #00000016;
}
:root.light {
  --bg:#f3f6f8; --surface:#fff; --surface-2:#f5f8fa; --surface-3:#e9eff4;
  --border:#d5e0e8; --border-soft:#e5ecf2;
  --text:#182b40; --text-dim:#4e6378; --text-faint:#61768b;
  --accent:#176f62; --accent-soft:#e0f2ec; --accent-dim:#125b50;
  --green:#24764f; --green-soft:#e3f3e9; --blue:#355f9c; --blue-soft:#e8effa;
  --amber:#80551f; --amber-soft:#fff2dc; --shadow:0 8px 28px #243b5310;
}
body { line-height:1.5; }
button,input,select,textarea { font:inherit; }
button { touch-action:manipulation; }
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible {
  outline:3px solid var(--accent); outline-offset:3px;
}
button:disabled { cursor:not-allowed; opacity:.55; }
.sidebar { width:248px; padding:26px 16px 16px; background:var(--bg); border-color:var(--border-soft); }
.brand-row { padding:4px 12px 30px; }
.brand-mark { width:40px; height:40px; }
.brand-text { font-size:21px; letter-spacing:-.7px; }
.brand-text small { font-family:'IBM Plex Sans',sans-serif; font-size:10px; letter-spacing:.07em; margin-top:5px; }
nav.side-nav { gap:5px; }
nav.side-nav button { min-height:45px; padding:11px 13px; border:1px solid transparent; border-radius:12px; }
nav.side-nav button.active { border-color:color-mix(in srgb,var(--accent) 25%,transparent); }
nav.side-nav button[data-view="config"] { margin-top:auto; }
.sidebar-foot { margin-top:18px; color:var(--text-faint); }
.sidebar-foot .mini { font-family:'IBM Plex Sans',sans-serif; }
.ic svg { display:block; width:20px; height:20px; }
nav.side-nav button .ic { width:22px; flex:none; }
main { max-width:1320px; padding:38px 40px 90px; }
.page-head { padding:4px 0 22px; margin-bottom:22px; border-bottom:1px solid var(--border-soft); }
.page-head h1 { font-size:clamp(28px,3vw,36px); letter-spacing:-1.2px; font-weight:600; }
.page-head .eyebrow { font-family:'IBM Plex Sans',sans-serif; font-size:10px; font-weight:600; letter-spacing:.16em; }
.page-head p { font-size:14px; margin-top:8px; max-width:62ch; }
.hero { position:relative; isolation:isolate; overflow:hidden; padding:32px 36px; margin-bottom:22px; border:1px solid var(--border); border-radius:24px; background:linear-gradient(115deg,var(--surface),var(--accent-soft)); }
.hero::after { content:'N'; position:absolute; right:35px; top:50%; transform:translateY(-50%) rotate(-12deg); font-family:'Space Grotesk',sans-serif; font-size:170px; font-weight:700; line-height:1; color:var(--accent); opacity:.08; z-index:-1; }
.hero .greet { font-family:'Space Grotesk',sans-serif; font-size:clamp(28px,3.5vw,40px); font-weight:600; letter-spacing:-1.3px; }
.hero .date-line { font-family:'IBM Plex Sans',sans-serif; font-size:12px; margin-top:8px; }
.hero .phrase { max-width:65ch; background:none; border:0; padding:0; color:var(--text-dim); font-size:14px; }
.norte-kicker { display:flex; align-items:center; gap:8px; font-size:10px; font-weight:600; letter-spacing:.16em; text-transform:uppercase; color:var(--accent); margin-bottom:12px; }
.norte-kicker::before { content:''; width:6px; height:6px; background:var(--accent); border-radius:50%; }
.norte-shortcuts { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin-bottom:24px; }
.norte-shortcut { text-align:left; display:flex; align-items:center; gap:12px; padding:17px 18px; background:var(--surface); border:1px solid var(--border); border-radius:16px; color:var(--text); cursor:pointer; }
.norte-shortcut:hover { background:var(--surface-2); border-color:var(--accent); }
.norte-shortcut>span:first-child { width:38px; height:38px; flex:none; display:grid; place-items:center; border-radius:12px; background:var(--accent-soft); color:var(--accent); }
.norte-shortcut strong { display:block; font-size:13px; font-weight:500; }
.norte-shortcut small { display:block; font-size:11px; color:var(--text-faint); margin-top:3px; }
.norte-shortcut .norte-arrow { margin-left:auto; color:var(--text-faint); }
.panel,.stat,.card { box-shadow:var(--shadow); }
.panel { padding:23px; margin-bottom:20px; }
.panel h2 { font-size:15px; font-weight:500; letter-spacing:-.2px; }
.grid { gap:16px; }
.stat { padding:20px; min-width:0; }
.stat .label { font-size:10px; letter-spacing:.08em; color:var(--text-dim); }
.stat .value { font-family:'Space Grotesk',sans-serif; font-size:clamp(23px,2.5vw,31px); font-weight:500; letter-spacing:-.8px; overflow-wrap:anywhere; font-variant-numeric:tabular-nums; }
.stat .sub { color:var(--text-faint); }
.check-item { border-radius:12px; padding:13px 12px; border-color:var(--border-soft); }
.check-item label { overflow-wrap:anywhere; min-width:0; }
.box { border-radius:7px; }
.bar-track { height:6px; background:var(--surface-3); }
.bar-fill { border-radius:8px; }
.btn { border-radius:10px; min-height:40px; font-weight:600; padding:10px 17px; color:var(--bg); }
.btn.small { min-height:36px; padding:8px 12px; }
.btn.ghost { color:var(--text-dim); }
.pill,nav.subtabs button { min-height:36px; border-radius:9px; }
nav.subtabs button.active { color:var(--bg); }
input,select,textarea { border-radius:10px; color:var(--text); background:var(--surface-2); border:1px solid var(--border); padding:10px 12px; max-width:100%; }
input::placeholder,textarea::placeholder { color:var(--text-faint); }
#fin-year { margin-left:7px; min-width:96px; font-weight:600; }
.auth-card { padding:34px; border-radius:24px; }
.auth-card input { min-height:46px; }
.empty { border:1px dashed var(--border); border-radius:12px; padding:22px 16px; color:var(--text-dim); }
#view-investimentos .invest-metric:first-child { background:var(--accent-soft); border-color:color-mix(in srgb,var(--accent) 30%,var(--border)); }
#view-investimentos .invest-metric strong { font-size:28px; letter-spacing:-.7px; font-weight:500; }
#view-investimentos .invest-asset h3 { font-size:18px; }
#view-investimentos .invest-facts { gap:18px; }
#view-investimentos .invest-facts dd { font-variant-numeric:tabular-nums; }
#view-investimentos .invest-class>.invest-heading { margin-top:26px; }
.norte-menu-toggle { display:none; }
@media(min-width:881px) { .sidebar { height:100dvh; } }
@media(max-width:1080px) and (min-width:881px) { .sidebar { width:210px; } main { padding:30px 24px 80px; } }
@media(max-width:880px) {
  main { padding:22px 18px 110px; }
  .mobile-topbar { padding:12px 20px; background:var(--bg); border-color:var(--border); }
  .mobile-topbar .brand-text { font-size:18px; }
  .hero { padding:24px; border-radius:20px; }
  .hero::after { font-size:130px; right:15px; }
  .panel { padding:20px; }
  .bottom-nav { padding:8px 8px calc(8px + env(safe-area-inset-bottom)); background:var(--surface); box-shadow:0 -8px 32px #00000015; gap:3px; overflow:visible; }
  .bottom-nav button { flex:1; min-width:0; min-height:49px; padding:7px 3px; font-size:10px; gap:4px; cursor:pointer; color:var(--text-dim); }
  .bottom-nav button.active { background:var(--accent-soft); }
  .bottom-nav button:nth-child(n+5):not(.norte-menu-toggle) { display:none; }
  .bottom-nav .norte-menu-toggle { display:flex; }
  .bottom-nav.norte-menu-open { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); border-radius:20px 20px 0 0; }
  .bottom-nav.norte-menu-open button:nth-child(n) { display:flex; }
  #fab-registrar { bottom:calc(88px + env(safe-area-inset-bottom)); width:48px; height:48px; }
  body:has(.norte-menu-open) #fab-registrar { display:none; }
}
@media(max-width:560px) {
  .page-head h1 { font-size:29px; }
  .page-head { margin-bottom:18px; padding-bottom:16px; }
  .norte-shortcuts { gap:8px; }
  .norte-shortcut { display:flex; flex-direction:column; align-items:flex-start; gap:9px; padding:13px 11px; }
  .norte-shortcut>span:first-child { width:32px; height:32px; border-radius:10px; }
  .norte-shortcut strong { font-size:11px; }
  .norte-shortcut small,.norte-arrow { display:none; }
  .stat { padding:18px; }
  .hero .greet { font-size:30px; }
  .hero .phrase { font-size:13px; }
  #view-investimentos .invest-metric strong { font-size:24px; }
  .auth-card { padding:26px 22px; }
}
@media(prefers-reduced-motion:reduce) {
  *,*::before,*::after { animation:none!important; transition:none!important; scroll-behavior:auto!important; }
}

/* Identidade própria Norte, legível em fundo claro e escuro. */
.brand-mark { background:transparent; border:0; border-radius:12px; overflow:hidden; flex:none; }
.brand-mark img,.auth-product-icon { display:block; }
.norte-brand-tagline { font-size:12px; color:var(--text-dim); margin-top:5px; }
.norte-agenda-heading,.norte-agenda-toolbar { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.norte-agenda-toolbar { margin:16px 0; justify-content:flex-start; }
.norte-agenda-toolbar label { display:flex; align-items:center; gap:10px; }
.norte-agenda-list { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr)); gap:12px; margin-top:18px; }
.norte-agenda-day { padding:16px; border:1px solid var(--border); border-radius:14px; min-width:0; }
.norte-agenda-day h3 { font-size:14px; margin:0 0 10px; text-transform:capitalize; }
.norte-agenda-day ul { padding:0; margin:0; list-style:none; }
.norte-agenda-day li { padding:10px 0; border-top:1px solid var(--border-soft); overflow-wrap:anywhere; }
.norte-agenda-day p { font-size:13px; color:var(--text-dim); white-space:pre-wrap; margin:5px 0; }
.norte-agenda-actions { display:flex; flex-wrap:wrap; gap:8px; margin-top:8px; }
.norte-agenda-actions button { padding:5px 9px; font-size:12px; }
.norte-event-form { margin-top:18px; }
.norte-event-form[hidden] { display:none; }
.norte-event-form textarea { width:100%; min-height:80px; padding:10px; background:var(--surface-2); color:var(--text); border:1px solid var(--border); border-radius:8px; resize:vertical; }
.norte-agenda-empty { color:var(--text-dim); font-size:13px; }
