/* ============ APP SHELL (logged-in) ============ */
/* ===== App shell: full-height left sidebar + content column ===== */
.app-shell { display: flex; min-height: 100vh; min-height: 100dvh; }
.app-shell[hidden] { display: none; }
.app-sidebar {
	flex: none; width: 240px;
	align-self: flex-start;
	position: sticky; top: 0; height: 100vh; height: 100dvh;
	overflow-y: auto;
	background: var(--card-bg);
	border-right: 1px solid var(--card-border);
	display: flex; flex-direction: column;
	padding: 16px 14px;
	z-index: 10;
}
.nav-logo { display: inline-flex; align-items: center; color: var(--logo-color); padding: 8px 10px 16px; text-decoration: none; }
.logo-mark { height: 34px; width: auto; fill: currentColor; }
.nav-logo .logo-img { height: auto; width: 100%; max-width: 140px; }

/* Sidebar header: burger + logo. */
.sidebar-head { display: flex; align-items: center; gap: 6px; }
.sidebar-head .nav-logo { flex: 1; min-width: 0; }
.nav-toggle {
	flex: none; display: inline-flex; align-items: center; justify-content: center;
	width: 46px; height: 46px; border-radius: var(--radius-md);
	background: var(--accent); border: 1px solid var(--card-border); box-shadow: none;
	color: var(--text-strong); cursor: pointer;
	transition: background .15s, color .15s;
}
.nav-toggle svg { width: 26px; height: 26px; }
.nav-toggle:hover { background: var(--gold-tint, var(--accent)); color: var(--text-strong); }
/* The in-sidebar collapse burger only makes sense on phones (drawer mode, ≤700px), where it
   closes the drawer. From 701px up the menu is a fixed full sidebar → hide it. Placed AFTER the
   base .nav-toggle rule so it wins on source order (equal specificity), and forced with !important
   so the drawer-mode rules can never re-show it on a wide screen. */
@media (min-width: 701px) { .nav-toggle { display: none !important; } }

/* ----- Collapsed sidebar (icon rail) ----- */
.app-shell.nav-collapsed .app-sidebar { width: 68px; padding: 16px 10px; overflow: visible; }
.app-shell.nav-collapsed .sidebar-head { justify-content: center; }
.app-shell.nav-collapsed .nav-logo { display: none; }
.app-shell.nav-collapsed .sidebar-item { justify-content: center; padding: 9px 0; }
.app-shell.nav-collapsed .sidebar-item span { display: none; }
.app-shell.nav-collapsed .sidebar-foot .user-pill { justify-content: center; padding: 8px 0; }
.app-shell.nav-collapsed .sidebar-foot .user-meta,
.app-shell.nav-collapsed .sidebar-foot .account-chevron { display: none; }
.app-shell.nav-collapsed .sidebar-foot .account-menu { left: 0; right: auto; min-width: 210px; }
.sidebar-nav { display: flex; flex-direction: column; gap: 2px; margin-top: 1.75rem; }
.sidebar-section {
	font-size: 0.6875rem; text-transform: uppercase; letter-spacing: .06em;
	color: var(--text-faint); font-weight: 600; padding: 14px 12px 4px;
}
.sidebar-section[hidden] { display: none; }
.sidebar-item {
	display: flex; align-items: center; justify-content: flex-start; gap: 10px;
	width: 100%; height: auto; text-align: left;
	padding: 9px 12px; border-radius: var(--radius-md);
	background: transparent; border: 1px solid transparent; box-shadow: none;
	color: var(--text-muted); font-size: 0.9375rem; font-weight: 500; cursor: pointer;
}
.sidebar-item[hidden] { display: none; }
.sidebar-item svg { flex: none; color: var(--text-faint); }
.sidebar-item:hover { background: var(--accent); color: var(--text-strong); }
.sidebar-item.active { background: var(--accent); color: var(--text-strong); }
.sidebar-item.active svg { color: var(--gold); }

