*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;font-family:var(--font-b);color:var(--ink);background:var(--paper);
  -webkit-font-smoothing:antialiased;font-size:15px;line-height:1.5;
}
h1,h2,h3,h4{font-family:var(--font-d);color:var(--ink);margin:0;font-weight:700;letter-spacing:-.01em}
h3{font-size:16px}
h4{font-size:15px}
p{margin:0}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer}
input,select,textarea{font-family:inherit;font-size:14px}
img{max-width:100%;display:block}
::selection{background:#bdf3d3}

.text-muted{color:var(--muted)}
.text-sm{font-size:13px}
.text-center{text-align:center}
.text-danger{color:var(--danger)}
.text-income{color:var(--green)}
.text-expense{color:var(--danger)}
.link{color:var(--green-deep);font-weight:600}
.link:hover{color:var(--green)}

.grid{display:grid;gap:16px}
.grid--kpi{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.grid--2{grid-template-columns:1fr}
.grid--3{grid-template-columns:1fr}
.grid--advisor{grid-template-columns:1fr}
@media (min-width:760px){
  .grid--2{grid-template-columns:1fr 1fr}
  .grid--3{grid-template-columns:repeat(3,1fr)}
}
@media (min-width:900px){
  .grid--advisor{grid-template-columns:1.5fr 1fr}
}

.card{background:var(--white);border:1px solid var(--line);border-radius:var(--radius-lg);padding:20px;box-shadow:var(--shadow-sm);margin-bottom:16px}
.card__header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;flex-wrap:wrap}

.state{padding:36px 16px;text-align:center;color:var(--muted)}
.state__title{font-weight:700;color:var(--ink);margin-bottom:4px}
.state--error{color:var(--danger)}
.spinner{width:26px;height:26px;border-radius:50%;border:3px solid var(--pale);border-top-color:var(--green);margin:0 auto 10px;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
