:root {
    color-scheme: light;
    --background: #e9edf1;
    --surface: #ffffff;
    --surface-soft: #f6f8fa;
    --border: #d7dde4;
    --text: #1d2733;
    --muted: #647180;
    --primary: #1f67c1;
    --primary-dark: #174f96;
    --danger: #b42318;
    --success: #18794e;
    --shadow: 0 16px 44px rgba(30, 45, 62, 0.09);
    --radius: 22px;
}

* { box-sizing: border-box; }

html { min-height: 100%; background: var(--background); }

body {
    min-height: 100vh;
    margin: 0;
    background: var(--background);
    color: var(--text);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    line-height: 1.5;
}

a { color: inherit; }

button, input, select { font: inherit; }

.site-shell {
    width: min(1440px, calc(100% - 32px));
    min-height: calc(100vh - 32px);
    margin: 16px auto;
    overflow: hidden;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
}

.site-header {
    min-height: 84px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 13px 24px;
    border-bottom: 1px solid var(--border);
    background: rgba(255, 255, 255, 0.96);
}

.brand {
    display: inline-flex;
    align-items: center;
    gap: 14px;
    min-width: 0;
    text-decoration: none;
    font-size: clamp(1rem, 2.2vw, 1.28rem);
    font-weight: 750;
}

.brand img { object-fit: contain; flex: 0 0 auto; }

.header-actions { display: flex; align-items: center; gap: 10px; }
.inline-form { display: inline; margin: 0; }

.main-container {
    min-height: calc(100vh - 180px);
    padding: clamp(22px, 4vw, 52px);
    background: var(--surface-soft);
}

.hero {
    display: grid;
    place-items: center;
    min-height: 590px;
    text-align: center;
}

.hero-card, .panel {
    width: min(100%, 760px);
    padding: clamp(24px, 5vw, 52px);
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 20px;
    box-shadow: 0 10px 28px rgba(30, 45, 62, 0.06);
}

.hero-logo {
    width: min(260px, 60vw);
    height: auto;
    display: block;
    margin: 0 auto 22px;
}

.hero h1, .panel h1 { margin: 0 0 12px; line-height: 1.15; }
.hero p, .panel-intro { margin: 0 auto 24px; max-width: 620px; color: var(--muted); }

.button-row { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; }

.button {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 10px 18px;
    border: 1px solid transparent;
    border-radius: 12px;
    cursor: pointer;
    text-decoration: none;
    font-weight: 700;
    transition: transform .15s ease, background .15s ease, border-color .15s ease;
}