/* Administration group: the nav item unfolds an indented submenu below it. */
.sidebar-group { display: flex; flex-direction: column; }
.sidebar-group-toggle .sidebar-chevron {
	margin-left: auto; color: var(--text-faint);
	transition: transform .18s ease;
}
.sidebar-group.open .sidebar-group-toggle .sidebar-chevron { transform: rotate(90deg); }
.sidebar-subnav {
	display: flex; flex-direction: column; gap: 1px;
	margin: 2px 0 4px; padding-left: 25px; position: relative;
}
.sidebar-subnav[hidden] { display: none; }
.sidebar-subitem {
	display: block; width: 100%; height: auto; text-align: left;
	padding: 7px 10px 7px 12px; border-radius: var(--radius-md);
	background: transparent; border: 1px solid transparent; box-shadow: none;
	color: var(--text-muted); font-size: 0.875rem; font-weight: 400; cursor: pointer;
	white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.sidebar-subitem:hover { background: var(--accent); color: var(--text-strong); }
.sidebar-subitem.active {
	color: var(--text-strong); font-weight: 500; background: transparent;
	text-decoration: underline; text-underline-offset: 4px;
	text-decoration-color: var(--gold); text-decoration-thickness: 2px;
}
/* Collapsed icon rail: no room for the submenu — hide it and the chevron (the icon still opens the panel). */
.app-shell.nav-collapsed .sidebar-subnav { display: none; }
.app-shell.nav-collapsed .sidebar-group-toggle .sidebar-chevron { display: none; }

/* Live-import indicator: a pulsing progress chip pinned to the right of the Admin-Tools nav item,
   shown only while an import is actually running so the user can click back into it from anywhere. */
.imp-nav-badge {
	margin-left: auto; display: inline-flex; align-items: center; gap: 5px;
	padding: 2px 7px; border-radius: 999px; white-space: nowrap;
	font-size: 0.75rem; font-weight: 600; line-height: 1.4;
	background: var(--gold, #c8a04a); color: #1b1b1b;
}
.imp-nav-badge[hidden] { display: none; }
.imp-nav-badge::before {
	content: ''; width: 6px; height: 6px; border-radius: 50%;
	background: #1b1b1b; animation: impNavPulse 1.1s ease-in-out infinite;
}
@keyframes impNavPulse { 0%, 100% { opacity: 1; } 50% { opacity: .2; } }
/* Collapsed sidebar: drop the count text, keep just the pulsing dot. */
.app-shell.nav-collapsed .sidebar-item .imp-nav-badge { margin-left: 0; padding: 3px; font-size: 0; gap: 0; }
.app-shell.nav-collapsed .sidebar-item .imp-nav-badge::before { width: 7px; height: 7px; }

/* Account pinned to the bottom of the sidebar; its menu opens upward. */
.sidebar-foot { margin-top: auto; padding-top: 10px; }
.sidebar-foot .account { position: relative; }
.sidebar-foot .user-pill { width: 100%; }
.sidebar-foot .user-meta { flex: 1 1 auto; min-width: 0; }
.sidebar-foot .user-name, .sidebar-foot .user-email { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sidebar-foot .account-menu { top: auto; bottom: calc(100% + 8px); }

.app-body { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; }
.topbar {
	display: flex; align-items: center; justify-content: flex-end;
	min-height: 64px; padding: 0.5rem 2rem;
	background: var(--card-bg); border-bottom: 1px solid var(--card-border);
	box-shadow: var(--shadow-xs);
	position: sticky; top: 0; z-index: 20;
}

/* ----- Mobile top bar + off-canvas drawer -----
   Tablet-landscape/desktop keep the sidebar (or icon rail). On mobile the sidebar
   is fully hidden off-screen and slides in as a drawer (toggled in app-core.js):
   .nav-open shows it, a tap on .nav-backdrop or a nav item closes it. */
.mobile-topbar { display: none; }
.mobile-burger { display: none; }
.nav-backdrop { position: fixed; inset: 0; background: rgba(0,0,0,.45); z-index: 50; border: 0; }
.nav-backdrop[hidden] { display: none; }

/* Login password field: show/hide eye toggle inside the input. */
.pw-field { position: relative; display: block; }
.pw-field input { width: 100%; padding-right: 42px; }
.pw-toggle {
	position: absolute; right: 4px; top: 50%; transform: translateY(-50%);
	display: inline-flex; align-items: center; justify-content: center;
	width: 34px; height: 34px; padding: 0; background: none; border: 0;
	color: var(--text-faint); cursor: pointer;
}
.pw-toggle:hover { color: var(--text-muted); }
.pw-field .pw-eye-off { display: none; }
.pw-field.show .pw-eye { display: none; }
.pw-field.show .pw-eye-off { display: inline; }

@media (max-width: 1280px) {
	.app-main { --app-pad: 1.25rem; padding: 1.25rem var(--app-pad) 3rem; }
	.page-title { font-size: 1.6rem; margin-bottom: 1rem; }
}

/* Off-canvas drawer + hamburger — PHONES ONLY (≤700px). Tablets, iPads and desktop keep a
   FIXED full sidebar, so the hamburger never appears there (it only makes sense where the menu
   has to retract for space). */
@media (max-width: 700px) {
	/* Top bar: just the Goetheanum icon, centred, in the theme's logo colour. */
	.mobile-topbar {
		display: flex; align-items: center; justify-content: flex-start;
		padding: 8px 12px 8px 52px; min-height: 52px;
		background: var(--card-bg); border-bottom: 1px solid var(--card-border);
		position: sticky; top: 0; z-index: 30;
	}
	.mobile-brand { display: inline-flex; align-items: center; color: var(--logo-color); text-decoration: none; }
	.mobile-brand svg { display: block; }

	/* Hamburger pinned to the left of the top bar — toggles the off-canvas menu open/closed. */
		.mobile-burger {
			display: inline-flex; align-items: center; justify-content: center;
			position: absolute; left: 6px; top: 50%; transform: translateY(-50%);
			width: 40px; height: 40px; padding: 0; border: none; border-radius: 8px;
			background: transparent; color: var(--text-strong); cursor: pointer; z-index: 80;
		}
		.mobile-burger:hover { background: var(--accent); }
		.mobile-burger .fab-close { display: none; }
		.app-shell.nav-open .mobile-burger .fab-open { display: none; }
		.app-shell.nav-open .mobile-burger .fab-close { display: inline; }

	/* Sidebar becomes a full off-canvas drawer (never the icon rail). */
	.app-sidebar {
		position: fixed; top: 0; left: 0; height: 100vh; height: 100dvh;
		width: 270px; max-width: 82vw;
		transform: translateX(-100%); transition: transform .25s ease;
		z-index: 60; box-shadow: none;
	}
	.app-shell.nav-open .app-sidebar { transform: translateX(0); box-shadow: 0 0 40px rgba(0,0,0,.35); }

	/* Neutralise the desktop icon-rail styles on mobile — the drawer always shows the full menu. */
	.app-shell.nav-collapsed .app-sidebar { width: 270px; padding: 16px 14px; overflow-y: auto; }
	.app-shell.nav-collapsed .nav-logo { display: inline-flex; }
	.app-shell.nav-collapsed .sidebar-item { justify-content: flex-start; padding: 9px 12px; }
	.app-shell.nav-collapsed .sidebar-item span { display: inline; }
	/* The mobile drawer always shows the full menu — submenu and chevron included. */
	.app-shell.nav-collapsed .sidebar-subnav:not([hidden]) { display: flex; }
	.app-shell.nav-collapsed .sidebar-group-toggle .sidebar-chevron { display: block; }
	.app-shell.nav-collapsed .sidebar-foot .user-pill { justify-content: flex-start; padding: 8px; }
	.app-shell.nav-collapsed .sidebar-foot .user-meta { display: block; }
	.app-shell.nav-collapsed .sidebar-foot .account-chevron { display: inline; }
}

.nav-right { display: flex; align-items: center; gap: 0.875rem; }
.account { position: relative; }
.user-pill {
	display: flex;
	align-items: center;
	gap: 0.625rem;
	height: auto;
	background: transparent;
	border: 1px solid transparent;
	border-radius: var(--radius-lg);
	padding: 0.25rem 0.5rem 0.25rem 0.375rem;
	cursor: pointer;
	box-shadow: none;
	transition: background .15s, border-color .15s;
}
.user-pill:hover { background: var(--accent); border-color: var(--card-border); }
.user-pill[aria-expanded="true"] { background: var(--accent); border-color: var(--card-border); }
.account-chevron { color: var(--text-faint); flex: none; transition: transform .15s; }
.user-pill[aria-expanded="true"] .account-chevron { transform: rotate(180deg); }
.user-meta { text-align: left; line-height: 1.2; }

/* Impersonation bar — pinned to the bottom while a super-admin views the portal as another user. */
#impersonation-bar {
	position: fixed; left: 0; right: 0; bottom: 0; z-index: 200;
	display: flex; align-items: center; justify-content: center; gap: 14px; flex-wrap: wrap;
	padding: 9px 16px; font-size: 0.875rem;
	background: var(--gold, #c8a04a); color: #1b1b1b;
	box-shadow: 0 -2px 14px rgba(0,0,0,.25);
}
#impersonation-bar strong { font-weight: 700; }
#impersonation-bar #imp-stop {
	flex: none; padding: 5px 12px; border-radius: 999px; cursor: pointer;
	background: #1b1b1b; color: #fff; border: 1px solid #1b1b1b; font-weight: 600; font-size: 0.8125rem;
}
#impersonation-bar #imp-stop:hover { background: #000; }
body.has-imp-bar { padding-bottom: 48px; }

/* "Anmelden als" cell in the Benutzer table. */
.admin-action-cell { display: flex; align-items: center; gap: 8px; white-space: nowrap; }
.admin-imp-btn {
	flex: none; padding: 4px 10px; border-radius: var(--radius-md);
	background: var(--accent); border: 1px solid var(--card-border); color: var(--text-strong);
	font-size: 0.8125rem; font-weight: 600; cursor: pointer;
}
.admin-imp-btn:hover { background: var(--gold-tint, var(--accent)); }
.admin-imp-btn:disabled { opacity: .5; cursor: default; }

/* Account dropdown menu (theme + logout) */
.account-menu {
	position: absolute;
	top: calc(100% + 8px);
	left: 0;
	right: 0;
	min-width: 0;
	background: var(--card-bg);
	border: 1px solid var(--card-border);
	border-radius: var(--radius-lg);
	box-shadow: var(--shadow-lg);
	padding: 6px;
	z-index: 60;
	animation: cs-in .12s cubic-bezier(.2,.7,.2,1) both;
}
.account-menu[hidden] { display: none; }
.account-menu-item {
	display: flex;
	align-items: center;
	justify-content: flex-start;
	gap: 0.625rem;
	width: 100%;
	height: auto;
	background: transparent;
	border: none;
	box-shadow: none;
	padding: 0.5rem 0.625rem;
	border-radius: var(--radius-md);
	font-size: 0.875rem;
	color: var(--text);
	cursor: pointer;
	text-align: left;
}
.account-menu-item:hover { background: var(--accent); color: var(--text-strong); }
.account-menu-item svg { flex: none; color: var(--text-muted); }
.account-menu-sep { height: 1px; background: var(--card-border); margin: 4px 6px; }
.user-name { font-size: 0.8125rem; color: var(--text-strong); font-weight: 500; }
.user-email { font-size: 0.75rem; color: var(--text-muted); }
.user-avatar {
	width: 36px; height: 36px;
	border-radius: 50%;
	background: var(--gold);
	color: #4a3a18;
	font-size: 0.8125rem;
	font-weight: 600;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}
html.dark .user-avatar { background: var(--gold); color: #3a2e12; }

.icon-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	padding: 0;
	border: none;
	box-shadow: none;
	border-radius: var(--radius-md);
	background: transparent;
	color: var(--text-muted);
	cursor: pointer;
}
.icon-button:hover { background: var(--accent); color: var(--text); }
.icon-button:focus-visible { box-shadow: 0 0 0 3px var(--ring-soft); }

.theme-toggle-sm { width: 34px; height: 34px; }

.app-main {
	--app-pad: 2rem;   /* horizontal gutter — full-bleed elements cancel it with negative margins */
	max-width: none;
	margin: 0;
	padding: 2rem var(--app-pad) 4rem;
	animation: fade-in-up .35s cubic-bezier(.2,.7,.2,1) both;
}

.tab-panel { display: none; }
.tab-panel.active { display: block; }

.page-title {
	font-family: var(--font-head);
	font-size: 2.25rem;
	font-weight: 700;
	font-style: normal;
	letter-spacing: 0.01em;
	color: var(--text-strong);
	margin: 0 0 1.5rem;
}

/* Info banner */
.info-banner {
	display: flex;
	align-items: flex-start;
	gap: 0.75rem;
	background: var(--gold-tint);
	border: 1px solid var(--gold-tint-border);
	color: var(--text);
	padding: 0.875rem 1rem;
	border-radius: var(--radius-lg);
	margin-bottom: 1.5rem;
	font-size: 0.875rem;
}
.info-banner svg { color: var(--gold-strong); flex-shrink: 0; margin-top: 1px; }
.info-banner a { color: var(--text-strong); text-decoration: underline; }

/* Link grid */
.link-grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 1rem;
}
@media (max-width: 760px) { .link-grid { grid-template-columns: 1fr; } }

.link-card {
	background: var(--card-bg);
	border: 1px solid var(--card-border);
	border-radius: var(--radius-xl);
	box-shadow: var(--card-shadow);
	padding: 1.25rem 1.25rem 0;
	display: flex;
	flex-direction: column;
}
.link-card h2 {
	font-family: var(--font-head);
	font-size: 1.0625rem;
	font-weight: 600;
	color: var(--text-strong);
	text-transform: none;
	letter-spacing: 0;
	margin: 0 0 0.5rem;
}
.link-card p {
	font-size: 0.8125rem;
	color: var(--text-muted);
	line-height: 1.5;
	margin: 0 0 1rem;
	flex: 1;
}
.link-card-actions {
	margin-left: -1.25rem;
	margin-right: -1.25rem;
	padding: 0.625rem 1.25rem;
	border-top: 1px solid var(--card-border);
	display: flex;
	justify-content: flex-end;
}
.card-action {
	display: inline-flex;
	align-items: center;
	gap: 0.375rem;
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: none;
	color: var(--text);
	text-decoration: none;
	padding: 0.5rem 1rem;
	height: 2rem;
	border: 1px solid var(--ghost-border);
	border-radius: var(--radius-md);
	background: transparent;
	cursor: pointer;
	transition: background .15s, color .15s, border-color .15s;
}
.card-action:hover { background: var(--accent); color: var(--accent-foreground); border-color: var(--ghost-border); }

/* Panels (settings, abonnements) */
.panel {
	background: var(--card-bg);
	border: 1px solid var(--card-border);
	border-radius: var(--radius-xl);
	box-shadow: var(--card-shadow);
	padding: 1.5rem;
	margin-bottom: 1rem;
}
.panel .section-header { margin-top: 0; border-bottom: none; padding-bottom: 0.25rem; }
.panel h2 { color: var(--text-strong); }

/* Mitgliedschaft (AAG) */
.membership-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.membership-name { font-size: 1.25rem; font-weight: 700; color: var(--text-strong); }
.membership-grid { display: grid; grid-template-columns: max-content 1fr; gap: 0.5rem 1.5rem; margin: 0; }
.membership-grid dt { color: var(--text-muted); font-size: 0.875rem; }
.membership-grid dd { margin: 0; color: var(--text-strong); font-size: 0.9375rem; }

/* Verbundene Anwendungen (SSO connections) */
.connections-list { display: flex; flex-direction: column; gap: 0.5rem; margin-top: 0.5rem; }
.connection-row {
	display: flex; align-items: center; justify-content: space-between; gap: 1rem;
	padding: 0.75rem 1rem;
	border: 1px solid var(--card-border);
	border-radius: var(--radius-md);
	background: var(--toggle-hover-bg, transparent);
}
.connection-name { font-weight: 600; color: var(--text-strong); }
.connection-revoke { flex: 0 0 auto; }

.placeholder-card {
	background: var(--card-bg);
	border: 1px dashed var(--card-border);
	border-radius: var(--radius-xl);
	padding: 2rem;
	text-align: center;
	color: var(--text);
}
.placeholder-card p { margin: 0 0 0.5rem; }

.setting-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 0.5rem 0;
	margin: 0;
	font-size: 0.9375rem;
}
.setting-row select {
	min-width: 180px;
	height: 2.25rem;
	padding: 0.5rem 0.75rem;
	font-size: 0.875rem;
	color: var(--text-strong);
	background: var(--input-bg);
	border: 1px solid var(--input-border);
	border-radius: var(--radius-md);
	box-shadow: var(--shadow-xs);
	font-family: inherit;
}
.small { font-size: 0.8125rem; margin-top: 0.5rem; }

