*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body {
  font-family: system-ui, -apple-system, sans-serif;
  color: #1a1a2e;
  min-height: 100vh;
  background: linear-gradient(rgba(255,255,255,.72), rgba(255,255,255,.72)),
              url('../bg.jpg') center center / cover fixed;
}

header { background: #1a1a2e; color: white; padding: 1.25rem 2rem; display: flex; align-items: center; gap: 1rem; }
header a { color: #a0aec0; text-decoration: none; font-size: 0.9rem; }
header a:hover { color: white; }
header .sep { color: #4a5568; }
header h1 { font-size: 1.25rem; font-weight: 600; }

.layout { max-width: 680px; margin: 2rem auto; padding: 0 1.5rem; display: flex; flex-direction: column; gap: 1.5rem; }

.panel { background: white; border-radius: 12px; box-shadow: 0 1px 4px rgba(0,0,0,.08); padding: 1.75rem; }
.panel h2 { font-size: 1rem; font-weight: 700; text-transform: uppercase; letter-spacing: .8px; color: #4a5568; margin-bottom: 1.5rem; padding-bottom: .75rem; border-bottom: 2px solid #e2e8f0; }

.field { margin-bottom: 1.2rem; }
.field:last-child { margin-bottom: 0; }
.field label { display: block; font-size: 0.875rem; font-weight: 600; color: #2d3748; margin-bottom: .35rem; }

.field select, .field input[type="text"] {
  width: 100%; padding: .5rem .75rem; border: 1.5px solid #e2e8f0; border-radius: 8px;
  font-size: .95rem; color: #1a1a2e; background: white;
  transition: border-color .15s;
}
.field 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 fill='%234a5568' d='M6 8L0 0h12z'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right .75rem center; cursor: pointer;
}
.field select:focus, .field input[type="text"]:focus { outline: none; border-color: #4299e1; }

.input-wrap { position: relative; }
.input-wrap .currency { position: absolute; left: .75rem; top: 50%; transform: translateY(-50%); color: #718096; font-size: .95rem; pointer-events: none; }
.input-wrap input { padding-left: 1.75rem; }

.hint { font-size: 0.8rem; color: #718096; margin-top: .3rem; }
.badge-gebuehr { display: inline-block; font-size: .75rem; font-weight: 700; background: #ebf8f0; color: #276749; border-radius: 99px; padding: 2px 8px; margin-left: .5rem; vertical-align: middle; }

/* Result */
.result-empty { color: #a0aec0; font-size: .9rem; }

.result-grid { display: grid; grid-template-columns: 1fr auto; gap: .6rem 1.5rem; align-items: center; }
.result-label { font-size: .9rem; color: #4a5568; }
.result-value { font-size: 1rem; font-weight: 700; text-align: right; color: #2b6cb0; font-family: 'Georgia', serif; }
.result-divider { grid-column: 1 / -1; border: none; border-top: 1px solid #e2e8f0; margin: .4rem 0; }
.result-total-label { font-size: 1rem; font-weight: 700; color: #1a1a2e; }
.result-total-value { font-size: 1.4rem; font-weight: 700; color: #276749; text-align: right; font-family: 'Georgia', serif; }

.notice { margin-top: 1.25rem; padding: .85rem 1rem; background: #ebf8ff; border-left: 3px solid #4299e1; border-radius: 0 8px 8px 0; font-size: .82rem; color: #2c5282; line-height: 1.5; }

footer { text-align: center; padding: 2rem; font-size: .82rem; color: #a0aec0; }