.button:hover { transform: translateY(-1px); }
.button-primary { background: var(--primary); color: #fff; }
.button-primary:hover { background: var(--primary-dark); }
.button-secondary { background: #eef4fb; color: var(--primary-dark); border-color: #cdddf0; }
.button-ghost { background: #fff; color: var(--text); border-color: var(--border); }
.button-danger { background: #fff1f0; color: var(--danger); border-color: #fac5c0; }
.button-wide { width: 100%; }

.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.form-group { display: grid; gap: 7px; text-align: left; }
.form-group.full { grid-column: 1 / -1; }
.form-group label { font-weight: 700; font-size: .94rem; }
.form-group small { color: var(--muted); }

.input, .select {
    width: 100%;
    min-height: 46px;
    padding: 10px 12px;
    color: var(--text);
    background: #fff;
    border: 1px solid #bdc7d2;
    border-radius: 10px;
    outline: none;
}

.input:focus, .select:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(31, 103, 193, .13); }

.install-layout { display: grid; gap: 22px; width: min(100%, 1020px); margin: 0 auto; }
.install-header { text-align: center; }
.install-header img { width: 132px; height: auto; }
.install-header h1 { margin: 8px 0 4px; }
.install-header p { margin: 0; color: var(--muted); }

.section-card {
    padding: 24px;
    border: 1px solid var(--border);
    border-radius: 16px;
    background: var(--surface);
}
.section-card h2 { margin: 0 0 18px; font-size: 1.15rem; }

.alert { margin-bottom: 18px; padding: 14px 16px; border-radius: 11px; border: 1px solid; text-align: left; }
.alert-error { background: #fff2f0; border-color: #f3b5ad; color: #8f1d14; }
.alert-success { background: #effaf4; border-color: #a9ddc4; color: #125f3c; }
.alert-info { background: #eef6ff; border-color: #bed8f5; color: #164f84; }
.alert ul { margin: 6px 0 0 20px; padding: 0; }

.dashboard-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.stat-card { padding: 20px; background: var(--surface); border: 1px solid var(--border); border-radius: 16px; }
.stat-label { color: var(--muted); font-size: .9rem; }
.stat-value { margin-top: 7px; font-size: 1.2rem; font-weight: 800; overflow-wrap: anywhere; }
.status-dot { display: inline-block; width: 10px; height: 10px; margin-right: 7px; border-radius: 50%; background: var(--success); }

.data-table { width: 100%; border-collapse: collapse; }
.data-table th, .data-table td { padding: 12px 10px; border-bottom: 1px solid var(--border); text-align: left; vertical-align: top; }
.data-table th { width: 220px; color: var(--muted); font-weight: 650; }

.site-footer {
    min-height: 64px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 16px 24px;
    color: var(--muted);
    border-top: 1px solid var(--border);
    background: #fff;
    font-size: .9rem;
}

@media (max-width: 760px) {
    .site-shell { width: 100%; min-height: 100vh; margin: 0; border: 0; border-radius: 0; }
    .site-header { align-items: flex-start; padding: 12px 15px; }
    .brand span { max-width: 190px; }
    .header-actions { flex-direction: column; align-items: stretch; }
    .main-container { padding: 18px 14px 28px; }
    .hero { min-height: 520px; }
    .form-grid, .dashboard-grid { grid-template-columns: 1fr; }
    .form-group.full { grid-column: auto; }
    .site-footer { align-items: flex-start; flex-direction: column; }
    .data-table, .data-table tbody, .data-table tr, .data-table th, .data-table td { display: block; width: 100%; }
    .data-table th { padding-bottom: 2px; border-bottom: 0; }
    .data-table td { padding-top: 2px; }
}

/* Version 0.2: server administration and update area */
.admin-layout {
    display: grid;
    gap: 22px;
    width: min(100%, 1180px);
    margin: 0 auto;
}

.panel-wide {
    width: 100%;
    max-width: none;
}

.section-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 24px;
}

.section-heading.compact {
    margin-bottom: 18px;
}

.section-heading h1,
.section-heading h2 {
    margin-top: 0;
}

.eyebrow {
    margin: 0 0 8px;
    color: var(--primary);
    font-size: .78rem;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.panel-intro-left {
    margin-left: 0;
    margin-right: 0;
    margin-bottom: 0;
}

.admin-identity {
    flex: 0 0 auto;
    padding: 9px 12px;
    color: var(--primary-dark);
    background: #eef4fb;
    border: 1px solid #cdddf0;
    border-radius: 999px;
    font-weight: 750;
}

.dashboard-grid-four {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.status-dot-error {
    background: var(--danger);
}

.admin-module-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 18px;
}

.admin-module-card {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 16px;
    min-height: 250px;
    padding: 22px;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 16px;
}

.admin-module-card h2 {
    margin: 0 0 8px;
    font-size: 1.08rem;
}

.admin-module-card p {
    margin: 0;
    color: var(--muted);
}

.admin-module-card .button,
.admin-module-card .status-badge {
    margin-top: auto;
}

.module-icon {
    display: grid;
    place-items: center;
    width: 46px;
    height: 46px;
    color: var(--primary-dark);
    background: #eef4fb;
    border-radius: 13px;
    font-size: 1.45rem;
    font-weight: 800;
}

.module-disabled {
    background: #fafbfc;
}

.status-badge {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    padding: 5px 9px;
    color: var(--muted);
    background: #eef1f4;
    border: 1px solid var(--border);
    border-radius: 999px;
    font-size: .78rem;
    font-weight: 800;
}

.status-ready,
.status-success {
    color: #125f3c;
    background: #effaf4;
    border-color: #a9ddc4;
}

.status-failed {
    color: #8f1d14;
    background: #fff2f0;
    border-color: #f3b5ad;
}

.update-notice a {
    margin-left: 8px;
    color: inherit;
    font-weight: 800;
}

.version-comparison {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    align-items: center;
    gap: 18px;
}

.version-card {
    display: grid;
    gap: 6px;
    min-height: 150px;
    align-content: center;
    padding: 24px;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 18px;
    text-align: center;
}

.version-card strong {
    font-size: clamp(2rem, 5vw, 3.4rem);
    line-height: 1;
}

.version-card small,
.version-label,
.muted-text {
    color: var(--muted);
}

.version-label {
    font-size: .85rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .04em;
}

.version-new {
    border-color: #b9d1ec;
    box-shadow: inset 0 0 0 1px #e3edf8;
}

.version-arrow {
    color: var(--primary);
    font-size: 2.2rem;
    font-weight: 900;
}

.update-highlight {
    border-color: #9fc4eb;
    background: #f3f8fe;
}

.update-highlight p {
    color: #35536e;
}

.upload-form {
    display: flex;
    align-items: flex-end;
    gap: 16px;
}

.upload-form .form-group {
    flex: 1 1 auto;
}

.file-input {
    padding-top: 9px;
}

.button:disabled,
.input:disabled {
    cursor: not-allowed;
    opacity: .55;
    transform: none;
}

.prepared-update {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 24px;
    padding: 20px;
    background: #f8fbff;
    border: 1px solid #bdd6ef;
    border-radius: 14px;
}

.prepared-update h3 {
    margin: 12px 0 6px;
}

.prepared-update p {
    margin: 5px 0;
}

.prepared-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 10px;
}

.release-notes {
    max-width: 680px;
    color: var(--muted);
}

.info-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
}

.info-item {
    display: grid;
    gap: 5px;
    padding: 16px;
    background: var(--surface-soft);
    border: 1px solid var(--border);
    border-radius: 12px;
}

.info-item span {
    color: var(--muted);
    font-size: .92rem;
}

.table-scroll {
    overflow-x: auto;
}

code {
    padding: 2px 5px;
    background: #edf1f5;
    border-radius: 5px;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: .9em;
}

@media (max-width: 980px) {
    .dashboard-grid-four,
    .admin-module-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 760px) {
    .section-heading,
    .prepared-update,
    .upload-form {
        align-items: stretch;
        flex-direction: column;
    }

    .dashboard-grid-four,
    .admin-module-grid,
    .info-grid,
    .version-comparison {
        grid-template-columns: 1fr;
    }

    .version-arrow {
        transform: rotate(90deg);
        justify-self: center;
    }

    .prepared-actions {
        justify-content: stretch;
    }

    .prepared-actions form,
    .prepared-actions .button,
    .upload-form .button {
        width: 100%;
    }
}

/* Version 0.4: public site, family registration, legal pages, API health and consent */
textarea { font: inherit; }
.textarea {
    width: 100%;
    padding: 12px;
    color: var(--text);
    background: #fff;
    border: 1px solid #bdc7d2;
    border-radius: 10px;
    outline: none;
    resize: vertical;
}
.textarea:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(31, 103, 193, .13); }
.content-layout { display: grid; gap: 22px; width: min(100%, 1180px); margin: 0 auto; }
.hero-compact { min-height: 520px; }
.hero-card-wide { width: min(100%, 900px); }
.home-hero { min-height: 560px; }
.auth-panel { width: min(100%, 620px); }
.auth-switch { margin: 18px 0 0; color: var(--muted); }
.auth-switch a { color: var(--primary-dark); font-weight: 700; }
.feature-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 18px;
    width: min(100%, 1180px);
    margin: 0 auto;
}
.feature-card {
    padding: 24px;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 16px;
}
.feature-card h2 { margin: 14px 0 8px; font-size: 1.08rem; }
.feature-card p { margin: 0; color: var(--muted); }
.feature-icon {
    display: grid;
    place-items: center;
    width: 44px;
    height: 44px;
    color: var(--primary-dark);
    background: #eef4fb;
    border-radius: 13px;
    font-weight: 900;
}
.registration-layout { max-width: 1040px; }
.registration-form { display: grid; gap: 20px; }
.form-section {
    padding: 24px;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 16px;
}
.form-section h2 { margin: 0 0 16px; font-size: 1.15rem; }
.invite-summary { background: #f3f8fe; border-color: #b9d1ec; }
.invite-summary p { margin: 4px 0 0; }
.captcha-row { max-width: 360px; }
.consent-section { display: grid; gap: 14px; }
.check-row { display: flex; align-items: flex-start; gap: 10px; }
.check-row input { margin-top: 4px; }
.check-row a { color: var(--primary-dark); font-weight: 700; }
.verification-code { text-align: center; font-size: 1.8rem; font-weight: 800; letter-spacing: .35em; }
.resend-form { margin-top: 14px; }
.link-button {
    appearance: none;
    padding: 0;
    border: 0;
    color: var(--primary-dark);
    background: transparent;
    cursor: pointer;
    font: inherit;
    font-weight: 700;
    text-decoration: underline;
}
.button-row-left { justify-content: flex-start; }
.footer-main, .footer-meta { display: flex; align-items: center; gap: 16px; }
.footer-main { flex: 1 1 auto; justify-content: space-between; min-width: 0; }
.footer-meta { flex: 0 0 auto; }
.footer-links { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; }
.footer-links a, .footer-meta a { color: var(--muted); text-decoration: none; }
.footer-links a:hover, .footer-meta a:hover { color: var(--primary-dark); }

.cookie-modal-open { overflow: hidden; }
.cookie-backdrop {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 20px;
    background: rgba(20, 30, 42, .58);
}
.cookie-backdrop.is-visible { display: flex; }
.cookie-modal {
    width: min(100%, 720px);
    max-height: calc(100vh - 40px);
    overflow: auto;
    padding: 26px;
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 20px;
    box-shadow: 0 24px 70px rgba(0, 0, 0, .22);
}
.cookie-modal h2 { margin: 0; }
.cookie-modal > p { color: var(--muted); }
.cookie-modal-head { display: flex; justify-content: space-between; gap: 18px; align-items: flex-start; }
.icon-button {
    display: grid;
    place-items: center;
    width: 38px;
    height: 38px;
    border: 1px solid var(--border);
    border-radius: 10px;
    background: #fff;
    cursor: pointer;
    font-size: 1.4rem;
}
.consent-option {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin-top: 10px;
    padding: 14px;
    background: var(--surface-soft);
    border: 1px solid var(--border);
    border-radius: 12px;
}
.consent-option span { display: grid; gap: 3px; }
.consent-option small { color: var(--muted); }
.consent-option input { width: 20px; height: 20px; }
.consent-required { opacity: .78; }
.cookie-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; }
.cookie-legal { margin-bottom: 0; font-size: .9rem; }

.family-layout { max-width: 1180px; }
.family-hero-panel { width: 100%; }
.role-badge, .system-summary {
    display: inline-flex;
    align-items: center;
    min-height: 38px;
    padding: 7px 12px;
    border: 1px solid #cdddf0;
    border-radius: 999px;
    color: var(--primary-dark);
    background: #eef4fb;
    font-weight: 800;
    white-space: nowrap;
}
.code-value { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; letter-spacing: .08em; }
.stat-value-small { font-size: .9rem; }
.invite-result-card { border-color: #a9ddc4; background: #f8fdfb; }
.invite-result-grid { display: grid; grid-template-columns: minmax(0, 1fr) 250px; gap: 28px; align-items: center; }
.copy-row { display: flex; gap: 10px; margin-top: 8px; }
.qr-box { display: grid; place-items: center; min-height: 240px; padding: 10px; background: #fff; border: 1px solid var(--border); border-radius: 14px; }
.qr-box img, .qr-box canvas { max-width: 100%; height: auto; }
.member-table th { width: auto; }

.admin-head-actions { display: flex; flex-direction: column; align-items: flex-end; gap: 10px; }
.system-summary-green { color: #125f3c; background: #effaf4; border-color: #a9ddc4; }
.system-summary-yellow { color: #815b00; background: #fff8df; border-color: #ead38a; }
.system-summary-red { color: #8f1d14; background: #fff2f0; border-color: #f3b5ad; }
.health-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
}
.health-card {
    display: flex;
    align-items: flex-start;
    gap: 13px;
    min-height: 130px;
    padding: 17px;
    background: #fff;
    border: 1px solid var(--border);
    border-left-width: 5px;
    border-radius: 14px;
}
.health-card > div:last-child { display: grid; gap: 4px; min-width: 0; }
.health-card small { color: var(--muted); overflow-wrap: anywhere; }
.health-icon {
    display: grid;
    place-items: center;
    flex: 0 0 40px;
    width: 40px;
    height: 40px;
    border-radius: 11px;
    background: var(--surface-soft);
    font-size: .78rem;
    font-weight: 900;
}
.health-name { color: var(--muted); font-size: .82rem; }
.health-green { border-left-color: #18794e; }
.health-yellow { border-left-color: #b77900; }
.health-red { border-left-color: #b42318; }
.health-green .health-icon { color: #125f3c; background: #effaf4; }
.health-yellow .health-icon { color: #815b00; background: #fff8df; }
.health-red .health-icon { color: #8f1d14; background: #fff2f0; }

.legal-page {
    width: min(100%, 980px);
    margin: 0 auto;
    padding: clamp(24px, 5vw, 48px);
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 18px;
    box-shadow: 0 10px 28px rgba(30, 45, 62, .05);
}
.legal-page header { padding-bottom: 22px; border-bottom: 1px solid var(--border); }
.legal-page header h1 { margin: 0 0 10px; }
.legal-page header p:last-child { margin: 0; color: var(--muted); }
.legal-page section { margin-top: 28px; }
.legal-page h2 { margin: 0 0 10px; font-size: 1.15rem; }
.legal-page p, .legal-page li { color: #3a4654; }
.legal-page a { color: var(--primary-dark); }
.legal-note { padding: 16px; background: #fff8df; border: 1px solid #ead38a; border-radius: 12px; }
.legal-updated { margin-top: 32px; padding-top: 16px; border-top: 1px solid var(--border); color: var(--muted); font-size: .9rem; }

@media (max-width: 1100px) {
    .health-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .site-footer { align-items: flex-start; flex-direction: column; }
    .footer-main { width: 100%; align-items: flex-start; flex-direction: column; }
}

@media (max-width: 760px) {
    .feature-grid, .health-grid, .invite-result-grid { grid-template-columns: 1fr; }
    .header-actions { width: 100%; }
    .header-actions .button, .header-actions form, .header-actions form .button { width: 100%; }
    .copy-row, .cookie-actions { flex-direction: column; }
    .copy-row .button, .cookie-actions .button { width: 100%; }
    .admin-head-actions { align-items: flex-start; }
    .role-badge, .system-summary { white-space: normal; }
    .cookie-backdrop { padding: 0; align-items: flex-end; }
    .cookie-modal { width: 100%; max-height: 92vh; border-radius: 20px 20px 0 0; }
    .legal-page { padding: 22px 18px; border-radius: 14px; }
}

/* Version 0.5: multilingual registration, family profiles, responsive modals */
.visually-hidden {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}
.header-tools { display: flex; align-items: center; gap: 12px; min-width: 0; }
.language-form { margin: 0; }
.language-select {
    min-height: 42px;
    max-width: 145px;
    padding: 8px 30px 8px 11px;
    border: 1px solid var(--border);
    border-radius: 11px;
    background: #fff;
    color: var(--text);
    font: inherit;
}
.registration-intro { padding-top: 34px; padding-bottom: 34px; }
.registration-card {
    padding: clamp(22px, 3.4vw, 34px);
    border: 1px solid var(--border);
    border-radius: 18px;
    background: #fff;
    box-shadow: 0 8px 24px rgba(30, 45, 62, .045);
}
.registration-card .eyebrow {
    display: inline-grid;
    place-items: center;
    min-width: 30px;
    height: 30px;
    margin-bottom: 8px;
    border-radius: 999px;
    color: #fff;
    background: var(--primary);
}
.address-grid { grid-template-columns: minmax(0, 2fr) minmax(110px, .7fr); }
.address-grid .form-group:nth-child(n+3) { grid-column: auto; }
.password-control { position: relative; }
.password-control .input { padding-right: 48px; }
.password-toggle {
    position: absolute;
    top: 50%;
    right: 6px;
    width: 38px;
    height: 38px;
    display: grid;
    place-items: center;
    transform: translateY(-50%);
    border: 0;
    border-radius: 9px;
    background: transparent;
    color: var(--muted);
    cursor: pointer;
}
.password-toggle svg { display: block; }
.password-toggle:hover, .password-toggle:focus-visible, .password-toggle.is-active { background: #eaf2fb; color: var(--primary); outline: none; }
.captcha-section { text-align: left; }
.visual-captcha { display: flex; align-items: center; flex-wrap: wrap; gap: 14px; margin: 16px 0; }
.visual-captcha img { width: min(260px, 100%); height: auto; border: 1px solid var(--border); border-radius: 13px; }
.captcha-answer { max-width: 300px; }
.captcha-input { text-transform: uppercase; letter-spacing: .18em; font-weight: 750; }
.recaptcha-wrap { max-width: 100%; overflow-x: auto; padding: 4px 0; }
.check-row { align-items: flex-start; }
.check-row input { margin-top: 4px; }
.verification-page { min-height: 560px; }
.verification-panel { max-width: 700px; }
.code-fieldset { margin: 0 0 22px; padding: 0; border: 0; }
.code-fieldset legend { margin-bottom: 12px; font-weight: 750; }
.verification-digits { display: flex; justify-content: center; gap: clamp(7px, 2vw, 13px); }
.verification-digit {
    width: clamp(42px, 9vw, 58px);
    height: clamp(52px, 11vw, 68px);
    padding: 0;
    border: 1px solid #aebac7;
    border-radius: 12px;
    background: #fff;
    color: var(--text);
    font-size: clamp(1.45rem, 5vw, 2rem);
    font-weight: 800;
    text-align: center;
    outline: none;
}
.verification-digit:focus { border-color: var(--primary); box-shadow: 0 0 0 4px rgba(31, 103, 193, .13); }
.onboarding-page { min-height: 620px; }
.onboarding-panel { max-width: 760px; }
.onboarding-logo { width: min(170px, 45vw); height: auto; margin-bottom: 16px; }
.onboarding-steps { display: grid; gap: 12px; margin: 24px 0; text-align: left; }
.onboarding-steps > div { display: flex; align-items: center; gap: 14px; padding: 15px; border: 1px solid var(--border); border-radius: 13px; background: var(--surface-soft); }
.onboarding-steps span { flex: 0 0 34px; width: 34px; height: 34px; display: grid; place-items: center; border-radius: 50%; color: #fff; background: var(--primary); font-weight: 800; }
.family-heading-actions { display: flex; align-items: center; flex-wrap: wrap; justify-content: flex-end; gap: 10px; }
.member-card-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.member-card { display: grid; grid-template-columns: 88px 1fr; gap: 18px; padding: 20px; border: 1px solid var(--border); border-radius: 17px; background: #fff; }
.member-card.is-inactive { opacity: .68; }
.member-avatar { width: 88px; height: 88px; display: grid; place-items: center; overflow: hidden; border-radius: 50%; background: #e8f1fb; color: var(--primary-dark); font-size: 1.35rem; font-weight: 850; }
.member-avatar img { width: 100%; height: 100%; object-fit: cover; }
.member-card-body { min-width: 0; }
.member-title-row { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.member-title-row h3 { margin: 0; overflow-wrap: anywhere; }
.member-details { display: grid; gap: 7px; margin: 14px 0 16px; }
.member-details div { display: grid; grid-template-columns: 120px 1fr; gap: 8px; }
.member-details dt { color: var(--muted); font-size: .88rem; }
.member-details dd { margin: 0; overflow-wrap: anywhere; }
.place-card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.place-card { display: flex; gap: 14px; min-height: 170px; padding: 18px; border: 1px solid var(--border); border-radius: 16px; background: #fff; }
.place-icon { flex: 0 0 42px; width: 42px; height: 42px; display: grid; place-items: center; border-radius: 12px; background: #eaf2fb; color: var(--primary-dark); font-weight: 850; }
.place-card-body { min-width: 0; }
.place-card-body p { margin: 7px 0; color: var(--muted); }
.place-card-body .button { margin-top: 10px; }
.empty-state { margin: 0; padding: 22px; border: 1px dashed #b9c5d1; border-radius: 14px; color: var(--muted); text-align: center; }
.modal-open { overflow: hidden; }
.app-modal[hidden] { display: none; }
.app-modal { position: fixed; inset: 0; z-index: 1000; display: grid; place-items: center; padding: 18px; }
.app-modal-backdrop { position: absolute; inset: 0; background: rgba(18, 29, 41, .62); backdrop-filter: blur(3px); }
.app-modal-dialog { position: relative; z-index: 1; width: min(760px, 100%); max-height: min(860px, calc(100vh - 36px)); display: flex; flex-direction: column; overflow: hidden; border: 1px solid var(--border); border-radius: 20px; background: #fff; box-shadow: 0 28px 70px rgba(12, 24, 38, .24); }
.app-modal-header, .app-modal-footer { display: flex; align-items: center; gap: 12px; padding: 18px 22px; background: #fff; }
.app-modal-header { justify-content: space-between; border-bottom: 1px solid var(--border); }
.app-modal-header h2 { margin: 0; }
.app-modal-footer { justify-content: flex-end; border-top: 1px solid var(--border); }
.modal-scroll { max-height: calc(100vh - 210px); overflow-y: auto; overscroll-behavior: contain; padding: 22px; }
.modal-close { width: 42px; height: 42px; display: grid; place-items: center; border: 1px solid var(--border); border-radius: 12px; background: #fff; color: var(--text); font-size: 1.55rem; cursor: pointer; }
.modal-spacer { flex: 1; }
.textarea { min-height: 90px; resize: vertical; }
.check-field { align-content: end; }
.check-field label { min-height: 46px; display: flex; align-items: center; gap: 9px; padding: 10px 12px; border: 1px solid var(--border); border-radius: 10px; background: var(--surface-soft); }

@media (max-width: 1050px) {
    .place-card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .member-card-grid { grid-template-columns: 1fr; }
}
@media (max-width: 820px) {
    .header-tools { align-items: flex-end; flex-direction: column; }
    .language-select { max-width: 125px; }
    .address-grid { grid-template-columns: 1fr 120px; }
    .place-card-grid { grid-template-columns: 1fr; }
}
@media (max-width: 620px) {
    .site-header { align-items: center; flex-wrap: wrap; }
    .brand { flex: 1 1 220px; }
    .header-tools { width: 100%; align-items: stretch; }
    .language-select { width: 100%; max-width: none; }
    .header-actions { width: 100%; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .header-actions .button, .header-actions .inline-form, .header-actions .inline-form .button { width: 100%; }
    .address-grid, .form-grid { grid-template-columns: 1fr; }
    .form-group.full { grid-column: auto; }
    .verification-digits { gap: 6px; }
    .verification-digit { width: calc((100vw - 72px) / 6); max-width: 50px; min-width: 38px; }
    .member-card { grid-template-columns: 64px 1fr; padding: 15px; gap: 13px; }
    .member-avatar { width: 64px; height: 64px; }
    .member-details div { grid-template-columns: 1fr; gap: 1px; }
    .family-heading { align-items: stretch; flex-direction: column; }
    .family-heading-actions { justify-content: flex-start; }
    .app-modal { align-items: end; padding: 0; }
    .app-modal-dialog { width: 100%; max-height: 94vh; border-radius: 20px 20px 0 0; }
    .app-modal-header, .app-modal-footer { padding: 14px 15px; }
    .modal-scroll { padding: 16px 15px; max-height: calc(94vh - 142px); }
    .app-modal-footer { flex-wrap: wrap; }
    .app-modal-footer .button { flex: 1 1 120px; }
    .modal-spacer { display: none; }
}

/* Version 0.6: registration validation, invitation management and place radius */
.access-grid { align-items: start; }
.access-grid .form-group { align-content: start; min-width: 0; }
.access-grid .input { min-height: 48px; }
.field-helper-placeholder { visibility: hidden; }
.field-validation { min-height: 20px; display: flex; align-items: center; gap: 6px; font-size: .82rem; font-weight: 700; }
.field-validation.is-valid { color: var(--success); }
.field-validation.is-valid::before { content: "✓"; display: inline-grid; place-items: center; width: 18px; height: 18px; border-radius: 50%; color: #fff; background: var(--success); font-size: .72rem; }
.field-validation.is-invalid { color: var(--danger); }
.input.is-valid, .select.is-valid { border-color: #3a9b6b; box-shadow: 0 0 0 3px rgba(24, 121, 78, .1); background: #fbfffd; }
.input.is-invalid, .select.is-invalid { border-color: #d25a50; box-shadow: 0 0 0 3px rgba(180, 35, 24, .09); background: #fffdfd; }
.password-requirements { min-height: 128px; padding: 13px 15px; border: 1px solid var(--border); border-radius: 12px; background: var(--surface-soft); }
.password-requirements strong { display: block; margin-bottom: 7px; font-size: .88rem; }
.password-requirements ul { display: grid; gap: 4px; margin: 0; padding: 0; list-style: none; color: var(--muted); font-size: .82rem; }
.password-requirements li::before { content: "○"; display: inline-block; width: 20px; color: #8a98a7; font-weight: 900; }
.password-requirements li.is-complete { color: var(--success); }
.password-requirements li.is-complete::before { content: "✓"; color: var(--success); }
.password-match-card { min-height: 128px; display: flex; align-items: center; justify-content: center; padding: 15px; border: 1px dashed #b7c3cf; border-radius: 12px; background: var(--surface-soft); color: var(--muted); font-size: .88rem; font-weight: 750; text-align: center; }
.password-match-card.is-complete { border-style: solid; border-color: #9bd3b7; background: #effaf4; color: var(--success); }
.captcha-section { padding-top: 30px; }
.captcha-section .section-heading .eyebrow { min-width: 0; height: auto; padding: 9px 15px; border-radius: 12px; font-size: .78rem; letter-spacing: .06em; }
.captcha-section .section-heading h2 { margin-top: 4px; }
.visual-captcha { padding: 16px; border: 1px solid var(--border); border-radius: 15px; background: var(--surface-soft); }
.visual-captcha img { width: min(320px, 100%); min-height: 84px; background: #fff; }
.captcha-answer { max-width: 360px; }
.place-radius-badge { display: inline-flex; align-items: center; gap: 5px; margin: 3px 0 8px; padding: 5px 9px; border: 1px solid #cbdcf0; border-radius: 999px; background: #f0f6fc; color: var(--primary-dark); font-size: .8rem; }
.invite-card-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.invite-card { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 17px; border: 1px solid var(--border); border-radius: 15px; background: #fff; }
.invite-card p { margin: 6px 0; color: var(--muted); overflow-wrap: anywhere; }
.invite-card small { color: var(--muted); }
.invite-details-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(220px, 260px); gap: 22px; align-items: start; }
.invite-action-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-top: 14px; }
.invite-action-grid .button { width: 100%; }
.button.is-disabled { pointer-events: none; opacity: .5; }
.invite-sheet .app-modal-dialog { max-width: 820px; }
.invite-sheet .qr-box { min-height: 240px; display: grid; place-items: center; }
.invite-sheet .qr-box img, .invite-sheet .qr-box canvas { max-width: 100%; height: auto !important; }

@media (max-width: 760px) {
    .access-grid { grid-template-columns: 1fr; gap: 16px; }
    .access-grid .form-group { width: 100%; }
    .field-helper-placeholder { display: none; }
    .password-requirements, .password-match-card { min-height: auto; }
    .visual-captcha { align-items: stretch; flex-direction: column; }
    .visual-captcha .button { width: 100%; }
    .invite-card-grid { grid-template-columns: 1fr; }
    .invite-card { align-items: stretch; flex-direction: column; }
    .invite-card .button { width: 100%; }
    .invite-details-grid { grid-template-columns: 1fr; }
    .invite-action-grid { grid-template-columns: 1fr; }
    .invite-sheet .qr-box { order: -1; min-height: 220px; }
}

@media (max-width: 420px) {
    .registration-card { padding: 18px 14px; }
    .captcha-section .section-heading .eyebrow { padding: 9px 12px; white-space: normal; text-align: center; }
    .app-modal-footer form { width: 100%; }
    .app-modal-footer form .button { width: 100%; }
}

/* Version 0.7: aligned forms, secure password generator and professional calendar */
.form-grid { align-items: start; }
.form-group { align-content: start; grid-auto-rows: max-content; min-width: 0; }
input.input:not([type="file"]), .select { height: 48px; min-height: 48px; }
.password-control-actions .input { padding-right: 94px; }
.password-action {
    position: absolute; top: 50%; width: 38px; height: 38px; display: grid; place-items: center;
    transform: translateY(-50%); border: 0; border-radius: 9px; background: transparent;
    color: var(--muted); cursor: pointer;
}
.password-action:hover, .password-action:focus-visible, .password-action.is-active { background: #eaf2fb; color: var(--primary); outline: none; }
.password-generate { right: 48px; }
.password-toggle { right: 6px; }
.integration-key-grid { align-items: start; }
.integration-key-grid .form-group { grid-template-rows: auto 48px minmax(20px, auto); }
.integration-key-grid .field-helper-placeholder { display: block; }

.calendar-layout { width: 100%; }
.calendar-hero { margin-bottom: 18px; }
.calendar-heading { align-items: center; }
.calendar-primary-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 10px; }
.calendar-shell { overflow: hidden; }
.calendar-toolbar { display: grid; grid-template-columns: auto minmax(180px,1fr) auto; align-items: center; gap: 16px; margin-bottom: 20px; }
.calendar-toolbar h2 { margin: 0; text-align: center; }
.calendar-navigation, .calendar-view-switch { display: flex; align-items: center; flex-wrap: wrap; gap: 7px; }
.calendar-view-switch { justify-content: flex-end; }
.calendar-family-filter { max-width: 480px; }

.calendar-timeline-wrap { overflow-x: auto; border: 1px solid var(--border); border-radius: 15px; background: #fff; }
.calendar-timeline-header, .calendar-all-day-grid, .calendar-timeline {
    min-width: calc(92px + var(--day-count) * 150px);
    display: grid; grid-template-columns: 92px repeat(var(--day-count), minmax(150px,1fr));
}
.calendar-timeline-header { position: sticky; top: 0; z-index: 4; border-bottom: 1px solid var(--border); background: #fff; }
.calendar-day-heading { min-height: 62px; padding: 9px; border: 0; border-left: 1px solid var(--border); background: #fff; color: var(--text); cursor: pointer; }
.calendar-day-heading span { display: block; color: var(--muted); font-size: .78rem; text-transform: uppercase; }
.calendar-day-heading strong { display: block; margin-top: 3px; }
.calendar-all-day-grid { border-bottom: 1px solid var(--border); background: var(--surface-soft); }
.calendar-time-label { padding: 12px 9px; color: var(--muted); font-size: .76rem; font-weight: 750; }
.calendar-all-day-column { min-height: 54px; padding: 7px; border-left: 1px solid var(--border); }
.calendar-timeline { position: relative; height: 1440px; }
.calendar-hours { position: relative; height: 1440px; background: #fbfcfd; }
.calendar-hours span { position: absolute; right: 10px; transform: translateY(-8px); color: var(--muted); font-size: .72rem; }
.calendar-day-column { position: relative; height: 1440px; border-left: 1px solid var(--border); cursor: crosshair; background: repeating-linear-gradient(to bottom,#fff 0,#fff 59px,#e4e9ee 59px,#e4e9ee 60px); }
.calendar-day-column::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: repeating-linear-gradient(to bottom,transparent 0,transparent 29px,rgba(221,228,235,.55) 29px,rgba(221,228,235,.55) 30px); }
.calendar-timed-position { position: absolute; left: 5px; right: 5px; z-index: 2; min-height: 34px; }
.calendar-event { display: flex; align-items: center; gap: 7px; min-width: 0; padding: 7px 9px; border: 1px solid #bfd4ec; border-radius: 9px; background: #edf5ff; color: #163f6a; text-align: left; overflow: hidden; }
.calendar-event[role="button"] { cursor: pointer; }
.calendar-event[role="button"]:hover, .calendar-event[role="button"]:focus-visible { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(31,103,193,.13); outline: none; }
.calendar-event.is-birthday { border-color: #efc8d6; background: #fff1f6; color: #7d2748; }
.calendar-event img { flex: 0 0 28px; width: 28px; height: 28px; border-radius: 50%; object-fit: cover; }
.calendar-event > div { min-width: 0; }
.calendar-event strong, .calendar-event small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.calendar-event strong { font-size: .78rem; }
.calendar-event small { margin-top: 2px; font-size: .7rem; opacity: .85; }
.calendar-event.is-compact { padding: 4px 6px; border-radius: 7px; }
.calendar-event.is-compact img { width: 23px; height: 23px; flex-basis: 23px; }
.calendar-event.is-compact strong { font-size: .72rem; }

.calendar-month-grid { display: grid; grid-template-columns: repeat(7,minmax(110px,1fr)); min-width: 770px; border: 1px solid var(--border); border-radius: 15px; overflow: hidden; }
.calendar-weekday { padding: 10px; border-right: 1px solid var(--border); background: var(--surface-soft); color: var(--muted); font-size: .78rem; font-weight: 800; text-transform: uppercase; text-align: center; }
.calendar-month-day { min-height: 132px; padding: 9px; border: 0; border-right: 1px solid var(--border); border-top: 1px solid var(--border); background: #fff; color: var(--text); text-align: left; cursor: pointer; overflow: hidden; }
.calendar-month-day.is-outside { background: #f7f9fb; color: #9aa5af; }
.calendar-month-day.is-today { box-shadow: inset 0 0 0 2px var(--primary); }
.calendar-date-number { display: inline-grid; place-items: center; width: 28px; height: 28px; margin-bottom: 6px; border-radius: 50%; font-weight: 800; }
.calendar-month-day.is-today .calendar-date-number { background: var(--primary); color: #fff; }
.calendar-day-events { display: grid; gap: 4px; }

.calendar-year-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 15px; }
.calendar-year-month { min-height: 210px; padding: 16px; border: 1px solid var(--border); border-radius: 14px; background: #fff; }
.calendar-year-month h3 { margin: 0 0 12px; color: var(--primary-dark); }
.calendar-year-events { display: grid; gap: 7px; max-height: 240px; overflow-y: auto; }
.calendar-year-events > div { display: grid; grid-template-columns: 44px 1fr; gap: 7px; align-items: start; }
.calendar-year-events > div > span { padding-top: 5px; color: var(--muted); font-size: .72rem; font-weight: 700; }

@media (max-width: 980px) {
    .calendar-toolbar { grid-template-columns: 1fr; }
    .calendar-toolbar h2 { order: -1; }
    .calendar-navigation, .calendar-view-switch { justify-content: center; }
    .calendar-year-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
}
@media (max-width: 760px) {
    .calendar-heading { align-items: stretch; flex-direction: column; }
    .calendar-primary-actions { justify-content: stretch; }
    .calendar-primary-actions .button { flex: 1 1 150px; }
    .calendar-shell { padding: 15px 12px; }
    .calendar-view-switch { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); }
    .calendar-view-switch .button { padding-left: 8px; padding-right: 8px; }
    .calendar-year-grid { grid-template-columns: 1fr; }
    .calendar-month-grid { min-width: 720px; }
}
@media (max-width: 480px) {
    .calendar-navigation { display: grid; grid-template-columns: 48px 1fr 48px; width: 100%; }
    .calendar-navigation .button { width: 100%; }
    .calendar-view-switch { grid-template-columns: repeat(2,minmax(0,1fr)); width: 100%; }
}
.access-grid .field-helper-placeholder { display: block; visibility: hidden; }
@media (max-width: 760px) { .access-grid .field-helper-placeholder { display: block; visibility: hidden; } }


/* Version 0.8: refined calendar timeline, holidays and birthday profile popover */
.calendar-timeline-header,.calendar-all-day-grid,.calendar-timeline{min-width:calc(92px + var(--day-count) * 150px);display:grid;grid-template-columns:92px repeat(var(--day-count),minmax(150px,1fr));}
.calendar-all-day-column{display:flex;align-content:flex-start;align-items:flex-start;flex-wrap:wrap;gap:6px;min-height:58px;}
.calendar-timeline,.calendar-hours,.calendar-day-column{height:1380px;}
.calendar-day-heading span{text-transform:none;font-size:.82rem;font-weight:700;}
.calendar-day-heading.is-holiday,.calendar-month-day.is-holiday{background:#fff1f1;color:#a32020;}
.calendar-day-heading.is-holiday strong,.calendar-day-heading.is-holiday span{color:#a32020;}
.calendar-event.is-holiday{border-color:#efb6b6;background:#fff0f0;color:#8f1f1f;}
.calendar-event.is-holiday::before{content:"◆";font-size:.72rem;}
.calendar-time-label{display:flex;align-items:flex-start;justify-content:flex-start;}
.birthday-popover{position:fixed;z-index:1200;width:min(286px,calc(100vw - 24px));display:grid;grid-template-columns:58px 1fr auto;gap:12px;align-items:center;padding:14px;border:1px solid var(--border);border-radius:14px;background:#fff;box-shadow:0 18px 48px rgba(18,39,61,.22);}
.birthday-popover[hidden]{display:none;}
.birthday-popover img{width:58px;height:58px;border-radius:50%;object-fit:cover;background:var(--surface-soft);}
.birthday-popover strong,.birthday-popover span{display:block;}
.birthday-popover span{margin-top:4px;color:var(--muted);}
.birthday-popover-close{align-self:start;border:0;background:transparent;font-size:1.25rem;cursor:pointer;}
.calendar-year-events>div{grid-template-columns:76px 1fr;}
.calendar-month-day.is-holiday .calendar-date-number{background:#c73737;color:#fff;}
@media(max-width:760px){.calendar-timeline-header,.calendar-all-day-grid,.calendar-timeline{min-width:calc(74px + var(--day-count) * 138px);grid-template-columns:74px repeat(var(--day-count),minmax(138px,1fr));}.calendar-event.is-compact{max-width:100%;}}

/* Version 0.9: calendar metadata, school holidays, environment pages and display mode */
.calendar-timeline,.calendar-hours,.calendar-day-column{height:1440px;}
.calendar-hours .is-midnight{height:1px;overflow:hidden;color:transparent;}
.calendar-event{background:var(--event-color,#0284c7);border-color:color-mix(in srgb,var(--event-color,#0284c7) 82%,#000);color:var(--event-text-color,#fff);border-left:5px solid color-mix(in srgb,var(--event-color,#0284c7) 70%,#000);box-shadow:0 2px 8px rgba(15,23,42,.08);}
.calendar-event strong,.calendar-event small,.calendar-event span{color:inherit;}
@supports not (background:color-mix(in srgb,#000 10%,#fff)){.calendar-event{border-color:var(--event-color,#0284c7);border-left-color:#172334;}}
.calendar-event.is-holiday{background:#fff0f0;border-color:#efb6b6;border-left-color:#b91c1c;color:#761b1b;}
.calendar-event.is-school-holiday{background:#fff5e9;border-color:#f1bd85;border-left-color:#ea580c;color:#74320d;}
.calendar-day-heading.is-vacation,.calendar-month-day.is-vacation{box-shadow:inset 0 -5px 0 #ea580c;}
.calendar-day-heading.is-holiday.is-vacation,.calendar-month-day.is-holiday.is-vacation{box-shadow:inset 0 -5px 0 #ea580c,inset 0 0 0 2px #b91c1c;}
.calendar-all-day-column.has-vacation{background:linear-gradient(180deg,rgba(234,88,12,.08),transparent 60%);}
.calendar-all-day-column.has-holiday{outline:2px solid rgba(185,28,28,.25);outline-offset:-2px;}
.app-modal-dialog-wide{width:min(980px,100%);}
.calendar-event-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
.calendar-date-input,input[type="date"].input,input[type="time"].input,input[type="datetime-local"].input{background:#eef1f4;border-color:#aeb9c5;color:#182536;color-scheme:light;}
.calendar-date-input:hover,input[type="date"].input:hover,input[type="time"].input:hover,input[type="datetime-local"].input:hover{background:#e7ebef;border-color:#75889b;}
.calendar-date-input:focus,input[type="date"].input:focus,input[type="time"].input:focus,input[type="datetime-local"].input:focus{background:#fff;border-color:var(--primary);}
.calendar-assignee-grid{display:flex;flex-wrap:wrap;gap:8px;padding:10px;border:1px solid var(--border);border-radius:12px;background:var(--surface-soft);}
.choice-chip{cursor:pointer;}
.choice-chip input{position:absolute;opacity:0;pointer-events:none;}
.choice-chip span{display:flex;align-items:center;gap:7px;min-height:38px;padding:7px 11px;border:1px solid #c8d2dc;border-radius:999px;background:#fff;color:var(--text);font-size:.85rem;font-weight:700;}
.choice-chip img{width:25px;height:25px;border-radius:50%;object-fit:cover;}
.choice-chip input:checked+span{border-color:var(--primary);background:#e8f2ff;color:var(--primary-dark);box-shadow:0 0 0 2px rgba(31,103,193,.12);}
.calendar-color-palette{display:flex;flex-wrap:wrap;gap:10px;padding:12px;border:1px solid var(--border);border-radius:12px;background:var(--surface-soft);}
.calendar-color-swatch{width:36px;height:36px;border:3px solid #fff;border-radius:50%;background:var(--swatch);box-shadow:0 0 0 1px #9ca9b6;cursor:pointer;}
.calendar-color-swatch.is-selected{box-shadow:0 0 0 3px #182536,0 0 0 5px #fff;transform:scale(1.05);}
.calendar-detail-dialog{width:min(720px,100%);}
.calendar-detail-color{height:8px;margin:-22px -22px 20px;border-radius:0 0 8px 8px;}
.calendar-detail-grid .info-item{min-height:72px;}

.family-module-links{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;}
.family-module-link{display:flex;align-items:center;gap:14px;padding:18px;border:1px solid var(--border);border-radius:16px;background:#fff;color:var(--text);text-decoration:none;transition:.18s ease;}
.family-module-link:hover{transform:translateY(-2px);border-color:#a9c5e5;box-shadow:0 10px 25px rgba(25,58,91,.08);}
.family-module-link>span{flex:0 0 48px;width:48px;height:48px;display:grid;place-items:center;border-radius:14px;background:#eaf2fb;color:var(--primary-dark);font-weight:900;}
.family-module-link strong,.family-module-link small{display:block;}.family-module-link small{margin-top:4px;color:var(--muted);line-height:1.35;}

.environment-layout{width:100%;}.environment-hero{margin-bottom:18px;}
.weather-now-card{display:grid;grid-template-columns:minmax(280px,1fr) minmax(360px,1.4fr);gap:22px;padding:25px;border:1px solid var(--border);border-radius:20px;background:linear-gradient(135deg,#e7f3ff,#fff 62%);}
.weather-now-main{display:flex;align-items:center;gap:20px}.weather-now-icon{font-size:5rem;line-height:1}.weather-now-main p{margin:0;color:var(--muted)}.weather-now-main strong{display:block;font-size:3.3rem;line-height:1.05}.weather-now-main h2{margin:8px 0 0}
.weather-stat-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.weather-stat-grid>div,.air-metric-grid>div{padding:15px;border:1px solid rgba(160,179,198,.55);border-radius:13px;background:rgba(255,255,255,.72)}.weather-stat-grid span,.air-metric-grid span{display:block;color:var(--muted);font-size:.8rem}.weather-stat-grid strong,.air-metric-grid strong{display:block;margin-top:5px;font-size:1.15rem}
.hourly-weather-strip{display:flex;gap:10px;overflow-x:auto;padding:4px 2px 12px;scroll-snap-type:x proximity}.hourly-weather-strip article{flex:0 0 106px;display:grid;justify-items:center;gap:6px;padding:14px 9px;border:1px solid var(--border);border-radius:14px;background:#fff;scroll-snap-align:start}.hourly-weather-strip article>span{font-size:1.8rem}.hourly-weather-strip small{color:var(--muted)}
.weather-week-grid{display:grid;grid-template-columns:repeat(7,minmax(120px,1fr));gap:10px;overflow-x:auto}.weather-week-grid article{min-width:120px;padding:15px;border:1px solid var(--border);border-radius:14px;background:#fff;text-align:center}.weather-week-grid time,.weather-week-grid time small{display:block}.weather-week-grid time small{margin-top:3px;color:var(--muted)}.weather-week-grid article>span{display:block;margin:10px;font-size:2rem}.weather-week-grid article>div{display:flex;justify-content:center;gap:8px}.weather-week-grid p{margin:7px 0 0;color:var(--muted);font-size:.78rem}
.provider-footnote{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 4px;color:var(--muted);font-size:.8rem}
.air-overview-grid{display:grid;grid-template-columns:minmax(250px,.7fr) minmax(420px,1.3fr);gap:18px}.aqi-hero{display:grid;place-items:center;align-content:center;min-height:300px;padding:26px;border-radius:20px;color:#123;text-align:center}.aqi-hero>span{font-weight:800}.aqi-hero>strong{font-size:5.5rem;line-height:1}.aqi-hero h2{margin:7px}.air-good,.pollen-good{background:#e8f7ef;border-color:#91cfaa}.air-fair,.pollen-fair{background:#eff8e4;border-color:#b6d68b}.air-moderate,.pollen-moderate{background:#fff7dc;border-color:#e5c967}.air-poor,.pollen-poor{background:#fff0dc;border-color:#e6a85c}.air-very-poor,.air-extreme,.pollen-extreme{background:#ffe7e7;border-color:#dd7777}
.air-metric-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.pollen-grid{display:grid;grid-template-columns:repeat(5,minmax(130px,1fr));gap:12px}.pollen-card{padding:18px;border:1px solid var(--border);border-radius:15px}.pollen-card span,.pollen-card strong,.pollen-card small{display:block}.pollen-card strong{margin:8px 0;font-size:1.7rem}.air-day-grid{display:grid;grid-template-columns:repeat(5,minmax(145px,1fr));gap:12px;overflow-x:auto}.air-day-card{min-width:145px;padding:16px;border:1px solid var(--border);border-radius:14px}.air-day-card time,.air-day-card time small,.air-day-card strong,.air-day-card span,.air-day-card>small{display:block}.air-day-card time small{color:var(--muted)}.air-day-card strong{margin:12px 0 4px;font-size:1.35rem}
.environment-provider-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.environment-provider-grid .section-card{margin:0}.environment-provider-grid h2{margin:14px 0 6px}.environment-provider-grid p{color:var(--muted)}

.display-admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.display-admin-card{padding:20px;border:1px solid var(--border);border-radius:16px;background:#fff}.display-screen-setting{display:grid;grid-template-columns:minmax(180px,1fr) 90px 100px;gap:10px;align-items:center;padding:10px;border:1px solid var(--border);border-radius:12px;background:var(--surface-soft)}.compact-input{width:100%}
.remote-pad{display:grid;grid-template-columns:repeat(3,minmax(100px,1fr));gap:13px;max-width:660px;margin:24px auto}.remote-button{min-height:115px;display:grid;place-items:center;align-content:center;gap:8px;border:1px solid var(--border);border-radius:20px;background:#fff;color:var(--primary-dark);font-size:2.2rem;cursor:pointer;box-shadow:0 8px 22px rgba(25,58,91,.08)}.remote-button span{font-size:.9rem;font-weight:800}.remote-button:active{transform:scale(.97)}.remote-screen-grid{display:flex;justify-content:center;flex-wrap:wrap;gap:10px}.remote-status{text-align:center;color:var(--muted)}
.display-body{margin:0;min-height:100vh;background:#0f172a;color:#f8fafc;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;overflow:hidden}.display-player{min-height:100vh;display:grid;grid-template-rows:auto 1fr auto;padding:max(20px,env(safe-area-inset-top)) max(24px,env(safe-area-inset-right)) max(18px,env(safe-area-inset-bottom)) max(24px,env(safe-area-inset-left));background:radial-gradient(circle at top right,#1e3a5f,#0f172a 56%)}.display-topbar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-bottom:18px;border-bottom:1px solid rgba(255,255,255,.16)}.display-topbar span,.display-topbar strong{display:block}.display-family-name{font-size:1.7rem;font-weight:900}.display-topbar time{font-size:2rem;font-weight:800}.display-screen{min-height:0;padding:26px 0;overflow:auto}.display-overview-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:24px;height:100%}.display-hero-card,.display-list-card,.display-weather-board,.display-air-board,.display-calendar-board{padding:32px;border:1px solid rgba(255,255,255,.14);border-radius:28px;background:rgba(255,255,255,.09);backdrop-filter:blur(18px)}.display-hero-card h1{font-size:clamp(3rem,8vw,8rem);margin:10px 0}.display-weather-inline{display:flex;align-items:center;gap:18px}.display-weather-inline>span{font-size:4rem}.display-weather-inline>strong{font-size:4rem}.display-weather-inline small{font-size:1.3rem}.display-event-line{display:grid;grid-template-columns:120px 1fr;gap:18px;padding:14px 0;border-bottom:1px solid rgba(255,255,255,.12)}.display-agenda{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.display-agenda-event{padding:18px;border-left:8px solid var(--event-color);border-radius:16px;background:rgba(255,255,255,.1)}.display-agenda-event time,.display-agenda-event strong,.display-agenda-event small{display:block}.display-agenda-event strong{margin:8px 0;font-size:1.35rem}.display-weather-board{display:grid;align-content:center;gap:35px}.display-weather-now{text-align:center}.display-weather-now>span{font-size:7rem}.display-weather-now>strong{display:block;font-size:7rem}.display-forecast-row{display:grid;grid-template-columns:repeat(7,minmax(110px,1fr));gap:12px}.display-forecast-row article{padding:15px;border-radius:16px;background:rgba(255,255,255,.1);text-align:center}.display-forecast-row span,.display-forecast-row strong,.display-forecast-row time{display:block}.display-forecast-row span{font-size:2rem;margin:9px}.display-air-board{display:grid;grid-template-columns:.7fr 1.3fr;gap:24px}.display-aqi-card{display:grid;place-items:center;align-content:center;border-radius:24px;color:#172334}.display-aqi-card strong{font-size:8rem}.display-pollen-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.display-progress{display:flex;justify-content:center;gap:9px}.display-progress a{width:42px;height:7px;border-radius:999px;background:rgba(255,255,255,.25)}.display-progress a.is-active{background:#fff}

@media(max-width:1100px){.family-module-links,.environment-provider-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.weather-week-grid{grid-template-columns:repeat(7,130px)}.pollen-grid{grid-template-columns:repeat(3,minmax(130px,1fr))}.display-overview-grid,.display-air-board{grid-template-columns:1fr}.display-forecast-row{overflow-x:auto;grid-template-columns:repeat(7,150px)}}
@media(max-width:820px){.weather-now-card,.air-overview-grid{grid-template-columns:1fr}.weather-stat-grid,.air-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.air-day-grid{grid-template-columns:repeat(5,155px)}.display-admin-grid{grid-template-columns:1fr}.header-actions{max-width:100%;overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px}.header-actions .button{white-space:nowrap}.display-agenda{grid-template-columns:1fr}}
@media(max-width:620px){.calendar-event-form-grid{grid-template-columns:1fr}.family-module-links,.environment-provider-grid{grid-template-columns:1fr}.pollen-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.weather-stat-grid,.air-metric-grid{grid-template-columns:1fr 1fr}.display-screen-setting{grid-template-columns:1fr 1fr}.display-screen-setting label{grid-column:1/-1}.remote-pad{grid-template-columns:repeat(3,minmax(80px,1fr));gap:8px}.remote-button{min-height:90px;font-size:1.7rem}.display-player{padding:14px}.display-topbar{align-items:flex-start}.display-family-name{font-size:1.25rem}.display-topbar time{font-size:1.35rem}.display-screen{padding:15px 0}.display-hero-card,.display-list-card,.display-weather-board,.display-air-board,.display-calendar-board{padding:18px;border-radius:20px}.display-hero-card h1{font-size:3rem}.display-weather-inline>span,.display-weather-inline>strong{font-size:2.8rem}.display-weather-now>span,.display-weather-now>strong{font-size:4rem}.display-aqi-card strong{font-size:5rem}}

/* Display pairing result */
.display-pair-result { margin-bottom: 1rem; }
.display-pair-grid { display:grid; grid-template-columns:minmax(150px,1fr) minmax(150px,1fr) auto; gap:1rem; align-items:center; margin:1rem 0; }
.display-pair-grid > div:not(.display-pair-qr) { padding:1rem; border:1px solid var(--border-color,#d6dde5); border-radius:14px; background:#f4f7fa; }
.display-pair-qr { padding:.75rem; border:1px solid var(--border-color,#d6dde5); border-radius:14px; background:#fff; }
.display-pair-qr img, .display-pair-qr canvas { display:block; max-width:180px; width:100%; height:auto; }
.pair-code { display:block; margin-top:.35rem; font-size:clamp(1.35rem,3vw,2rem); letter-spacing:.12em; overflow-wrap:anywhere; }
.field-label { display:block; color:var(--text-muted,#607080); font-size:.85rem; }
@media (max-width:720px){.display-pair-grid{grid-template-columns:1fr 1fr}.display-pair-qr{grid-column:1/-1;justify-self:center}.pair-code{font-size:1.35rem}}
.display-fullscreen-prompt{position:fixed;z-index:1300;right:max(18px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom));display:flex;align-items:center;gap:10px;padding:15px 20px;border:1px solid rgba(255,255,255,.35);border-radius:999px;background:#fff;color:#0f172a;font:800 1rem/1 system-ui,-apple-system,"Segoe UI",sans-serif;box-shadow:0 18px 50px rgba(0,0,0,.35);cursor:pointer}.display-fullscreen-prompt[hidden]{display:none}

/* FHAID 1.0 — compact navigation, responsive environment pages and display management */
html, body { max-width: 100%; }
body { overflow-x: hidden; }
.site-shell { width: min(1480px, calc(100% - 24px)); margin: 12px auto; }
.site-header { min-height: 70px; gap: 14px; padding: 9px 16px; }
.brand { gap: 9px; max-width: 290px; font-size: clamp(.88rem, 1.6vw, 1.05rem); line-height: 1.2; }
.brand img { width: 46px; height: 46px; }
.header-tools { flex: 1 1 auto; justify-content: flex-end; gap: 8px; min-width: 0; }
.language-select { min-height: 38px; padding: 6px 28px 6px 9px; }
.header-actions { justify-content: flex-end; flex-wrap: wrap; gap: 6px; min-width: 0; }
.header-actions .button { min-height: 36px; padding: 6px 10px; border-radius: 9px; font-size: .81rem; line-height: 1.15; white-space: nowrap; }
.header-actions .inline-form .button { min-height: 36px; }
.family-nav-button { max-width: 190px; overflow: hidden; text-overflow: ellipsis; }
.main-container { min-width: 0; padding: clamp(16px, 2.6vw, 36px); }
.content-layout, .environment-layout, .weather-page-layout, .air-page-layout, .waste-layout, .display-management-layout { width: 100%; max-width: 100%; min-width: 0; }
.panel-wide { width: 100%; }

/* Native date/time fields remain readable in all supported browsers. */
input[type="date"], input[type="time"], input[type="datetime-local"] {
    color: var(--text);
    background: #f1f4f7;
    border-color: #aeb9c5;
}
input[type="date"]:focus, input[type="time"]:focus, input[type="datetime-local"]:focus {
    background: #fff;
    border-color: var(--primary);
}

/* Weather: page never widens the site; only forecast strips can scroll internally. */
.weather-page-layout { overflow: hidden; }
.weather-now-card { grid-template-columns: minmax(250px, .82fr) minmax(0, 1.18fr); gap: 16px; padding: 20px; min-width: 0; }
.weather-now-main { min-width: 0; }
.weather-now-main strong { font-size: clamp(2.5rem, 5vw, 4.5rem); }
.weather-stat-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; min-width: 0; }
.weather-stat-grid > div { min-width: 0; padding: 12px 9px; }
.weather-stat-grid span { overflow-wrap: anywhere; }
.hourly-weather-strip { width: 100%; max-width: 100%; grid-template-columns: repeat(24, minmax(88px, 1fr)); overflow-x: auto; overscroll-behavior-inline: contain; scrollbar-gutter: stable; }
.weather-week-grid { width: 100%; max-width: 100%; grid-template-columns: repeat(7, minmax(108px, 1fr)); overflow-x: auto; overscroll-behavior-inline: contain; }
.weather-week-grid article { min-width: 108px; padding: 12px 8px; }

/* Air and pollen with local, meaningful SVG icons. */
.air-overview-grid { grid-template-columns: minmax(230px, .62fr) minmax(0, 1.38fr); min-width: 0; }
.environment-metric-card { display: grid; grid-template-columns: 48px minmax(0,1fr); grid-template-rows: auto auto; column-gap: 10px; align-items: center; min-width: 0; padding: 13px; border: 1px solid var(--border); border-radius: 14px; background: #fff; }
.environment-metric-card img { grid-row: 1 / 3; width: 44px; height: 44px; object-fit: contain; }
.environment-metric-card span { min-width: 0; color: var(--muted); font-size: .82rem; overflow-wrap: anywhere; }
.environment-metric-card strong { font-size: 1.35rem; line-height: 1.1; }
.environment-metric-card small { grid-column: 2; color: var(--muted); }
.pollen-card { min-width: 0; }
.pollen-card img { display: block; width: 50px; height: 50px; margin-bottom: 8px; object-fit: contain; }
.air-day-grid, .pollen-grid { max-width: 100%; }

/* School holiday page. */
.school-holiday-location-card { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 12px; margin-bottom: 16px; padding: 16px; border: 1px solid var(--border); border-radius: 16px; background: #fff; }
.school-holiday-location-card > div { min-width: 0; padding: 12px; border-radius: 12px; background: var(--surface-soft); }
.school-holiday-location-card span, .school-holiday-location-card strong { display: block; }
.school-holiday-location-card span { color: var(--muted); font-size: .8rem; }
.school-holiday-location-card strong { margin-top: 4px; overflow-wrap: anywhere; }
.school-holiday-period-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 12px; }
.school-holiday-period { display: grid; grid-template-columns: 54px minmax(0,1fr); gap: 13px; align-items: center; min-width: 0; padding: 16px; border: 1px solid #f0c28f; border-left: 6px solid #ea580c; border-radius: 15px; background: #fff7ed; }
.school-holiday-period.is-active { box-shadow: 0 0 0 3px rgba(234,88,12,.15); }
.school-holiday-period h2 { margin: 2px 0 5px; font-size: 1.04rem; }
.school-holiday-period p, .school-holiday-period small { margin: 0; color: var(--muted); }
.school-holiday-icon { display: grid; place-items: center; width: 50px; height: 50px; border-radius: 14px; background: #ffedd5; font-size: 1.65rem; }

/* Waste calendar and dedicated page. */
.calendar-waste-icon { width: 21px; height: 21px; flex: 0 0 21px; object-fit: contain; }
.calendar-event.is-waste { border-left-width: 6px; }
.waste-next-card { display: grid; grid-template-columns: 92px minmax(0,1fr); gap: 20px; align-items: center; margin-bottom: 16px; padding: 24px; border: 1px solid color-mix(in srgb, var(--waste-color) 45%, #d7dde4); border-left: 9px solid var(--waste-color); border-radius: 18px; background: #fff; }
.waste-next-card img { width: 84px; height: 84px; object-fit: contain; }
.waste-next-card h2 { margin: 3px 0; font-size: clamp(1.45rem,3vw,2.25rem); }
.waste-next-card p { margin: 0 0 6px; color: var(--muted); }
.waste-event-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; }
.waste-event-grid article { display: grid; grid-template-columns: 58px minmax(0,1fr); gap: 12px; align-items: center; min-width: 0; padding: 14px; border: 1px solid var(--border); border-left: 6px solid var(--waste-color); border-radius: 14px; background: #fff; }
.waste-event-grid img { width: 54px; height: 54px; object-fit: contain; }
.waste-event-grid strong, .waste-event-grid span, .waste-event-grid small { display: block; overflow-wrap: anywhere; }
.waste-event-grid span, .waste-event-grid small { color: var(--muted); }

/* Display administration and pairing. */
.display-management-layout { overflow: visible; }
.display-management-hero { margin-bottom: 16px; }
.display-registration-note { margin: 14px 0 0; padding: 12px 14px; border-radius: 12px; background: #eef5fd; color: #244b73; }
.display-admin-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
.display-admin-card { min-width: 0; }
.display-facts { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; margin: 15px 0; }
.display-facts > div { min-width: 0; padding: 10px; border-radius: 11px; background: var(--surface-soft); }
.display-facts dt { color: var(--muted); font-size: .75rem; }
.display-facts dd { margin: 3px 0 0; overflow-wrap: anywhere; }
.display-facts code { font-size: .74rem; }
.display-card-actions { align-items: stretch; }
.display-card-actions .button { min-height: 38px; padding: 7px 10px; font-size: .82rem; }
.display-settings-form { margin-top: 15px; padding-top: 15px; border-top: 1px solid var(--border); }
.display-screen-list { display: grid; gap: 8px; }
.display-screen-setting { grid-template-columns: minmax(170px,1fr) minmax(95px,.45fr) minmax(110px,.5fr); background: #f7f9fb; }
.display-screen-setting > div { min-width: 0; }
.display-create-screen-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 8px; }
.display-create-screen-grid label { display: flex; align-items: center; gap: 8px; min-width: 0; padding: 11px; border: 1px solid var(--border); border-radius: 12px; background: #f7f9fb; }
.display-toggle-group { align-content: center; }
.display-toggle-group label { display: flex; align-items: center; gap: 7px; }
.display-pair-grid { grid-template-columns: minmax(130px,.8fr) minmax(130px,.8fr) minmax(180px,1fr); }

/* Kiosk boards for the new information pages. */
.display-holiday-board, .display-waste-board { min-height: 100%; display: grid; grid-template-rows: auto 1fr; gap: 22px; padding: 30px; border: 1px solid rgba(255,255,255,.14); border-radius: 28px; background: rgba(255,255,255,.09); }
.display-board-title { display: flex; align-items: center; gap: 18px; }
.display-board-title > span { font-size: 4rem; }
.display-board-title p, .display-board-title h1 { margin: 0; }
.display-board-title h1 { font-size: clamp(2.2rem,5vw,5rem); }
.display-holiday-list, .display-waste-list { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 14px; align-content: start; }
.display-holiday-list article, .display-waste-list article { min-width: 0; padding: 18px; border-radius: 17px; background: rgba(255,255,255,.1); }
.display-holiday-list strong, .display-holiday-list span, .display-waste-list strong, .display-waste-list span { display: block; }
.display-holiday-list strong, .display-waste-list strong { font-size: 1.3rem; }
.display-waste-list article { display: grid; grid-template-columns: 62px minmax(0,1fr); gap: 13px; align-items: center; border-left: 7px solid var(--event-color); }
.display-waste-list img { width: 58px; height: 58px; object-fit: contain; }

@media (max-width: 1180px) {
    .site-header { align-items: flex-start; }
    .header-tools { align-items: flex-end; flex-direction: column; }
    .header-actions { max-width: 100%; }
    .weather-stat-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
    .pollen-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
    .waste-event-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
}
@media (max-width: 900px) {
    .site-shell { width: min(100% - 12px, 1480px); margin: 6px auto; border-radius: 16px; }
    .site-header { display: grid; grid-template-columns: 1fr auto; align-items: center; padding: 8px 10px; }
    .brand { max-width: none; }
    .header-tools { grid-column: 1 / -1; width: 100%; align-items: stretch; flex-direction: row; }
    .header-actions { flex: 1 1 auto; justify-content: flex-start; overflow-x: auto; flex-wrap: nowrap; padding: 2px 0 5px; scrollbar-width: thin; }
    .language-form { flex: 0 0 auto; }
    .weather-now-card, .air-overview-grid { grid-template-columns: 1fr; }
    .school-holiday-location-card { grid-template-columns: 1fr 1fr; }
    .school-holiday-location-card > div:last-child { grid-column: 1 / -1; }
    .school-holiday-period-grid, .display-admin-grid { grid-template-columns: 1fr; }
    .weather-stat-grid { grid-template-columns: repeat(5,minmax(105px,1fr)); overflow-x: auto; }
    .display-create-screen-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .display-holiday-list, .display-waste-list { grid-template-columns: 1fr; }
}
@media (max-width: 620px) {
    .brand span { max-width: 210px; }
    .main-container { padding: 12px; }
    .section-card, .weather-now-card { padding: 15px; }
    .weather-stat-grid { grid-template-columns: repeat(2,minmax(0,1fr)); overflow: visible; }
    .air-metric-grid { grid-template-columns: 1fr; }
    .pollen-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .school-holiday-location-card, .school-holiday-period-grid { grid-template-columns: 1fr; }
    .school-holiday-location-card > div:last-child { grid-column: auto; }
    .waste-next-card { grid-template-columns: 68px minmax(0,1fr); gap: 12px; padding: 17px; }
    .waste-next-card img { width: 64px; height: 64px; }
    .waste-event-grid { grid-template-columns: 1fr; }
    .display-facts { grid-template-columns: 1fr; }
    .display-create-screen-grid { grid-template-columns: 1fr; }
    .display-screen-setting { grid-template-columns: 1fr 1fr; }
    .display-screen-setting > label { grid-column: 1 / -1; }
    .display-pair-grid { grid-template-columns: 1fr; }
    .display-pair-qr { grid-column: auto; }
    .display-holiday-board, .display-waste-board { padding: 17px; border-radius: 20px; }
    .display-board-title > span { font-size: 2.7rem; }
}
.environment-provider-grid { grid-template-columns: repeat(5,minmax(0,1fr)); }
.remote-control-layout { max-width: 920px; margin: 0 auto; }
.remote-display-select { max-width: 560px; margin: 0 auto 12px; }
.display-pair-link-fallback { display: block; max-width: 220px; overflow-wrap: anywhere; font-size: .75rem; }
@media (max-width:1180px){.environment-provider-grid{grid-template-columns:repeat(3,minmax(0,1fr));}}
@media (max-width:760px){.environment-provider-grid{grid-template-columns:1fr;}}
.display-screen-setting[draggable="true"] { cursor: grab; }
.display-screen-setting.is-dragging { opacity: .55; outline: 2px dashed var(--primary); }
.display-drag-handle { color: var(--muted); font-weight: 900; letter-spacing: -2px; }
.display-order-field { display: grid; grid-template-columns: 34px minmax(54px,1fr) 34px; gap: 5px; align-items: center; }
.display-order-button { width: 34px; height: 38px; padding: 0; border: 1px solid var(--border); border-radius: 9px; background: #fff; color: var(--primary-dark); font-weight: 900; cursor: pointer; }

/* FHAID 1.1: compact responsive weather and QR-first display connection */
.weather-page-layout,.weather-page-layout>*{min-width:0;max-width:100%}
.weather-now-card{grid-template-columns:minmax(220px,.72fr) minmax(0,1.28fr)!important;padding:16px!important;gap:14px!important;overflow:hidden}
.weather-now-main{gap:14px!important}.weather-now-icon{font-size:clamp(3rem,5vw,4.4rem)!important}.weather-now-main strong{font-size:clamp(2.25rem,4.6vw,3.8rem)!important}.weather-now-main h2{font-size:clamp(1.05rem,2vw,1.45rem)}
.weather-stat-grid{grid-template-columns:repeat(5,minmax(0,1fr))!important;gap:8px!important}.weather-stat-grid>div{padding:10px!important;min-width:0}.weather-stat-grid span{font-size:.76rem;overflow-wrap:anywhere}.weather-stat-grid strong{font-size:clamp(.92rem,1.8vw,1.15rem)}
.weather-hourly-card,.weather-week-card{min-width:0;overflow:hidden}.hourly-weather-strip{display:flex!important;grid-template-columns:none!important;max-width:100%!important;overflow-x:auto!important;overflow-y:hidden;scrollbar-gutter:stable;padding-bottom:9px}
.hourly-weather-strip article{flex:0 0 92px!important;padding:10px 7px!important}
.weather-week-grid{display:grid!important;grid-template-columns:repeat(7,minmax(0,1fr))!important;gap:7px!important;overflow:visible!important;max-width:100%!important}
.weather-week-grid article{min-width:0!important;padding:10px 5px!important;overflow:hidden}.weather-week-grid time{font-size:.78rem;font-weight:750;white-space:normal}.weather-week-grid time small{font-size:.7rem}.weather-week-grid article>span{font-size:1.65rem!important;margin:6px!important}.weather-week-grid article>div{gap:4px!important}.weather-week-grid p{font-size:.68rem!important;white-space:nowrap}
.display-screen{overflow:hidden!important}.display-weather-board{height:100%;box-sizing:border-box;display:grid!important;grid-template-rows:auto auto auto;align-content:space-between!important;gap:14px!important;padding:20px!important;overflow:hidden}
.display-weather-summary{display:flex;justify-content:space-between;align-items:center;gap:22px}.display-weather-now{display:flex!important;align-items:center;text-align:left!important;gap:18px}.display-weather-now>span{font-size:4.2rem!important}.display-weather-now>strong{font-size:4.5rem!important;line-height:1}.display-weather-now h1{margin:0 0 3px;font-size:1.65rem}.display-weather-now p{margin:0}.display-weather-facts{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.display-weather-facts span{padding:8px 11px;border-radius:12px;background:rgba(255,255,255,.1);font-size:.85rem}.display-weather-facts strong{display:block;font-size:1.1rem}
.display-weather-section-title{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:7px}.display-weather-section-title h2{margin:0;font-size:1.15rem}.display-weather-section-title span{font-size:.8rem;color:#cbd5e1}
.display-hourly-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:7px}.display-hourly-grid article,.display-forecast-row article{min-width:0;padding:8px 4px!important;border-radius:12px!important;background:rgba(255,255,255,.1);text-align:center}.display-hourly-grid time,.display-hourly-grid span,.display-hourly-grid strong,.display-hourly-grid small{display:block}.display-hourly-grid time{font-size:.75rem}.display-hourly-grid span{font-size:1.45rem;margin:3px}.display-hourly-grid strong{font-size:1.05rem}.display-hourly-grid small{font-size:.68rem;color:#dbeafe}
.display-forecast-row{grid-template-columns:repeat(7,minmax(0,1fr))!important;gap:7px!important;overflow:visible!important}.display-forecast-row time{font-size:.72rem}.display-forecast-row span{font-size:1.45rem!important;margin:4px!important}.display-forecast-row strong{font-size:.86rem}
.display-connect-body{margin:0;min-height:100vh;background:radial-gradient(circle at 80% 0,#244e76,#0f172a 58%);color:#f8fafc;font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif}.display-connect-shell{min-height:100vh;display:grid;place-items:center;padding:24px;box-sizing:border-box}.display-connect-card{width:min(940px,100%);padding:30px;border:1px solid rgba(255,255,255,.16);border-radius:28px;background:rgba(15,23,42,.78);box-shadow:0 28px 80px rgba(0,0,0,.35);backdrop-filter:blur(16px)}.display-connect-brand{display:flex;align-items:center;gap:16px}.display-connect-brand img{border-radius:18px}.display-connect-brand span{color:#bfdbfe}.display-connect-brand h1{margin:3px 0;font-size:clamp(1.7rem,4vw,3rem)}.display-connect-intro{max-width:720px;color:#dbeafe;font-size:1.05rem}.display-connect-grid{display:grid;grid-template-columns:minmax(300px,.9fr) minmax(300px,1.1fr);gap:24px;margin-top:22px}.display-connect-qr-panel,.display-connect-code-panel{display:grid;align-content:center;justify-items:center;padding:24px;border-radius:22px;background:rgba(255,255,255,.09);text-align:center}.display-connect-qr{width:280px;height:280px;display:grid;place-items:center;margin:15px;background:#fff;border-radius:18px}.display-connect-qr img,.display-connect-qr canvas{max-width:260px!important;max-height:260px!important}.display-short-code{font-size:clamp(3rem,8vw,6rem);letter-spacing:.12em;line-height:1;margin:18px 0;color:#93c5fd}.display-connect-device span,.display-connect-device strong{display:block}.display-connect-status{font-weight:750}.display-connect-countdown{font-variant-numeric:tabular-nums;font-size:1.4rem;color:#bfdbfe}.display-claim-card{max-width:900px;margin-inline:auto}.display-request-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.display-request-facts>div{padding:13px;border:1px solid var(--border);border-radius:13px;background:#f8fafc;min-width:0}.display-request-facts span,.display-request-facts strong{display:block}.display-request-facts span{color:var(--muted);font-size:.78rem}.display-request-facts strong{overflow-wrap:anywhere}.display-qr-first-note{margin-top:15px;padding:14px 16px;border:1px solid #bfdbfe;border-radius:14px;background:#eff6ff}.display-qr-first-note p{margin:4px 0 0;color:var(--muted)}.display-hero-actions{justify-content:flex-end}
@media(max-width:1050px){.weather-stat-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}.display-hourly-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.display-weather-board{gap:10px!important}.display-weather-summary{gap:12px}.display-weather-now>span{font-size:3.2rem!important}.display-weather-now>strong{font-size:3.4rem!important}}
@media(max-width:760px){.weather-now-card{grid-template-columns:1fr!important}.weather-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.weather-week-grid{grid-template-columns:repeat(7,minmax(84px,1fr))!important;overflow-x:auto!important}.weather-week-grid article{min-width:84px!important}.display-connect-grid{grid-template-columns:1fr}.display-connect-card{padding:20px}.display-request-facts{grid-template-columns:1fr}.display-weather-summary{align-items:flex-start}.display-weather-facts{display:none}.display-hourly-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.display-weather-now h1{font-size:1.15rem}}
/* FHAID 1.1: recognisable environmental illustrations and contained cards */
.air-page-layout,.air-page-layout>*{min-width:0;max-width:100%}.air-overview-grid{grid-template-columns:minmax(210px,.45fr) minmax(0,1.55fr)!important}.air-metric-grid{grid-template-columns:repeat(5,minmax(0,1fr))!important}.environment-metric-card{grid-template-columns:58px minmax(0,1fr)!important;padding:12px!important}.environment-metric-card img{width:54px!important;height:54px!important}.pollen-grid{grid-template-columns:repeat(5,minmax(0,1fr))!important}.pollen-card{display:grid;grid-template-columns:64px minmax(0,1fr);grid-template-rows:auto auto auto;column-gap:10px;align-items:center;padding:13px!important}.pollen-card img{grid-row:1/4;width:62px!important;height:62px!important;margin:0!important}.pollen-card span,.pollen-card strong,.pollen-card small{min-width:0;overflow-wrap:anywhere}.pollen-card strong{margin:3px 0!important}.air-day-grid{grid-template-columns:repeat(5,minmax(0,1fr))!important;overflow:visible!important}.air-day-card{min-width:0!important;padding:12px!important}.waste-event-grid article{border-left-color:var(--waste-color)!important}.waste-event-grid article img{filter:none!important}
@media(max-width:1050px){.air-metric-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}.pollen-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}}
@media(max-width:760px){.air-overview-grid{grid-template-columns:1fr!important}.air-metric-grid,.pollen-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.air-day-grid{grid-template-columns:1fr 1fr!important}.weather-week-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;overflow:visible!important}.weather-week-grid article{min-width:0!important}.display-connect-qr{width:240px;height:240px}.display-connect-qr img,.display-connect-qr canvas{max-width:220px!important;max-height:220px!important}}
@media(max-width:460px){.air-metric-grid,.pollen-grid,.air-day-grid{grid-template-columns:1fr!important}.display-connect-shell{padding:10px}.display-connect-card{padding:15px}.display-connect-qr{margin-inline:0}.display-hero-actions{justify-content:stretch}.display-hero-actions .button{width:100%}}

/* Version 1.2: responsive navigation, stable kiosk display and Stundenplan */
.header-tools{display:flex;align-items:center;gap:10px;min-width:0}.language-form{flex:0 0 auto}.language-select{min-height:42px;padding:7px 30px 7px 10px;border:1px solid var(--border);border-radius:10px;background:#fff}.header-actions{gap:6px;min-width:0}.header-actions .button{min-height:40px;padding:8px 11px;font-size:.84rem;white-space:nowrap}.mobile-menu-toggle,.mobile-family-menu,.mobile-menu-backdrop{display:none}
@media(max-width:1024px){
 .site-header{min-height:72px;padding:10px 16px}.brand img{width:48px;height:48px}.brand span{font-size:1rem;max-width:230px}.header-actions{display:none}.mobile-menu-toggle{display:grid;width:46px;height:44px;place-content:center;gap:5px;border:1px solid var(--border);border-radius:11px;background:#fff;cursor:pointer}.mobile-menu-toggle span{display:block;width:23px;height:2px;border-radius:2px;background:var(--text)}
 .mobile-menu-backdrop{position:fixed;inset:0;z-index:1090;background:rgba(15,23,42,.42);backdrop-filter:blur(2px)}.mobile-menu-backdrop:not([hidden]){display:block}.mobile-family-menu{display:flex;position:fixed;z-index:1100;top:0;right:0;width:min(360px,88vw);height:100dvh;flex-direction:column;gap:18px;padding:18px;background:#fff;box-shadow:-20px 0 50px rgba(15,23,42,.2);transform:translateX(105%);transition:transform .2s ease}.mobile-family-menu.is-open{transform:translateX(0)}.mobile-menu-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-bottom:14px;border-bottom:1px solid var(--border)}.mobile-menu-head button{width:42px;height:42px;border:0;border-radius:10px;background:#eef1f4;font-size:1.8rem;cursor:pointer}.mobile-family-menu nav{display:grid;gap:7px;overflow:auto}.mobile-family-menu nav a{display:block;padding:12px 14px;border:1px solid var(--border);border-radius:11px;text-decoration:none;font-weight:750;background:#f8fafc}.mobile-family-menu form{margin-top:auto}.mobile-menu-open{overflow:hidden}
}
@media(max-width:620px){.header-tools{gap:6px}.language-select{max-width:115px}.brand span{max-width:150px}.brand{gap:8px}.brand img{width:42px;height:42px}}

/* Weather page always stays inside its shell. */
.weather-page-layout,.weather-page-layout>*{width:100%;max-width:100%;min-width:0}.weather-now-card{overflow:hidden}.hourly-weather-strip{max-width:100%;overflow-x:auto}.weather-week-grid{grid-template-columns:repeat(7,minmax(0,1fr))!important;overflow:visible!important}.weather-week-grid article{min-width:0!important}
@media(max-width:980px){.weather-now-card{grid-template-columns:1fr!important}.weather-stat-grid{grid-template-columns:repeat(5,minmax(105px,1fr))!important;overflow-x:auto}.weather-week-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important}.weather-week-grid article:nth-child(n+5){grid-column:auto}}
@media(max-width:620px){.weather-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;overflow:visible}.weather-week-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}}

/* Fullscreen single-page display player. */
.display-body{overflow:hidden}.display-player-v12{height:100dvh;min-height:0;grid-template-rows:auto minmax(0,1fr) auto;padding:18px 24px 12px}.display-stage{min-height:0;height:100%;overflow:hidden}.display-player-v12 .display-screen{height:100%;min-height:0;padding:18px 0 8px;overflow:hidden}.display-player-v12 .display-screen[hidden]{display:none!important}.display-topbar time{font-size:clamp(1.25rem,2vw,2rem);white-space:nowrap}.display-progress{height:16px;align-items:center}.display-progress button{width:34px;height:7px;padding:0;border:0;border-radius:999px;background:rgba(255,255,255,.25);cursor:pointer}.display-progress button.is-active{background:#fff}.display-fullscreen-prompt{position:fixed;z-index:40;right:22px;bottom:22px;display:grid;gap:2px;max-width:310px;padding:13px 17px;border:1px solid rgba(255,255,255,.32);border-radius:15px;background:#fff;color:#172334;box-shadow:0 12px 36px rgba(0,0,0,.28);cursor:pointer;text-align:left}.display-fullscreen-prompt small{color:#64748b}.display-fullscreen-prompt.is-hidden{display:none}.display-detail-modal{position:fixed;z-index:50;inset:12%;padding:32px;border:1px solid rgba(255,255,255,.3);border-radius:25px;background:rgba(15,23,42,.96);box-shadow:0 20px 80px #000;color:#fff;overflow:auto}.display-detail-modal>button{position:absolute;right:18px;top:14px;width:44px;height:44px;border:0;border-radius:50%;background:#fff;color:#172334;font-size:1.8rem}.display-detail-modal h2{font-size:2rem;margin-top:0}.display-data-error{height:100%;display:grid;place-content:center;justify-items:center;gap:12px;padding:30px;border:1px solid rgba(255,255,255,.14);border-radius:28px;background:rgba(255,255,255,.08);text-align:center}.display-data-error>span{font-size:5rem}.display-data-error h1{margin:0}

.display-weather-v12{height:100%;grid-template-rows:auto minmax(0,1fr) auto!important;align-content:stretch!important;gap:12px!important;padding:18px!important}.display-weather-v12 .display-weather-summary{min-height:0}.display-hourly-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:7px}.display-hourly-grid article{display:grid;justify-items:center;align-content:center;min-width:0;padding:8px 3px;border-radius:12px;background:rgba(255,255,255,.1);font-size:.82rem}.display-hourly-grid article>span{font-size:1.65rem}.display-hourly-grid article strong{font-size:1.05rem}.display-hourly-grid article small{font-size:.68rem;color:#cbd5e1}.display-forecast-row{grid-template-columns:repeat(7,minmax(0,1fr))!important;gap:7px!important;overflow:visible!important}.display-forecast-row article{min-width:0;padding:9px 4px!important}.display-forecast-row article time{font-size:.72rem}.display-forecast-row article span{font-size:1.45rem!important;margin:4px!important}.display-forecast-row article strong{font-size:.82rem}.display-forecast-row article small{font-size:.68rem;color:#cbd5e1}
@media(max-width:1100px){.display-hourly-grid{grid-template-columns:repeat(6,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr))}.display-weather-v12{gap:8px!important}.display-weather-v12 .display-weather-summary{align-items:flex-start}.display-weather-v12 .display-weather-facts{display:grid;grid-template-columns:repeat(2,1fr)}}

.display-air-v12{height:100%;grid-template-columns:minmax(240px,.55fr) minmax(0,1.45fr);gap:14px;padding:18px}.display-air-details{display:grid;grid-template-rows:auto 1fr;gap:13px;min-width:0}.display-air-details h2{margin:0 0 7px;font-size:1rem}.display-pollutant-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}.display-pollutant-grid article,.display-pollen-grid-v12 article{display:grid;grid-template-columns:42px minmax(0,1fr);align-items:center;gap:7px;min-width:0;padding:8px;border-radius:12px;background:rgba(255,255,255,.1)}.display-pollutant-grid img,.display-pollen-grid-v12 img{width:40px;height:40px;object-fit:contain}.display-pollutant-grid span,.display-pollen-grid-v12 span{display:block;font-size:.68rem;color:#dbeafe;overflow-wrap:anywhere}.display-pollutant-grid strong,.display-pollen-grid-v12 strong{display:block;font-size:.95rem}.display-pollutant-grid strong small{font-size:.6rem}.display-pollen-grid-v12{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}.display-pollen-grid-v12 small{font-size:.65rem;color:#cbd5e1}.display-aqi-card small{font-size:1rem}
@media(max-width:1000px){.display-air-v12{grid-template-columns:220px minmax(0,1fr)}.display-pollutant-grid,.display-pollen-grid-v12{grid-template-columns:repeat(3,minmax(0,1fr))}.display-aqi-card strong{font-size:5rem}}

.display-board-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:12px}.display-board-heading p{margin:0;color:#93c5fd;text-transform:uppercase;letter-spacing:.08em;font-weight:800}.display-board-heading h1{margin:3px 0 0;font-size:clamp(1.4rem,2.5vw,2.2rem)}.display-board-heading>span{padding:7px 12px;border-radius:999px;background:rgba(255,255,255,.12);font-weight:800}.display-calendar-v12,.display-timetable-board{height:100%;padding:18px;border:1px solid rgba(255,255,255,.14);border-radius:24px;background:rgba(255,255,255,.08);overflow:hidden}.display-calendar-content{height:calc(100% - 62px);min-height:0}.display-calendar-day{height:100%;display:grid;grid-template-rows:auto minmax(0,1fr);gap:10px}.display-calendar-all-day{display:grid;grid-template-columns:90px minmax(0,1fr);gap:10px;align-items:start;padding:8px;border-radius:12px;background:rgba(255,255,255,.06)}.display-calendar-all-day>span{padding:7px 4px;color:#cbd5e1}.display-calendar-all-day>div{display:flex;flex-wrap:wrap;gap:7px}.display-day-timeline{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-content:start;gap:8px;overflow:hidden}.display-day-event{display:grid;grid-template-columns:70px minmax(0,1fr);gap:7px;align-items:stretch;padding:7px;border-radius:12px;background:rgba(255,255,255,.06)}.display-day-event>time{font-size:.75rem;color:#cbd5e1}.display-calendar-event{display:flex;align-items:center;gap:7px;min-width:0;padding:7px 9px;border:0;border-left:5px solid var(--event-color);border-radius:9px;background:color-mix(in srgb,var(--event-color) 25%,rgba(255,255,255,.08));color:#fff;text-align:left;cursor:pointer}.display-calendar-event span{min-width:0}.display-calendar-event time,.display-calendar-event strong{display:block}.display-calendar-event strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.display-calendar-event-icon{width:25px;height:25px;object-fit:contain;flex:0 0 25px}.display-calendar-event.is-compact{padding:4px 6px;font-size:.66rem;border-left-width:3px;align-items:flex-start}.display-calendar-event.is-compact .display-calendar-event-icon{width:18px;height:18px;flex-basis:18px}.display-calendar-event.is-compact time{font-size:.6rem;line-height:1.1}.display-calendar-event.is-compact strong{font-size:.68rem;line-height:1.15}.display-calendar-event.is-compact small{font-size:.58rem;line-height:1.1;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.display-calendar-week{height:100%;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.display-calendar-week-day{min-width:0;padding:7px;border-radius:11px;background:rgba(255,255,255,.07);overflow:hidden}.display-calendar-week-day.is-today{outline:2px solid #60a5fa}.display-calendar-week-day header{display:grid;gap:2px;margin-bottom:6px}.display-calendar-week-day header strong{font-size:.78rem}.display-calendar-week-day header span{font-size:.65rem;color:#cbd5e1}.display-calendar-week-day>div{display:grid;gap:4px}.display-no-event{color:#64748b}.display-month-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:4px;text-align:center;color:#cbd5e1;font-size:.72rem}.display-calendar-month{height:calc(100% - 24px);display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-template-rows:repeat(6,minmax(0,1fr));gap:4px}.display-calendar-month>section{min-width:0;padding:4px;border-radius:8px;background:rgba(255,255,255,.06);overflow:hidden}.display-calendar-month>section.is-outside{opacity:.35}.display-calendar-month>section.is-today{outline:2px solid #60a5fa}.display-calendar-month>section>strong{font-size:.68rem}.display-calendar-month>section>div{display:grid;gap:2px}.display-calendar-year{height:100%;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr));gap:8px}.display-calendar-year section{display:grid;place-content:center;justify-items:center;border-radius:14px;background:rgba(255,255,255,.08)}.display-calendar-year h2{margin:0;font-size:1rem}.display-calendar-year strong{font-size:2rem}.display-calendar-year span{font-size:.7rem;color:#cbd5e1}

.display-timetable-board{display:grid;grid-template-rows:auto minmax(0,1fr)}.display-timetable-status{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:10px}.display-timetable-status article{padding:12px;border-left:7px solid var(--item-color,#2563eb);border-radius:13px;background:rgba(255,255,255,.1)}.display-timetable-status span,.display-timetable-status strong,.display-timetable-status time,.display-timetable-status small{display:block}.display-timetable-status span{font-size:.72rem;color:#cbd5e1}.display-timetable-status strong{font-size:1.25rem}.display-timetable-status small{color:#fde68a}.display-timetable-week{height:calc(100% - 100px);display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}.display-timetable-week section{min-width:0;padding:7px;border-radius:12px;background:rgba(255,255,255,.06);overflow:hidden}.display-timetable-week header{text-align:center;font-weight:850;margin-bottom:6px}.display-timetable-week section>div{display:grid;gap:5px}.display-timetable-today{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;align-content:start}.display-timetable-item{display:grid;gap:2px;min-width:0;padding:9px;border:0;border-left:6px solid var(--item-color);border-radius:10px;background:rgba(255,255,255,.1);color:#fff;text-align:left;cursor:pointer}.display-timetable-item.is-activity{border-style:dashed;border-left-style:solid;background:rgba(250,204,21,.12)}.display-timetable-item time{font-size:.68rem;color:#cbd5e1}.display-timetable-item strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.display-timetable-item small{font-size:.68rem;color:#cbd5e1}

/* Stundenplan management */
.timetable-layout{width:100%;max-width:100%}.timetable-plan-tabs{display:flex;gap:8px;overflow-x:auto;padding-bottom:6px}.timetable-live-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.timetable-live-card{padding:16px;border:1px solid var(--border);border-left:7px solid var(--item-color,#2563eb);border-radius:15px;background:#fff}.timetable-live-card span,.timetable-live-card strong,.timetable-live-card time,.timetable-live-card small{display:block}.timetable-live-card strong{font-size:1.2rem}.timetable-week-board{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;overflow:hidden}.timetable-day-column{min-width:0;padding:10px;border:1px solid var(--border);border-radius:14px;background:#f8fafc}.timetable-day-column>h3{text-align:center;margin:0 0 9px}.timetable-entry-card{position:relative;display:grid;gap:3px;margin-bottom:7px;padding:10px;border-left:6px solid var(--item-color,#2563eb);border-radius:10px;background:#fff;box-shadow:0 3px 10px rgba(15,23,42,.05)}.timetable-entry-card.is-break{border-left-color:#94a3b8;background:#f1f5f9}.timetable-entry-card time,.timetable-entry-card small{color:var(--muted);font-size:.75rem}.timetable-activity-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.timetable-activity-card{padding:13px;border:1px dashed var(--primary);border-left:7px solid var(--item-color,#16a34a);border-radius:13px;background:#f0fdf4}.timetable-activity-card span,.timetable-activity-card strong,.timetable-activity-card small{display:block}.remote-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:18px}.remote-detail-card{padding:16px;border:1px solid var(--border);border-radius:15px;background:#f8fafc}.remote-detail-card h2{margin-top:0}.segmented-control{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.segmented-control button,.remote-period-controls button{min-height:42px;border:1px solid var(--border);border-radius:9px;background:#fff;font-weight:750;cursor:pointer}.remote-period-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:8px}.remote-controller{min-width:0}
@media(max-width:900px){.timetable-week-board{grid-template-columns:repeat(2,minmax(250px,1fr));overflow-x:auto}.timetable-live-grid,.timetable-activity-list{grid-template-columns:1fr 1fr}.remote-detail-grid{grid-template-columns:1fr}.display-player-v12{padding:12px}.display-topbar{padding-bottom:10px}.display-family-name{font-size:1.15rem}.display-air-v12{grid-template-columns:1fr}.display-aqi-card{display:flex;justify-content:space-around;padding:8px}.display-aqi-card strong{font-size:3rem}.display-pollutant-grid,.display-pollen-grid-v12{grid-template-columns:repeat(5,minmax(0,1fr))}}
@media(max-width:620px){.timetable-live-grid,.timetable-activity-list{grid-template-columns:1fr}.timetable-week-board{grid-template-columns:repeat(5,270px)}.segmented-control{grid-template-columns:repeat(2,1fr)}.display-player-v12{padding:9px}.display-topbar time{font-size:.9rem}.display-family-name{font-size:1rem}.display-topbar strong{font-size:.7rem}.display-calendar-week{grid-template-columns:repeat(7,150px);overflow-x:auto}.display-day-timeline{grid-template-columns:1fr}.display-calendar-year{grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(4,1fr)}}

/* FHAID 1.2 timetable administration aliases and responsive board */
.timetable-summary-card{display:grid;gap:16px;padding:20px;border:1px solid var(--border);border-radius:18px;background:#fff;box-shadow:0 8px 24px rgba(15,23,42,.05)}
.timetable-child-card{display:flex;align-items:center;gap:14px;min-width:0}
.timetable-child-card img{width:64px;height:64px;border-radius:18px;object-fit:cover;background:#eef2f7}
.timetable-child-card h2,.timetable-child-card p{margin:2px 0}.timetable-child-card p{color:var(--muted)}
.timetable-summary-card .timetable-live-grid>article{padding:15px;border:1px solid var(--border);border-left:7px solid #2563eb;border-radius:14px;background:#f8fafc}
.timetable-summary-card .timetable-live-grid>article.is-next{border-left-color:#16a34a}.timetable-summary-card .timetable-live-grid span,.timetable-summary-card .timetable-live-grid strong,.timetable-summary-card .timetable-live-grid small,.timetable-summary-card .timetable-live-grid b{display:block;margin-top:3px}
.timetable-week-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;width:100%;min-width:0}
.timetable-day-column{min-width:0;padding:10px;border:1px solid var(--border);border-radius:14px;background:#f8fafc}
.timetable-day-column>header{margin-bottom:9px;text-align:center;font-weight:800}
.timetable-day-list{display:grid;gap:8px}
.timetable-entry{position:relative;display:grid;gap:3px;min-width:0;padding:10px;border-left:6px solid var(--subject-color,#2563eb);border-radius:10px;background:#fff;box-shadow:0 3px 10px rgba(15,23,42,.05);overflow-wrap:anywhere}
.timetable-entry-break{border-left-color:#94a3b8;background:#f1f5f9}.timetable-entry-school_club{border-style:dashed;border-left-style:solid}
.timetable-entry time,.timetable-entry small{font-size:.76rem;color:var(--muted)}
.timetable-entry-actions{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}.timetable-entry-actions form{display:inline}.timetable-entry-actions button{border:0;border-radius:7px;padding:5px 7px;background:#e8eef7;cursor:pointer}
.timetable-activity-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.timetable-activity-grid>article{display:grid;gap:3px;padding:13px;border:1px dashed var(--subject-color,#16a34a);border-left:7px solid var(--subject-color,#16a34a);border-radius:13px;background:#f0fdf4}
.timetable-activity-grid time,.timetable-activity-grid small{color:var(--muted);font-size:.8rem}
.timetable-plan-tabs a{display:grid;min-width:145px;padding:10px 13px;border:1px solid var(--border);border-radius:12px;background:#fff;text-decoration:none;color:inherit}.timetable-plan-tabs a.is-active{border-color:var(--primary);background:#eff6ff}.timetable-plan-tabs span{font-size:.78rem;color:var(--muted)}
@media(max-width:1100px){.timetable-week-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.timetable-activity-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.timetable-summary-card,.timetable-child-card{align-items:flex-start}.timetable-live-grid,.timetable-week-grid,.timetable-activity-grid{grid-template-columns:1fr}.timetable-week-grid{gap:8px}.timetable-day-column{padding:9px}}


/* FHAID 1.3 reliability and kiosk refinements */
html:has(.display-body),body.display-body{width:100%;height:100%;margin:0;overflow:hidden;background:#07111f}
.display-player{width:100vw;height:100dvh;max-width:none;margin:0;border:0;border-radius:0;box-sizing:border-box;overflow:hidden}
.display-stage,.display-screen,.display-calendar-board,.display-calendar-content{min-height:0;overflow:hidden}
.display-calendar-event-icon{width:18px!important;height:18px!important;object-fit:contain!important;flex:0 0 18px!important}
.display-calendar-event{min-height:28px;padding:4px 6px;font-size:.72rem;line-height:1.08}
.display-calendar-event time{font-size:.64rem}.display-calendar-event strong{font-size:.72rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.display-day-timeline{gap:5px;align-content:start;overflow:auto;padding-right:3px}
.display-day-event{min-height:34px;padding:4px 6px}
.display-calendar-week-day{padding:5px}.display-calendar-week-day>div{gap:3px}
.display-calendar-month>section{padding:3px}.display-calendar-month .display-calendar-event{min-height:20px;padding:2px 3px}
.display-calendar-event.is-tomorrow::after{content:'Morgen';margin-left:auto;padding:1px 4px;border-radius:999px;background:#fff;color:#991b1b;font-size:.56rem;font-weight:900}
@keyframes wasteTomorrowPulse{0%,100%{background:var(--event-color);box-shadow:0 0 0 0 rgba(239,68,68,.15)}50%{background:#dc2626;box-shadow:0 0 0 5px rgba(239,68,68,.22)}}
.display-calendar-event.is-waste-tomorrow,.waste-card.is-tomorrow{animation:wasteTomorrowPulse 1.8s ease-in-out infinite;color:#fff}
.remote-control-layout{max-width:1180px}.remote-controller{display:grid;gap:16px}.remote-pad{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;padding:14px;border:1px solid var(--border);border-radius:18px;background:#f8fafc}.remote-button{min-height:76px;border:1px solid #cbd5e1;border-radius:14px;background:#fff;font-size:1.7rem;font-weight:800;cursor:pointer;box-shadow:0 6px 16px rgba(15,23,42,.07)}.remote-button span{display:block;font-size:.72rem}.remote-screen-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}.remote-status{min-height:24px;padding:8px 12px;border-radius:10px;background:#eef2ff;font-weight:700}
@media(max-width:760px){.remote-pad{grid-template-columns:repeat(3,1fr)}.display-topbar{padding:4px 6px}.display-player{padding:7px}.display-calendar-event{font-size:.66rem}.display-calendar-event strong{font-size:.66rem}}
@media(prefers-reduced-motion:reduce){.display-calendar-event.is-waste-tomorrow,.waste-card.is-tomorrow{animation:none;outline:3px solid #dc2626}}

/* FHAID 1.3: overview presence, separate Live-Karte and complete remote controls */
.display-overview-v13{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr) minmax(0,.9fr);gap:18px;align-items:stretch}
.display-overview-v13>article{min-width:0;height:100%;box-sizing:border-box;overflow:hidden}
.display-overview-weather{display:grid;align-content:center}.display-overview-weather h1{font-size:clamp(2.6rem,6vw,6.5rem)}
.display-tomorrow-card,.display-presence-card{display:flex;flex-direction:column}.display-tomorrow-card h2,.display-presence-card h2{margin:0 0 12px}
.display-tomorrow-card .display-event-line{grid-template-columns:auto 82px minmax(0,1fr);align-items:center;gap:10px;padding:10px 0}
.display-tomorrow-card .display-event-line:not(:has(img)){grid-template-columns:82px minmax(0,1fr)}
.display-tomorrow-card .display-event-line img{width:34px;height:34px;object-fit:contain}.display-tomorrow-card .display-event-line strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.display-presence-list{display:grid;gap:9px;min-height:0;overflow:auto;padding-right:3px}
.display-presence-row{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px 10px;border-radius:13px;background:rgba(255,255,255,.08)}
.display-member-initials{width:40px;height:40px;display:grid;place-items:center;border-radius:50%;background:#334155;color:#fff;font-weight:900;letter-spacing:.02em}
.display-presence-row strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.display-presence-row em{font-style:normal;font-size:.78rem;font-weight:850}
.display-presence-row.is-home{border-left:5px solid #22c55e}.display-presence-row.is-home em{color:#86efac}.display-presence-row.is-away{border-left:5px solid #3b82f6}.display-presence-row.is-away em{color:#93c5fd}.display-presence-row.is-unknown{border-left:5px solid #94a3b8}.display-presence-row.is-unknown em{color:#cbd5e1}
.display-live-map-board{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,30%);height:100%;min-height:0;border:1px solid rgba(255,255,255,.14);border-radius:26px;background:rgba(255,255,255,.08);overflow:hidden}
.display-live-map-canvas{position:relative;min-width:0;min-height:320px;overflow:hidden;background:#dbeafe;isolation:isolate}
.display-map-tiles,.display-map-markers{position:absolute;inset:0}.display-map-tiles img{position:absolute;width:256px;height:256px;max-width:none;user-select:none;-webkit-user-drag:none}.display-map-markers{pointer-events:none}
.display-map-marker{position:absolute;transform:translate(-50%,-50%);z-index:3}.display-map-marker>span{width:46px;height:46px;display:grid;place-items:center;border:4px solid #fff;border-radius:50%;background:#64748b;color:#fff;font-size:1rem;font-weight:950;box-shadow:0 7px 20px rgba(15,23,42,.38)}
.display-map-marker.is-home>span{width:54px;height:54px;background:#0f172a;font-size:1.5rem}.display-map-marker.is-home>span::after{content:'';position:absolute;inset:-9px;border:3px solid rgba(15,23,42,.35);border-radius:50%}
.display-map-marker.is-home>span{background:#16a34a}.display-map-marker.is-away>span{background:#2563eb}.display-map-marker.is-unknown>span{background:#64748b}
.display-live-map-sidebar{display:flex;flex-direction:column;min-width:0;padding:22px;background:rgba(7,17,31,.96);overflow:hidden}.display-live-map-sidebar h1{margin:3px 0;font-size:clamp(1.7rem,3vw,3rem)}.display-live-map-sidebar p{margin:0;color:#bfdbfe}
.display-live-map-members{display:grid;gap:9px;min-height:0;overflow:auto;margin-top:15px;padding-right:3px}
.display-map-member{display:grid;grid-template-columns:46px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px;border:1px solid rgba(255,255,255,.1);border-radius:14px;background:rgba(255,255,255,.07)}
.display-map-member>div{min-width:0}.display-map-member strong,.display-map-member em,.display-map-member small{display:block}.display-map-member strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.display-map-member em{margin:2px 0;font-style:normal;font-weight:850}.display-map-member small{color:#cbd5e1}.display-map-member>small{white-space:nowrap}
.display-map-member.is-home{border-left:5px solid #22c55e}.display-map-member.is-home em{color:#86efac}.display-map-member.is-away{border-left:5px solid #3b82f6}.display-map-member.is-away em{color:#93c5fd}.display-map-member.is-unknown{border-left:5px solid #94a3b8}.display-map-member.is-unknown em{color:#cbd5e1}
.display-map-empty{position:absolute;inset:0;display:grid;place-items:center;padding:30px;color:#334155;font-size:1.2rem;font-weight:850;text-align:center}.display-map-no-members{color:#cbd5e1}
.display-map-attribution{position:absolute;left:8px;bottom:7px;z-index:5;padding:3px 6px;border-radius:6px;background:rgba(255,255,255,.9);color:#334155;font-size:.65rem}
.segmented-control-three{grid-template-columns:repeat(3,minmax(0,1fr))}.remote-plan-list{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}.remote-plan-list .button{flex:1 1 150px}.remote-detail-card .empty-state{margin:8px 0 0;padding:9px}
@media(max-width:1200px){.display-overview-v13{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.display-presence-card{grid-column:1/-1}.display-presence-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px){.display-live-map-board{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) auto}.display-live-map-sidebar{max-height:220px}.display-live-map-members{grid-template-columns:repeat(2,minmax(0,1fr))}.display-overview-v13{grid-template-columns:1fr 1fr}.display-overview-weather{grid-column:1/-1}.display-overview-weather h1{font-size:2.2rem;margin:4px 0}.display-overview-weather .display-weather-inline>span,.display-overview-weather .display-weather-inline>strong{font-size:2.7rem}}
@media(max-width:620px){.display-overview-v13{grid-template-columns:1fr;overflow:auto}.display-overview-weather,.display-presence-card{grid-column:auto}.display-overview-v13>article{height:auto;min-height:170px}.display-presence-list,.display-live-map-members{grid-template-columns:1fr}.display-live-map-sidebar{max-height:190px;padding:13px}.display-live-map-canvas{min-height:260px}.display-map-member{grid-template-columns:42px minmax(0,1fr)}.display-map-member>small{display:none}.segmented-control-three{grid-template-columns:1fr}.remote-period-controls{grid-template-columns:1fr}}

/* FHAID 1.5: Stundenplan ↔ Orte der Familie */
.timetable-plan-form{align-items:start}.timetable-school-picker small{display:block;margin-top:6px;color:var(--muted)}
.timetable-new-school{margin:0;padding:16px;border:1px solid var(--border);border-radius:16px;background:#f8fafc}.timetable-new-school legend{padding:0 8px;font-weight:850}.timetable-new-school .form-grid{margin-top:12px}
.timetable-school-preview{display:grid;gap:4px;padding:13px 15px;border:1px solid #bfdbfe;border-left:6px solid #2563eb;border-radius:13px;background:#eff6ff}.timetable-school-preview strong,.timetable-school-preview span,.timetable-school-preview small{display:block}.timetable-school-preview span,.timetable-school-preview small{color:var(--muted)}
.timetable-school-summary{display:grid;gap:3px;margin:10px 0 0;padding:11px 13px;border-radius:12px;background:#f8fafc;border-left:5px solid #2563eb}.timetable-school-summary span,.timetable-school-summary small{display:block;color:var(--muted)}
.timetable-edit-panel>summary{cursor:pointer;list-style:none}.timetable-edit-panel>summary::-webkit-details-marker{display:none}.timetable-edit-panel>summary::after{content:'＋';float:right}.timetable-edit-panel[open]>summary::after{content:'−'}.timetable-edit-panel .details-body{margin-top:18px;padding-top:18px;border-top:1px solid var(--border)}
@media(max-width:700px){.timetable-new-school{padding:12px}.timetable-school-preview{padding:10px 12px}}

/* FHAID 1.6: information-first display, local map, real calendar, weather and air layouts */
.display-source-settings{padding:18px;border:1px solid var(--border);border-radius:18px;background:#f8fafc}
.display-source-location-grid{display:grid;grid-template-columns:140px minmax(180px,1fr) minmax(180px,1fr);gap:12px;margin:14px 0 8px}
.display-source-location-grid label,.display-source-card>label{display:grid;gap:6px;font-weight:750}
.display-source-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:16px}
.display-source-card{display:grid;gap:12px;padding:16px;border:1px solid var(--border);border-radius:15px;background:#fff}
.display-source-card-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.display-source-card-header h4{margin:0}.display-source-card-header label{font-size:.86rem;font-weight:750}
.display-source-refresh{display:grid!important;grid-template-columns:minmax(0,1fr) 100px auto;align-items:end;gap:8px}.display-source-refresh>span{grid-column:1/-1}.display-source-refresh small{padding-bottom:11px;color:var(--muted)}
.display-source-status{display:grid;gap:7px;margin:0}.display-source-status>div{display:grid;grid-template-columns:minmax(140px,.8fr) minmax(0,1.2fr);gap:10px;padding-top:8px;border-top:1px solid var(--border)}.display-source-status dt{font-size:.78rem;color:var(--muted)}.display-source-status dd{margin:0;font-size:.82rem;overflow-wrap:anywhere}.display-source-status .is-error dd{color:#b91c1c}

.display-player-v16{height:100dvh;min-height:0;grid-template-rows:68px minmax(0,1fr) 18px;padding:14px 22px 9px;background:radial-gradient(circle at 92% 0,#263d60 0,#151c2d 42%,#0b1120 100%)}
.display-player-v16 .display-stage{height:100%;min-height:0;overflow:hidden}
.display-player-v16 .display-screen{height:100%;min-height:0;padding:13px 0 7px;overflow:hidden!important}
.display-player-v16 .display-screen[hidden]{display:none!important}
.display-topbar-v16{min-height:0;padding:0 0 10px}
.display-topbar-family{min-width:0}.display-topbar-family .display-family-name{font-size:clamp(1.15rem,1.55vw,1.7rem);line-height:1.05}.display-topbar-family>strong{margin-top:4px;color:#cbd5e1;font-size:.78rem}
.display-topbar-right{display:flex;align-items:center;justify-content:flex-end;gap:18px;min-width:0}.display-topbar-v16 time{font-size:clamp(1.05rem,1.65vw,1.8rem);line-height:1;white-space:nowrap}
.display-topbar-weather{display:flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid rgba(255,255,255,.14);border-radius:14px;background:rgba(255,255,255,.08)}.display-topbar-weather>span{font-size:1.65rem}.display-topbar-weather>strong{font-size:1.35rem}.display-topbar-weather>small{max-width:145px;color:#dbeafe;font-size:.76rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.display-overview-v16{display:grid;grid-template-columns:minmax(0,1.42fr) minmax(270px,.78fr) minmax(280px,.8fr);gap:13px;height:100%;min-height:0}
.display-overview-v16>article{min-width:0;min-height:0;padding:17px;border:1px solid rgba(255,255,255,.13);border-radius:23px;background:linear-gradient(145deg,rgba(255,255,255,.105),rgba(255,255,255,.055));box-shadow:inset 0 1px rgba(255,255,255,.04);overflow:hidden}
.display-overview-primary-v16{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:12px}.display-overview-primary-v16>header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.display-overview-primary-v16>header span{display:block;color:#93c5fd;font-size:.75rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.display-overview-primary-v16 h1{margin:4px 0 0;font-size:clamp(1.65rem,2.2vw,2.65rem);line-height:1.05}
.display-overview-counts{display:flex;gap:8px}.display-overview-counts>span{min-width:86px;padding:8px 10px;border-radius:13px;background:rgba(255,255,255,.08);color:#cbd5e1!important;font-size:.65rem!important;letter-spacing:0!important;text-transform:none!important}.display-overview-counts strong{display:block;color:#fff;font-size:1.3rem}
.display-overview-columns-v16{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-height:0}.display-overview-columns-v16>section{min-width:0;min-height:0;padding:11px;border-radius:16px;background:rgba(7,17,31,.35);overflow:hidden}.display-overview-columns-v16 h2{margin:0 0 8px;font-size:.93rem}.display-overview-events{display:grid;gap:7px;min-height:0}.display-overview-events>article{display:grid;grid-template-columns:auto 48px minmax(0,1fr);align-items:center;gap:8px;min-height:48px;padding:6px 8px;border-left:4px solid var(--event-color);border-radius:10px;background:rgba(255,255,255,.075)}.display-overview-events img{width:34px;height:34px;border-radius:50%;object-fit:cover}.display-overview-events time{font-size:.7rem;font-weight:850;color:#bfdbfe}.display-overview-events div{min-width:0}.display-overview-events strong,.display-overview-events small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.display-overview-events strong{font-size:.8rem}.display-overview-events small{margin-top:2px;color:#cbd5e1;font-size:.66rem}.display-overview-events>article:not(:has(img)){grid-template-columns:48px minmax(0,1fr)}
.display-overview-empty{display:grid;place-items:center;min-height:55px;margin:0;padding:9px;border:1px dashed rgba(255,255,255,.15);border-radius:12px;color:#cbd5e1;text-align:center;font-size:.76rem}
.display-overview-footer-v16{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.display-overview-footer-v16>div{display:grid;grid-template-columns:38px minmax(0,1fr);align-items:center;gap:8px;padding:9px 10px;border-radius:13px;background:rgba(255,255,255,.075)}.display-overview-footer-v16>div>span{font-size:1.6rem}.display-overview-footer-v16 p,.display-overview-footer-v16 strong,.display-overview-footer-v16 small{display:block;margin:0}.display-overview-footer-v16 p{color:#bfdbfe;font-size:.68rem}.display-overview-footer-v16 strong{margin-top:2px;color:#fff;font-size:.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.display-overview-footer-v16 small{margin-top:2px;color:#cbd5e1;font-size:.64rem}

.display-overview-family-v16{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:10px}.display-overview-family-v16>header{display:flex;justify-content:space-between;gap:8px}.display-overview-family-v16>header span{color:#93c5fd;font-size:.7rem;font-weight:900;text-transform:uppercase}.display-overview-family-v16 h2{margin:3px 0 0;font-size:1.12rem}.display-presence-summary-v16{display:flex;gap:5px}.display-presence-summary-v16 b{width:30px;height:30px;display:grid;place-items:center;border-radius:50%;font-size:.72rem}.display-presence-summary-v16 .is-home{background:#166534}.display-presence-summary-v16 .is-away{background:#1d4ed8}.display-presence-summary-v16 .is-unknown{background:#475569}
.display-player-v16 .display-presence-list{display:grid;align-content:start;gap:7px;min-height:0;overflow:hidden}.display-player-v16 .display-presence-row{grid-template-columns:42px minmax(0,1fr) auto;min-height:49px;padding:7px 8px}.display-presence-row>div{min-width:0}.display-presence-row>div strong,.display-presence-row>div small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.display-presence-row>div strong{font-size:.78rem}.display-presence-row>div small{margin-top:2px;color:#cbd5e1;font-size:.62rem}.display-presence-row em{font-size:.68rem}
.display-member-photo,.display-activity-photo{display:grid;place-items:center;overflow:hidden;border-radius:50%;background:#334155;color:#fff;font-weight:900}.display-member-photo{width:38px;height:38px}.display-member-photo img,.display-activity-photo img{width:100%;height:100%;object-fit:cover}.display-member-photo.is-initials{font-size:.7rem}
.display-family-activity-v16{padding-top:8px;border-top:1px solid rgba(255,255,255,.1)}.display-family-activity-v16 h3{margin:0 0 6px;font-size:.72rem;color:#bfdbfe}.display-family-activity-v16>p{display:flex;align-items:center;gap:7px;margin:0;padding:5px 0;color:#e2e8f0;font-size:.68rem}.display-family-activity-v16>p+p{border-top:1px solid rgba(255,255,255,.06)}.display-activity-photo{flex:0 0 29px;width:29px;height:29px;font-size:.58rem}.display-family-activity-v16>p>span{min-width:0}.display-family-activity-v16>p strong{font-size:.72rem}.display-family-activity-v16>p small{display:block;color:#94a3b8;font-size:.6rem}

.display-overview-information-v16{display:grid!important;grid-template-rows:minmax(0,.9fr) minmax(0,1.1fr);gap:10px}.display-overview-information-v16>section{min-height:0;padding:11px;border-radius:15px;background:rgba(7,17,31,.38);overflow:hidden}.display-overview-information-v16 header{display:flex;align-items:center;gap:9px;margin-bottom:8px}.display-overview-information-v16 header>span{font-size:1.45rem}.display-overview-information-v16 header small,.display-overview-information-v16 header h2{display:block;margin:0}.display-overview-information-v16 header small{max-width:180px;color:#93c5fd;font-size:.6rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.display-overview-information-v16 header h2{font-size:.98rem}.display-warning-panel-v16>div,.display-news-panel-v16>div{display:grid;gap:6px}.display-warning-panel-v16 article,.display-news-panel-v16 article{padding:7px 8px;border-radius:9px;background:rgba(255,255,255,.07)}.display-warning-panel-v16 article{border-left:4px solid #facc15}.display-warning-panel-v16 article.is-warning{border-left-color:#fb923c}.display-warning-panel-v16 article.is-severe{border-left-color:#ef4444}.display-warning-panel-v16 strong,.display-warning-panel-v16 p,.display-news-panel-v16 strong,.display-news-panel-v16 time{display:block;margin:0}.display-warning-panel-v16 strong,.display-news-panel-v16 strong{font-size:.71rem;line-height:1.25}.display-warning-panel-v16 p{margin-top:3px;color:#cbd5e1;font-size:.61rem;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.display-news-panel-v16 time{margin-top:3px;color:#94a3b8;font-size:.58rem}.display-information-empty-v16{display:grid;place-items:center;min-height:65px;margin:0;color:#dbeafe;text-align:center;font-size:.75rem}.display-information-empty-v16 small{display:block;margin-top:4px;color:#94a3b8}

.display-live-map-v16{grid-template-columns:minmax(0,1fr) minmax(290px,27%)}.display-live-map-v16 .display-map-marker>span{overflow:hidden}.display-live-map-v16 .display-map-marker img{width:100%;height:100%;object-fit:cover}.display-map-home-icon{font-size:1.7rem!important}.display-live-map-v16 .display-map-member{grid-template-columns:46px minmax(0,1fr) auto;padding:9px}.display-live-map-v16 .display-map-member .display-member-photo{width:42px;height:42px}.display-live-map-v16 .display-map-member strong{font-size:.82rem}.display-live-map-v16 .display-map-member small{font-size:.63rem}.display-map-battery{align-self:start;padding:4px 6px;border-radius:999px;background:rgba(255,255,255,.08);font-size:.62rem!important}

.display-calendar-v16{height:100%;box-sizing:border-box;display:grid;grid-template-rows:auto minmax(0,1fr);gap:12px;padding:18px!important}.display-calendar-v16 .display-board-heading{margin:0}.display-calendar-v16 .display-board-heading h1{font-size:clamp(1.45rem,2.2vw,2.5rem)}.display-calendar-v16 .display-board-heading>span{padding:7px 12px;border-radius:999px;background:rgba(255,255,255,.1);font-weight:850}
.display-calendar-day-v16{display:grid;grid-template-columns:minmax(250px,.34fr) minmax(0,1fr);gap:14px;height:100%;min-height:0}.display-calendar-date-card-v16{display:grid;place-items:center;align-content:center;padding:20px;border-radius:22px;background:linear-gradient(150deg,#2563eb,#172554);text-align:center;box-shadow:inset 0 1px rgba(255,255,255,.22)}.display-calendar-date-card-v16>span{text-transform:uppercase;letter-spacing:.12em;font-weight:900}.display-calendar-date-card-v16>strong{font-size:clamp(6rem,12vw,12rem);line-height:.9}.display-calendar-date-card-v16 h2{margin:8px 0;font-size:clamp(1.25rem,2vw,2rem)}.display-calendar-date-card-v16 small{padding:7px 12px;border-radius:999px;background:rgba(255,255,255,.15)}
.display-calendar-agenda-v16{min-height:0;padding:13px;border-radius:20px;background:rgba(7,17,31,.38);overflow:hidden}.display-calendar-agenda-v16>div:not(.display-calendar-empty-v16){display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:9px;height:100%}.display-calendar-event{width:100%;min-width:0;display:grid!important;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:9px;min-height:62px;padding:8px 10px!important;border:0;border-left:6px solid var(--event-color)!important;border-radius:13px!important;background:rgba(255,255,255,.09)!important;color:#fff;text-align:left}.display-calendar-event-avatar{width:42px;height:42px;border-radius:50%;object-fit:cover}.display-calendar-event>span{min-width:0}.display-calendar-event time,.display-calendar-event strong,.display-calendar-event small{display:block}.display-calendar-event time{color:#bfdbfe;font-size:.66rem;font-weight:900}.display-calendar-event strong{margin:2px 0;font-size:.79rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.display-calendar-event small{color:#cbd5e1;font-size:.62rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.display-calendar-empty-v16{height:100%;display:grid;place-items:center;align-content:center;gap:8px;text-align:center}.display-calendar-empty-v16>span{font-size:5rem}.display-calendar-empty-v16 h2{margin:0;font-size:2rem}.display-calendar-empty-v16 p{margin:0;color:#cbd5e1;font-size:1.05rem}
.display-calendar-week-summary-v16{margin-bottom:7px;color:#bfdbfe;font-weight:850}.display-calendar-week-v16{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px;height:calc(100% - 27px)}.display-calendar-week-day-v16{min-width:0;padding:8px;border:1px solid rgba(255,255,255,.11);border-radius:14px;background:rgba(255,255,255,.055);overflow:hidden}.display-calendar-week-day-v16.is-today{border-color:#60a5fa;background:rgba(37,99,235,.2)}.display-calendar-week-day-v16>header{display:flex;justify-content:space-between;align-items:center;margin-bottom:7px}.display-calendar-week-day-v16>header span{font-size:.7rem;font-weight:850}.display-calendar-week-day-v16>header strong{width:30px;height:30px;display:grid;place-items:center;border-radius:50%;background:rgba(255,255,255,.1)}.display-calendar-week-day-v16>div{display:grid;gap:5px}.display-calendar-week-day-v16 .display-calendar-event{grid-template-columns:1fr;min-height:48px;padding:6px!important}.display-calendar-week-day-v16 .display-calendar-event-avatar,.display-calendar-week-day-v16 .display-calendar-event small{display:none}.display-calendar-week-day-v16 .display-calendar-event strong{white-space:normal;font-size:.66rem;line-height:1.15}.display-calendar-week-day-v16 .display-calendar-event time{font-size:.58rem}
.display-month-weekdays-v16{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:6px}.display-month-weekdays-v16 span{text-align:center;color:#bfdbfe;font-size:.72rem;font-weight:900}.display-calendar-month-v16{display:grid;grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(6,1fr);gap:5px;height:calc(100% - 26px)}.display-calendar-month-v16>section{min-width:0;padding:5px;border:1px solid rgba(255,255,255,.09);border-radius:10px;background:rgba(255,255,255,.045);overflow:hidden}.display-calendar-month-v16>section.is-outside{opacity:.35}.display-calendar-month-v16>section.is-today{outline:2px solid #60a5fa}.display-calendar-month-v16>section>strong{font-size:.72rem}.display-calendar-month-v16>section>div{display:grid;gap:2px}.display-calendar-month-v16 .display-calendar-event{display:block!important;min-height:19px;padding:2px 3px!important;border-left-width:3px!important;border-radius:5px!important}.display-calendar-month-v16 .display-calendar-event-avatar,.display-calendar-month-v16 .display-calendar-event time,.display-calendar-month-v16 .display-calendar-event small{display:none}.display-calendar-month-v16 .display-calendar-event strong{font-size:.55rem}.display-calendar-year-v16{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;height:100%}.display-calendar-year-v16 section{display:grid;place-items:center;align-content:center;border-radius:16px;background:rgba(255,255,255,.07)}.display-calendar-year-v16 h2{margin:0;font-size:1rem}.display-calendar-year-v16 strong{font-size:2.3rem}.display-calendar-year-v16 span{color:#cbd5e1;font-size:.7rem}

.display-weather-v16{height:100%;box-sizing:border-box;display:grid!important;grid-template-rows:minmax(0,1.25fr) minmax(122px,.68fr) minmax(112px,.58fr);gap:10px!important;padding:15px!important;overflow:hidden}.display-weather-head-v16{display:grid;grid-template-columns:minmax(260px,.55fr) minmax(0,1.45fr);gap:14px;min-height:0}.display-weather-now-v16{display:flex;align-items:center;justify-content:center;gap:12px;padding:12px;border-radius:18px;background:linear-gradient(145deg,rgba(59,130,246,.24),rgba(255,255,255,.06))}.display-weather-now-v16>span{font-size:clamp(3.8rem,6vw,6.8rem)}.display-weather-now-v16>strong{font-size:clamp(3.2rem,5.5vw,6rem);line-height:.9}.display-weather-now-v16 h1{margin:0;font-size:clamp(1.1rem,1.7vw,1.8rem)}.display-weather-now-v16 p{margin:4px 0 0;color:#bfdbfe;font-size:.78rem}
.display-weather-facts-v16{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px;align-content:stretch}.display-weather-facts-v16>span{display:grid;align-content:center;min-width:0;padding:8px;border:1px solid rgba(255,255,255,.1);border-radius:12px;background:rgba(255,255,255,.07)}.display-weather-facts-v16 small,.display-weather-facts-v16 strong{display:block;overflow:hidden;text-overflow:ellipsis}.display-weather-facts-v16 small{color:#bfdbfe;font-size:.59rem;white-space:nowrap}.display-weather-facts-v16 strong{margin-top:3px;font-size:.78rem;white-space:nowrap}
.display-weather-hours-v16,.display-weather-week-v16{min-height:0}.display-weather-section-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.display-weather-section-title h2{margin:0;font-size:.85rem}.display-weather-section-title span{color:#94a3b8;font-size:.62rem}.display-hourly-grid-v16{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:6px}.display-hourly-grid-v16 article{display:grid;justify-items:center;gap:2px;min-width:0;padding:6px 3px;border:1px solid rgba(255,255,255,.09);border-radius:11px;background:rgba(255,255,255,.065)}.display-hourly-grid-v16 article.is-current{border-color:#60a5fa;background:rgba(37,99,235,.24)}.display-hourly-grid-v16 time{font-size:.58rem;font-weight:850}.display-hourly-grid-v16>article>span{font-size:1.45rem}.display-hourly-grid-v16 strong{font-size:.83rem}.display-hourly-grid-v16 small{font-size:.53rem;color:#cbd5e1;white-space:nowrap}
.display-forecast-row-v16{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px}.display-forecast-row-v16 article{display:grid;grid-template-columns:auto auto 1fr;grid-template-rows:auto auto;align-items:center;gap:2px 7px;min-width:0;padding:7px 8px;border:1px solid rgba(255,255,255,.09);border-radius:12px;background:rgba(255,255,255,.065)}.display-forecast-row-v16 article.is-today{border-color:#60a5fa}.display-forecast-row-v16 time{grid-column:1/-1;font-size:.58rem;font-weight:850}.display-forecast-row-v16 span{grid-row:2;font-size:1.5rem}.display-forecast-row-v16 strong{grid-row:2;font-size:.73rem;white-space:nowrap}.display-forecast-row-v16 small{grid-column:3;grid-row:2;color:#cbd5e1;font-size:.53rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.display-air-v16{height:100%;box-sizing:border-box;display:grid!important;grid-template-columns:minmax(250px,.28fr) minmax(0,.72fr);gap:12px!important;padding:15px!important;overflow:hidden}.display-air-v16 .display-aqi-card{border-radius:20px}.display-air-v16 .display-aqi-card>span{font-size:.78rem;font-weight:900}.display-air-v16 .display-aqi-card>strong{font-size:clamp(5rem,9vw,9rem);line-height:.9}.display-air-v16 .display-aqi-card h1{margin:7px 0;font-size:1.7rem}.display-air-content-v16{display:grid;grid-template-rows:minmax(0,.78fr) minmax(0,.78fr) minmax(0,.75fr);gap:9px;min-height:0}.display-air-content-v16>section{min-height:0;padding:10px;border-radius:15px;background:rgba(7,17,31,.32);overflow:hidden}.display-air-content-v16 h2{margin:0 0 7px;font-size:.86rem}.display-pollutant-grid-v16,.display-pollen-grid-v16{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}.display-pollutant-grid-v16 article,.display-pollen-grid-v16 article{display:grid;grid-template-columns:37px minmax(0,1fr);align-items:center;gap:7px;min-width:0;padding:7px;border:1px solid rgba(255,255,255,.13);border-radius:11px;color:#172334}.display-pollutant-grid-v16 img,.display-pollen-grid-v16 img{width:35px;height:35px}.display-pollutant-grid-v16 span,.display-pollutant-grid-v16 strong,.display-pollutant-grid-v16 em,.display-pollen-grid-v16 span,.display-pollen-grid-v16 strong,.display-pollen-grid-v16 small{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.display-pollutant-grid-v16 span,.display-pollen-grid-v16 span{font-size:.58rem}.display-pollutant-grid-v16 strong,.display-pollen-grid-v16 strong{font-size:.75rem}.display-pollutant-grid-v16 strong small{display:inline;font-size:.5rem}.display-pollutant-grid-v16 em,.display-pollen-grid-v16 small{font-size:.52rem;font-style:normal}
.display-air-forecast-v16>div{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}.display-air-forecast-v16 article{display:grid;gap:2px;min-width:0;padding:7px 8px;border:1px solid rgba(255,255,255,.13);border-radius:11px;color:#172334}.display-air-forecast-v16 time,.display-air-forecast-v16 strong,.display-air-forecast-v16 span,.display-air-forecast-v16 small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.display-air-forecast-v16 time{font-size:.58rem}.display-air-forecast-v16 strong{font-size:.78rem}.display-air-forecast-v16 span,.display-air-forecast-v16 small{font-size:.54rem}
.display-pollutant-grid-v16 .air-good,.display-air-forecast-v16 .air-good{background:#e8f7ef}.display-pollutant-grid-v16 .air-fair,.display-air-forecast-v16 .air-fair{background:#eff8e4}.display-pollutant-grid-v16 .air-moderate,.display-air-forecast-v16 .air-moderate{background:#fff7dc}.display-pollutant-grid-v16 .air-poor,.display-air-forecast-v16 .air-poor{background:#fff0dc}.display-pollutant-grid-v16 .air-very-poor,.display-pollutant-grid-v16 .air-extreme,.display-air-forecast-v16 .air-very-poor,.display-air-forecast-v16 .air-extreme{background:#ffe7e7}

.display-detail-event-head{display:flex;align-items:center;gap:13px}.display-detail-event-head .display-calendar-event-avatar{width:58px;height:58px}

@media(max-width:1250px){
  .display-overview-v16{grid-template-columns:minmax(0,1.28fr) minmax(250px,.72fr);grid-template-rows:minmax(0,1fr) minmax(165px,.35fr)}
  .display-overview-information-v16{grid-column:1/-1;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:1fr!important}
  .display-warning-panel-v16>div,.display-news-panel-v16>div{grid-template-columns:repeat(2,minmax(0,1fr))}
  .display-weather-facts-v16{grid-template-columns:repeat(5,minmax(0,1fr))}
  .display-weather-head-v16{grid-template-columns:minmax(250px,.45fr) minmax(0,1.55fr)}
}
@media(max-width:900px){
  .display-player-v16{padding:9px 11px 6px;grid-template-rows:62px minmax(0,1fr) 15px}
  .display-topbar-weather small{display:none}.display-topbar-right{gap:8px}
  .display-overview-v16{grid-template-columns:1fr 1fr;grid-template-rows:auto auto;overflow:auto}.display-overview-primary-v16,.display-overview-information-v16{grid-column:1/-1}.display-overview-information-v16{min-height:210px}
  .display-live-map-v16{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) 190px}.display-live-map-sidebar{padding:11px}.display-live-map-members{grid-template-columns:repeat(2,minmax(0,1fr))}
  .display-calendar-day-v16{grid-template-columns:minmax(180px,.35fr) 1fr}.display-calendar-date-card-v16>strong{font-size:6rem}.display-calendar-agenda-v16>div:not(.display-calendar-empty-v16){grid-template-columns:1fr}
  .display-weather-v16{overflow:auto}.display-weather-head-v16{grid-template-columns:1fr}.display-weather-facts-v16{grid-template-columns:repeat(4,1fr)}.display-hourly-grid-v16{grid-template-columns:repeat(6,1fr)}.display-forecast-row-v16{grid-template-columns:repeat(4,1fr)}
  .display-air-v16{grid-template-columns:1fr;overflow:auto}.display-air-v16 .display-aqi-card{min-height:190px}.display-air-content-v16{grid-template-rows:auto}
}
@media(max-width:650px){
  .display-source-location-grid,.display-source-grid{grid-template-columns:1fr}.display-source-refresh{grid-template-columns:1fr auto}.display-source-refresh>span{grid-column:1/-1}
  .display-topbar-family>strong,.display-topbar-weather small{display:none}.display-topbar-weather{padding:5px 7px}.display-topbar-weather>span{font-size:1.2rem}.display-topbar-weather>strong{font-size:1rem}.display-topbar-v16 time{font-size:.82rem}
  .display-overview-v16{grid-template-columns:1fr}.display-overview-primary-v16,.display-overview-family-v16,.display-overview-information-v16{grid-column:auto;min-height:340px}.display-overview-columns-v16,.display-overview-information-v16{grid-template-columns:1fr}.display-overview-footer-v16{grid-template-columns:1fr}
  .display-calendar-day-v16{grid-template-columns:1fr;grid-template-rows:170px minmax(0,1fr)}.display-calendar-date-card-v16>strong{font-size:4.2rem}.display-calendar-week-v16{grid-template-columns:repeat(2,1fr);overflow:auto}.display-calendar-month-v16{min-width:680px}.display-calendar-content{overflow:auto!important}
  .display-pollutant-grid-v16,.display-pollen-grid-v16,.display-air-forecast-v16>div{grid-template-columns:repeat(2,1fr)}
}
.display-player-v16 .display-calendar-event.is-tomorrow::after{content:attr(data-tomorrow-label)}

/* FHAID 1.7 – Einkaufsliste und lesbare Großbild-Darstellung */
.shopping-page{gap:1.25rem}.shopping-hero{overflow:hidden}.shopping-week-badge{min-width:240px;padding:1rem 1.25rem;border:1px solid var(--border);border-radius:18px;background:var(--surface-soft);text-align:right}.shopping-week-badge span{display:block;color:var(--muted);font-size:.82rem}.shopping-week-badge strong{display:block;margin-top:.25rem;font-size:1.12rem}.shopping-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin-top:1rem}.shopping-stats article{padding:1rem 1.2rem;border-radius:18px;background:var(--surface-soft);border:1px solid var(--border)}.shopping-stats span{display:block;color:var(--muted);font-size:.85rem}.shopping-stats strong{display:block;margin-top:.25rem;font-size:2rem}.shopping-stats .is-open strong{color:#d94343}.shopping-stats .is-bought strong{color:#18945f}.shopping-list-tools{display:flex;gap:.55rem;flex-wrap:wrap}.shopping-list-tools .is-active{background:var(--primary);color:#fff;border-color:var(--primary)}.shopping-items-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}.shopping-list-item{position:relative;display:grid;grid-template-columns:54px 70px minmax(0,1fr) auto auto;align-items:center;gap:.8rem;min-height:104px;padding:.75rem 1rem;border:2px solid;border-radius:20px;transition:.18s ease}.shopping-list-item.is-open{border-color:#e77a7a;background:#fff4f4}.shopping-list-item.is-purchased{border-color:#58ba87;background:#effcf5}.shopping-list-item>img{width:64px;height:64px;object-fit:cover;border-radius:16px;background:#fff}.shopping-buy-toggle{width:48px;height:48px;border:0;border-radius:50%;font-size:1.75rem;font-weight:900;cursor:pointer}.is-open .shopping-buy-toggle{background:#e74f4f;color:#fff}.is-purchased .shopping-buy-toggle{background:#1f9d63;color:#fff}.shopping-item-main{min-width:0}.shopping-item-main strong{display:block;font-size:1.05rem}.shopping-item-main small,.shopping-item-main em{display:block;margin-top:.2rem;color:var(--muted);font-size:.78rem;font-style:normal}.shopping-item-quantity{display:flex;align-items:center;gap:.35rem}.shopping-item-quantity input{width:76px}.shopping-item-quantity select{max-width:120px}.shopping-item-quantity input,.shopping-item-quantity select,.shopping-item-quantity button{height:40px;border:1px solid var(--border);border-radius:10px;background:#fff;padding:.35rem .5rem}.shopping-item-quantity button{width:40px;cursor:pointer}.shopping-delete{width:34px;height:34px;border:0;border-radius:50%;background:#fee2e2;color:#b91c1c;font-size:1.25rem;cursor:pointer}.shopping-empty{padding:2rem;text-align:center;color:var(--muted);border:1px dashed var(--border);border-radius:18px}.shopping-search-row{display:grid;grid-template-columns:minmax(260px,420px) 1fr;gap:1rem;margin-bottom:1rem}.shopping-search{position:relative}.shopping-search span{position:absolute;left:1rem;top:50%;transform:translateY(-50%);font-size:1.4rem}.shopping-search input{padding-left:2.8rem}.shopping-category-tabs{display:flex;gap:.45rem;overflow-x:auto;padding-bottom:.3rem}.shopping-category-tabs button{white-space:nowrap;border:1px solid var(--border);border-radius:999px;background:var(--surface);padding:.65rem .9rem;cursor:pointer}.shopping-category-tabs button.is-active{background:var(--primary);color:#fff;border-color:var(--primary)}.shopping-catalog-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:.8rem}.shopping-product-card{position:relative;display:flex;min-height:160px;flex-direction:column;align-items:center;justify-content:center;gap:.35rem;border:1px solid var(--border);border-radius:20px;background:var(--surface);padding:.75rem;cursor:pointer;transition:.18s ease}.shopping-product-card:hover{transform:translateY(-2px);box-shadow:0 10px 25px rgba(31,50,80,.12)}.shopping-product-card img{width:76px;height:76px;object-fit:cover;border-radius:18px}.shopping-product-card span{font-weight:800;text-align:center}.shopping-product-card small{color:var(--muted)}.shopping-product-card b{position:absolute;right:.55rem;top:.55rem;width:28px;height:28px;border-radius:50%;background:var(--primary);color:#fff;display:grid;place-items:center}.shopping-add-preview{display:flex;align-items:center;gap:1rem;margin-bottom:1rem;padding:1rem;border-radius:18px;background:var(--surface-soft)}.shopping-add-preview img{width:88px;height:88px;border-radius:20px}.shopping-add-preview strong{display:block;font-size:1.3rem}.shopping-add-preview small{display:block;color:var(--muted);margin-top:.25rem}.shopping-action-row{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.shopping-toast{position:fixed;z-index:10000;right:1.25rem;bottom:1.25rem;max-width:380px;padding:1rem 1.25rem;border-radius:14px;background:#163f2d;color:#fff;box-shadow:0 14px 36px rgba(0,0,0,.24)}.shopping-toast.is-error{background:#8e2525}

.display-player-v17{--display-fs-xs:clamp(.82rem,1.05vw,1.35rem);--display-fs-sm:clamp(.95rem,1.25vw,1.6rem);--display-fs-md:clamp(1.2rem,1.65vw,2rem);--display-fs-lg:clamp(2rem,3vw,4rem)}.display-player-v17 .display-topbar{min-height:clamp(72px,8vh,118px)}.display-player-v17 .display-family-name,.display-player-v17 [data-display-clock]{font-size:var(--display-fs-md)}.display-player-v17 .display-topbar-weather{padding:.7rem 1.1rem}.display-player-v17 .display-topbar-weather strong{font-size:var(--display-fs-md)}.display-player-v17 .display-weather-board-v16{height:100%;grid-template-rows:minmax(0,1.35fr) minmax(0,.72fr) minmax(0,.58fr);gap:clamp(.6rem,1vw,1.2rem)}.display-player-v17 .display-weather-current-v16{grid-template-columns:minmax(330px,.9fr) minmax(0,2.2fr)}.display-player-v17 .display-weather-hero-v16 h1{font-size:clamp(3rem,5vw,6.3rem)}.display-player-v17 .display-weather-hero-v16>span{font-size:clamp(4rem,7vw,8rem)}.display-player-v17 .display-weather-facts-v16{grid-template-columns:repeat(7,minmax(0,1fr));grid-auto-rows:minmax(0,1fr);gap:clamp(.45rem,.7vw,.9rem)}.display-player-v17 .display-weather-facts-v16 span{min-height:0;padding:clamp(.65rem,1vw,1.2rem)}.display-player-v17 .display-weather-facts-v16 small{font-size:var(--display-fs-xs)}.display-player-v17 .display-weather-facts-v16 strong{font-size:var(--display-fs-sm)}.display-player-v17 .display-hourly-grid-v16 article,.display-player-v17 .display-forecast-row-v16 article{padding:clamp(.55rem,.9vw,1rem)}.display-player-v17 .display-hourly-grid-v16 time,.display-player-v17 .display-hourly-grid-v16 strong,.display-player-v17 .display-forecast-row-v16 strong{font-size:var(--display-fs-sm)}.display-player-v17 .display-hourly-grid-v16 span,.display-player-v17 .display-forecast-row-v16 span{font-size:clamp(1.8rem,2.7vw,3.7rem)}.display-player-v17 .display-hourly-grid-v16 small,.display-player-v17 .display-forecast-row-v16 small{font-size:var(--display-fs-xs)}.display-player-v17 .display-air-v16{grid-template-columns:minmax(300px,.72fr) minmax(0,2.1fr);gap:clamp(.7rem,1.1vw,1.4rem)}.display-player-v17 .display-aqi-card span{font-size:var(--display-fs-sm)}.display-player-v17 .display-aqi-card strong{font-size:clamp(5rem,10vw,12rem)}.display-player-v17 .display-aqi-card h1{font-size:var(--display-fs-lg)}.display-player-v17 .display-aqi-card small{font-size:var(--display-fs-md)}.display-player-v17 .display-air-content-v16{grid-template-rows:repeat(3,minmax(0,1fr));gap:clamp(.6rem,1vw,1.1rem)}.display-player-v17 .display-air-content-v16 h2{font-size:var(--display-fs-md)}.display-player-v17 .display-pollutant-grid-v16 article,.display-player-v17 .display-pollen-grid-v16 article{min-height:0;padding:clamp(.6rem,1vw,1.2rem)}.display-player-v17 .display-pollutant-grid-v16 img,.display-player-v17 .display-pollen-grid-v16 img{width:clamp(42px,4vw,78px);height:clamp(42px,4vw,78px)}.display-player-v17 .display-pollutant-grid-v16 span,.display-player-v17 .display-pollen-grid-v16 span{font-size:var(--display-fs-xs)}.display-player-v17 .display-pollutant-grid-v16 strong,.display-player-v17 .display-pollen-grid-v16 strong{font-size:var(--display-fs-md)}.display-player-v17 .display-air-forecast-v16 article{padding:clamp(.65rem,1vw,1.15rem)}.display-player-v17 .display-air-forecast-v16 strong{font-size:var(--display-fs-md)}.display-player-v17 .display-presence-row,.display-player-v17 .display-map-member{min-height:clamp(78px,8vh,120px);padding:clamp(.7rem,1.1vw,1.25rem)}.display-player-v17 .display-member-photo{width:clamp(56px,4vw,90px);height:clamp(56px,4vw,90px)}.display-player-v17 .display-presence-row strong,.display-player-v17 .display-map-member strong{font-size:var(--display-fs-sm)}.display-player-v17 .display-presence-row small,.display-player-v17 .display-map-member small,.display-player-v17 .display-map-member em{font-size:var(--display-fs-xs)}.display-player-v17 .display-waste-list article{min-height:clamp(78px,9vh,126px)}.display-player-v17 .display-waste-list img{width:clamp(58px,5vw,92px);height:clamp(58px,5vw,92px)}.display-player-v17 .display-waste-list strong{font-size:var(--display-fs-md)}.display-player-v17 .display-waste-list span{font-size:var(--display-fs-sm)}
.display-shopping-board{height:100%;display:grid;grid-template-rows:auto 1fr;gap:clamp(.8rem,1.2vw,1.4rem);padding:clamp(1rem,1.8vw,2rem)}.display-shopping-header{display:flex;justify-content:space-between;align-items:center;padding:clamp(1rem,1.6vw,1.8rem);border-radius:24px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12)}.display-shopping-header p,.display-shopping-header span{font-size:var(--display-fs-sm);color:#b9c7dc}.display-shopping-header h1{font-size:var(--display-fs-lg);margin:.2rem 0}.display-shopping-counters{text-align:right}.display-shopping-counters b{display:block;color:#ff8b8b;font-size:clamp(3.5rem,6vw,7rem);line-height:.9}.display-shopping-counters span,.display-shopping-counters strong{display:block;font-size:var(--display-fs-sm);margin-top:.35rem}.display-shopping-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:minmax(0,1fr);gap:clamp(.55rem,.9vw,1rem);overflow:hidden}.display-shopping-grid article{display:grid;grid-template-columns:clamp(58px,5vw,94px) 1fr auto;align-items:center;gap:clamp(.6rem,1vw,1.1rem);padding:clamp(.7rem,1.1vw,1.25rem);border:2px solid;border-radius:22px}.display-shopping-grid article.is-open{border-color:#ef7474;background:rgba(146,31,31,.24)}.display-shopping-grid article.is-purchased{border-color:#42bf7c;background:rgba(19,113,64,.28)}.display-shopping-grid img{width:clamp(58px,5vw,94px);height:clamp(58px,5vw,94px);object-fit:cover;border-radius:20px}.display-shopping-grid strong{display:block;font-size:var(--display-fs-md)}.display-shopping-grid span{display:block;margin-top:.25rem;font-size:var(--display-fs-sm)}.display-shopping-grid b{font-size:clamp(2rem,3vw,4rem)}.display-shopping-empty{grid-column:1/-1;display:grid;place-items:center;font-size:var(--display-fs-lg);color:#b9c7dc}.display-overview-footer-v16{grid-template-columns:repeat(3,minmax(0,1fr))}

@media(max-width:1050px){.shopping-catalog-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.shopping-items-grid{grid-template-columns:1fr}.shopping-search-row{grid-template-columns:1fr}.display-shopping-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.display-player-v17 .display-weather-facts-v16{grid-template-columns:repeat(5,minmax(0,1fr))}}
@media(max-width:700px){.shopping-stats{grid-template-columns:1fr 1fr 1fr}.shopping-catalog-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.shopping-product-card{min-height:145px}.shopping-list-item{grid-template-columns:48px 58px minmax(0,1fr) auto}.shopping-list-item>img{width:54px;height:54px}.shopping-item-quantity{grid-column:2/-1;width:100%}.shopping-item-quantity input,.shopping-item-quantity select{flex:1}.shopping-delete{position:absolute;right:.45rem;top:.45rem}.shopping-week-badge{min-width:0;text-align:left}.shopping-hero .section-heading{align-items:flex-start}.shopping-action-row{align-items:flex-start;flex-direction:column}}

/* 1.7: family information settings, WLAN presence and prominent waste alerts */
.family-settings-grid-v17 .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.settings-status-row-v17{display:flex;gap:1rem;flex-wrap:wrap;margin-top:1rem;padding:1rem;border-radius:14px;background:var(--surface-soft)}.wifi-network-grid-v17{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem;margin-top:1rem}.wifi-network-grid-v17 article{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.wifi-network-grid-v17 strong,.wifi-network-grid-v17 span,.wifi-network-grid-v17 small{display:block}.wifi-network-grid-v17 span{margin:.25rem 0}.wifi-network-grid-v17 small{color:var(--muted)}
.display-player-v17 .display-waste-board{height:100%;display:grid;grid-template-rows:auto auto 1fr;gap:clamp(.65rem,1vw,1.2rem)}.display-waste-alert{display:flex;align-items:center;gap:clamp(1rem,2vw,2.5rem);padding:clamp(.8rem,1.3vw,1.5rem);border:3px solid;border-radius:24px}.display-waste-alert>b{font-size:clamp(2rem,3.4vw,4.6rem);text-transform:uppercase}.display-waste-alert>div{display:flex;gap:1rem;flex:1}.display-waste-alert article{display:flex;align-items:center;gap:.8rem;flex:1}.display-waste-alert img{width:clamp(64px,6vw,110px);height:clamp(64px,6vw,110px)}.display-waste-alert strong{font-size:var(--display-fs-md)}.display-waste-alert span{font-size:var(--display-fs-sm)}.display-waste-alert.is-today{background:rgba(185,28,28,.42);border-color:#ff5c5c;animation:wasteTodayPulse 1.2s infinite}.display-waste-alert.is-tomorrow{background:rgba(194,92,0,.38);border-color:#ffb347;animation:wasteTomorrowPulse 1.8s infinite}.display-waste-list article.is-today{border-color:#ff5c5c!important;background:rgba(185,28,28,.3)}.display-waste-list article.is-tomorrow{border-color:#ffb347!important;background:rgba(194,92,0,.22)}@keyframes wasteTodayPulse{0%,100%{box-shadow:0 0 0 0 rgba(255,75,75,.15)}50%{box-shadow:0 0 0 12px rgba(255,75,75,.22)}}@keyframes wasteTomorrowPulse{0%,100%{opacity:1}50%{opacity:.72}}
@media(max-width:760px){.family-settings-grid-v17 .form-grid,.wifi-network-grid-v17{grid-template-columns:1fr}.family-settings-grid-v17 .form-span-2{grid-column:auto}}
.shopping-archive-grid{display:grid;gap:.8rem}.shopping-archive-grid details{border:1px solid var(--border);border-radius:16px;background:var(--surface);overflow:hidden}.shopping-archive-grid summary{display:flex;justify-content:space-between;gap:1rem;padding:1rem 1.2rem;cursor:pointer}.shopping-archive-grid summary span{color:var(--muted)}.shopping-archive-grid details>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.6rem;padding:0 1rem 1rem}.shopping-archive-grid article{display:grid;grid-template-columns:42px 1fr auto;gap:.6rem;align-items:center;padding:.65rem;border-radius:12px;background:var(--surface-soft)}.shopping-archive-grid article.is-purchased{border-left:5px solid #37a96b}.shopping-archive-grid article.is-open{border-left:5px solid #d54d4d}.shopping-archive-grid img{width:42px;height:42px;border-radius:10px}.shopping-archive-grid span strong,.shopping-archive-grid span small{display:block}@media(max-width:800px){.shopping-archive-grid details>div{grid-template-columns:1fr}}
.shopping-product-card i{position:absolute;left:.55rem;top:.45rem;font-size:1.5rem;font-style:normal;color:#a77700;z-index:2}.shopping-product-card.is-favorite{border-color:#d8aa34;box-shadow:0 0 0 2px rgba(216,170,52,.14)}

/* FHAID 1.8 — readable display, stable clock and collision-free cards */
.display-player-v18{
  --display-fs-xs:clamp(.84rem,.82vw,1.16rem);
  --display-fs-sm:clamp(1rem,1.02vw,1.42rem);
  --display-fs-md:clamp(1.18rem,1.32vw,1.85rem);
  --display-fs-lg:clamp(1.75rem,2.4vw,3.5rem);
  grid-template-rows:minmax(64px,7.4vh) minmax(0,1fr) 18px;
}
.display-player-v18 .display-topbar{
  border-bottom:0!important;box-shadow:none!important;padding-bottom:clamp(.5rem,.8vh,.85rem)!important;
}
.display-player-v18 .display-stage,.display-player-v18 .display-screen{border-top:0!important;box-shadow:none!important}
.display-player-v18 .display-stage::before,.display-player-v18 .display-screen::before{display:none!important}
.display-player-v18 .display-topbar-right{gap:clamp(.7rem,1.2vw,1.4rem)}
.display-player-v18 [data-display-clock]{display:flex;align-items:baseline;justify-content:flex-end;white-space:nowrap;line-height:1}
.display-player-v18 [data-display-clock-date]{display:inline-block}
.display-player-v18 [data-display-clock-time]{display:inline-block;width:8ch;text-align:left;font-variant-numeric:tabular-nums lining-nums;font-feature-settings:"tnum" 1,"lnum" 1;letter-spacing:.01em}
.display-player-v18 .display-clock-separator{flex:0 0 auto}
.display-player-v18 .display-screen{padding-top:clamp(.45rem,.8vh,.8rem)!important}

/* Overview */
.display-player-v18 .display-overview-v16{gap:clamp(.75rem,1vw,1.15rem);grid-template-columns:minmax(0,1.35fr) minmax(360px,.9fr) minmax(330px,.78fr)}
.display-player-v18 .display-overview-v16>article{padding:clamp(1rem,1.25vw,1.55rem)!important}
.display-player-v18 .display-overview-family-v16{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:clamp(.7rem,1vh,1rem);overflow:hidden}
.display-player-v18 .display-overview-family-v16>header{min-height:clamp(58px,7vh,88px);align-items:flex-start;gap:1rem;margin:0!important;padding:0 0 .35rem!important}
.display-player-v18 .display-overview-family-v16>header h2{font-size:var(--display-fs-md);line-height:1.1;margin:.2rem 0 0}
.display-player-v18 .display-overview-family-v16>header span{font-size:var(--display-fs-xs)}
.display-player-v18 .display-presence-list{gap:clamp(.55rem,.8vh,.9rem);padding:0 .25rem .25rem 0}
.display-player-v18 .display-presence-row{grid-template-columns:clamp(66px,4.8vw,94px) minmax(0,1fr) minmax(104px,auto);gap:clamp(.7rem,1vw,1.1rem);min-height:clamp(92px,10vh,135px);padding:clamp(.8rem,1.1vw,1.3rem)}
.display-player-v18 .display-presence-row .display-member-photo{width:clamp(66px,4.8vw,94px)!important;height:clamp(66px,4.8vw,94px)!important}
.display-player-v18 .display-presence-row strong{font-size:var(--display-fs-md)!important;line-height:1.15}
.display-player-v18 .display-presence-row small,.display-player-v18 .display-presence-row em{font-size:var(--display-fs-xs)!important;line-height:1.3;white-space:normal}
.display-player-v18 .display-family-activity-v16{min-height:clamp(52px,6.5vh,88px);margin:0!important;padding:clamp(.65rem,.9vw,1rem)!important;border-top:1px solid rgba(255,255,255,.12);overflow:hidden}
.display-player-v18 .display-family-activity-v16 p{margin:0;line-height:1.35;font-size:var(--display-fs-xs)}
.display-player-v18 .display-overview-empty{font-size:var(--display-fs-xs);line-height:1.45;padding:.45rem}
.display-player-v18 .display-overview-information-v16 h2{font-size:var(--display-fs-md)}
.display-player-v18 .display-overview-information-v16 strong{font-size:var(--display-fs-sm)}
.display-player-v18 .display-overview-information-v16 p,.display-player-v18 .display-overview-information-v16 time,.display-player-v18 .display-overview-information-v16 small{font-size:var(--display-fs-xs);line-height:1.35}

/* Live map */
.display-player-v18 .display-live-map-board{grid-template-columns:minmax(0,1fr) minmax(390px,31%)}
.display-player-v18 .display-live-map-sidebar{padding:clamp(1rem,1.35vw,1.7rem)}
.display-player-v18 .display-live-map-sidebar h1{font-size:var(--display-fs-lg)}
.display-player-v18 .display-live-map-members{gap:clamp(.7rem,1vh,1.1rem)}
.display-player-v18 .display-map-member{grid-template-columns:clamp(70px,5vw,100px) minmax(0,1fr) minmax(72px,auto);gap:clamp(.75rem,1vw,1.15rem);min-height:clamp(108px,12vh,155px);padding:clamp(.85rem,1.15vw,1.35rem)}
.display-player-v18 .display-map-member .display-member-photo{width:clamp(70px,5vw,100px)!important;height:clamp(70px,5vw,100px)!important}
.display-player-v18 .display-map-member strong{font-size:var(--display-fs-md)!important;line-height:1.1}
.display-player-v18 .display-map-member em{font-size:var(--display-fs-sm)!important;margin:.25rem 0}
.display-player-v18 .display-map-member small{font-size:var(--display-fs-xs)!important;line-height:1.35}
.display-player-v18 .display-map-battery{font-size:var(--display-fs-sm)!important;font-weight:900;color:#e8f7bd!important;text-align:right}
.display-player-v18 .display-map-marker>span{width:clamp(56px,4vw,82px);height:clamp(56px,4vw,82px);font-size:var(--display-fs-sm)}

/* Weather */
.display-player-v18 .display-weather-v16{grid-template-rows:minmax(0,1.55fr) minmax(0,.92fr) minmax(0,.72fr)!important;gap:clamp(.75rem,1.1vh,1.15rem)!important;padding:clamp(.85rem,1.15vw,1.35rem)!important}
.display-player-v18 .display-weather-current-v16{grid-template-columns:minmax(360px,.85fr) minmax(0,2.35fr);gap:clamp(.8rem,1.15vw,1.3rem)}
.display-player-v18 .display-weather-hero-v16{padding:clamp(1rem,1.5vw,1.8rem)}
.display-player-v18 .display-weather-hero-v16>span{font-size:clamp(5rem,7.5vw,9rem)!important}
.display-player-v18 .display-weather-hero-v16 h1{font-size:clamp(3.8rem,5.3vw,6.7rem)!important}
.display-player-v18 .display-weather-hero-v16 h2{font-size:var(--display-fs-md)!important;line-height:1.15}
.display-player-v18 .display-weather-hero-v16 p{font-size:var(--display-fs-sm)!important}
.display-player-v18 .display-weather-facts-v16{grid-template-columns:repeat(7,minmax(0,1fr));gap:clamp(.55rem,.75vw,.9rem)}
.display-player-v18 .display-weather-facts-v16 span{display:flex;flex-direction:column;justify-content:center;min-height:clamp(88px,10vh,132px);padding:clamp(.75rem,1vw,1.2rem)!important;overflow:visible}
.display-player-v18 .display-weather-facts-v16 small{font-size:var(--display-fs-xs)!important;white-space:normal;overflow:visible;text-overflow:clip;line-height:1.18}
.display-player-v18 .display-weather-facts-v16 strong{font-size:var(--display-fs-sm)!important;margin-top:.4rem;white-space:normal;line-height:1.15}
.display-player-v18 .display-weather-section-title{margin:0 0 .45rem!important}
.display-player-v18 .display-weather-section-title h2{font-size:var(--display-fs-sm)!important}
.display-player-v18 .display-weather-section-title span{font-size:var(--display-fs-xs)!important}
.display-player-v18 .display-hourly-grid-v16,.display-player-v18 .display-forecast-row-v16{gap:clamp(.4rem,.55vw,.75rem)}
.display-player-v18 .display-hourly-grid-v16 article{min-height:clamp(126px,15vh,184px);padding:clamp(.6rem,.75vw,.95rem)!important}
.display-player-v18 .display-forecast-row-v16 article{min-height:clamp(88px,10vh,128px);padding:clamp(.55rem,.75vw,.9rem)!important}
.display-player-v18 .display-hourly-grid-v16 time,.display-player-v18 .display-hourly-grid-v16 strong,.display-player-v18 .display-forecast-row-v16 strong{font-size:var(--display-fs-sm)!important}
.display-player-v18 .display-hourly-grid-v16 span{font-size:clamp(2.2rem,3vw,4.1rem)!important}
.display-player-v18 .display-forecast-row-v16 span{font-size:clamp(1.8rem,2.4vw,3.3rem)!important}
.display-player-v18 .display-hourly-grid-v16 small,.display-player-v18 .display-forecast-row-v16 small,.display-player-v18 .display-forecast-row-v16 time{font-size:var(--display-fs-xs)!important;line-height:1.2}

/* Air and pollen */
.display-player-v18 .display-air-v16{grid-template-columns:minmax(360px,.78fr) minmax(0,2.2fr);gap:clamp(.85rem,1.2vw,1.4rem)}
.display-player-v18 .display-aqi-card{padding:clamp(1.2rem,1.8vw,2.2rem)}
.display-player-v18 .display-aqi-card span{font-size:var(--display-fs-sm)!important;text-align:center;line-height:1.3}
.display-player-v18 .display-aqi-card strong{font-size:clamp(6.5rem,11vw,13.5rem)!important;line-height:.9;margin:.55rem 0}
.display-player-v18 .display-aqi-card h1{font-size:clamp(2.1rem,3.1vw,4.4rem)!important;line-height:1.05;text-align:center}
.display-player-v18 .display-aqi-card small{font-size:var(--display-fs-md)!important}
.display-player-v18 .display-air-content-v16{grid-template-rows:repeat(3,minmax(0,1fr));gap:clamp(.75rem,1.05vh,1.15rem)}
.display-player-v18 .display-air-content-v16 h2{font-size:var(--display-fs-md)!important;margin:0 0 .5rem}
.display-player-v18 .display-pollutant-grid-v16 article,.display-player-v18 .display-pollen-grid-v16 article{display:grid!important;grid-template-columns:clamp(62px,4.2vw,88px) minmax(0,1fr)!important;align-items:center;gap:clamp(.55rem,.75vw,.9rem);min-height:clamp(104px,12vh,148px);padding:clamp(.75rem,1vw,1.2rem)!important;overflow:hidden}
.display-player-v18 .display-pollutant-grid-v16 img,.display-player-v18 .display-pollen-grid-v16 img{position:static!important;width:clamp(62px,4.2vw,88px)!important;height:clamp(62px,4.2vw,88px)!important;object-fit:contain;grid-row:1/span 1}
.display-player-v18 .display-pollutant-grid-v16 article>div,.display-player-v18 .display-pollen-grid-v16 article>div{min-width:0;display:grid;align-content:center}
.display-player-v18 .display-pollutant-grid-v16 span,.display-player-v18 .display-pollen-grid-v16 span{font-size:var(--display-fs-xs)!important;line-height:1.15;white-space:normal}
.display-player-v18 .display-pollutant-grid-v16 strong,.display-player-v18 .display-pollen-grid-v16 strong{display:block;font-size:var(--display-fs-md)!important;line-height:1.05;margin:.15rem 0;white-space:nowrap}
.display-player-v18 .display-pollutant-grid-v16 small,.display-player-v18 .display-pollen-grid-v16 small,.display-player-v18 .display-pollutant-grid-v16 em,.display-player-v18 .display-pollen-grid-v16 em{font-size:var(--display-fs-xs)!important;line-height:1.15}
.display-player-v18 .display-air-forecast-v16 article{min-height:clamp(88px,10vh,126px);padding:clamp(.65rem,.9vw,1.05rem)!important}
.display-player-v18 .display-air-forecast-v16 time,.display-player-v18 .display-air-forecast-v16 span,.display-player-v18 .display-air-forecast-v16 small{font-size:var(--display-fs-xs)!important}
.display-player-v18 .display-air-forecast-v16 strong{font-size:var(--display-fs-md)!important}

/* Waste */
.display-player-v18 .display-waste-board{padding:clamp(1rem,1.45vw,1.75rem);gap:clamp(.8rem,1.1vh,1.2rem)}
.display-player-v18 .display-board-title h1{font-size:clamp(3rem,4.7vw,6rem);line-height:1}
.display-player-v18 .display-waste-list{gap:clamp(.55rem,.8vh,.9rem)}
.display-player-v18 .display-waste-list article{grid-template-columns:clamp(78px,5.4vw,108px) minmax(0,1fr)!important;gap:clamp(.9rem,1.2vw,1.4rem)!important;min-height:clamp(100px,11.5vh,150px)!important;padding:clamp(.75rem,1vw,1.15rem)!important;overflow:hidden}
.display-player-v18 .display-waste-list img{width:clamp(72px,5vw,102px)!important;height:clamp(72px,5vw,102px)!important;object-fit:contain;position:static!important}
.display-player-v18 .display-waste-list strong{font-size:var(--display-fs-md)!important;line-height:1.15;white-space:normal}
.display-player-v18 .display-waste-list span{font-size:var(--display-fs-sm)!important;line-height:1.25;margin-top:.25rem}
.display-player-v18 .display-waste-alert.is-tomorrow{background:rgba(185,28,28,.42)!important;border-color:#ff5c5c!important;animation:wasteTodayPulse 1.25s infinite!important}
.display-player-v18 .display-waste-list article.is-tomorrow{border-color:#ff5c5c!important;background:rgba(185,28,28,.3)!important;animation:wasteTomorrowPulse 1.25s infinite}

/* Settings diagnostics */
.source-test-actions-v18{display:flex;flex-wrap:wrap;gap:.65rem;align-items:center;margin-top:.35rem}
.source-test-result-v18{display:grid;gap:.45rem;margin-top:.75rem;padding:.85rem 1rem;border:1px solid var(--border);border-radius:14px;background:var(--surface-soft)}
.source-test-result-v18.is-ok{border-left:6px solid #28a465}.source-test-result-v18.is-error{border-left:6px solid #c43f3f}
.source-test-result-v18 strong,.source-test-result-v18 span,.source-test-result-v18 small{display:block}.source-test-result-v18 small{color:var(--muted);overflow-wrap:anywhere}
.source-preview-v18{display:grid;gap:.45rem;margin:.5rem 0 0;padding:0;list-style:none}.source-preview-v18 li{padding:.55rem .7rem;border-radius:10px;background:var(--surface)}
.wifi-diagnostics-v18{display:grid;gap:.65rem;margin-top:1rem}.wifi-diagnostics-v18 article{display:grid;grid-template-columns:minmax(160px,.75fr) minmax(0,1.25fr);gap:.75rem;padding:.85rem 1rem;border:1px solid var(--border);border-radius:14px;background:var(--surface-soft)}
.wifi-diagnostics-v18 strong,.wifi-diagnostics-v18 span,.wifi-diagnostics-v18 small{display:block}.wifi-diagnostics-v18 small{color:var(--muted)}

@media(max-width:1200px){
 .display-player-v18 .display-overview-v16{grid-template-columns:minmax(0,1.2fr) minmax(320px,.8fr);grid-template-rows:minmax(0,1fr) minmax(180px,.35fr)}
 .display-player-v18 .display-overview-information-v16{grid-column:1/-1;grid-template-columns:1fr 1fr}
 .display-player-v18 .display-weather-facts-v16{grid-template-columns:repeat(5,minmax(0,1fr))}
}


/* FHAID 1.9: Einkaufsliste, Informationsquellen und Display-Vollbild */
.shopping-product-card[hidden], [data-shopping-product][hidden] { display: none !important; }
.shopping-product-card { position: relative; cursor: default; }
.shopping-product-card .shopping-favorite-button,
.shopping-product-card .shopping-quick-add { appearance:none; border:0; display:grid; place-items:center; cursor:pointer; z-index:2; }
.shopping-product-card .shopping-favorite-button { position:absolute; inset:10px auto auto 10px; background:transparent; font-size:1.25rem; color:#7c6b42; }
.shopping-product-card .shopping-quick-add { position:absolute; inset:8px 8px auto auto; width:34px; height:34px; border-radius:50%; background:#2563eb; color:#fff; font-size:1.4rem; font-weight:800; box-shadow:0 5px 14px rgba(37,99,235,.25); }
.shopping-product-card.is-adding { opacity:.65; }
.shopping-product-card.is-added { outline:3px solid #22c55e; transform:translateY(-2px); }
.shopping-catalog-empty { margin-top:1rem; }
.information-settings-form-v19 { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px; }
.regional-settings-row-v19 { grid-column:1/-1; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; }
.regional-settings-row-v19 label, .source-card-v19>label { display:grid; gap:8px; min-width:0; }
.regional-settings-row-v19 input,.regional-settings-row-v19 select,.source-card-v19 input { width:100%; min-width:0; }
.automatic-source-row-v19,.information-save-v19 { grid-column:1/-1; }
.source-card-v19 { min-width:0; display:grid; gap:16px; align-content:start; }
.source-card-v19 .source-test-actions-v18 { display:flex; flex-wrap:wrap; gap:10px; align-items:center; }
.source-card-v19 .display-source-status { grid-template-columns:1fr; gap:8px; }
.display-fullscreen-prompt.needs-user-action { inset:0; width:100%; height:100%; border-radius:0; background:rgba(10,15,28,.90); display:grid; place-content:center; text-align:center; z-index:9999; }
.display-fullscreen-prompt.needs-user-action strong { font-size:clamp(2rem,5vw,5rem); }
.display-fullscreen-prompt.needs-user-action small { font-size:clamp(1rem,2vw,2rem); }
@media (max-width:900px){.information-settings-form-v19,.regional-settings-row-v19{grid-template-columns:1fr}.source-card-v19,.automatic-source-row-v19,.information-save-v19{grid-column:1}}

/* FHAID 2.1 — klare Bedienung und eine gemeinsame PWA */
.display-fullscreen-prompt,.display-fullscreen-prompt.needs-user-action{display:none!important;visibility:hidden!important;pointer-events:none!important;width:0!important;height:0!important;inset:auto!important}
.display-player-v20{width:100vw;max-width:none!important;margin:0!important;padding:0!important;overflow:hidden}
.display-player-v20 .display-stage{width:100%!important;margin:0!important}

/* Einkaufsliste: genau eine Kauf-Schaltfläche, Favorit und automatische Menge */
.shopping-list-item{grid-template-columns:58px 68px minmax(0,1fr) minmax(210px,auto) 38px;gap:.8rem}
.shopping-buy-toggle{display:grid;place-items:center;border:2px solid #d34b4b!important;background:#fff!important;color:#c92f2f!important}
.shopping-buy-toggle span{line-height:1}
.shopping-list-item.is-purchased .shopping-buy-toggle{border-color:#15965c!important;background:#15965c!important;color:#fff!important}
.shopping-item-controls{display:grid;grid-template-columns:minmax(76px,90px) minmax(105px,135px) 42px;align-items:center;gap:.45rem}
.shopping-item-controls input,.shopping-item-controls select{width:100%;height:42px;border:1px solid var(--border);border-radius:11px;background:#fff;padding:.45rem .55rem}
.shopping-list-favorite{display:grid;place-items:center;width:42px;height:42px;border:1px solid #d6b45c;border-radius:11px;background:#fffaf0;color:#a87900;font-size:1.55rem;cursor:pointer}
.shopping-list-favorite.is-active{background:#fff0a6;color:#7a5700;border-color:#c99700}
.shopping-product-card .shopping-favorite-button.is-active{color:#b37a00;text-shadow:0 1px 0 #fff}

/* Mobile hamburger drawer: header-tools becomes the actual panel */
.mobile-menu-toggle span{transition:transform .2s ease,opacity .2s ease}
.mobile-menu-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.mobile-menu-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.mobile-menu-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
@media(max-width:1024px){
  .site-header{position:relative;z-index:1200}
  .header-tools{display:flex!important;position:fixed!important;z-index:1210;top:0;right:0;width:min(390px,92vw)!important;height:100dvh;flex-direction:column!important;align-items:stretch!important;justify-content:flex-start!important;gap:14px!important;padding:82px 18px 22px;background:#fff;box-shadow:-22px 0 55px rgba(15,23,42,.25);transform:translateX(105%);transition:transform .22s ease;overflow-y:auto}
  .header-tools.is-open{transform:translateX(0)}
  .header-tools .language-form{width:100%}.header-tools .language-select{width:100%;max-width:none}
  .header-tools .header-actions{display:grid!important;grid-template-columns:1fr!important;gap:8px!important;width:100%;overflow:visible!important;padding:0!important}
  .header-tools .header-actions .button,.header-tools .header-actions form,.header-tools .header-actions form .button{width:100%;min-height:46px}
  .mobile-menu-backdrop{z-index:1205!important}
}

/* Family settings 2.1 */
.family-settings-grid-v19,.section-card{scroll-margin-top:90px}.settings-device-links{display:flex;gap:10px;flex-wrap:wrap}.wifi-network-grid-v17 article{align-items:center;gap:12px}.wifi-network-grid-v17 article>div{min-width:0}.wifi-network-grid-v17 span,.wifi-network-grid-v17 small{display:block;overflow-wrap:anywhere}.wifi-diagnostics-v18 article{grid-template-columns:minmax(190px,.7fr) minmax(0,1.3fr);align-items:start}.wifi-diagnostics-v18 .diagnostic-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 16px}.wifi-diagnostics-v18 .diagnostic-meta span{overflow-wrap:anywhere}.page-hero.compact-hero{align-items:flex-start;gap:18px}.page-hero.compact-hero>.button{margin-left:auto;flex:0 0 auto}

@media(max-width:760px){
 .shopping-items-grid{grid-template-columns:1fr}.shopping-list-item{grid-template-columns:58px 66px minmax(0,1fr) 36px;grid-template-areas:"toggle image main delete" "controls controls controls controls";min-height:0;padding:14px}.shopping-buy-toggle{grid-area:toggle}.shopping-list-item>img{grid-area:image}.shopping-item-main{grid-area:main}.shopping-item-controls{grid-area:controls;grid-template-columns:minmax(80px,1fr) minmax(110px,1.2fr) 46px}.shopping-delete{grid-area:delete;align-self:start}.shopping-item-main strong{font-size:1.08rem;overflow-wrap:anywhere}.shopping-item-main em{line-height:1.35}
 .shopping-search-row{grid-template-columns:1fr}.shopping-catalog-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .device-pair-result{flex-direction:column;text-align:center}.wifi-diagnostics-v18 article{grid-template-columns:1fr}.wifi-diagnostics-v18 .diagnostic-meta{grid-template-columns:1fr}.page-hero.compact-hero{display:grid;grid-template-columns:1fr auto}.page-hero.compact-hero>div{min-width:0}
}
.wifi-network-grid-v17 article{display:flex;justify-content:space-between}.wifi-network-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}.wifi-network-actions form{margin:0}.diagnostics-heading-v20{margin-top:26px;padding-top:22px;border-top:1px solid var(--border)}
@media(max-width:650px){.wifi-network-grid-v17 article{align-items:stretch;flex-direction:column}.wifi-network-actions{width:100%}.wifi-network-actions .button,.wifi-network-actions form,.wifi-network-actions form .button{width:100%}}


/* FHAID 2.1 — eine gemeinsame installierbare Website-PWA */
.pwa-install-card{position:fixed;z-index:5000;right:max(18px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom));width:min(520px,calc(100vw - 36px));display:grid;grid-template-columns:64px minmax(0,1fr);gap:14px 16px;align-items:center;padding:18px;border:1px solid #c9d7e6;border-radius:22px;background:#fff;box-shadow:0 22px 70px rgba(15,35,58,.25)}
.pwa-install-card[hidden]{display:none!important}.pwa-install-card img{width:64px;height:64px;border-radius:16px;object-fit:contain}.pwa-install-card strong,.pwa-install-card span{display:block}.pwa-install-card strong{font-size:1.15rem}.pwa-install-card span{margin-top:4px;color:var(--muted);line-height:1.4}.pwa-install-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:10px}
.pwa-network-status{position:fixed;z-index:5100;left:50%;bottom:max(18px,env(safe-area-inset-bottom));transform:translateX(-50%);max-width:min(620px,calc(100vw - 32px));padding:11px 18px;border-radius:999px;background:#172033;color:#fff;font-weight:750;text-align:center;box-shadow:0 12px 38px rgba(15,23,42,.3)}.pwa-network-status[hidden]{display:none!important}.pwa-network-status[data-kind="offline"]{background:#9b2c2c}.pwa-network-status[data-kind="online"],.pwa-network-status[data-kind="updated"]{background:#14734a}
@media(max-width:600px){.pwa-install-card{grid-template-columns:52px minmax(0,1fr);padding:15px}.pwa-install-card img{width:52px;height:52px}.pwa-install-actions{display:grid;grid-template-columns:1fr 1fr}.pwa-install-actions .button{width:100%}}


/* FHAID 2.2 — Display pairing, PWA presence and readable spacing */
.display-player-v20 .display-overview-v16{gap:clamp(18px,1.35vw,30px)!important;padding:clamp(10px,.9vw,18px)!important;box-sizing:border-box}
.display-player-v20 .display-overview-v16>article{margin:0!important;min-width:0}
.display-player-v20 .display-overview-primary-v16,.display-player-v20 .display-overview-family-v16,.display-player-v20 .display-overview-information-v16{padding:clamp(18px,1.4vw,30px)!important}
.display-player-v20 .display-overview-columns-v16{gap:clamp(16px,1.2vw,26px)!important}
.display-player-v20 .display-overview-family-v16{gap:clamp(14px,1vh,22px)!important}
.display-player-v20 .display-family-activity-v16{margin-top:auto;padding-top:clamp(14px,1.2vh,22px)!important;padding-bottom:clamp(8px,.8vh,16px)!important}
.display-player-v20 .display-overview-information-v16{gap:clamp(16px,1.2vw,26px)!important}
.display-player-v20 .display-presence-row.is-unknown:has(em){border-left-color:#94a3b8}
.display-player-v20 .display-presence-row.is-unknown em{color:#dbeafe}
.pwa-presence-status{position:fixed;z-index:5200;right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));padding:10px 15px;border-radius:999px;background:#1f4f78;color:#fff;font-weight:800;box-shadow:0 10px 28px rgba(15,23,42,.28)}
.pwa-presence-status[hidden]{display:none!important}.pwa-presence-status[data-kind="ok"]{background:#14734a}.pwa-presence-status[data-kind="warning"]{background:#9a6500}.pwa-presence-status[data-kind="error"]{background:#9b2c2c}.pwa-presence-status[data-kind="inactive"]{background:#5f6773}
.display-connect-body{min-height:100dvh}.display-connect-shell{min-height:100dvh;display:grid;place-items:center;padding:clamp(18px,3vw,50px)}
.display-connect-card{width:min(1100px,100%);padding:clamp(22px,3vw,46px)}.display-connect-grid{gap:clamp(24px,4vw,64px)}
.display-connect-qr{min-width:260px;min-height:260px;background:#fff;border-radius:18px;padding:14px;display:grid;place-items:center}
@media(max-width:900px){.display-player-v20 .display-overview-v16{gap:14px!important}.display-connect-grid{grid-template-columns:1fr}.display-connect-qr{margin-inline:auto}}

/* FHAID 2.3 — PWA, mobile navigation, shopping and family settings */
.mobile-login-shortcut{display:none}
.mobile-drawer-head{display:none}
.family-settings-page{gap:28px}
.settings-hero-v23{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding:28px;border:1px solid var(--border);border-radius:20px;background:var(--surface)}
.settings-section-v23{display:grid;gap:24px;padding:28px}
.settings-section-v23 .section-heading{margin-bottom:0}
.information-settings-form-v23{display:grid;gap:24px}
.regional-settings-row-v23{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
.regional-settings-row-v23 label,.source-card-v23 label,.wifi-settings-form-v23 label,.pwa-member-card-v23 label{display:grid;gap:7px;font-weight:700}
.regional-settings-row-v23 select,.regional-settings-row-v23 input,.source-card-v23 input,.wifi-settings-form-v23 input,.wifi-settings-form-v23 select,.pwa-member-card-v23 select{width:100%;min-height:46px;padding:10px 12px;border:1px solid var(--border);border-radius:11px;background:#fff}
.automatic-source-row-v23{justify-self:start}
.source-groups-v23{display:grid;gap:26px}
.source-group-v23{display:grid;gap:16px;padding:22px;border:1px solid var(--border);border-radius:18px;background:var(--surface-soft)}
.source-group-heading h3{margin:0}
.source-card-grid-v23{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.source-card-v23{display:grid;gap:16px;padding:20px;border:1px solid var(--border);border-radius:16px;background:#fff;min-width:0}
.source-card-v23 h4{margin:0;font-size:1.1rem}
.source-test-actions-v23{display:flex;align-items:center;flex-wrap:wrap;gap:10px}
.settings-save-row-v23,.wifi-save-row-v23{display:flex;align-items:center;gap:16px;padding-top:4px}
.wifi-settings-form-v23{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;padding:22px;border:1px solid var(--border);border-radius:18px;background:var(--surface-soft)}
.wifi-settings-form-v23 .checkbox-row{align-self:end;min-height:46px}
.wifi-save-row-v23{grid-column:1/-1}
.wifi-network-grid-v23{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.wifi-network-card-v23{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;padding:20px;border:1px solid var(--border);border-radius:18px;background:#fff}
.wifi-card-main h3{margin:0 0 12px}.wifi-card-main dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 18px;margin:0}.wifi-card-main dl div{min-width:0}.wifi-card-main dt{color:var(--muted);font-size:.8rem}.wifi-card-main dd{margin:2px 0 0;font-weight:750;overflow-wrap:anywhere}
.wifi-network-actions{display:flex;align-items:flex-start;flex-wrap:wrap;gap:8px}.wifi-network-actions form{margin:0}
.pwa-member-grid-v23{display:grid;gap:14px}
.pwa-member-card-v23{display:grid;grid-template-columns:64px minmax(0,1fr) minmax(150px,190px) auto;align-items:center;gap:16px;padding:16px;border:1px solid var(--border);border-radius:18px;background:var(--surface-soft)}
.pwa-member-card-v23>img,.member-initial-placeholder{width:64px;height:64px;border-radius:50%;object-fit:cover;display:grid;place-items:center;background:#dfe7f0;font-weight:900}
.pwa-member-main h3{margin:0}.pwa-member-main p{margin:4px 0;color:var(--muted)}
.live-refresh-badge{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border-radius:999px;background:#effaf4;color:#12623e;font-weight:800}.live-refresh-badge span{width:9px;height:9px;border-radius:50%;background:#1e9a60;box-shadow:0 0 0 4px rgba(30,154,96,.12)}
.device-diagnostics-grid-v23{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.device-diagnostic-card-v23{display:grid;grid-template-columns:64px minmax(0,1fr);gap:16px;padding:18px;border:1px solid var(--border);border-radius:18px;background:#fff}.device-diagnostic-card-v23>img{width:64px;height:64px;border-radius:50%;object-fit:cover}.device-diagnostic-card-v23 h3{margin:0}.device-diagnostic-card-v23 p{margin:4px 0 12px;color:var(--muted)}.device-diagnostic-card-v23 dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 16px;margin:0}.device-diagnostic-card-v23 dt{color:var(--muted);font-size:.78rem}.device-diagnostic-card-v23 dd{margin:2px 0 0;font-weight:700;overflow-wrap:anywhere}.diagnostic-title-row{display:flex;justify-content:space-between;gap:10px;align-items:center}
.diagnostics-error{padding:12px 14px;border-radius:12px;background:#fff2f0;color:#8f1d14}
.pwa-app-page{gap:24px}.pwa-app-hero{padding:28px;border:1px solid var(--border);border-radius:20px;background:#fff}.pwa-install-center{display:grid;gap:22px}.pwa-app-logo{display:flex;align-items:center;gap:20px}.pwa-app-logo img{width:112px;height:112px;border-radius:24px}.pwa-app-logo h2{margin:0}.pwa-app-logo p{margin:8px 0 0;font-weight:800}.pwa-app-logo small{display:block;color:var(--muted);margin-top:4px}.pwa-app-actions{display:flex;flex-wrap:wrap;gap:10px}.pwa-install-help{padding:16px;border:1px solid #bfd4ec;border-radius:14px;background:#eef6ff;color:#164f84}.presence-control-card{display:grid;gap:20px}.presence-status-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.presence-status-grid article{padding:16px;border:1px solid var(--border);border-radius:15px;background:var(--surface-soft)}.presence-status-grid span{display:block;color:var(--muted);font-size:.85rem}.presence-status-grid strong{display:block;margin-top:5px;font-size:1.2rem}.presence-manual-send{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.presence-manual-send p{margin:0;color:var(--muted)}
.shopping-item-controls{grid-template-columns:minmax(100px,130px) minmax(80px,auto) 46px!important}.shopping-quantity-field{display:grid;gap:4px}.shopping-quantity-field span{font-size:.72rem;color:var(--muted);font-weight:700}.shopping-unit-label{display:inline-flex;align-items:center;min-height:42px;padding:0 12px;border:1px solid var(--border);border-radius:11px;background:#fff;color:var(--muted);font-weight:750}

@media(max-width:1024px){
  .mobile-login-shortcut{display:inline-flex;margin-left:auto}
  .mobile-drawer-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:14px;border-bottom:1px solid var(--border)}
  .mobile-drawer-head strong{font-size:1rem}.mobile-drawer-head button{width:42px;height:42px;border:0;border-radius:10px;background:#eef1f4;font-size:1.8rem;cursor:pointer}
  .header-tools{padding:18px!important}
  .header-tools .language-form{margin-top:0}
  .header-tools .header-actions .button,.header-tools .header-actions form .button{min-height:46px!important;padding:10px 14px!important;font-size:.95rem!important}
  .guest-view .header-tools{width:min(330px,88vw)!important}
  .guest-view .header-tools .header-actions{align-content:start!important}
  .guest-view .header-tools .header-actions .button{height:auto!important;min-height:48px!important}
}
@media(max-width:900px){.regional-settings-row-v23,.source-card-grid-v23,.wifi-settings-form-v23,.wifi-network-grid-v23,.device-diagnostics-grid-v23{grid-template-columns:1fr}.wifi-save-row-v23{grid-column:auto}.pwa-member-card-v23{grid-template-columns:56px minmax(0,1fr);align-items:start}.pwa-member-card-v23>img,.pwa-member-card-v23>.member-initial-placeholder{width:56px;height:56px}.pwa-member-card-v23 label,.pwa-member-card-v23 button{grid-column:1/-1}.presence-status-grid{grid-template-columns:1fr}}
@media(max-width:760px){
  .family-member-view .environment-hero .eyebrow,.family-member-view .environment-hero .panel-intro,.family-member-view .shopping-hero .eyebrow,.family-member-view .shopping-hero .panel-intro,.family-member-view .calendar-layout .eyebrow{display:none}
  .family-member-view .environment-hero,.family-member-view .shopping-hero{padding:16px}.family-member-view .environment-hero h1,.family-member-view .shopping-hero h1{font-size:1.45rem}
  .settings-hero-v23,.settings-section-v23,.pwa-app-hero{padding:18px}.settings-hero-v23{display:grid;grid-template-columns:1fr auto}.source-group-v23{padding:14px}.source-card-v23{padding:15px}
  .wifi-network-card-v23{grid-template-columns:1fr}.wifi-card-main dl,.device-diagnostic-card-v23 dl{grid-template-columns:1fr}.wifi-network-actions,.wifi-network-actions .button,.wifi-network-actions form,.wifi-network-actions form .button{width:100%}
  .pwa-app-logo{align-items:flex-start}.pwa-app-logo img{width:78px;height:78px;border-radius:18px}.pwa-app-actions{display:grid;grid-template-columns:1fr}.pwa-app-actions .button{width:100%}
  .shopping-item-controls{grid-template-columns:minmax(100px,1fr) auto 46px!important}.shopping-unit-label{min-width:72px;justify-content:center}
}

/* FHAID 2.3 shopping controls: one quantity field + favorite action */
.shopping-item-controls{grid-template-columns:minmax(100px,150px) 46px!important}
@media(max-width:720px){.shopping-item-controls{grid-template-columns:minmax(110px,1fr) 48px!important}}

@media(max-width:760px){
  .family-member-view main .page-hero .eyebrow,.family-member-view main .page-hero>div>p:not(.eyebrow),.family-member-view main .panel-intro{display:none!important}
  .family-member-view main .page-hero{padding:14px 16px!important;min-height:auto!important}
  .family-member-view main .page-hero h1{font-size:1.35rem!important;margin:0!important;line-height:1.25}
}

/* FHAID 2.4: stable PWA, home connection and precise home position */
.home-connection-card{display:grid;gap:1.25rem}
.home-connection-form{display:grid;grid-template-columns:minmax(220px,1fr) auto;gap:1rem;align-items:end}
.home-connection-form label{display:grid;gap:.45rem}
.home-connection-state{margin:0;padding:.85rem 1rem;border-radius:14px;background:#f3f5f7;font-weight:700}
.home-connection-state.is-home{background:#e7f7ed;color:#166534}
.home-connection-state.is-unknown{background:#fff7e6;color:#8a4b00}
.home-connection-list{display:grid;gap:.75rem}
.home-connection-list article{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem;border:1px solid var(--border-color,#d8dde3);border-radius:16px;background:#fff}
.home-connection-list article div{display:grid;gap:.2rem}
.home-connection-list small{color:var(--muted-color,#69727d)}
.admin-home-connections-v24{margin-top:1.5rem;padding:1.25rem;border:1px solid var(--border-color,#d8dde3);border-radius:18px;display:grid;grid-template-columns:minmax(240px,1fr) auto;gap:1rem;align-items:center;background:#f8fafc}
.home-connection-summary-v24{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:.65rem}
.home-connection-summary-v24>span{display:grid;gap:.15rem;padding:.75rem 1rem;border-radius:14px;background:#fff;border:1px solid var(--border-color,#d8dde3)}
.pwa-config-status-v24{font-weight:700}
.pwa-config-status-v24[data-pending="1"]{color:#9a5b00}
.pwa-config-status-v24[data-pending="0"]{color:#166534}
.place-location-actions{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;padding:.75rem 0}
.place-location-actions small{font-weight:700;color:var(--muted-color,#69727d)}
.family-settings-page .settings-section-v23{margin-top:1.5rem}
.family-settings-page .section-heading.compact{gap:1.25rem;margin-bottom:1.25rem}
.family-settings-page .wifi-settings-form-v23{gap:1.1rem 1.25rem}
.family-settings-page .wifi-network-grid-v23{margin-top:1.25rem;gap:1rem}
.family-settings-page .pwa-member-grid-v23{gap:1rem}
.family-settings-page .device-diagnostics-grid-v23{gap:1rem}
.device-diagnostic-card-v23 dl{gap:.65rem 1rem}
.device-diagnostic-card-v23.is-online{border-color:#86c89e}
.device-diagnostic-card-v23.is-offline{border-color:#d5d9df}
@media (max-width:760px){
  .home-connection-form{grid-template-columns:1fr}
  .admin-home-connections-v24{grid-template-columns:1fr}
  .admin-home-connections-v24 .button{width:100%}
  .place-location-actions{align-items:stretch}
  .place-location-actions .button{width:100%}
}

/* Version 2.5: interactive Familienort map, reliable mobile modal actions and persistent Leaflet display map */
.place-map-field{align-content:start}
.place-map-shell{overflow:hidden;border:1px solid var(--border);border-radius:16px;background:#e8eef4;box-shadow:inset 0 0 0 1px rgba(255,255,255,.55)}
.place-map-canvas{height:clamp(270px,38vh,390px);min-height:270px;width:100%;background:#e8eef4}
.place-map-field>small{display:block;margin-top:8px;color:var(--muted);line-height:1.45}
.place-edit-dialog{width:min(920px,100%)}
.place-edit-dialog>form,.member-edit-dialog>form{display:flex;flex:1 1 auto;min-height:0;flex-direction:column}
.place-edit-dialog .modal-scroll,.member-edit-dialog .modal-scroll{flex:1 1 auto;min-height:0}
.place-edit-dialog .app-modal-footer,.member-edit-dialog .app-modal-footer{position:sticky;bottom:0;z-index:8;flex:0 0 auto;box-shadow:0 -10px 24px rgba(12,24,38,.08)}
.family-place-map-marker{background:transparent!important;border:0!important}
.family-place-map-marker span{display:grid;width:46px;height:46px;place-items:center;border:4px solid #fff;border-radius:50%;background:#1f67c1;color:#fff;box-shadow:0 8px 22px rgba(15,36,64,.32);font-size:1.6rem;font-weight:900}
.place-map-canvas .leaflet-control-attribution{font-size:.68rem}
.display-live-map-canvas.leaflet-container{background:#dce7ef;isolation:isolate}
.display-live-map-canvas .leaflet-pane,.display-live-map-canvas .leaflet-control{z-index:2}
.display-live-map-canvas .leaflet-tile-pane{z-index:1}
.display-live-map-canvas .leaflet-marker-pane{z-index:3}
.display-live-map-canvas .leaflet-control-attribution{padding:3px 7px;border-radius:7px 0 0 0;background:rgba(255,255,255,.88);font-size:.68rem}
.display-leaflet-member-icon,.display-leaflet-home-icon{background:transparent!important;border:0!important}
.display-leaflet-member-icon>span,.display-leaflet-home-icon>span{display:grid;width:68px;height:68px;place-items:center;overflow:hidden;border:5px solid #fff;border-radius:50%;background:#334155;color:#fff;box-shadow:0 8px 24px rgba(5,16,31,.45);font-size:1.55rem;font-weight:900;transition:transform .28s ease,border-color .28s ease}
.display-leaflet-member-icon img{width:100%;height:100%;object-fit:cover}
.display-leaflet-member-icon.is-home>span{border-color:#22c55e}
.display-leaflet-member-icon.is-away>span{border-color:#3b82f6}
.display-leaflet-member-icon.is-unknown>span{border-color:#94a3b8}
.display-leaflet-home-icon>span{border-color:#dcfce7;background:#08783f;color:#fff;font-size:2rem}
.display-live-map-canvas .leaflet-tile{will-change:auto}
@media(max-width:620px){
  .member-edit-dialog,.place-edit-dialog{height:min(94dvh,94vh);max-height:min(94dvh,94vh)}
  .member-edit-dialog .modal-scroll,.place-edit-dialog .modal-scroll{max-height:none;padding-bottom:calc(22px + env(safe-area-inset-bottom))}
  .member-edit-dialog .app-modal-footer,.place-edit-dialog .app-modal-footer{padding-bottom:calc(14px + env(safe-area-inset-bottom));background:#fff}
  .member-edit-dialog .app-modal-footer .button,.place-edit-dialog .app-modal-footer .button{min-height:50px}
  .place-map-canvas{height:300px;min-height:300px}
}



/* FHAID 2.6: reliable Leaflet loading, non-blocking GPS status and readable tablet family cards */
.place-map-canvas,.display-live-map-canvas{position:relative;overflow:hidden}
.place-map-canvas[data-map-state="loading"]::after,.place-map-canvas[data-map-state="error"]::after,
.display-live-map-canvas[data-map-state="loading"]::after,.display-live-map-canvas[data-map-state="error"]::after{
  content:attr(data-map-message);position:absolute;inset:0;z-index:1200;display:grid;place-items:center;padding:1.5rem;
  background:rgba(232,238,244,.94);color:#334155;font-weight:800;text-align:center;pointer-events:none
}
.place-map-canvas[data-map-state="ready"]::after,.display-live-map-canvas[data-map-state="ready"]::after{display:none}
.place-map-canvas.has-tile-error::after,.display-live-map-canvas.has-tile-error::after{content:attr(data-map-error)}
.place-map-canvas{min-height:420px;background:#e8eef4}
.place-map-shell{min-height:420px}
.pwa-presence-status{
  top:calc(env(safe-area-inset-top) + 74px)!important;right:auto!important;bottom:auto!important;left:50%!important;
  max-width:min(92vw,560px);transform:translateX(-50%);white-space:normal;text-align:center;pointer-events:none
}
.display-player-v26 .display-presence-row>div{min-width:0}
.display-player-v26 .display-presence-row strong{max-width:none}
@media (min-width:760px) and (max-width:1400px){
  .display-player-v26 .display-overview-family-v16 .display-presence-list{grid-template-columns:1fr!important;overflow:auto!important}
  .display-player-v26 .display-overview-family-v16 .display-presence-row{
    grid-template-columns:clamp(58px,6vw,82px) minmax(0,1fr)!important;grid-template-rows:auto auto;
    min-height:clamp(84px,11vh,118px);gap:.35rem clamp(.65rem,1vw,1rem)!important
  }
  .display-player-v26 .display-overview-family-v16 .display-presence-row .display-member-photo{grid-column:1;grid-row:1/3}
  .display-player-v26 .display-overview-family-v16 .display-presence-row>div{grid-column:2;grid-row:1}
  .display-player-v26 .display-overview-family-v16 .display-presence-row>em{grid-column:2;grid-row:2;justify-self:start}
  .display-player-v26 .display-overview-family-v16 .display-presence-row strong{
    white-space:normal!important;overflow:visible!important;text-overflow:clip!important;line-height:1.12
  }
}
@media(max-width:760px){
  .place-map-canvas,.place-map-shell{min-height:360px}
  .pwa-presence-status{top:calc(env(safe-area-inset-top) + 82px)!important;font-size:.95rem;border-radius:16px!important}
  .member-edit-dialog .app-modal-footer,.place-edit-dialog .app-modal-footer{z-index:30}
}


/* FHAID 2.7: reliable OSM tiles, readable locality labels and complete tablet family grid */
.display-location-label{color:#bfdbfe!important;font-weight:800;white-space:normal!important;overflow:visible!important;text-overflow:clip!important}
.place-map-canvas.has-tile-error::after,.display-live-map-canvas.has-tile-error::after{
  content:attr(data-map-message)!important;inset:auto 16px 16px 16px!important;display:block!important;max-width:680px;
  padding:.85rem 1rem!important;border:1px solid rgba(148,163,184,.55);border-radius:14px;
  background:rgba(15,23,42,.9)!important;color:#fff!important;text-align:left!important;box-shadow:0 10px 30px rgba(15,23,42,.3)
}
.display-live-map-canvas.has-tile-error{background:linear-gradient(135deg,#dbeafe,#e2e8f0)}
.display-live-map-canvas.has-tile-error .leaflet-marker-pane,.display-live-map-canvas.has-tile-error .leaflet-tooltip-pane{opacity:1}
.display-player-v27 .display-presence-row>div,.display-player-v27 .display-map-member>div{min-width:0}
.display-player-v27 .display-presence-row strong,.display-player-v27 .display-map-member strong{white-space:normal!important;overflow:visible!important;text-overflow:clip!important}
@media (min-width:760px) and (max-width:1400px){
  .display-player-v27 .display-overview-family-v16{grid-template-rows:auto minmax(0,1fr) auto!important}
  .display-player-v27 .display-overview-family-v16 .display-presence-list{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;grid-auto-rows:minmax(82px,auto);gap:clamp(.45rem,.7vw,.75rem)!important;
    align-content:start;overflow:auto!important;padding:0 .2rem .2rem 0!important
  }
  .display-player-v27 .display-overview-family-v16 .display-presence-row{
    grid-template-columns:clamp(48px,5vw,64px) minmax(0,1fr)!important;grid-template-rows:auto auto;
    min-height:82px!important;padding:clamp(.55rem,.75vw,.8rem)!important;gap:.25rem clamp(.5rem,.7vw,.75rem)!important
  }
  .display-player-v27 .display-overview-family-v16 .display-presence-row .display-member-photo{
    grid-column:1;grid-row:1/3;width:clamp(48px,5vw,64px)!important;height:clamp(48px,5vw,64px)!important
  }
  .display-player-v27 .display-overview-family-v16 .display-presence-row>div{grid-column:2;grid-row:1}
  .display-player-v27 .display-overview-family-v16 .display-presence-row>em{grid-column:2;grid-row:2;justify-self:start;font-size:clamp(.72rem,1vw,.95rem)!important}
  .display-player-v27 .display-overview-family-v16 .display-presence-row strong{font-size:clamp(.9rem,1.25vw,1.2rem)!important;line-height:1.08}
  .display-player-v27 .display-overview-family-v16 .display-presence-row small{font-size:clamp(.62rem,.8vw,.78rem)!important;line-height:1.2}
  .display-player-v27 .display-family-activity-v16{max-height:76px;overflow:auto!important;padding:.55rem .7rem!important}
}
@media (max-width:860px){
  .display-player-v27 .display-overview-family-v16 .display-presence-list{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .display-player-v27 .display-overview-family-v16 .display-presence-row{min-width:0}
}

/* FHAID 2.8 — Family and private chat */
.chat-page{gap:18px}.chat-page-hero{align-items:center}.family-chat{display:grid;grid-template-columns:minmax(270px,330px) minmax(0,1fr);height:min(760px,calc(100vh - 235px));min-height:560px;background:#fff;border:1px solid #dbe2ea;border-radius:24px;overflow:hidden;box-shadow:0 18px 45px rgba(30,45,60,.09)}
.family-chat-sidebar{display:flex;flex-direction:column;min-width:0;background:linear-gradient(180deg,#f8fafc 0,#f2f6f9 100%);border-right:1px solid #e1e7ed}.family-chat-sidebar-head{display:flex;align-items:center;justify-content:space-between;padding:18px 18px 12px}.family-chat-sidebar-head>div{display:flex;align-items:center;gap:9px}.chat-status-dot{width:10px;height:10px;border-radius:50%;background:#94a3b8;box-shadow:0 0 0 4px rgba(148,163,184,.16)}.chat-status-dot.is-online{background:#22c55e;box-shadow:0 0 0 4px rgba(34,197,94,.16)}.chat-round-button{display:grid;place-items:center;width:36px;height:36px;border:0;border-radius:50%;background:#246b83;color:#fff;font-size:23px;line-height:1;cursor:pointer;box-shadow:0 7px 16px rgba(36,107,131,.22)}
.family-chat-tabs{display:flex;gap:5px;padding:0 12px 12px;overflow-x:auto;scrollbar-width:none}.family-chat-tabs::-webkit-scrollbar{display:none}.family-chat-tabs button{white-space:nowrap;border:0;border-radius:999px;background:#e8eef2;color:#52616c;padding:8px 11px;font:700 12px/1 inherit;cursor:pointer}.family-chat-tabs button.is-active{background:#246b83;color:#fff}.family-chat-channel-list{flex:1;overflow:auto;padding:0 9px 12px}.chat-channel-item{width:100%;display:grid;grid-template-columns:46px minmax(0,1fr) auto;align-items:center;gap:11px;border:0;border-radius:16px;background:transparent;padding:10px;text-align:left;cursor:pointer;color:#1f2937}.chat-channel-item:hover{background:#e9f1f4}.chat-channel-item.is-active{background:#fff;box-shadow:0 7px 22px rgba(36,65,80,.09)}.chat-channel-icon,.chat-channel-avatar{display:grid;place-items:center;width:46px;height:46px;border-radius:50%;background:linear-gradient(135deg,#dceef3,#edf4f6);font-size:22px;overflow:hidden}.chat-channel-copy{display:flex;min-width:0;flex-direction:column;gap:3px}.chat-channel-copy strong,.chat-channel-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-channel-copy strong{font-size:14px}.chat-channel-copy small{color:#7a8790;font-size:11px}.chat-unread{min-width:21px;height:21px;display:grid;place-items:center;border-radius:999px;background:#e24b4b;color:#fff;font-size:11px;padding:0 5px}.chat-avatar{display:block;width:42px;height:42px;border-radius:50%;object-fit:cover;background:#d8e5ea}.chat-avatar-fallback{display:grid;place-items:center;background:linear-gradient(135deg,#24748b,#58a9b8);color:#fff;font-weight:800}.chat-avatar.is-channel{width:46px;height:46px}.chat-avatar.is-head{width:46px;height:46px}.chat-avatar.is-message{width:34px;height:34px;align-self:flex-end;margin-bottom:19px}
.family-chat-main{display:flex;min-width:0;min-height:0;flex-direction:column;background:linear-gradient(180deg,#fff 0,#f8fafb 100%)}.family-chat-conversation-head{height:72px;display:flex;align-items:center;gap:12px;padding:0 18px;border-bottom:1px solid #e6ebef;background:rgba(255,255,255,.96)}.chat-channel-title{display:flex;min-width:0;flex:1;flex-direction:column}.chat-channel-title strong{font-size:17px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-channel-title small{font-size:11px;color:#7b8790}.chat-live-label{border-radius:999px;background:#eef5f6;color:#4c6972;padding:5px 9px;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.chat-mobile-back{display:none;border:0;background:transparent;font-size:34px;color:#246b83;cursor:pointer}
.family-chat-messages{flex:1;min-height:0;overflow-y:auto;padding:20px clamp(14px,3vw,36px);scroll-behavior:smooth;background-image:radial-gradient(circle at 1px 1px,rgba(74,105,118,.06) 1px,transparent 0);background-size:22px 22px}.chat-message{display:flex;gap:8px;align-items:flex-end;margin:4px 0 14px;max-width:min(78%,720px)}.chat-message.is-mine{margin-left:auto;justify-content:flex-end}.chat-message-content{display:flex;min-width:0;flex-direction:column}.chat-message.is-mine .chat-message-content{align-items:flex-end}.chat-message-sender{padding:0 7px 4px;color:#246b83;font-size:11px}.chat-bubble{max-width:100%;border-radius:18px 18px 18px 5px;background:#fff;border:1px solid #e0e6eb;padding:10px 13px;box-shadow:0 5px 14px rgba(37,58,70,.06);overflow:hidden}.chat-message.is-mine .chat-bubble{background:linear-gradient(135deg,#dff4ed,#d5eee7);border-color:#c0e1d7;border-radius:18px 18px 5px 18px}.chat-bubble>p{margin:0;white-space:normal;overflow-wrap:anywhere;font-size:14px;line-height:1.45}.chat-message-content>time{padding:4px 6px 0;color:#87939b;font-size:9px}.chat-attachment{margin-top:8px}.chat-attachment-image{margin:7px 0 0}.chat-attachment-image img{display:block;max-width:min(420px,100%);max-height:340px;border-radius:12px;object-fit:contain;background:#e7edf0}.chat-attachment-image figcaption,.chat-attachment-media>span{display:block;padding-top:5px;color:#64727a;font-size:9px}.chat-attachment-media video{display:block;max-width:min(420px,100%);max-height:340px;border-radius:12px;background:#111}.chat-attachment-media audio{display:block;width:min(340px,70vw);max-width:100%}.chat-file-card,.chat-location-card{display:flex;align-items:center;gap:11px;min-width:min(320px,60vw);max-width:100%;padding:10px;border-radius:12px;background:rgba(255,255,255,.58);border:1px solid rgba(53,91,105,.16);color:inherit;text-decoration:none}.chat-file-card>span,.chat-location-card>span{display:grid;place-items:center;flex:0 0 42px;height:42px;border-radius:10px;background:#e8eff2;font-size:20px;font-weight:900}.chat-file-card.is-pdf>span{background:#fee2e2;color:#b91c1c;font-size:12px}.chat-file-card>div,.chat-location-card>div{display:flex;min-width:0;flex-direction:column}.chat-file-card strong,.chat-location-card strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.chat-file-card small,.chat-location-card small{color:#667680;font-size:9px}.chat-empty-state{height:100%;display:grid;place-content:center;justify-items:center;gap:8px;color:#849199;text-align:center}.chat-empty-state>div{font-size:50px;filter:grayscale(.2)}.chat-empty-state strong{color:#40515a}.chat-empty-state span{max-width:330px;font-size:12px}.chat-message-loader,.chat-loading-card{display:flex;justify-content:center;align-items:center;gap:6px;padding:30px}.chat-message-loader span,.chat-loading-card span{width:8px;height:8px;border-radius:50%;background:#4a8a9d;animation:chat-pulse 1s infinite alternate}.chat-message-loader span:nth-child(2),.chat-loading-card span:nth-child(2){animation-delay:.18s}.chat-message-loader span:nth-child(3),.chat-loading-card span:nth-child(3){animation-delay:.36s}@keyframes chat-pulse{to{opacity:.25;transform:translateY(-4px)}}
.chat-composer-status{padding:7px 18px;background:#edf6f8;color:#356578;font-size:11px}.chat-composer-status[data-type="error"]{background:#fff0f0;color:#b42323}.chat-composer-status[data-type="recording"]{background:#fff4f4;color:#d12e2e;font-weight:800}.family-chat-composer{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:end;gap:10px;padding:12px 14px calc(12px + env(safe-area-inset-bottom));border-top:1px solid #e3e9ed;background:#fff}.family-chat-composer.is-disabled{opacity:.55;pointer-events:none}.chat-composer-tools{display:flex;align-items:center;gap:2px}.chat-composer-tools button{width:34px;height:34px;border:0;border-radius:50%;background:transparent;font-size:18px;cursor:pointer}.chat-composer-tools button:hover{background:#edf3f5}.chat-composer-tools button.is-recording{background:#fee2e2;animation:chat-record-pulse 1s infinite}@keyframes chat-record-pulse{50%{box-shadow:0 0 0 6px rgba(220,38,38,.12)}}.chat-composer-input-wrap{position:relative;min-width:0;border:1px solid #d5dee4;border-radius:18px;background:#f7f9fa}.chat-composer-input-wrap textarea{display:block;width:100%;min-height:42px;max-height:140px;border:0;outline:0;resize:none;background:transparent;padding:11px 13px;font:inherit;line-height:1.35;box-sizing:border-box}.chat-send-button{display:grid;place-items:center;width:43px;height:43px;border:0;border-radius:50%;background:#246b83;color:#fff;font-size:20px;cursor:pointer;box-shadow:0 7px 16px rgba(36,107,131,.24)}.family-chat-composer.is-sending .chat-send-button{opacity:.5;pointer-events:none}.chat-file-preview{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;margin:0 7px 7px;padding:7px 9px;border-radius:12px;background:#eaf1f3}.chat-file-preview>div{display:flex;min-width:0;flex-direction:column}.chat-file-preview strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.chat-file-preview small{font-size:9px;color:#60717a}.chat-file-preview button{border:0;background:transparent;font-size:20px;cursor:pointer}.chat-emoji-panel{position:absolute;left:0;bottom:calc(100% + 8px);display:grid;grid-template-columns:repeat(7,1fr);gap:3px;width:260px;padding:9px;border:1px solid #dbe3e8;border-radius:16px;background:#fff;box-shadow:0 16px 35px rgba(30,50,60,.18);z-index:20}.chat-emoji-panel[hidden]{display:none}.chat-emoji-panel button{border:0;border-radius:8px;background:transparent;padding:5px;font-size:20px;cursor:pointer}.chat-emoji-panel button:hover{background:#edf3f5}
.chat-retry-card{display:flex;width:100%;flex-direction:column;gap:8px;border:1px solid #efc8c8;border-radius:14px;background:#fff5f5;color:#9f2b2b;padding:16px;cursor:pointer}.chat-retry-card b{color:#246b83}.chat-list-empty{padding:24px 14px;color:#7c8991;text-align:center;font-size:12px}.chat-links-panel{display:grid;gap:15px}.chat-link-form{display:grid;grid-template-columns:minmax(230px,1fr) auto;align-items:end;gap:12px}.chat-link-form label{display:grid;gap:6px}.chat-link-form label>span{font-weight:700;font-size:12px}.chat-family-links{display:grid;gap:9px}.chat-family-link{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid #e1e7eb;border-radius:14px;padding:12px;background:#f9fbfc}.chat-family-link>div:first-child{display:flex;flex-direction:column}.chat-family-link small{font-size:10px;color:#7a8790}.chat-family-link small.is-accepted{color:#16834a}.chat-family-link small.is-pending{color:#ad6b00}.chat-family-link-actions{display:flex;align-items:center;gap:7px}.chat-member-dialog{width:min(560px,calc(100vw - 24px));max-height:min(680px,calc(100vh - 30px))}.chat-member-list{display:grid;gap:7px;padding:8px}.chat-member-list>button{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:11px;border:1px solid #e4e9ed;border-radius:14px;background:#fff;padding:10px;text-align:left;cursor:pointer}.chat-member-list>button:hover{background:#f2f7f8}.chat-member-list>button>span:nth-child(2){display:flex;min-width:0;flex-direction:column}.chat-member-list strong,.chat-member-list small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-member-list small{color:#77858d;font-size:10px}.chat-member-list b{font-size:26px;color:#64808b}
.family-chat-side-tab{position:fixed;right:0;top:54%;z-index:80;display:flex;align-items:center;gap:7px;padding:12px 9px 12px 12px;border-radius:16px 0 0 16px;background:#246b83;color:#fff;text-decoration:none;box-shadow:0 10px 28px rgba(25,63,77,.28);font-weight:800}.family-chat-side-tab span:first-child{font-size:19px}.family-chat-side-tab small{display:none}.family-chat-side-tab:hover{background:#1b566a}
@media(max-width:980px){.family-chat{height:min(720px,calc(100vh - 210px));grid-template-columns:280px minmax(0,1fr)}.chat-composer-tools{display:grid;grid-template-columns:repeat(3,34px)}.chat-message{max-width:88%}}
@media(max-width:799px){.chat-page{margin-left:-2px;margin-right:-2px}.chat-page-hero{display:none}.family-chat{position:relative;display:block;height:calc(100dvh - 112px);min-height:500px;border-radius:18px}.family-chat-sidebar,.family-chat-main{position:absolute;inset:0}.family-chat-sidebar{z-index:3;border:0;transition:transform .22s ease}.family-chat-sidebar.is-collapsed{transform:translateX(-101%)}.family-chat-main{z-index:2}.chat-mobile-back{display:block}.family-chat-conversation-head{height:64px;padding:0 10px}.chat-channel-avatar{width:42px;height:42px}.family-chat-messages{padding:15px 10px}.chat-message{max-width:93%}.family-chat-composer{grid-template-columns:minmax(0,1fr) auto;gap:7px;padding:8px 8px calc(8px + env(safe-area-inset-bottom))}.chat-composer-tools{grid-column:1/-1;display:flex;justify-content:space-around;border-bottom:1px solid #edf1f3;padding-bottom:4px}.chat-composer-input-wrap{grid-column:1}.chat-send-button{grid-column:2}.chat-emoji-panel{left:0;bottom:calc(100% + 6px);width:min(260px,calc(100vw - 30px))}.chat-links-panel{margin-top:12px}.chat-link-form{grid-template-columns:1fr}.chat-family-link{align-items:flex-start;flex-direction:column}.family-chat-side-tab{top:auto;right:12px;bottom:84px;width:52px;height:52px;justify-content:center;padding:0;border-radius:50%;box-shadow:0 9px 28px rgba(25,63,77,.32)}.family-chat-side-tab span:first-child{font-size:22px}.family-chat-side-tab>span:last-child{display:none}}
.chat-settings-form{display:grid;gap:16px}.chat-settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.chat-settings-grid>label:not(.checkbox-row){display:grid;gap:6px}.chat-settings-grid>label>span{font-weight:700;font-size:12px}.chat-settings-grid select{width:100%;border:1px solid #cad5dc;border-radius:10px;background:#fff;padding:10px;font:inherit}.place-map-shell{position:relative}.place-map-retry{position:absolute;left:50%;bottom:18px;z-index:700;transform:translateX(-50%);border:0;border-radius:999px;background:#fff;color:#245f78;padding:10px 16px;font-weight:800;box-shadow:0 8px 24px rgba(19,55,70,.25);cursor:pointer}.place-map-retry[hidden]{display:none}.place-map-canvas[data-map-state="loading"]::after,.place-map-canvas[data-map-state="error"]::after,.place-map-canvas.has-tile-error::after{content:attr(data-map-message);position:absolute;inset:auto 12px 12px 12px;z-index:650;padding:10px 12px;border-radius:12px;background:rgba(255,255,255,.94);color:#3b5260;text-align:center;font-weight:700;box-shadow:0 7px 18px rgba(30,50,60,.15);pointer-events:none}.place-map-canvas[data-map-state="ready"]::after{display:none}
@media(max-width:700px){.chat-settings-grid{grid-template-columns:1fr}}
.display-chat-confirm-page{max-width:720px;margin:0 auto}.display-chat-confirm-card{display:grid;justify-items:center;gap:14px;text-align:center;padding:clamp(28px,6vw,60px)}.display-chat-confirm-icon{display:grid;place-items:center;width:86px;height:86px;border-radius:26px;background:linear-gradient(135deg,#dceef3,#e8f5ee);font-size:42px}.display-chat-confirm-card h1{margin:0}.display-chat-confirm-card p{max-width:520px;margin:0;color:#61717a}.display-chat-confirm-status{min-height:22px;font-weight:800}.display-chat-confirm-status[data-type="error"]{color:#b42323}.display-chat-confirm-status[data-type="success"]{color:#158447}
/* FHAID 2.8 — display chat */
.display-chat-board{height:100%;display:flex;flex-direction:column;gap:clamp(14px,2vh,24px);padding:clamp(24px,3vw,48px)}.display-chat-board>header{display:flex;align-items:flex-end;justify-content:space-between;gap:20px}.display-chat-board>header p{margin:0;color:#73b6c6;text-transform:uppercase;letter-spacing:.14em;font-weight:800}.display-chat-board>header h1{margin:.15em 0 0;font-size:clamp(34px,4.3vw,70px)}.display-chat-board>header>span{border:1px solid rgba(151,203,215,.25);border-radius:999px;background:rgba(25,68,82,.55);padding:10px 16px;color:#bde5eb;font-weight:800}.display-chat-content{flex:1;min-height:0;border:1px solid rgba(162,207,218,.18);border-radius:28px;background:linear-gradient(135deg,rgba(13,33,46,.9),rgba(10,25,36,.82));overflow:hidden;box-shadow:inset 0 1px rgba(255,255,255,.04)}.display-chat-qr-layout{height:100%;display:grid;grid-template-columns:minmax(280px,380px) minmax(0,1fr);align-items:center;gap:clamp(32px,6vw,90px);padding:clamp(30px,5vw,80px)}.display-chat-qr{display:grid;place-items:center;justify-self:center;padding:18px;border-radius:26px;background:#fff;box-shadow:0 22px 55px rgba(0,0,0,.35)}.display-chat-qr img,.display-chat-qr canvas{display:block;max-width:100%;height:auto}.display-chat-qr-layout h2{font-size:clamp(30px,4vw,64px);margin:0 0 18px}.display-chat-qr-layout p{max-width:750px;color:#c1d8df;font-size:clamp(18px,2vw,32px);line-height:1.45}.display-chat-qr-layout small{color:#7298a4;font-size:clamp(13px,1.2vw,20px)}.display-chat-message-list{height:100%;display:flex;flex-direction:column;gap:clamp(12px,1.5vh,22px);overflow:auto;padding:clamp(22px,3vw,44px)}.display-chat-message{display:grid;grid-template-columns:clamp(50px,4vw,78px) minmax(0,1fr);align-items:end;gap:clamp(12px,1.5vw,24px);max-width:88%}.display-chat-avatar{display:grid;place-items:center;width:clamp(50px,4vw,78px);height:clamp(50px,4vw,78px);border-radius:50%;overflow:hidden;background:#356d7d;color:#fff;font-size:clamp(16px,1.6vw,28px);font-weight:900}.display-chat-avatar img{width:100%;height:100%;object-fit:cover}.display-chat-message>div{min-width:0}.display-chat-message header{display:flex;align-items:center;gap:15px;padding:0 12px 5px}.display-chat-message header strong{font-size:clamp(15px,1.35vw,24px);color:#8fd0dc}.display-chat-message header time{color:#6e929c;font-size:clamp(11px,1vw,17px)}.display-chat-message section{display:inline-block;max-width:100%;border-radius:24px 24px 24px 7px;background:rgba(238,248,250,.98);color:#17313c;padding:clamp(12px,1.5vw,22px);box-shadow:0 10px 25px rgba(0,0,0,.16)}.display-chat-message p{margin:0;font-size:clamp(18px,2vw,34px);line-height:1.38;overflow-wrap:anywhere}.display-chat-image,.display-chat-video{display:block;max-width:min(580px,60vw);max-height:36vh;border-radius:16px;object-fit:contain;background:#061018}.display-chat-audio{width:min(480px,55vw)}.display-chat-file,.display-chat-location{display:flex;align-items:center;gap:14px;color:#17313c;text-decoration:none}.display-chat-file>span,.display-chat-location>span{display:grid;place-items:center;width:48px;height:48px;border-radius:12px;background:#dbecef;font-weight:900}.display-chat-empty{height:100%;display:grid;place-content:center;justify-items:center;gap:14px;color:#b6d3da}.display-chat-empty>span{font-size:80px}.display-chat-empty h2{font-size:clamp(24px,3vw,52px)}
@media(max-aspect-ratio:4/3){.display-chat-qr-layout{grid-template-columns:1fr;align-content:center;text-align:center}.display-chat-qr{max-width:320px}.display-chat-message{max-width:96%}}


/* FHAID 2.9: clear chat authors, compact three-tab navigation, polished voice messages and reliable place tiles */
.family-chat-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;overflow:visible}
.family-chat-tabs button{min-width:0;overflow:hidden;text-overflow:ellipsis;text-align:center}
.chat-message.is-mine{flex-direction:row-reverse}
.chat-message.is-mine .chat-avatar.is-message{margin-left:0;margin-right:0}
.chat-message.is-mine .chat-message-sender{text-align:right;color:#23705f}
.chat-message-sender{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:800}
.chat-audio-card{display:flex;align-items:center;gap:12px;width:min(430px,68vw);max-width:100%;padding:12px;border:1px solid rgba(53,91,105,.16);border-radius:16px;background:rgba(255,255,255,.68)}
.chat-audio-icon{display:grid;flex:0 0 44px;width:44px;height:44px;place-items:center;border-radius:50%;background:#246b83;color:#fff;font-size:21px;box-shadow:0 6px 16px rgba(36,107,131,.22)}
.chat-audio-content{display:grid;min-width:0;flex:1;gap:6px}
.chat-audio-content>strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#334155;font-size:12px}
.chat-audio-content>audio{display:block;width:100%;height:40px;min-width:240px}
.chat-audio-content>small{color:#70808a;font-size:10px}
.place-map-canvas.leaflet-container{background:#dce7ef;isolation:auto}
@media(max-width:700px){
  .chat-audio-card{width:min(100%,72vw);padding:10px;gap:9px}
  .chat-audio-icon{flex-basis:38px;width:38px;height:38px;font-size:18px}
  .chat-audio-content>audio{min-width:0;height:38px}
}


/* FHAID 3.1 — stable compact audio messages and separated start-page cards */
.home-hero + .feature-grid{margin-top:clamp(26px,3vw,42px)}
.feature-grid{column-gap:clamp(24px,3vw,38px);row-gap:clamp(24px,3vw,38px)}
.feature-card{min-width:0;box-shadow:0 10px 26px rgba(30,45,62,.055)}

.chat-bubble.is-audio-only{padding:0;border:0;background:transparent;box-shadow:none;overflow:visible}
.chat-audio-message{display:grid;gap:5px;margin-top:0;max-width:100%}
.chat-audio-meta{display:block;max-width:min(350px,70vw);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 8px;color:#6f7f88;font-size:9px}
.fhaid-audio-player{--audio-progress:0%;display:grid;grid-template-columns:42px minmax(110px,1fr) auto;align-items:center;gap:11px;width:min(360px,68vw);max-width:100%;min-height:52px;padding:7px 11px;border:1px solid rgba(51,94,108,.17);border-radius:999px;background:rgba(247,251,252,.96);box-shadow:0 5px 14px rgba(30,60,72,.09)}
.fhaid-audio-player audio{display:none!important}
.fhaid-audio-play{display:grid;place-items:center;width:38px;height:38px;border:0;border-radius:50%;background:#246b83;color:#fff;font:800 16px/1 system-ui,sans-serif;cursor:pointer;box-shadow:0 5px 12px rgba(36,107,131,.2)}
.fhaid-audio-play:focus-visible{outline:3px solid rgba(31,103,193,.25);outline-offset:2px}
.fhaid-audio-range{--audio-progress:0%;width:100%;height:20px;margin:0;padding:0;appearance:none;-webkit-appearance:none;background:transparent;cursor:pointer}
.fhaid-audio-range::-webkit-slider-runnable-track{height:5px;border-radius:999px;background:linear-gradient(90deg,#246b83 0 var(--audio-progress),#cbd8dd var(--audio-progress) 100%)}
.fhaid-audio-range::-moz-range-track{height:5px;border:0;border-radius:999px;background:#cbd8dd}
.fhaid-audio-range::-moz-range-progress{height:5px;border-radius:999px;background:#246b83}
.fhaid-audio-range::-webkit-slider-thumb{width:15px;height:15px;margin-top:-5px;border:3px solid #fff;border-radius:50%;appearance:none;-webkit-appearance:none;background:#246b83;box-shadow:0 1px 5px rgba(0,0,0,.22)}
.fhaid-audio-range::-moz-range-thumb{width:11px;height:11px;border:3px solid #fff;border-radius:50%;background:#246b83;box-shadow:0 1px 5px rgba(0,0,0,.22)}
.fhaid-audio-time{min-width:76px;color:#50616a;font:700 11px/1.1 ui-monospace,SFMono-Regular,Consolas,monospace;text-align:right;white-space:nowrap}
.fhaid-audio-player.has-error{opacity:.58}

.display-chat-message section.is-audio-only{padding:0;background:transparent;box-shadow:none}
.display-chat-message section.is-audio-only .fhaid-audio-player{width:min(500px,52vw);min-height:66px;grid-template-columns:50px minmax(160px,1fr) auto;gap:15px;padding:9px 15px;border-color:rgba(128,190,205,.28);background:rgba(227,243,247,.96);box-shadow:0 8px 20px rgba(0,0,0,.16)}
.display-chat-message section.is-audio-only .fhaid-audio-play{width:46px;height:46px;font-size:19px}
.display-chat-message section.is-audio-only .fhaid-audio-time{min-width:96px;font-size:14px}

@media(max-width:799px){
  .feature-grid{gap:22px}
  .fhaid-audio-player{grid-template-columns:38px minmax(80px,1fr) auto;gap:8px;width:min(100%,76vw);min-height:48px;padding:5px 8px}
  .fhaid-audio-play{width:34px;height:34px;font-size:14px}
  .fhaid-audio-time{min-width:68px;font-size:10px}
  .chat-audio-meta{max-width:76vw;padding-left:6px}
}
@media(max-width:420px){
  .fhaid-audio-player{width:min(100%,78vw);grid-template-columns:36px minmax(58px,1fr) auto;gap:6px}
  .fhaid-audio-time{min-width:62px;font-size:9px}
}

/* FHAID 3.2 — definitive detached-audio player */
.fhaid-audio-player audio{display:none!important;width:0!important;height:0!important;visibility:hidden!important;position:absolute!important;pointer-events:none!important}
.fhaid-audio-player.is-loading .fhaid-audio-play{animation:fhaid-audio-pulse .9s ease-in-out infinite alternate}
.fhaid-audio-player.has-error{opacity:1;border-color:#d28a8a;background:#fff4f4}
.fhaid-audio-player.has-error .fhaid-audio-play{background:#a64242}
@keyframes fhaid-audio-pulse{to{transform:scale(.9);opacity:.72}}

/* FHAID 3.3 – central device/tracking selection on the family member card */
.member-card-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.7rem;margin-top:auto}
.member-card-actions .button{width:100%}
.devices-modal-dialog{width:min(920px,calc(100vw - 2rem))}
.device-list{display:grid;gap:1rem;margin-top:1rem}
.device-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:1rem;align-items:center;padding:1rem;border:1px solid var(--border,#d9e0e8);border-radius:18px;background:#fff}
.device-item.is-source{border-color:#20784a;box-shadow:0 0 0 2px rgba(32,120,74,.12);background:#f5fff9}
.device-item-icon{display:grid;place-items:center;width:52px;height:52px;border-radius:16px;background:#edf4fb;font-size:1.55rem}
.device-item-title{display:flex;flex-wrap:wrap;align-items:center;gap:.55rem}.device-item-title strong{font-size:1.05rem}.device-item-title span{font-size:.8rem;color:#52606f;background:#eef2f5;padding:.18rem .48rem;border-radius:999px}
.device-item-details{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.35rem 1rem;margin:.65rem 0 0}.device-item-details div{display:grid;grid-template-columns:72px minmax(0,1fr);gap:.35rem}.device-item-details dt{color:#667482}.device-item-details dd{margin:0;overflow-wrap:anywhere}
.tracking-source-toggle{display:inline-flex;align-items:center;gap:.55rem;border:1px solid #9ba8b6;background:#fff;border-radius:999px;padding:.65rem .85rem;font:inherit;font-weight:700;cursor:pointer;white-space:nowrap}.tracking-source-toggle span{width:34px;height:20px;border-radius:999px;background:#bec7d0;position:relative}.tracking-source-toggle span:after{content:"";position:absolute;width:16px;height:16px;border-radius:50%;background:#fff;top:2px;left:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:.2s}.tracking-source-toggle.is-active{border-color:#20784a;color:#16633c}.tracking-source-toggle.is-active span{background:#2ca566}.tracking-source-toggle.is-active span:after{transform:translateX(14px)}
@media(max-width:720px){.device-item{grid-template-columns:auto minmax(0,1fr)}.tracking-source-toggle{grid-column:1/-1;justify-content:center}.device-item-details{grid-template-columns:1fr}}
.device-online-state{background:#f2e6e6!important;color:#8a3030!important}.device-online-state.is-online{background:#e4f7ec!important;color:#176b3a!important}

/* FHAID 3.5 – compact device management */
.device-item-actions{display:flex;flex-direction:column;align-items:stretch;gap:.45rem;min-width:210px}
.device-item-actions .button{margin:0;min-height:38px;padding:.45rem .7rem;border-radius:12px}
.button-danger{border-color:#b42318!important;color:#b42318!important;background:#fff7f6!important}
@media(max-width:720px){.device-item-actions{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;min-width:0}.device-item-actions .tracking-source-toggle{grid-column:1/-1}.device-item-details{font-size:.9rem}}

/* FHAID 3.6 – interactive location card in family chat/display */
.display-chat-location>div{display:flex;min-width:0;flex-direction:column;gap:.18rem}
.display-chat-location>div strong{max-width:min(650px,62vw);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:clamp(17px,1.8vw,30px)}
.display-chat-location>div small{color:#58717b;font-size:clamp(11px,1vw,17px)}

/* FHAID 3.7 — prevent native black media surfaces for SOS audio */
.chat-audio-message audio,
.chat-audio-message video,
.chat-audio-card audio,
.chat-audio-card video,
.display-chat-message section.is-audio-only audio,
.display-chat-message section.is-audio-only video {
  display:none!important;
  width:0!important;
  height:0!important;
  min-height:0!important;
  visibility:hidden!important;
}
.fhaid-audio-player{overflow:hidden;isolation:isolate}
.fhaid-audio-player.is-loading{background:rgba(247,251,252,.98)}
.fhaid-audio-player .fhaid-audio-range{min-width:0}

/* FHAID 3.10 – professional Android release publisher */
.app-release-current,.app-release-card,.app-release-submit{background:#fff;border:1px solid var(--border);border-radius:22px;padding:24px;box-shadow:0 12px 30px rgba(24,58,76,.06)}
.app-release-form{display:grid;gap:18px}.app-release-section-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:20px}.app-release-section-head h2{margin:4px 0 7px}.app-release-section-head p,.app-release-submit p{margin:0;color:var(--muted);max-width:760px}.app-release-step{font-size:.76rem;font-weight:850;letter-spacing:.08em;text-transform:uppercase;color:#1f6e9e}.app-release-icon{display:grid;place-items:center;min-width:62px;height:62px;border-radius:18px;background:#e8f2fb;color:#105d8d;font-weight:900}.app-release-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.app-release-facts article{padding:16px;border-radius:16px;background:var(--surface-soft);min-width:0}.app-release-facts span,.app-release-facts small,.app-release-detail span{display:block;color:var(--muted);font-size:.8rem}.app-release-facts strong{display:block;margin:5px 0;font-size:1.15rem}.app-release-detail{display:grid;grid-template-columns:110px minmax(0,1fr);gap:12px;margin-top:12px;padding:14px;border:1px solid var(--border);border-radius:14px}.app-release-detail code{overflow-wrap:anywhere}.app-release-file{display:grid;gap:8px;padding:20px;border:2px dashed #b9cbd7;border-radius:18px;background:#f8fbfd}.app-release-file>span,.app-release-date span,.app-release-changelog span{font-weight:800}.app-release-file input{width:100%;padding:12px;border-radius:12px;background:#fff;border:1px solid var(--border)}.app-release-date{max-width:360px}.app-release-date label,.app-release-changelog label{display:grid;gap:8px}.app-release-date input,.app-release-changelog textarea{width:100%;border:1px solid #cbd7de;border-radius:13px;padding:12px;font:inherit;background:#fff}.app-release-changelog{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:18px}.app-release-toggle{display:flex;gap:14px;align-items:flex-start;padding:18px;border-radius:16px;background:#f7f9fb;border:1px solid var(--border);cursor:pointer}.app-release-toggle input{width:22px;height:22px;margin-top:2px}.app-release-toggle strong,.app-release-toggle small{display:block}.app-release-toggle small{margin-top:5px;color:var(--muted)}.app-release-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 22px;margin:0;padding:0;list-style:none}.app-release-checks li{position:relative;padding:12px 12px 12px 42px;border-radius:13px;background:#f7fafb}.app-release-checks li:before{content:'✓';position:absolute;left:14px;top:10px;color:#178547;font-weight:900}.app-release-submit{display:flex;justify-content:space-between;align-items:center;gap:20px;background:#eef7fd;border-color:#c7deec}.app-release-submit .button{min-width:260px;min-height:52px}.app-release-empty{padding:22px;border-radius:16px;background:var(--surface-soft);color:var(--muted)}
@media(max-width:900px){.app-release-facts{grid-template-columns:repeat(2,minmax(0,1fr))}.app-release-changelog{grid-template-columns:1fr}.app-release-checks{grid-template-columns:1fr}.app-release-submit{align-items:stretch;flex-direction:column}.app-release-submit .button{width:100%;min-width:0}}
@media(max-width:560px){.app-release-current,.app-release-card,.app-release-submit{padding:17px;border-radius:18px}.app-release-facts{grid-template-columns:1fr}.app-release-section-head{gap:12px}.app-release-icon{min-width:52px;height:52px}.app-release-detail{grid-template-columns:1fr}.app-release-date{max-width:none}}

/* FHAID 3.10: professional Android release result */
.app-release-result{border-color:#9bd6ad;background:linear-gradient(180deg,#f7fff9 0%,#fff 100%)}
.app-release-result-mark{display:grid;place-items:center;width:48px;height:48px;border-radius:16px;background:#e4f7e9;color:#198a3b;font-size:1.6rem;font-weight:900}
.app-release-signature-note{margin:14px 0 0;padding:12px 14px;border-radius:14px;background:#f1f5f8;color:#52606d;font-size:.92rem;line-height:1.45}

/* FHAID 3.17 — compact display calendar headings and readable event cards */
.display-player-v17 .display-overview-primary-v16>header{justify-content:flex-start}
.display-player-v17 .display-overview-columns-v16 h2{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.display-player-v17 .display-overview-columns-v16 h2>span{color:inherit;font-size:inherit;letter-spacing:normal;text-transform:none}
.display-player-v17 .display-overview-columns-v16 h2>small{color:#cbd5e1;font-size:.72em;font-weight:750;white-space:nowrap}
.display-player-v17 .display-overview-events>article{grid-template-columns:auto minmax(108px,.42fr) minmax(0,1fr)}
.display-player-v17 .display-overview-events>article:not(:has(img)){grid-template-columns:minmax(108px,.42fr) minmax(0,1fr)}
.display-player-v17 .display-overview-events time{white-space:normal;line-height:1.2}
.display-player-v17 .display-calendar-event>span{display:grid;min-width:0;gap:2px}
.display-player-v17 .display-calendar-event time,.display-player-v17 .display-calendar-event strong,.display-player-v17 .display-calendar-event small{margin:0;line-height:1.2}


/* 3.26: explicit family-place symbols and reliable marker fallbacks on Display. */
.display-leaflet-place-icon,.display-leaflet-member-icon{background:transparent!important;border:0!important}
.display-leaflet-place-icon>span{width:54px;height:60px;border-radius:18px 18px 24px 24px;display:grid;place-items:center;background:#fff;color:#12314a;border:4px solid #2563eb;box-shadow:0 9px 20px rgba(15,23,42,.35);font-size:1.75rem;font-weight:900;position:relative}
.display-leaflet-place-icon>span:after{content:"";position:absolute;left:50%;bottom:-10px;width:18px;height:18px;background:#fff;border-right:4px solid #2563eb;border-bottom:4px solid #2563eb;transform:translateX(-50%) rotate(45deg)}
.display-leaflet-place-icon.is-home>span{border-color:#16a34a;color:#166534}.display-leaflet-place-icon.is-home>span:after{border-color:#16a34a}
.display-leaflet-place-icon.is-work>span{border-color:#f59e0b;color:#92400e}.display-leaflet-place-icon.is-work>span:after{border-color:#f59e0b}
.display-leaflet-place-icon.is-playground>span{border-color:#ec4899;color:#9d174d}.display-leaflet-place-icon.is-playground>span:after{border-color:#ec4899}
.display-leaflet-place-icon.is-school>span{border-color:#8b5cf6;color:#5b21b6}.display-leaflet-place-icon.is-school>span:after{border-color:#8b5cf6}
.display-leaflet-member-icon{position:relative}.display-leaflet-member-icon>span{overflow:hidden;display:grid;place-items:center;background:#eef2f7!important;color:#102f48;font-weight:900}.display-leaflet-member-icon>span img{width:100%;height:100%;object-fit:cover}.display-leaflet-member-icon>span b{display:grid;place-items:center;width:100%;height:100%;background:#e2e8f0;color:#0f2f49}
.display-leaflet-member-icon>i{position:absolute;right:-4px;bottom:7px;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#fff;border:3px solid #2563eb;color:#12314a;font-style:normal;font-size:.9rem;box-shadow:0 3px 8px rgba(15,23,42,.35)}
.display-leaflet-member-icon>i.is-work{border-color:#f59e0b;color:#92400e}.display-leaflet-member-icon>i.is-playground{border-color:#ec4899;color:#9d174d}.display-leaflet-member-icon>i.is-home{border-color:#16a34a;color:#166534}
.display-place-label{color:#fde68a!important;font-weight:800!important}.display-presence-row.is-unknown em{color:#cbd5e1!important}
.display-leaflet-place-icon svg{display:block;width:31px;height:31px}
.display-leaflet-member-icon>i svg{display:block;width:17px;height:17px}
.family-place-map-marker svg{display:block;width:27px;height:27px}

/* FHAID 3.38: professional timetable, pauses, hobbies and live display */
.timetable-week-board.is-seven-days{grid-template-columns:repeat(7,minmax(0,1fr))}
.timetable-entry-card.is-hobby{border-left-style:solid;background:#f0fdf4}
.timetable-entry-card.is-hobby strong{color:#14532d}
.timetable-live-card strong{overflow-wrap:anywhere}
.display-timetable-week{grid-template-columns:repeat(7,minmax(0,1fr))}
.display-timetable-item.is-break{border-left-color:#94a3b8;background:rgba(148,163,184,.13)}
.display-timetable-item.is-activity{background:rgba(34,197,94,.12)}
@media(max-width:1100px){.timetable-week-board.is-seven-days{grid-template-columns:repeat(7,240px);overflow-x:auto}.display-timetable-week{grid-template-columns:repeat(7,180px);overflow-x:auto}}


/* FHAID 3.39: complete timetable editing */
.timetable-editor-section{scroll-margin-top:18px}.timetable-editor-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.timetable-card-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:10px}.timetable-card-actions.compact{gap:4px;margin-top:6px}.timetable-card-actions .inline-form{display:inline-flex;margin:0}.timetable-card-actions .button{min-height:34px;padding:6px 9px;font-size:.78rem;line-height:1}.timetable-card-actions.compact .button{min-width:32px;padding:5px 7px}.danger-text{color:#b42318!important}.timetable-entry-card .timetable-card-actions{border-top:1px solid rgba(148,163,184,.25);padding-top:6px}.timetable-activity-card .timetable-card-actions{border-top:1px solid rgba(22,163,74,.18);padding-top:8px}
@media(max-width:760px){.timetable-card-actions .button{font-size:.74rem}.timetable-editor-actions .button{flex:1 1 150px}}

/* FHAID 3.40: shared hobbies and vertical live timetable */
.timetable-hobby-form{margin-top:14px;padding:18px;border:1px solid rgba(37,99,235,.16);border-radius:18px;background:linear-gradient(180deg,rgba(239,246,255,.7),rgba(255,255,255,.96));box-shadow:0 12px 32px rgba(15,23,42,.06)}
.timetable-hobby-form .timetable-editor-actions{margin-top:4px;padding-top:16px;border-top:1px solid rgba(148,163,184,.3);justify-content:flex-end}
.timetable-hobby-actions .button{min-width:150px;justify-content:center}
.timetable-hobby-existing{margin-top:26px;padding-top:22px;border-top:1px solid rgba(148,163,184,.28)}
.timetable-hobby-participants{padding:14px 16px;border:1px solid rgba(148,163,184,.34);border-radius:14px;background:rgba(248,250,252,.78)}
.timetable-hobby-participants legend{padding:0 7px;font-weight:800;color:#1e293b}
.timetable-participant-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:9px;margin:4px 0 9px}
.timetable-participant-option{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid rgba(148,163,184,.32);border-radius:12px;background:#fff;cursor:pointer;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}
.timetable-participant-option:hover{border-color:#60a5fa;box-shadow:0 7px 18px rgba(37,99,235,.09);transform:translateY(-1px)}
.timetable-participant-option input{width:18px;height:18px;accent-color:#2563eb}
.timetable-participant-option span{display:grid;min-width:0}
.timetable-participant-option strong,.timetable-participant-option small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.timetable-participant-option small{color:#64748b}
.timetable-holiday-note{display:flex!important;align-items:flex-start;gap:12px;padding:13px 15px;border:1px solid rgba(234,88,12,.22);border-radius:14px;background:rgba(255,247,237,.86)}
.timetable-holiday-note>span{font-size:1.4rem;line-height:1}
.timetable-holiday-note>div{display:grid;gap:2px}
.timetable-holiday-note small{color:#7c2d12}
.timetable-participant-names{color:#166534!important;font-weight:750}
.timetable-action-button{display:inline-flex!important;align-items:center;justify-content:center;gap:7px;border-color:rgba(100,116,139,.24)!important;background:rgba(255,255,255,.9)!important;color:#334155!important;box-shadow:0 3px 9px rgba(15,23,42,.05)}
.timetable-action-button:hover{border-color:#60a5fa!important;color:#1d4ed8!important;background:#eff6ff!important}
.timetable-action-button.danger-text{color:#b42318!important}
.timetable-action-button.danger-text:hover{border-color:#fca5a5!important;background:#fff1f2!important;color:#be123c!important}
.timetable-action-button svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}
.timetable-action-button.icon-only{width:34px;min-width:34px;height:34px;padding:0!important;border-radius:10px}

.display-timetable-week.is-vertical{height:calc(100% - 112px);display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:repeat(7,minmax(0,1fr));gap:6px;overflow:hidden}
.display-timetable-week.is-vertical .display-timetable-day-row{min-height:0;display:grid;grid-template-columns:145px minmax(0,1fr);align-items:stretch;padding:5px 7px;border:1px solid rgba(255,255,255,.09);border-radius:12px;background:rgba(255,255,255,.055);overflow:hidden}
.display-timetable-week.is-vertical .display-timetable-day-row.is-today{border-color:rgba(96,165,250,.72);background:linear-gradient(90deg,rgba(37,99,235,.2),rgba(255,255,255,.065));box-shadow:inset 0 0 0 1px rgba(96,165,250,.2)}
.display-timetable-week.is-vertical .display-timetable-day-row>header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 12px 0 5px;margin:0;border-right:1px solid rgba(255,255,255,.11);text-align:left}
.display-timetable-week.is-vertical .display-timetable-day-row>header strong{font-size:.88rem;white-space:nowrap}
.display-timetable-week.is-vertical .display-timetable-day-row>header span{padding:3px 7px;border-radius:999px;background:#2563eb;color:#fff;font-size:.56rem;font-weight:850;text-transform:uppercase;letter-spacing:.04em}
.display-timetable-week.is-vertical .display-timetable-day-row>div{min-width:0;display:flex;align-items:center;gap:6px;padding-left:8px;overflow:hidden}
.display-timetable-week.is-vertical .display-timetable-item{min-width:145px;max-width:230px;height:100%;min-height:0;padding:6px 8px;align-content:center;grid-template-rows:auto auto auto;border-radius:9px}
.display-timetable-week.is-vertical .display-timetable-item time{font-size:.58rem}
.display-timetable-week.is-vertical .display-timetable-item strong{font-size:.76rem}
.display-timetable-week.is-vertical .display-timetable-item small{font-size:.56rem}
.display-timetable-empty-day{padding-left:10px;color:#64748b;font-weight:700}
.display-timetable-status article.is-current,.display-timetable-item.is-current{position:relative;z-index:2;animation:fhaid-timetable-glow 1.7s ease-in-out infinite;box-shadow:0 0 0 2px color-mix(in srgb,var(--item-color,#60a5fa) 72%,white),0 0 22px color-mix(in srgb,var(--item-color,#60a5fa) 72%,transparent);background:color-mix(in srgb,var(--item-color,#60a5fa) 30%,rgba(255,255,255,.13))}
.display-timetable-status article.is-current::after,.display-timetable-item.is-current::after{content:"";position:absolute;inset:3px;border:1px solid rgba(255,255,255,.58);border-radius:inherit;pointer-events:none}
@keyframes fhaid-timetable-glow{0%,100%{filter:brightness(1);transform:translateZ(0)}50%{filter:brightness(1.22);transform:translateZ(0) scale(1.008)}}
@media(max-width:1100px){.display-timetable-week.is-vertical{grid-template-rows:repeat(7,minmax(58px,1fr));overflow-y:auto}.display-timetable-week.is-vertical .display-timetable-day-row{grid-template-columns:115px minmax(0,1fr)}.display-timetable-week.is-vertical .display-timetable-day-row>div{overflow-x:auto}.timetable-hobby-form{padding:14px}}
@media(max-width:760px){.timetable-participant-grid{grid-template-columns:1fr}.timetable-hobby-form .timetable-editor-actions{justify-content:stretch}.timetable-hobby-actions .button{width:100%}}