.section-title {
	font-family: var(--font-head);
	font-size: 0.8125rem;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--text-muted);
	margin: 1.5rem 0 0.75rem;
}

.subs-by-category {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 1rem;
	margin-bottom: 1rem;
}
@media (max-width: 760px) { .subs-by-category { grid-template-columns: 1fr; } }

.category-box {
	background: var(--card-bg);
	border: 1px solid var(--card-border);
	border-radius: var(--radius-xl);
	box-shadow: var(--card-shadow);
	padding: 1.25rem;
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
}
.category-header {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 0.75rem;
}
.category-header h3 {
	margin: 0;
	font-family: var(--font-head);
	font-size: 1.0625rem;
	font-weight: 600;
	color: var(--text-strong);
	text-transform: none;
	letter-spacing: 0;
}
.category-header .count {
	font-size: 0.75rem;
	color: var(--text-muted);
}
.category-empty {
	font-size: 0.8125rem;
	color: var(--text-muted);
	padding: 0.25rem 0;
}
.category-box .sub {
	padding: 0.625rem 0.75rem;
	border-radius: var(--radius-md);
}
.category-box .sub-main strong { font-size: 0.875rem; }

.category-add {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
	margin-top: 0.5rem;
}
.category-add select {
	width: 100%;
	height: 2.25rem;
	padding: 0.5rem 0.75rem;
	font-size: 0.8125rem;
	color: var(--text-strong);
	background: var(--input-bg);
	border: 1px solid var(--input-border);
	border-radius: var(--radius-md);
	box-shadow: var(--shadow-xs);
	font-family: inherit;
}
.category-add-actions {
	display: flex;
	gap: 0.5rem;
	align-items: center;
}
.category-add button {
	height: 2rem;
	padding: 0.4rem 0.875rem;
	font-size: 0.8125rem;
}
.category-add .status { font-size: 0.75rem; color: var(--text-muted); }

