/* =========================================================================
   Kostenplaner — Frontend-Design
   Leitidee: ein "Kontobuch" mit einem Jahresband (12 Monatssegmente), das an
   zwei Stellen wiederkehrt: als Monatsauswahl beim Erfassen von Einträgen
   und als Mini-Jahresübersicht je Person im Dashboard. Beide Ansichten
   teilen sich dieselbe visuelle Sprache, damit die App aus einem Guss wirkt.
   ========================================================================= */

@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,600;9..144,700&family=Inter:wght@400;500;600;700&family=IBM+Plex+Mono:wght@500;600&display=swap');

.kp-app {
	--kp-paper: #ECE8DC;
	--kp-surface: #FBF9F2;
	--kp-surface-raised: #FFFFFF;
	--kp-ink: #23291F;
	--kp-ink-soft: #5B5B4E;
	--kp-line: #D8D0B8;
	--kp-line-strong: #B9AE8C;
	--kp-brass: #96702A;
	--kp-brass-dark: #6E4F1D;
	--kp-navy: #1F2A26;
	--kp-income: #2E6E49;
	--kp-income-bg: #E3EEE5;
	--kp-expense: #A23E2B;
	--kp-expense-bg: #F5E6E1;
	--kp-radius: 10px;
	--kp-font-display: 'Fraunces', Georgia, 'Times New Roman', serif;
	--kp-font-body: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
	--kp-font-mono: 'IBM Plex Mono', 'Courier New', monospace;

	all: initial;
	display: block;
	font-size: 17px;
	font-family: var(--kp-font-body);
	color: var(--kp-ink);
	background: var(--kp-paper);
	border: 1px solid var(--kp-line);
	border-radius: var(--kp-radius);
	width: 100%;
	max-width: 1400px;
	margin: 2em auto;
	line-height: 1.5;
	box-shadow: 0 1px 2px rgba(35,41,31,0.04);
}

.kp-app *, .kp-app *::before, .kp-app *::after {
	box-sizing: border-box;
	font-family: inherit;
	color: inherit;
	overflow-wrap: normal !important;
	word-break: normal !important;
}
.kp-app button { cursor: pointer; }
.kp-app :focus-visible {
	outline: 2px solid var(--kp-brass);
	outline-offset: 2px;
}

/* ---------- Splash / Ladezustand ---------- */
.kp-splash { padding: 3em 1.5em; text-align: center; color: var(--kp-ink-soft); }
.kp-splash__ribbon { display: flex; gap: 3px; justify-content: center; margin-bottom: 1em; }
.kp-splash__ribbon span {
	width: 10px; height: 28px; background: var(--kp-line);
	border-radius: 2px; animation: kp-pulse 1.1s ease-in-out infinite;
}
.kp-splash__ribbon span:nth-child(odd) { animation-delay: .15s; }
@keyframes kp-pulse { 0%,100% { opacity:.35; transform: scaleY(.7);} 50% { opacity:1; transform: scaleY(1);} }

.kp-app--locked { padding: 2em; text-align: center; }

