/* Schuldwijzer — wiensschuldishet.nl */

:root{
  --porselein:#eceff5;
  --porselein-diep:#dfe4ee;
  --inkt:#1b2230;
  --inkt-zacht:#4a5468;
  --wit:#ffffff;
  --lila:#6d4bff;
  --lila-mist:#efeaff;
  --lijn:#d3d9e6;

  --ui:"Instrument Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --display:"Bricolage Grotesque",Georgia,serif;
  --mono:"DM Mono",ui-monospace,SFMono-Regular,Menlo,monospace;

  --radius:18px;
  --schaduw:0 1px 2px rgba(27,34,48,.05),0 8px 28px -14px rgba(27,34,48,.22);
}

*{box-sizing:border-box}

html{-webkit-text-size-adjust:100%}

body{
  margin:0;
  background:
    radial-gradient(1100px 620px at 50% -12%,#f6f8fc 0%,transparent 62%),
    var(--porselein);
  color:var(--inkt);
  font-family:var(--ui);
  font-size:16px;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}

/* ---------- app ---------- */

.app{
  max-width:640px;
  margin:0 auto;
  padding:0 18px;
  min-height:82vh;
  display:flex;
  flex-direction:column;
}

.topbar{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:12px;
  padding:26px 2px 18px;
  border-bottom:1px solid var(--lijn);
}

.mark{
  font-family:var(--display);
  font-weight:800;
  font-size:1.06rem;
  letter-spacing:-.015em;
  display:inline-flex;
  align-items:center;
  gap:9px;
}

.dot{
  width:7px;height:7px;border-radius:50%;
  background:var(--lila);
  box-shadow:0 0 0 0 rgba(109,75,255,.45);
  animation:puls 2.6s ease-out infinite;
}
@keyframes puls{
  0%{box-shadow:0 0 0 0 rgba(109,75,255,.4)}
  70%{box-shadow:0 0 0 7px rgba(109,75,255,0)}
  100%{box-shadow:0 0 0 0 rgba(109,75,255,0)}
}

.stamp{
  font-family:var(--mono);
  font-size:.72rem;
  color:var(--inkt-zacht);
  letter-spacing:.01em;
  text-align:right;
}

/* ---------- gesprek ---------- */

.thread{
  flex:1;
  padding:26px 0 20px;
  display:flex;
  flex-direction:column;
  gap:16px;
}

.rij{display:flex}
.rij.van-mij{justify-content:flex-end}

.bubbel{
  max-width:82%;
  padding:12px 16px;
  border-radius:var(--radius);
  animation:opkomen .34s cubic-bezier(.2,.7,.3,1) both;
}
.van-mij .bubbel{
  background:var(--inkt);
  color:#f4f6fa;
  border-bottom-right-radius:6px;
}

@keyframes opkomen{
  from{opacity:0;transform:translateY(10px)}
  to{opacity:1;transform:none}
}

/* ---------- analysekaart ---------- */

.kaart{
  width:100%;
  background:var(--wit);
  border:1px solid var(--lijn);
  border-radius:var(--radius);
  border-bottom-left-radius:6px;
  box-shadow:var(--schaduw);
  padding:18px 18px 16px;
  animation:opkomen .34s cubic-bezier(.2,.7,.3,1) both;
}

.fase{
  font-family:var(--mono);
  font-size:.72rem;
  color:var(--inkt-zacht);
  display:flex;
  align-items:center;
  gap:8px;
  min-height:1.2em;
}
.fase::before{
  content:"";
  width:5px;height:5px;border-radius:50%;
  background:var(--lila);
  flex:none;
}

.naamvak{
  margin:14px 0 4px;
  min-height:2.5em;
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:10px;
}

.naam{
  font-family:var(--display);
  font-weight:800;
  font-size:clamp(1.9rem,8.5vw,2.7rem);
  line-height:1.05;
  letter-spacing:-.03em;
  font-variation-settings:"opsz" 48;
}

.chip{
  font-family:var(--mono);
  font-size:.68rem;
  color:var(--lila);
  background:var(--lila-mist);
  border-radius:100px;
  padding:3px 10px;
  white-space:nowrap;
  opacity:0;
  transition:opacity .18s;
}
.chip.aan{opacity:1}

/* verdenkingsmeter per naam */
.meter{
  height:2px;
  background:var(--porselein-diep);
  border-radius:2px;
  overflow:hidden;
  margin:6px 0 14px;
}
.meter i{
  display:block;
  height:100%;
  width:0;
  background:var(--inkt);
  transition:width .09s linear;
}
.meter.hoog i{background:var(--lila)}

.afgewezen{
  font-family:var(--mono);
  font-size:.7rem;
  color:#8a93a7;
  min-height:1.3em;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
}

.voortgang{
  margin-top:16px;
  display:flex;
  align-items:center;
  gap:12px;
}
.balk{
  flex:1;
  height:3px;
  background:var(--porselein-diep);
  border-radius:3px;
  overflow:hidden;
}
.balk i{
  display:block;height:100%;width:0;
  background:linear-gradient(90deg,var(--lila),#9b83ff);
  border-radius:3px;
}
.teller{
  font-family:var(--mono);
  font-size:.7rem;
  color:var(--inkt-zacht);
  white-space:nowrap;
}

/* afgeronde staat van de kaart */
.kaart.klaar{
  padding:13px 16px;
  background:transparent;
  border-style:dashed;
  box-shadow:none;
}
.kaart.klaar .samenvatting{
  font-family:var(--mono);
  font-size:.72rem;
  color:var(--inkt-zacht);
}

/* ---------- uitspraak ---------- */

.uitspraak{
  width:100%;
  position:relative;
  isolation:isolate;
  background:var(--wit);
  border:1px solid var(--lijn);
  border-radius:var(--radius);
  border-bottom-left-radius:6px;
  box-shadow:var(--schaduw);
  padding:20px 20px 16px;
  animation:opkomen .4s cubic-bezier(.2,.7,.3,1) both;
}

.uitspraak p{
  margin:0;
  font-family:var(--display);
  font-weight:600;
  font-size:clamp(1.18rem,4.6vw,1.5rem);
  line-height:1.3;
  letter-spacing:-.02em;
  font-variation-settings:"opsz" 32;
}

.dader{
  font-style:normal;
  font-weight:800;
  color:var(--lila);
  position:relative;
  white-space:nowrap;
}
.dader::after{
  content:"";
  position:absolute;
  left:-.06em;right:-.06em;bottom:.02em;
  height:.36em;
  background:var(--lila-mist);
  border-radius:3px;
  z-index:-1;
  transform:scaleX(0);
  transform-origin:left;
  animation:arceren .5s .1s cubic-bezier(.2,.7,.3,1) forwards;
}
@keyframes arceren{to{transform:scaleX(1)}}

.uitspraak .meta{
  margin:16px 0 0;
  padding-top:13px;
  border-top:1px solid var(--lijn);
  font-family:var(--mono);
  font-size:.7rem;
  line-height:1.7;
  color:var(--inkt-zacht);
  opacity:0;
  transition:opacity .5s;
}
.uitspraak .meta.aan{opacity:1}
.uitspraak .meta span{display:block}
.uitspraak .meta .bezwaar{color:#8a93a7}

/* snelrecht */
.acties{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-top:15px;
  padding-top:14px;
  border-top:1px dashed var(--lijn);
  opacity:0;
  transform:translateY(6px);
  pointer-events:none;
  transition:opacity .4s,transform .4s;
}
.acties.aan{opacity:1;transform:none;pointer-events:auto}

.acties .hint{
  font-family:var(--mono);
  font-size:.7rem;
  line-height:1.35;
  color:#8a93a7;
}

.snelrecht{
  flex:none;
  display:inline-flex;
  align-items:center;
  gap:7px;
  font-family:var(--ui);
  font-size:.88rem;
  font-weight:600;
  letter-spacing:-.005em;
  color:#fff;
  background:var(--lila);
  border:0;
  border-radius:100px;
  padding:10px 20px 10px 17px;
  cursor:pointer;
  box-shadow:0 2px 5px rgba(109,75,255,.28),0 10px 22px -10px rgba(109,75,255,.6);
  transition:background .18s,box-shadow .18s,transform .1s;
}
.snelrecht svg{flex:none;margin-top:-1px}
.snelrecht:hover{
  background:#5a35ff;
  box-shadow:0 2px 6px rgba(109,75,255,.34),0 14px 26px -10px rgba(109,75,255,.7);
}
.snelrecht:active{transform:scale(.96)}
.snelrecht:focus-visible{outline:2px solid var(--inkt);outline-offset:3px}
.snelrecht[disabled]{opacity:.45;cursor:default;box-shadow:none}

.acties.aan .snelrecht{animation:aandacht 1.5s .35s ease-out 2}
@keyframes aandacht{
  0%{box-shadow:0 2px 5px rgba(109,75,255,.28),0 0 0 0 rgba(109,75,255,.34)}
  60%{box-shadow:0 2px 5px rgba(109,75,255,.28),0 0 0 12px rgba(109,75,255,0)}
  100%{box-shadow:0 2px 5px rgba(109,75,255,.28),0 0 0 0 rgba(109,75,255,0)}
}

.uitspraak .meta .genoteerd{
  color:var(--lila);
  margin:2px 0;
}

@media (max-width:400px){
  .acties{flex-direction:column;align-items:stretch;gap:10px}
  .acties .hint{text-align:center}
  .snelrecht{justify-content:center;padding:11px 20px}
}

/* ---------- invoerregel ---------- */

.composer{
  position:sticky;
  bottom:0;
  display:flex;
  align-items:center;
  gap:10px;
  padding:12px 0 22px;
  background:linear-gradient(180deg,rgba(236,239,245,0) 0%,var(--porselein) 40%);
}

.field{
  flex:1;
  min-height:46px;
  display:flex;
  align-items:center;
  gap:2px;
  padding:11px 16px;
  background:var(--wit);
  border:1px solid var(--lijn);
  border-radius:100px;
  color:var(--inkt);
  font-size:.98rem;
  box-shadow:var(--schaduw);
}
.field.dicht{
  background:transparent;
  border-style:dashed;
  box-shadow:none;
  color:var(--inkt-zacht);
  font-family:var(--mono);
  font-size:.78rem;
}

.caret{
  display:inline-block;
  width:2px;
  height:1.15em;
  margin-left:1px;
  background:var(--lila);
  animation:knipper 1.05s steps(1) infinite;
}
.caret.uit{display:none}
@keyframes knipper{50%{opacity:0}}

.send{
  flex:none;
  width:46px;height:46px;
  border-radius:50%;
  display:grid;place-items:center;
  background:var(--porselein-diep);
  color:#9aa3b5;
  transition:background .25s,color .25s,transform .12s;
}
.send.klaar{background:var(--inkt);color:#fff}
.send.duw{transform:scale(.9)}
.send.uit{opacity:0;transition:opacity .3s}

.noscript{
  margin:8px 0 28px;
  padding:14px 16px;
  background:var(--wit);
  border:1px solid var(--lijn);
  border-radius:var(--radius);
  font-size:.92rem;
}

/* ---------- indexeerbare tekst ---------- */

.about{
  max-width:640px;
  margin:0 auto;
  padding:44px 18px 72px;
  border-top:1px solid var(--lijn);
  color:var(--inkt-zacht);
}
.about h1{
  font-family:var(--display);
  font-weight:800;
  font-size:1.34rem;
  letter-spacing:-.025em;
  color:var(--inkt);
  margin:0 0 14px;
}
.about h2{
  font-family:var(--ui);
  font-weight:600;
  font-size:.86rem;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--inkt);
  margin:26px 0 8px;
}
.about p{margin:0 0 12px;font-size:.94rem}
.about .fine{margin-top:26px;font-size:.8rem;color:#8a93a7}

@media (max-width:420px){
  .bubbel{max-width:88%}
  .kaart,.uitspraak{padding-left:15px;padding-right:15px}
}

@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important}
  .dot{animation:none}
  .caret{animation:none}
  .dader::after{transform:scaleX(1)}
}