.sub-row { display: flex; justify-content: space-between; align-items: center; gap: 0.75rem; flex-wrap: wrap; }
.sub-edit {
	display: flex;
	gap: 0.5rem;
	align-items: center;
	justify-content: flex-end;
	margin-top: 0.5rem;
	padding-top: 0.5rem;
	border-top: 1px solid var(--card-border);
}
.sub-edit[hidden] { display: none; }
.sub-edit button { height: 2rem; padding: 0.4rem 0.875rem; font-size: 0.8125rem; }

/* Add panel rows */
.add-panel { margin-bottom: 0; }
.add-row {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	padding: 0.5rem 0;
	border-bottom: 1px solid var(--section-border);
}
.add-row:last-child { border-bottom: none; }
.add-row-label {
	flex: 0 0 240px;
	font-size: 0.875rem;
	font-weight: 500;
	color: var(--text-strong);
}
.add-row-controls {
	flex: 1 1 auto;
	display: flex;
	align-items: center;
	gap: 0.5rem;
}
.add-row select {
	flex: 1 1 auto;
	height: 2.25rem;
	padding: 0.5rem 0.75rem;
	font-size: 0.8125rem;
	color: var(--text-strong);
	background: var(--input-bg);
	border: 1px solid var(--input-border);
	border-radius: var(--radius-md);
	box-shadow: var(--shadow-xs);
	font-family: inherit;
}
.add-row button { height: 2rem; padding: 0.45rem 0.875rem; font-size: 0.8125rem; }
@media (max-width: 720px) {
	.add-row { flex-direction: column; align-items: stretch; }
	.add-row-label { flex: 1 1 auto; }
}

.address-grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 1rem;
	margin-bottom: 1rem;
}
@media (max-width: 760px) { .address-grid { grid-template-columns: 1fr; } }
.address-actions { display: flex; gap: 0.25rem; }
.address-panel { margin-bottom: 0; }