/* ---------- Kopfbereich ---------- */
.kp-header {
	background: var(--kp-navy);
	color: #F1EFE4;
	padding: 1.5em 1.75em 0;
	border-radius: var(--kp-radius) var(--kp-radius) 0 0;
}
.kp-header__top { display: flex; align-items: baseline; justify-content: space-between; gap: 1em; flex-wrap: wrap; }
.kp-header h1 {
	font-family: var(--kp-font-display);
	font-weight: 600;
	font-size: 1.8em;
	letter-spacing: .01em;
	margin: 0 0 1.1em;
}
.kp-header__sub { font-size: .95em; color: #C8CBBE; margin: -0.6em 0 1em; }

/* Ledger-Reiter als Tabs */
.kp-tabs { display: flex; gap: .25em; overflow-x: auto; }
.kp-tab {
	background: transparent;
	border: 1px solid transparent;
	border-bottom: none;
	color: #C8CBBE;
	font-size: 1.02em;
	font-weight: 600;
	padding: .7em 1.15em;
	border-radius: 8px 8px 0 0;
	white-space: nowrap;
	flex-shrink: 0;
	transition: background .15s ease, color .15s ease;
}
.kp-tab:hover { color: #fff; background: rgba(255,255,255,.06); }
.kp-tab[aria-selected="true"] {
	background: var(--kp-surface);
	color: var(--kp-ink);
}

/* ---------- Inhalt ---------- */
.kp-panel { background: var(--kp-surface); padding: 1.75em; border-radius: 0 0 var(--kp-radius) var(--kp-radius); }
.kp-panel[hidden] { display: none; }

.kp-toolbar { display: flex; justify-content: space-between; align-items: center; gap: 1em; margin-bottom: 1.25em; flex-wrap: wrap; }
.kp-toolbar h2 { font-family: var(--kp-font-display); font-size: 1.3em; font-weight: 600; margin: 0; }

.kp-notice {
	background: var(--kp-income-bg); color: var(--kp-income);
	border: 1px solid #bcd9c3; border-radius: 8px;
	padding: .7em 1em; font-size: .95em; margin-bottom: 1em;
}
.kp-notice.kp-notice--error { background: var(--kp-expense-bg); color: var(--kp-expense); border-color: #e2bcae; }
.kp-notice.kp-notice--info { background: #EFEADA; color: var(--kp-brass-dark); border-color: var(--kp-line-strong); }

/* ---------- Buttons ---------- */
.kp-btn {
	display: inline-flex; align-items: center; gap: .4em;
	background: var(--kp-surface-raised);
	border: 1px solid var(--kp-line-strong);
	color: var(--kp-ink);
	font-weight: 600; font-size: .95em;
	padding: .6em 1em; border-radius: 7px;
	white-space: nowrap; flex-shrink: 0;
	transition: border-color .15s ease, transform .05s ease;
}
.kp-btn:hover { border-color: var(--kp-brass); }
.kp-btn:active { transform: translateY(1px); }
.kp-btn--primary { background: var(--kp-brass); border-color: var(--kp-brass); color: #fff; }
.kp-btn--primary:hover { background: var(--kp-brass-dark); border-color: var(--kp-brass-dark); }
.kp-btn--ghost { background: transparent; border-color: transparent; }
.kp-btn--danger { color: var(--kp-expense); }
.kp-btn--danger:hover { border-color: var(--kp-expense); }
.kp-btn--sm { padding: .4em .75em; font-size: .88em; }
.kp-btn[disabled] { opacity: .5; cursor: not-allowed; }

/* ---------- Das Jahresband (Signatur-Element) ---------- */
.kp-ribbon {
	display: grid;
	grid-template-columns: repeat(12, 1fr);
	gap: 3px;
}
.kp-ribbon__seg {
	position: relative;
	height: 34px;
	background: var(--kp-paper);
	border: 1px solid var(--kp-line);
	border-radius: 3px;
	font-family: var(--kp-font-mono);
	font-size: .8em;
	font-weight: 600;
	color: var(--kp-ink-soft);
	display: flex; align-items: center; justify-content: center;
	overflow: hidden;
}
.kp-ribbon--picker .kp-ribbon__seg { cursor: pointer; user-select: none; height: 44px; font-size: .88em; font-weight: 600; }
.kp-ribbon--picker .kp-ribbon__seg:hover { border-color: var(--kp-brass); }
.kp-ribbon--picker .kp-ribbon__seg[aria-pressed="true"] {
	background: var(--kp-brass); border-color: var(--kp-brass-dark); color: #fff;
}
.kp-ribbon--mini .kp-ribbon__seg { height: 24px; font-size: 0; }
.kp-ribbon__fill {
	position: absolute; left:0; right:0; bottom:0;
	background: var(--kp-income);
	opacity: .55;
}
.kp-ribbon__fill--expense { background: var(--kp-expense); }

.kp-quickmonths { display: flex; flex-wrap: wrap; gap: .5em; margin-bottom: .7em; }
.kp-quickmonths button {
	font-size: .9em; padding: .4em .8em; border-radius: 20px;
	border: 1px solid var(--kp-line-strong); background: var(--kp-surface-raised); font-weight: 600;
	white-space: nowrap; flex-shrink: 0;
}
.kp-quickmonths button:hover { border-color: var(--kp-brass); color: var(--kp-brass-dark); }

/* ---------- Dashboard-Tabelle ---------- */
.kp-ledger { border: 1px solid var(--kp-line); border-radius: 8px; overflow: hidden; margin-bottom: 1.5em; }
.kp-ledger__row {
	display: grid;
	grid-template-columns: 180px 1fr 130px;
	gap: 1em;
	align-items: center;
	padding: .85em 1em;
	border-bottom: 1px solid var(--kp-line);
	background: var(--kp-surface-raised);
}
.kp-ledger__row:last-child { border-bottom: none; }
.kp-ledger__row--total { background: var(--kp-paper); font-weight: 700; }
.kp-ledger__person { display: flex; align-items: center; gap: .5em; font-weight: 600; font-size: 1.05em; }
.kp-ledger__dot { width: 11px; height: 11px; border-radius: 50%; flex-shrink: 0; }
.kp-ledger__sums { text-align: right; font-family: var(--kp-font-mono); font-size: .95em; white-space: nowrap; }
.kp-ledger__sums .kp-pos { color: var(--kp-income); }
.kp-ledger__sums .kp-neg { color: var(--kp-expense); }

.kp-summary-cards { display: grid; grid-template-columns: repeat(auto-fit,minmax(160px,1fr)); gap: 1em; margin-bottom: 1.5em; }
.kp-card { background: var(--kp-surface-raised); border: 1px solid var(--kp-line); border-radius: 8px; padding: 1.1em 1.2em; }
.kp-card__label { font-size: .88em; text-transform: uppercase; letter-spacing: .06em; color: var(--kp-ink-soft); font-weight: 600; }
.kp-card__value { font-family: var(--kp-font-display); font-size: 1.85em; font-weight: 600; margin-top: .2em; }
.kp-card__value.kp-pos { color: var(--kp-income); }
.kp-card__value.kp-neg { color: var(--kp-expense); }

.kp-month-detail { margin-top: .75em; }
.kp-month-select {
	display: flex; align-items: center; gap: .6em; margin-bottom: 1em; flex-wrap: wrap;
	font-size: 1em;
}
.kp-month-select select { padding: .45em .7em; border: 1px solid var(--kp-line-strong); border-radius: 6px; background: var(--kp-surface-raised); font-weight: 600; font-size: 1em; }

/* ---------- Formulare ---------- */
.kp-form { background: var(--kp-surface-raised); border: 1px solid var(--kp-line); border-radius: 8px; padding: 1.4em; margin-bottom: 1.5em; }
.kp-form h3 { font-family: var(--kp-font-display); font-size: 1.25em; margin: 0 0 1em; }
.kp-form-grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(180px,1fr)); gap: 1em; margin-bottom: 1.1em; }
.kp-field { display: flex; flex-direction: column; gap: .35em; }
.kp-field label { font-size: .88em; font-weight: 600; color: var(--kp-ink-soft); text-transform: uppercase; letter-spacing: .04em; }
.kp-field input[type="text"], .kp-field input[type="number"], .kp-field input[type="date"], .kp-field select, .kp-field textarea {
	padding: .6em .7em; border: 1px solid var(--kp-line-strong); border-radius: 6px;
	background: var(--kp-surface); font-size: 1em;
}
.kp-field textarea { resize: vertical; min-height: 60px; }

.kp-autocomplete { position: relative; }
.kp-autocomplete__list {
	position: absolute; left: 0; right: 0; top: calc(100% + 4px); z-index: 20;
	background: var(--kp-surface-raised); border: 1px solid var(--kp-line-strong); border-radius: 6px;
	box-shadow: 0 6px 16px rgba(35,41,31,0.12); max-height: 220px; overflow-y: auto;
}
.kp-autocomplete__item { padding: .55em .7em; font-size: 1em; cursor: pointer; }
.kp-autocomplete__item:hover { background: var(--kp-income-bg); }
.kp-autocomplete__item + .kp-autocomplete__item { border-top: 1px solid var(--kp-line); }
.kp-type-toggle { display: flex; border: 1px solid var(--kp-line-strong); border-radius: 6px; overflow: hidden; width: fit-content; max-width: 100%; }
.kp-type-toggle button { border: none; padding: .55em 1.1em; font-weight: 700; font-size: .92em; background: var(--kp-surface); white-space: nowrap; flex-shrink: 0; }
.kp-type-toggle button[aria-pressed="true"][data-type="income"] { background: var(--kp-income); color: #fff; }
.kp-type-toggle button[aria-pressed="true"][data-type="expense"] { background: var(--kp-expense); color: #fff; }
.kp-form-actions { display: flex; gap: .6em; }

/* ---------- Listen (Personen / Einträge) ---------- */
.kp-list { display: flex; flex-direction: column; gap: .6em; }
.kp-list-item {
	display: flex; flex-wrap: wrap; gap: 1em; align-items: center;
	background: var(--kp-surface-raised); border: 1px solid var(--kp-line); border-radius: 8px; padding: .9em 1.1em;
}
.kp-list-item__main { flex: 1 1 280px; min-width: 0; display: flex; flex-direction: column; gap: .25em; }
.kp-list-item__title { font-weight: 700; font-size: 1.05em; display: flex; align-items: center; gap: .5em; flex-wrap: wrap; }
.kp-badge { font-size: .8em; font-weight: 700; padding: .15em .6em; border-radius: 20px; text-transform: uppercase; letter-spacing: .03em; white-space: nowrap; }
.kp-badge--household { background: var(--kp-brass); color: #fff; }
.kp-badge--income { background: var(--kp-income-bg); color: var(--kp-income); }
.kp-badge--expense { background: var(--kp-expense-bg); color: var(--kp-expense); }
.kp-list-item__meta { font-size: .92em; color: var(--kp-ink-soft); font-family: var(--kp-font-mono); }
.kp-list-item__actions { flex: 0 0 auto; margin-left: auto; display: flex; gap: .4em; flex-wrap: wrap; }
.kp-list-item__ribbon-wrap { margin-top: .35em; max-width: 260px; }

.kp-empty { text-align: center; color: var(--kp-ink-soft); padding: 2em 1em; font-size: 1em; }

/* ---------- Responsiv ---------- */
@media (max-width: 640px) {
	.kp-app { width: 100%; margin: 0; border-radius: 0; }
	.kp-ledger__row { grid-template-columns: 1fr; text-align: left; }
	.kp-ledger__sums { text-align: left; }
	.kp-list-item__actions { margin-left: 0; flex-basis: 100%; flex-direction: column; align-items: stretch; width: 100%; }
	.kp-list-item__actions .kp-btn { width: 100%; justify-content: center; }
	.kp-header { padding: 1.25em 1em 0; }
	.kp-panel { padding: 1.1em; }
	.kp-ribbon--picker .kp-ribbon__seg { font-size: .72em; }
}

@media (prefers-reduced-motion: reduce) {
	.kp-splash__ribbon span { animation: none; opacity: 1; }
}

/* ---------- PDF-Bericht (Druck) ---------- */
#kp-print-report { display: none; }
@media print {
	@page { size: A4 landscape; margin: 14mm; }
	body > *:not(#kp-print-report) { display: none !important; }
	#kp-print-report { display: block !important; }
}
